From deb2f530b71c1dc13665c0b8dacfb025c38f58b9 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Thu, 17 Dec 2015 10:04:53 +0530 Subject: [PATCH] CLOUDSTACK-9184: [VMware] vmware.ports.per.dvportgroup global setting is not useful from vCenter 5.0 onwards Fix: Modify the default value of this setting, which is currently 256, by decreasing it to 8 because even a dvportgroup with autoexpand feature enabled there exists an initial number of ports as starting point, which can be again configured through this configuration setting. --- .../vmware/manager/VmwareManagerImpl.java | 19 +++++++++++++++---- .../src/com/cloud/configuration/Config.java | 8 -------- setup/db/db/schema-4930to41000-cleanup.sql | 2 ++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java index b0f87af648dc..bb451ceb3929 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java @@ -134,6 +134,10 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw private static final long SECONDS_PER_MINUTE = 60; private static final int STARTUP_DELAY = 60000; // 60 seconds private static final long DEFAULT_HOST_SCAN_INTERVAL = 600000; // every 10 minutes + + private static final int DEFAULT_PORTS_PER_DV_PORT_GROUP_VSPHERE4_x = 256; + private static final int DEFAULT_PORTS_PER_DV_PORT_GROUP = 8; + private long _hostScanInterval = DEFAULT_HOST_SCAN_INTERVAL; private int _timeout; @@ -180,7 +184,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw private StorageLayer _storage; private final String _privateNetworkVSwitchName = "vSwitch0"; - private int _portsPerDvPortGroup = 256; + private int _portsPerDvPortGroup = DEFAULT_PORTS_PER_DV_PORT_GROUP; private boolean _fullCloneFlag; private boolean _instanceNameFlag; private String _serviceConsoleName; @@ -267,8 +271,6 @@ public boolean configure(String name, Map params) throws Configu _instanceNameFlag = Boolean.parseBoolean(value); } - _portsPerDvPortGroup = NumbersUtil.parseInt(_configDao.getValue(Config.VmwarePortsPerDVPortGroup.key()), _portsPerDvPortGroup); - _serviceConsoleName = _configDao.getValue(Config.VmwareServiceConsole.key()); if (_serviceConsoleName == null) { _serviceConsoleName = "Service Console"; @@ -387,8 +389,17 @@ private void prepareHost(HostMO hostMo, String privateTrafficLabel) throws Excep HypervisorHostHelper.prepareNetwork(vSwitchName, "cloud.private", hostMo, vlanId, null, null, 180000, false, BroadcastDomainType.Vlan, null); } else { + int portsPerDvPortGroup = _portsPerDvPortGroup; + AboutInfo about = hostMo.getHostAboutInfo(); + if (about != null) { + String version = about.getApiVersion(); + if (version != null && (version.equals("4.0") || version.equals("4.1")) && _portsPerDvPortGroup < DEFAULT_PORTS_PER_DV_PORT_GROUP_VSPHERE4_x) { + portsPerDvPortGroup = DEFAULT_PORTS_PER_DV_PORT_GROUP_VSPHERE4_x; + } + } + HypervisorHostHelper.prepareNetwork(vSwitchName, "cloud.private", hostMo, vlanId, null, null, null, 180000, - vsType, _portsPerDvPortGroup, null, false, BroadcastDomainType.Vlan, null); + vsType, portsPerDvPortGroup, null, false, BroadcastDomainType.Vlan, null); } } diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 551c61ea2e46..e9ef4432f75c 100644 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1135,14 +1135,6 @@ public enum Config { "false", "Enable/Disable Nexus/Vmware dvSwitch in VMware environment", null), - VmwarePortsPerDVPortGroup( - "Network", - ManagementServer.class, - Integer.class, - "vmware.ports.per.dvportgroup", - "256", - "Default number of ports per Vmware dvPortGroup in VMware environment", - null), VmwareCreateFullClone( "Advanced", ManagementServer.class, diff --git a/setup/db/db/schema-4930to41000-cleanup.sql b/setup/db/db/schema-4930to41000-cleanup.sql index 986dcdfe7da7..b9b853e34f26 100644 --- a/setup/db/db/schema-4930to41000-cleanup.sql +++ b/setup/db/db/schema-4930to41000-cleanup.sql @@ -21,4 +21,6 @@ DELETE FROM `cloud`.`configuration` WHERE name='consoleproxy.loadscan.interval'; +DELETE FROM `cloud`.`configuration` WHERE `name`='vmware.ports.per.dvportgroup'; + DELETE FROM `cloud`.`host_details` where name = 'vmName' and value in (select name from `cloud`.`vm_instance` where state = 'Expunging' and hypervisor_type ='BareMetal');