Repository: cloudstack Updated Branches: refs/heads/4.5 0e7975d4d -> 9642e862d
CLOUDSTACK-8406: Fixed selecting userdata as VR with dhcp service Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9642e862 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9642e862 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9642e862 Branch: refs/heads/4.5 Commit: 9642e862d65606fcfbecd909305b94c8fce82fcf Parents: 0e7975d Author: Jayapal <jaya...@apache.org> Authored: Thu Apr 30 12:21:15 2015 +0530 Committer: Jayapal <jaya...@apache.org> Committed: Thu Apr 30 12:24:24 2015 +0530 ---------------------------------------------------------------------- .../configuration/ConfigurationManagerImpl.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9642e862/server/src/com/cloud/configuration/ConfigurationManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index b18e154..5c97af7 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3808,6 +3808,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati Map<Provider, Set<Service>> providerCombinationToVerify = new HashMap<Provider, Set<Service>>(); Map<String, List<String>> svcPrv = cmd.getServiceProviders(); Provider firewallProvider = null; + Provider dhcpProvider = null; + Boolean IsVrUserdataProvider = false; if (svcPrv != null) { for (String serviceStr : svcPrv.keySet()) { Network.Service service = Network.Service.getService(serviceStr); @@ -3837,6 +3839,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati firewallProvider = Provider.VirtualRouter; } + if (service == Service.Dhcp) { + dhcpProvider = provider; + } + + if (service == Service.UserData && provider == Provider.VirtualRouter) { + IsVrUserdataProvider = true; + } + providers.add(provider); Set<Service> serviceSet = null; @@ -3856,6 +3866,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } } + // dhcp provider and userdata provider should be same because vm will be contacting dhcp server for user data. + if (dhcpProvider == null && IsVrUserdataProvider) { + s_logger.debug("User data provider VR can't be selected without VR as dhcp provider. In this case VM fails to contact the DHCP server for userdata"); + throw new InvalidParameterValueException("Without VR as dhcp provider, User data can't selected for VR. Please select VR as DHCP provider "); + } + // validate providers combination here _networkModel.canProviderSupportServices(providerCombinationToVerify);