diff --git a/engine/schema/resources/META-INF/db/schema-41100to41110-cleanup.sql b/engine/schema/resources/META-INF/db/schema-41100to41110-cleanup.sql index 704c71e659b..2c5855e1ce3 100644 --- a/engine/schema/resources/META-INF/db/schema-41100to41110-cleanup.sql +++ b/engine/schema/resources/META-INF/db/schema-41100to41110-cleanup.sql @@ -17,4 +17,6 @@ --; -- Schema upgrade from 4.11.0.0 to 4.11.1.0 ---; \ No newline at end of file +--; + +DELETE FROM `cloud`.`configuration` WHERE `name`='vmware.ports.per.dvportgroup'; 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 3cf0c0000d9..f586f393821 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 @@ -136,6 +136,8 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw private static final Logger s_logger = Logger.getLogger(VmwareManagerImpl.class); private static final long SECONDS_PER_MINUTE = 60; + 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 int _timeout; @@ -194,7 +196,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; @@ -279,8 +281,6 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw _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"; @@ -394,8 +394,16 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw HypervisorHostHelper.prepareNetwork(vSwitchName, "cloud.private", hostMo, vlanId, null, null, 180000, false, BroadcastDomainType.Vlan, null, 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, null); + vsType, portsPerDvPortGroup, null, false, BroadcastDomainType.Vlan, null, null); } } diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index b2c44600a78..98bacf2b907 100644 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1139,14 +1139,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/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java index bab697aaafc..ecfa8ee2ca4 100644 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java @@ -755,9 +755,8 @@ public class HypervisorHostHelper { dvsPortSetting = createVmwareDVPortSettingSpec(shapingPolicy, secPolicy, pvlanSpec); } - newDvPortGroupSpec = createDvPortGroupSpec(networkName, dvsPortSetting, numPorts, autoExpandSupported); - if (portGroupPolicy != null) - { + newDvPortGroupSpec = createDvPortGroupSpec(networkName, dvsPortSetting, autoExpandSupported); + if (portGroupPolicy != null) { newDvPortGroupSpec.setPolicy(portGroupPolicy); } @@ -765,6 +764,7 @@ public class HypervisorHostHelper { s_logger.info("Distributed Virtual Port group " + networkName + " not found."); // TODO(sateesh): Handle Exceptions try { + newDvPortGroupSpec.setNumPorts(numPorts); dvSwitchMo.createDVPortGroup(newDvPortGroupSpec); } catch (Exception e) { String msg = "Failed to create distributed virtual port group " + networkName + " on dvSwitch " + physicalNetwork; @@ -994,13 +994,12 @@ public class HypervisorHostHelper { return true; } - public static DVPortgroupConfigSpec createDvPortGroupSpec(String dvPortGroupName, DVPortSetting portSetting, int numPorts, boolean autoExpandSupported) { + public static DVPortgroupConfigSpec createDvPortGroupSpec(String dvPortGroupName, DVPortSetting portSetting, boolean autoExpandSupported) { DVPortgroupConfigSpec spec = new DVPortgroupConfigSpec(); spec.setName(dvPortGroupName); spec.setDefaultPortConfig(portSetting); spec.setPortNameFormat("vnic"); spec.setType("earlyBinding"); - spec.setNumPorts(numPorts); spec.setAutoExpand(autoExpandSupported); return spec; }