Repository: cloudstack Updated Branches: refs/heads/4.4-forward 13bd8beb9 -> d8cbba1bc
CLOUDSTACK-6750: [OVS] With stretched network deploying vm in a ovs disabled zone does not fail Fix ensures that connectivity service provider is enabled in the zone on to which nework is being streched. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/d8cbba1b Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/d8cbba1b Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/d8cbba1b Branch: refs/heads/4.4-forward Commit: d8cbba1bc616d43e218229a2807915c1b21569dc Parents: 13bd8be Author: Murali Reddy <muralimmre...@gmail.com> Authored: Thu Jun 19 16:03:46 2014 +0530 Committer: Murali Reddy <muralimmre...@gmail.com> Committed: Thu Jun 19 16:04:57 2014 +0530 ---------------------------------------------------------------------- server/src/com/cloud/vm/UserVmManagerImpl.java | 25 +++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d8cbba1b/server/src/com/cloud/vm/UserVmManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index e5216e3..68503ae 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -2719,8 +2719,29 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir boolean securityGroupEnabled = false; boolean vpcNetwork = false; for (NetworkVO network : networkList) { - if ((network.getDataCenterId() != zone.getId()) && !network.isStrechedL2Network()) { - throw new InvalidParameterValueException("Network id=" + network.getId() + " doesn't belong to zone " + zone.getId()); + if ((network.getDataCenterId() != zone.getId())) { + if (!network.isStrechedL2Network()) { + throw new InvalidParameterValueException("Network id=" + network.getId() + + " doesn't belong to zone " + zone.getId()); + } + + NetworkOffering ntwkOffering = _networkOfferingDao.findById(network.getNetworkOfferingId()); + Long physicalNetworkId = _networkModel.findPhysicalNetworkId(zone.getId(), ntwkOffering.getTags(), + ntwkOffering.getTrafficType()); + if (physicalNetworkId == null) { + s_logger.warn("Network id " + network.getId() + " could not be streched to the zone " + zone.getId() + + " as valid phyical network could not be found"); + throw new InvalidParameterValueException("Network in which is VM getting deployed could not be" + + " streched to the zone."); + } + + String provider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.Connectivity); + if (!_networkModel.isProviderEnabledInPhysicalNetwork(physicalNetworkId, provider)) { + s_logger.warn("Network id " + network.getId() + " could not be streched to the zone " +zone.getId() + + " as Connectivity service provider is not enabled in the zone " + zone.getId()); + throw new InvalidParameterValueException("Network in which is VM getting deployed could not be" + + " streched to the zone."); + } } //relax the check if the caller is admin account