Updated Branches:
refs/heads/vpc 03fe667b7 -> 19f648f1a
VPC: plug guest nic on guest network implement, and unplug on shutdown
Conflicts:
server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit:
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/19f648f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/19f648f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/19f648f1
Branch: refs/heads/vpc
Commit: 19f648f1aa36e107368da26b3e6f8567d6f0a3b7
Parents: 89d7e54
Author: Alena Prokharchyk <[email protected]>
Authored: Tue Jun 19 09:41:30 2012 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Tue Jun 19 10:09:46 2012 -0700
----------------------------------------------------------------------
.../network/element/VpcVirtualRouterElement.java | 64 ++++++++++-----
.../router/VirtualNetworkApplianceManagerImpl.java | 2 -
2 files changed, 43 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/19f648f1/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
index e5ae27e..794503b 100644
--- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
@@ -149,6 +149,17 @@ public class VpcVirtualRouterElement extends
VirtualRouterElement implements Vpc
DataCenter.class, network.getDataCenterId());
}
+ for (VirtualRouter router : routers) {
+ //Add router to guest network
+ if (!_networkMgr.isVmPartOfNetwork(router.getId(),
network.getId())) {
+ if (!_vpcRouterMgr.addVpcRouterToGuestNetwork(router, network,
false)) {
+ throw new CloudRuntimeException("Failed to add VPC router "
+ router + " to guest network " + network);
+ } else {
+ s_logger.debug("Successfully added VPC router " + router +
" to guest network " + network);
+ }
+ }
+ }
+
return true;
}
@@ -169,28 +180,16 @@ public class VpcVirtualRouterElement extends
VirtualRouterElement implements Vpc
return false;
}
- Map<VirtualMachineProfile.Param, Object> params = new
HashMap<VirtualMachineProfile.Param, Object>(1);
- params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
-
- List<DomainRouterVO> routers =
_vpcRouterMgr.deployVirtualRouterInVpc(vpc, dest,
- _accountMgr.getAccount(vpc.getAccountId()), params);
- if ((routers == null) || (routers.size() == 0)) {
- throw new ResourceUnavailableException("Can't find at least one
running router!",
- DataCenter.class, network.getDataCenterId());
- }
-
if (vm.getType() == Type.User) {
- for (VirtualRouter router : routers) {
- //Add router to guest network
- if (!_networkMgr.isVmPartOfNetwork(router.getId(),
network.getId())) {
- if (!_vpcRouterMgr.addVpcRouterToGuestNetwork(router,
network, false)) {
- throw new CloudRuntimeException("Failed to add VPC
router " + router + " to guest network " + network);
- } else {
- s_logger.debug("Successfully added VPC router " +
router + " to guest network " + network);
- }
- }
+ Map<VirtualMachineProfile.Param, Object> params = new
HashMap<VirtualMachineProfile.Param, Object>(1);
+ params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks,
true);
+ List<DomainRouterVO> routers =
_vpcRouterMgr.deployVirtualRouterInVpc(vpc, dest,
+ _accountMgr.getAccount(vpc.getAccountId()), params);
+ if ((routers == null) || (routers.size() == 0)) {
+ throw new ResourceUnavailableException("Can't find at least
one running router!",
+ DataCenter.class, network.getDataCenterId());
}
- }
+ }
return true;
}
@@ -198,7 +197,30 @@ public class VpcVirtualRouterElement extends
VirtualRouterElement implements Vpc
@Override
public boolean shutdown(Network network, ReservationContext context,
boolean cleanup)
throws ConcurrentOperationException, ResourceUnavailableException {
- return true;
+ boolean success = true;
+ Long vpcId = network.getVpcId();
+ if (vpcId == null) {
+ s_logger.debug("Network " + network + " doesn't belong to any vpc,
so skipping unplug nic part");
+ return success;
+ }
+
+ List<? extends VirtualRouter> routers =
_routerDao.listRoutersByVpcId(vpcId);
+ for (VirtualRouter router : routers) {
+ //1) Check if router is already a part of the network
+ if (!_ntwkService.isVmPartOfNetwork(router.getId(),
network.getId())) {
+ s_logger.debug("Router " + router + " is not a part the
network " + network);
+ continue;
+ }
+ //2) Call unplugNics in the network service
+ success = success &&
_vpcRouterMgr.removeRouterFromGuestNetwork(router, network, false);
+ if (!success) {
+ s_logger.warn("Failed to unplug nic in network " + network + "
for virtual router " + router);
+ } else {
+ s_logger.debug("Successfully unplugged nic in network " +
network + " for virtual router " + router);
+ }
+ }
+
+ return success;
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/19f648f1/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index c64067b..ee13718 100755
---
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -1254,8 +1254,6 @@ public class VirtualNetworkApplianceManagerImpl
implements VirtualNetworkApplian
return null;
}
-
-
Long offeringId =
_networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()).getServiceOfferingId();
if (offeringId == null) {
offeringId = _offering.getId();