Updated Branches:
refs/heads/master bea095fa4 -> b727001f4
CLOUDSTACK-4315: VPC - when fail to add nic to the VR, a) remove the nic b)
remove the reference to nic from router_network_ref table. Before the fix b)
was missing, and it caused NPEs when tried to apply the rules on the routers
not having nic in the network
Conflicts:
server/src/com/cloud/network/element/VirtualRouterElement.java
server/src/com/cloud/vm/VirtualMachineManagerImpl.java
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b727001f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b727001f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b727001f
Branch: refs/heads/master
Commit: b727001f483012012c061e8c352c1ebfe7d3fecd
Parents: bea095f
Author: Alena Prokharchyk <[email protected]>
Authored: Wed Aug 14 11:20:46 2013 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Wed Aug 14 11:44:34 2013 -0700
----------------------------------------------------------------------
.../network/element/VirtualRouterElement.java | 22 ++-----------
.../element/VpcVirtualRouterElement.java | 1 -
.../VpcVirtualNetworkApplianceManagerImpl.java | 34 +++++++++++---------
.../com/cloud/vm/VirtualMachineManagerImpl.java | 4 ++-
4 files changed, 24 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b727001f/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java
b/server/src/com/cloud/network/element/VirtualRouterElement.java
index eb70103..3607284 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -28,10 +28,10 @@ import javax.inject.Inject;
import
org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
import
org.apache.cloudstack.api.command.admin.router.CreateVirtualRouterElementCmd;
import
org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
+import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.log4j.Logger;
-import com.cloud.agent.api.PvlanSetupCommand;
import com.cloud.agent.api.to.LoadBalancerTO;
import com.cloud.configuration.ConfigurationManager;
import com.cloud.dc.DataCenter;
@@ -50,7 +50,6 @@ import com.cloud.network.Network.Service;
import com.cloud.network.NetworkMigrationResponder;
import com.cloud.network.NetworkModel;
import com.cloud.network.Networks;
-import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress;
@@ -87,7 +86,6 @@ import com.cloud.utils.db.SearchCriteriaService;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.NicProfile;
-import com.cloud.vm.NicVO;
import com.cloud.vm.ReservationContext;
import com.cloud.vm.UserVmManager;
import com.cloud.vm.UserVmVO;
@@ -100,22 +98,6 @@ import com.cloud.vm.dao.UserVmDao;
import com.google.gson.Gson;
-import
org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
-import
org.apache.cloudstack.api.command.admin.router.CreateVirtualRouterElementCmd;
-import
org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
-import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
-
-import org.apache.log4j.Logger;
-
-import javax.ejb.Local;
-import javax.inject.Inject;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
@Local(value = {NetworkElement.class, FirewallServiceProvider.class,
DhcpServiceProvider.class,
UserDataServiceProvider.class,
StaticNatServiceProvider.class,
LoadBalancingServiceProvider.class,
@@ -390,7 +372,7 @@ public class VirtualRouterElement extends AdapterBase
implements VirtualRouterEl
List<DomainRouterVO> routers =
_routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
if (routers == null || routers.isEmpty()) {
- s_logger.debug("Virtual router elemnt doesn't need to apply
firewall rules on the backend; virtual " +
+ s_logger.debug("Virtual router elemnt doesn't need to apply lb
rules on the backend; virtual " +
"router doesn't exist in the network " +
network.getId());
return true;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b727001f/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 500e13f..b45d1c1 100644
--- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
@@ -464,7 +464,6 @@ public class VpcVirtualRouterElement extends
VirtualRouterElement implements Vpc
} else {
return true;
}
-
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b727001f/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
index 6fafa3e..95b92aa 100644
---
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -287,23 +287,27 @@ public class VpcVirtualNetworkApplianceManagerImpl
extends VirtualNetworkApplian
return false;
}
- //Check if router is a part of the Guest network
- if (!_networkModel.isVmPartOfNetwork(router.getId(), network.getId()))
{
- s_logger.debug("Router " + router + " is not a part of the Guest
network " + network);
- return true;
- }
-
- boolean result = setupVpcGuestNetwork(network, router, false,
_networkModel.getNicProfile(router, network.getId(), null));
- if (!result) {
- s_logger.warn("Failed to destroy guest network config " + network
+ " on router " + router);
- return false;
- }
-
- result = result && _itMgr.removeVmFromNetwork(router, network, null);
-
- if (result) {
+ boolean result = true;
+ try {
+ //Check if router is a part of the Guest network
+ if (!_networkModel.isVmPartOfNetwork(router.getId(),
network.getId())) {
+ s_logger.debug("Router " + router + " is not a part of the
Guest network " + network);
+ return result;
+ }
+
+ result = setupVpcGuestNetwork(network, router, false,
_networkModel.getNicProfile(router, network.getId(), null));
+ if (!result) {
+ s_logger.warn("Failed to destroy guest network config " +
network + " on router " + router);
+ return false;
+ }
+
+ result = result && _itMgr.removeVmFromNetwork(router, network,
null);
+ } finally {
+ if (result) {
_routerDao.removeRouterFromGuestNetwork(router.getId(),
network.getId());
}
+ }
+
return result;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b727001f/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index c1146e1..7c19c28 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -2799,7 +2799,9 @@ public class VirtualMachineManagerImpl extends
ManagerBase implements VirtualMac
return null;
}
} finally {
- if (!result) {
+ if (!result){
+ s_logger.debug("Removing nic " + nic + " from vm " +
vmProfile.getVirtualMachine()
+ + " as nic plug failed on the backend");
_networkMgr.removeNic(vmProfile,
_nicsDao.findById(nic.getId()));
}
}