mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	* CLOUDSTACK-9184: Fixes #2631 VMware dvs portgroup autogrowth This deprecates the vmware.ports.per.dvportgroup global setting. The vSphere Auto Expand feature (introduced in vSphere 5.0) will take care of dynamically increasing/decreasing the dvPorts when running out of distributed ports . But in case of vSphere 4.1/4.0 (If used), as this feature is not there, the new default value (=> 8) have an impact in the existing deployments. Action item for vSphere 4.1/4.0: Admin should modify the global configuration setting "vmware.ports.per.dvportgroup" from 8 to any number based on their environment because the proposal default value of 8 would be very less without auto expand feature in general. The current default value of 256 may not need immediate modification after deployment, but 8 would be very less which means admin need to update immediately after upgrade. Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
		
							parent
							
								
									a77ed56b86
								
							
						
					
					
						commit
						1b3046e376
					
				| @ -18,3 +18,5 @@ | |||||||
| --; | --; | ||||||
| -- Schema upgrade from 4.11.0.0 to 4.11.1.0 | -- Schema upgrade from 4.11.0.0 to 4.11.1.0 | ||||||
| --; | --; | ||||||
|  | 
 | ||||||
|  | DELETE FROM `cloud`.`configuration` WHERE `name`='vmware.ports.per.dvportgroup'; | ||||||
|  | |||||||
| @ -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 Logger s_logger = Logger.getLogger(VmwareManagerImpl.class); | ||||||
| 
 | 
 | ||||||
|     private static final long SECONDS_PER_MINUTE = 60; |     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; |     private int _timeout; | ||||||
| 
 | 
 | ||||||
| @ -194,7 +196,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw | |||||||
|     private StorageLayer _storage; |     private StorageLayer _storage; | ||||||
|     private final String _privateNetworkVSwitchName = "vSwitch0"; |     private final String _privateNetworkVSwitchName = "vSwitch0"; | ||||||
| 
 | 
 | ||||||
|     private int _portsPerDvPortGroup = 256; |     private int _portsPerDvPortGroup = DEFAULT_PORTS_PER_DV_PORT_GROUP; | ||||||
|     private boolean _fullCloneFlag; |     private boolean _fullCloneFlag; | ||||||
|     private boolean _instanceNameFlag; |     private boolean _instanceNameFlag; | ||||||
|     private String _serviceConsoleName; |     private String _serviceConsoleName; | ||||||
| @ -279,8 +281,6 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw | |||||||
|             _instanceNameFlag = Boolean.parseBoolean(value); |             _instanceNameFlag = Boolean.parseBoolean(value); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         _portsPerDvPortGroup = NumbersUtil.parseInt(_configDao.getValue(Config.VmwarePortsPerDVPortGroup.key()), _portsPerDvPortGroup); |  | ||||||
| 
 |  | ||||||
|         _serviceConsoleName = _configDao.getValue(Config.VmwareServiceConsole.key()); |         _serviceConsoleName = _configDao.getValue(Config.VmwareServiceConsole.key()); | ||||||
|         if (_serviceConsoleName == null) { |         if (_serviceConsoleName == null) { | ||||||
|             _serviceConsoleName = "Service Console"; |             _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); |             HypervisorHostHelper.prepareNetwork(vSwitchName, "cloud.private", hostMo, vlanId, null, null, 180000, false, BroadcastDomainType.Vlan, null, null); | ||||||
|         } |         } | ||||||
|         else { |         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, |             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); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1139,14 +1139,6 @@ public enum Config { | |||||||
|             "false", |             "false", | ||||||
|             "Enable/Disable Nexus/Vmware dvSwitch in VMware environment", |             "Enable/Disable Nexus/Vmware dvSwitch in VMware environment", | ||||||
|             null), |             null), | ||||||
|     VmwarePortsPerDVPortGroup( |  | ||||||
|             "Network", |  | ||||||
|             ManagementServer.class, |  | ||||||
|             Integer.class, |  | ||||||
|             "vmware.ports.per.dvportgroup", |  | ||||||
|             "256", |  | ||||||
|             "Default number of ports per Vmware dvPortGroup in VMware environment", |  | ||||||
|             null), |  | ||||||
|     VmwareCreateFullClone( |     VmwareCreateFullClone( | ||||||
|             "Advanced", |             "Advanced", | ||||||
|             ManagementServer.class, |             ManagementServer.class, | ||||||
|  | |||||||
| @ -755,9 +755,8 @@ public class HypervisorHostHelper { | |||||||
|             dvsPortSetting = createVmwareDVPortSettingSpec(shapingPolicy, secPolicy, pvlanSpec); |             dvsPortSetting = createVmwareDVPortSettingSpec(shapingPolicy, secPolicy, pvlanSpec); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         newDvPortGroupSpec = createDvPortGroupSpec(networkName, dvsPortSetting, numPorts, autoExpandSupported); |         newDvPortGroupSpec = createDvPortGroupSpec(networkName, dvsPortSetting, autoExpandSupported); | ||||||
|         if (portGroupPolicy != null) |         if (portGroupPolicy != null) { | ||||||
|         { |  | ||||||
|             newDvPortGroupSpec.setPolicy(portGroupPolicy); |             newDvPortGroupSpec.setPolicy(portGroupPolicy); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -765,6 +764,7 @@ public class HypervisorHostHelper { | |||||||
|             s_logger.info("Distributed Virtual Port group " + networkName + " not found."); |             s_logger.info("Distributed Virtual Port group " + networkName + " not found."); | ||||||
|             // TODO(sateesh): Handle Exceptions |             // TODO(sateesh): Handle Exceptions | ||||||
|             try { |             try { | ||||||
|  |                 newDvPortGroupSpec.setNumPorts(numPorts); | ||||||
|                 dvSwitchMo.createDVPortGroup(newDvPortGroupSpec); |                 dvSwitchMo.createDVPortGroup(newDvPortGroupSpec); | ||||||
|             } catch (Exception e) { |             } catch (Exception e) { | ||||||
|                 String msg = "Failed to create distributed virtual port group " + networkName + " on dvSwitch " + physicalNetwork; |                 String msg = "Failed to create distributed virtual port group " + networkName + " on dvSwitch " + physicalNetwork; | ||||||
| @ -994,13 +994,12 @@ public class HypervisorHostHelper { | |||||||
|         return true; |         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(); |         DVPortgroupConfigSpec spec = new DVPortgroupConfigSpec(); | ||||||
|         spec.setName(dvPortGroupName); |         spec.setName(dvPortGroupName); | ||||||
|         spec.setDefaultPortConfig(portSetting); |         spec.setDefaultPortConfig(portSetting); | ||||||
|         spec.setPortNameFormat("vnic<portIndex>"); |         spec.setPortNameFormat("vnic<portIndex>"); | ||||||
|         spec.setType("earlyBinding"); |         spec.setType("earlyBinding"); | ||||||
|         spec.setNumPorts(numPorts); |  | ||||||
|         spec.setAutoExpand(autoExpandSupported); |         spec.setAutoExpand(autoExpandSupported); | ||||||
|         return spec; |         return spec; | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user