You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2012/05/28 00:30:44 UTC

[48/50] git commit: CS-9919 Support for Nexus Swiches (Cisco Vswitches)

CS-9919 Support for Nexus Swiches (Cisco Vswitches)

Description:

	Moved dvSwitch specific functionality over datacenter.

Conflicts:

	vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
	vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/aa1f26cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/aa1f26cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/aa1f26cb

Branch: refs/heads/master
Commit: aa1f26cb00d2fe1f994b481bb70c5f2d8267c6d9
Parents: 04898a0
Author: Sateesh Chodapuneedi <sa...@citrix.com>
Authored: Thu May 10 18:35:44 2012 +0530
Committer: Vijayendra Bhamidipati <vi...@citrix.com>
Committed: Fri May 25 17:35:50 2012 -0700

----------------------------------------------------------------------
 .../cloud/hypervisor/vmware/mo/DatacenterMO.java   |  508 +++++++++------
 .../src/com/cloud/hypervisor/vmware/mo/HostMO.java |   93 ---
 .../hypervisor/vmware/mo/HypervisorHostHelper.java |   20 +-
 3 files changed, 313 insertions(+), 308 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aa1f26cb/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
index 7c57350..30d5b1d 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
@@ -10,7 +10,8 @@
 // limitations under the License.
 // 
 // Automatically generated by addcopyright.py at 04/03/2012
-package com.cloud.hypervisor.vmware.mo;
+
+package com.cloud.hypervisor.vmware.mo;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -19,6 +20,7 @@ import com.cloud.hypervisor.vmware.util.VmwareContext;
 import com.cloud.utils.Pair;
 import com.vmware.apputils.vim25.ServiceUtil;
 import com.vmware.vim25.CustomFieldStringValue;
+import com.vmware.vim25.DVPortgroupConfigInfo;
 import com.vmware.vim25.DynamicProperty;
 import com.vmware.vim25.ManagedObjectReference;
 import com.vmware.vim25.ObjectContent;
@@ -27,64 +29,64 @@ import com.vmware.vim25.PropertyFilterSpec;
 import com.vmware.vim25.PropertySpec;
 import com.vmware.vim25.SelectionSpec;
 import com.vmware.vim25.TraversalSpec;
-
-public class DatacenterMO extends BaseMO {
-	
-	public DatacenterMO(VmwareContext context, ManagedObjectReference morDc) {
-		super(context, morDc);
-	}
-	
-	public DatacenterMO(VmwareContext context, String morType, String morValue) {
-		super(context, morType, morValue);
-	}
-	
-	public DatacenterMO(VmwareContext context, String dcName) throws Exception {
-		super(context, null);
-		
-		_mor = _context.getServiceUtil().getDecendentMoRef(_context.getRootFolder(), "Datacenter", dcName);
-		assert(_mor != null);
-	}
-	
-	public String getName() throws Exception {
-		return (String)_context.getServiceUtil().getDynamicProperty(_mor, "name");
-	}
-	
-	public void registerTemplate(ManagedObjectReference morHost, String datastoreName, 
-		String templateName, String templateFileName) throws Exception {
-		
-		ServiceUtil serviceUtil = _context.getServiceUtil();
-		
-		ManagedObjectReference morFolder = (ManagedObjectReference)serviceUtil.getDynamicProperty(
-			_mor, "vmFolder");
-		assert(morFolder != null);
-		
-		ManagedObjectReference morTask = _context.getService().registerVM_Task(
-    		 morFolder, 
-    		 String.format("[%s] %s/%s", datastoreName, templateName, templateFileName),
-    		 templateName, true, 
-    		 null, morHost);
-		
-		String result = serviceUtil.waitForTask(morTask);
-		if (!result.equalsIgnoreCase("Sucess")) {
-			throw new Exception("Unable to register template due to " + TaskMO.getTaskFailureInfo(_context, morTask));
-		} else {
-			_context.waitForTaskProgressDone(morTask);
-		}
-	}
-	
-	public VirtualMachineMO findVm(String vmName) throws Exception {
-		ObjectContent[] ocs = getVmPropertiesOnDatacenterVmFolder(new String[] { "name" });
-		if(ocs != null && ocs.length > 0) {
-			for(ObjectContent oc : ocs) {
-				DynamicProperty[] props = oc.getPropSet();
-				if(props != null) {
-					for(DynamicProperty prop : props) {
-						if(prop.getVal().toString().equals(vmName))
-							return new VirtualMachineMO(_context, oc.getObj());
-					}
-				}
-			}
-		}
+
+public class DatacenterMO extends BaseMO {
+	
+	public DatacenterMO(VmwareContext context, ManagedObjectReference morDc) {
+		super(context, morDc);
+	}
+	
+	public DatacenterMO(VmwareContext context, String morType, String morValue) {
+		super(context, morType, morValue);
+	}
+	
+	public DatacenterMO(VmwareContext context, String dcName) throws Exception {
+		super(context, null);
+		
+		_mor = _context.getServiceUtil().getDecendentMoRef(_context.getRootFolder(), "Datacenter", dcName);
+		assert(_mor != null);
+	}
+	
+	public String getName() throws Exception {
+		return (String)_context.getServiceUtil().getDynamicProperty(_mor, "name");
+	}
+	
+	public void registerTemplate(ManagedObjectReference morHost, String datastoreName, 
+		String templateName, String templateFileName) throws Exception {
+		
+		ServiceUtil serviceUtil = _context.getServiceUtil();
+		
+		ManagedObjectReference morFolder = (ManagedObjectReference)serviceUtil.getDynamicProperty(
+			_mor, "vmFolder");
+		assert(morFolder != null);
+		
+		ManagedObjectReference morTask = _context.getService().registerVM_Task(
+    		 morFolder, 
+    		 String.format("[%s] %s/%s", datastoreName, templateName, templateFileName),
+    		 templateName, true, 
+    		 null, morHost);
+		
+		String result = serviceUtil.waitForTask(morTask);
+		if (!result.equalsIgnoreCase("Sucess")) {
+			throw new Exception("Unable to register template due to " + TaskMO.getTaskFailureInfo(_context, morTask));
+		} else {
+			_context.waitForTaskProgressDone(morTask);
+		}
+	}
+	
+	public VirtualMachineMO findVm(String vmName) throws Exception {
+		ObjectContent[] ocs = getVmPropertiesOnDatacenterVmFolder(new String[] { "name" });
+		if(ocs != null && ocs.length > 0) {
+			for(ObjectContent oc : ocs) {
+				DynamicProperty[] props = oc.getPropSet();
+				if(props != null) {
+					for(DynamicProperty prop : props) {
+						if(prop.getVal().toString().equals(vmName))
+							return new VirtualMachineMO(_context, oc.getObj());
+					}
+				}
+			}
+		}
 		return null;
 	}
 	
@@ -122,182 +124,274 @@ public class DatacenterMO extends BaseMO {
 		}
 		return list;
 	}
-	
-	public List<Pair<ManagedObjectReference, String>> getAllVmsOnDatacenter() throws Exception {
-	    List<Pair<ManagedObjectReference, String>> vms = new ArrayList<Pair<ManagedObjectReference, String>>();
-	    
-	    ObjectContent[] ocs = getVmPropertiesOnDatacenterVmFolder(new String[] { "name" });
-	    if(ocs != null) {
-	        for(ObjectContent oc : ocs) {
-	            String vmName = oc.getPropSet(0).getVal().toString();
-	            vms.add(new Pair<ManagedObjectReference, String>(oc.getObj(), vmName));
-	        }
-	    }
-	    
-	    return vms;
-	}	
-	
-	public ManagedObjectReference findDatastore(String name) throws Exception {
-		assert(name != null);
-		
-		ObjectContent[] ocs = getDatastorePropertiesOnDatacenter(new String[] { "name" });
-		if(ocs != null) {
-			for(ObjectContent oc : ocs) {
-				if(oc.getPropSet(0).getVal().toString().equals(name)) {
-					return oc.getObj();
-				}
-			}
-		}
-		return null;
+
+	public List<Pair<ManagedObjectReference, String>> getAllVmsOnDatacenter() throws Exception {
+	    List<Pair<ManagedObjectReference, String>> vms = new ArrayList<Pair<ManagedObjectReference, String>>();
+	    
+	    ObjectContent[] ocs = getVmPropertiesOnDatacenterVmFolder(new String[] { "name" });
+	    if(ocs != null) {
+	        for(ObjectContent oc : ocs) {
+	            String vmName = oc.getPropSet(0).getVal().toString();
+	            vms.add(new Pair<ManagedObjectReference, String>(oc.getObj(), vmName));
+	        }
+	    }
+	    
+	    return vms;
+	}	
+	
+	public ManagedObjectReference findDatastore(String name) throws Exception {
+		assert(name != null);
+		
+		ObjectContent[] ocs = getDatastorePropertiesOnDatacenter(new String[] { "name" });
+		if(ocs != null) {
+			for(ObjectContent oc : ocs) {
+				if(oc.getPropSet(0).getVal().toString().equals(name)) {
+					return oc.getObj();
+				}
+			}
+		}
+		return null;
+	}
+	
+	public ManagedObjectReference findHost(String name) throws Exception {
+		ObjectContent[] ocs= getHostPropertiesOnDatacenterHostFolder(new String[] { "name" });
+		
+		if(ocs != null) {
+			for(ObjectContent oc : ocs) {
+				if(oc.getPropSet(0).getVal().toString().equals(name)) {
+					return oc.getObj();
+				}
+			}
+		}
+		return null;
+	}
+	
+	public ManagedObjectReference getVmFolder() throws Exception {
+		return (ManagedObjectReference)_context.getServiceUtil().getDynamicProperty(_mor, "vmFolder");
+	}
+	
+	public ObjectContent[] getHostPropertiesOnDatacenterHostFolder(String[] propertyPaths) throws Exception {
+		PropertySpec pSpec = new PropertySpec();
+		pSpec.setType("HostSystem");
+		pSpec.setPathSet(propertyPaths);
+		
+	    TraversalSpec computeResource2HostTraversal = new TraversalSpec();
+	    computeResource2HostTraversal.setType("ComputeResource");
+	    computeResource2HostTraversal.setPath("host");
+	    computeResource2HostTraversal.setName("computeResource2HostTraversal");
+		
+	    SelectionSpec recurseFolders = new SelectionSpec();
+	    recurseFolders.setName("folder2childEntity");
+	      
+	    TraversalSpec folder2childEntity = new TraversalSpec();
+	    folder2childEntity.setType("Folder");
+	    folder2childEntity.setPath("childEntity");
+	    folder2childEntity.setName(recurseFolders.getName());
+	    folder2childEntity.setSelectSet(new SelectionSpec[] { recurseFolders, computeResource2HostTraversal });
+	    
+	    TraversalSpec dc2HostFolderTraversal = new TraversalSpec();
+	    dc2HostFolderTraversal.setType("Datacenter");
+	    dc2HostFolderTraversal.setPath("hostFolder");
+	    dc2HostFolderTraversal.setName("dc2HostFolderTraversal");
+	    dc2HostFolderTraversal.setSelectSet(new SelectionSpec[] { folder2childEntity } );
+	    
+	    ObjectSpec oSpec = new ObjectSpec();
+	    oSpec.setObj(_mor);
+	    oSpec.setSkip(Boolean.TRUE);
+	    oSpec.setSelectSet(new SelectionSpec[] { dc2HostFolderTraversal });
+
+	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+	    
+	    return _context.getService().retrieveProperties(
+	    	_context.getServiceContent().getPropertyCollector(), 
+	    	new PropertyFilterSpec[] { pfSpec }); 
+	}
+	
+	public ObjectContent[] getDatastorePropertiesOnDatacenter(String[] propertyPaths) throws Exception {
+		
+		PropertySpec pSpec = new PropertySpec();
+		pSpec.setType("Datastore");
+		pSpec.setPathSet(propertyPaths);
+		
+	    TraversalSpec dc2DatastoreTraversal = new TraversalSpec();
+	    dc2DatastoreTraversal.setType("Datacenter");
+	    dc2DatastoreTraversal.setPath("datastore");
+	    dc2DatastoreTraversal.setName("dc2DatastoreTraversal");
+	    
+	    ObjectSpec oSpec = new ObjectSpec();
+	    oSpec.setObj(_mor);
+	    oSpec.setSkip(Boolean.TRUE);
+	    oSpec.setSelectSet(new SelectionSpec[] { dc2DatastoreTraversal });
+
+	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+	    
+	    return _context.getService().retrieveProperties(
+	    	_context.getServiceContent().getPropertyCollector(), 
+	    	new PropertyFilterSpec[] { pfSpec }); 
+	}
+	
+	public ObjectContent[] getVmPropertiesOnDatacenterVmFolder(String[] propertyPaths) throws Exception {
+		PropertySpec pSpec = new PropertySpec();
+		pSpec.setType("VirtualMachine");
+		pSpec.setPathSet(propertyPaths);
+		
+	    TraversalSpec dc2VmFolderTraversal = new TraversalSpec();
+	    dc2VmFolderTraversal.setType("Datacenter");
+	    dc2VmFolderTraversal.setPath("vmFolder");
+	    dc2VmFolderTraversal.setName("dc2VmFolderTraversal");
+	    
+	    SelectionSpec recurseFolders = new SelectionSpec();
+	    recurseFolders.setName("folder2childEntity");
+	      
+	    TraversalSpec folder2childEntity = new TraversalSpec();
+	    folder2childEntity.setType("Folder");
+	    folder2childEntity.setPath("childEntity");
+	    folder2childEntity.setName(recurseFolders.getName());
+	    folder2childEntity.setSelectSet(new SelectionSpec[] { recurseFolders });
+	    dc2VmFolderTraversal.setSelectSet(new SelectionSpec[] { folder2childEntity } );
+
+	    ObjectSpec oSpec = new ObjectSpec();
+	    oSpec.setObj(_mor);
+	    oSpec.setSkip(Boolean.TRUE);
+	    oSpec.setSelectSet(new SelectionSpec[] { dc2VmFolderTraversal });
+
+	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+	    
+	    return _context.getService().retrieveProperties(
+	    	_context.getServiceContent().getPropertyCollector(), 
+	    	new PropertyFilterSpec[] { pfSpec }); 
+	}
+	
+	public static Pair<DatacenterMO, String> getOwnerDatacenter(VmwareContext context, 
+		ManagedObjectReference morEntity) throws Exception {
+		
+		PropertySpec pSpec = new PropertySpec();
+		pSpec.setType("Datacenter");
+		pSpec.setPathSet(new String[] { "name" });
+		
+	    TraversalSpec entityParentTraversal = new TraversalSpec();
+	    entityParentTraversal.setType("ManagedEntity");
+	    entityParentTraversal.setPath("parent");
+	    entityParentTraversal.setName("entityParentTraversal");
+	    entityParentTraversal.setSelectSet(new SelectionSpec[] { new SelectionSpec(null, null, "entityParentTraversal") });
+
+	    ObjectSpec oSpec = new ObjectSpec();
+	    oSpec.setObj(morEntity);
+	    oSpec.setSkip(Boolean.TRUE);
+	    oSpec.setSelectSet(new SelectionSpec[] { entityParentTraversal });
+
+	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+	    
+	    ObjectContent[] ocs = context.getService().retrieveProperties(
+	    	context.getServiceContent().getPropertyCollector(), 
+	    	new PropertyFilterSpec[] { pfSpec });
+	    
+	    assert(ocs != null);
+	    assert(ocs[0].getObj() != null);
+	    assert(ocs[0].getPropSet(0) != null);
+	    assert(ocs[0].getPropSet(0).getVal() != null);
+	    
+	    String dcName = ocs[0].getPropSet(0).getVal().toString(); 
+	    return new Pair<DatacenterMO, String>(new DatacenterMO(context, ocs[0].getObj()), dcName); 
 	}
 	
-	public ManagedObjectReference findHost(String name) throws Exception {
-		ObjectContent[] ocs= getHostPropertiesOnDatacenterHostFolder(new String[] { "name" });
-		
-		if(ocs != null) {
-			for(ObjectContent oc : ocs) {
-				if(oc.getPropSet(0).getVal().toString().equals(name)) {
-					return oc.getObj();
-				}
-			}
-		}
-		return null;
-	}
-	
-	public ManagedObjectReference getVmFolder() throws Exception {
-		return (ManagedObjectReference)_context.getServiceUtil().getDynamicProperty(_mor, "vmFolder");
-	}
-	
-	public ObjectContent[] getHostPropertiesOnDatacenterHostFolder(String[] propertyPaths) throws Exception {
-		PropertySpec pSpec = new PropertySpec();
-		pSpec.setType("HostSystem");
-		pSpec.setPathSet(propertyPaths);
+
+	public ManagedObjectReference getDvPortGroupMor(String dvPortGroupName) throws Exception {
+    		PropertySpec pSpec = new PropertySpec();
+		pSpec.setType("DistributedVirtualPortgroup");
+		pSpec.setPathSet(new String[] {"name"});
 		
-	    TraversalSpec computeResource2HostTraversal = new TraversalSpec();
-	    computeResource2HostTraversal.setType("ComputeResource");
-	    computeResource2HostTraversal.setPath("host");
-	    computeResource2HostTraversal.setName("computeResource2HostTraversal");
+		TraversalSpec datacenter2DvPortGroupTraversal = new TraversalSpec();
+		datacenter2DvPortGroupTraversal.setType("Datacenter");
+		datacenter2DvPortGroupTraversal.setPath("network");
+		datacenter2DvPortGroupTraversal.setName("datacenter2DvPortgroupTraversal");
 		
-	    SelectionSpec recurseFolders = new SelectionSpec();
-	    recurseFolders.setName("folder2childEntity");
-	      
-	    TraversalSpec folder2childEntity = new TraversalSpec();
-	    folder2childEntity.setType("Folder");
-	    folder2childEntity.setPath("childEntity");
-	    folder2childEntity.setName(recurseFolders.getName());
-	    folder2childEntity.setSelectSet(new SelectionSpec[] { recurseFolders, computeResource2HostTraversal });
-	    
-	    TraversalSpec dc2HostFolderTraversal = new TraversalSpec();
-	    dc2HostFolderTraversal.setType("Datacenter");
-	    dc2HostFolderTraversal.setPath("hostFolder");
-	    dc2HostFolderTraversal.setName("dc2HostFolderTraversal");
-	    dc2HostFolderTraversal.setSelectSet(new SelectionSpec[] { folder2childEntity } );
-	    
-	    ObjectSpec oSpec = new ObjectSpec();
+		ObjectSpec oSpec = new ObjectSpec();
 	    oSpec.setObj(_mor);
 	    oSpec.setSkip(Boolean.TRUE);
-	    oSpec.setSelectSet(new SelectionSpec[] { dc2HostFolderTraversal });
+	    oSpec.setSelectSet(new SelectionSpec[] { datacenter2DvPortGroupTraversal });
 
 	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
 	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
 	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
 	    
-	    return _context.getService().retrieveProperties(
+	    ObjectContent[] ocs = _context.getService().retrieveProperties(
 	    	_context.getServiceContent().getPropertyCollector(), 
-	    	new PropertyFilterSpec[] { pfSpec }); 
-	}
-	
-	public ObjectContent[] getDatastorePropertiesOnDatacenter(String[] propertyPaths) throws Exception {
-		
-		PropertySpec pSpec = new PropertySpec();
-		pSpec.setType("Datastore");
-		pSpec.setPathSet(propertyPaths);
-		
-	    TraversalSpec dc2DatastoreTraversal = new TraversalSpec();
-	    dc2DatastoreTraversal.setType("Datacenter");
-	    dc2DatastoreTraversal.setPath("datastore");
-	    dc2DatastoreTraversal.setName("dc2DatastoreTraversal");
+	    	new PropertyFilterSpec[] { pfSpec });
 	    
-	    ObjectSpec oSpec = new ObjectSpec();
-	    oSpec.setObj(_mor);
-	    oSpec.setSkip(Boolean.TRUE);
-	    oSpec.setSelectSet(new SelectionSpec[] { dc2DatastoreTraversal });
+	    if(ocs != null) {
+	    	for(ObjectContent oc : ocs) {
+	    		DynamicProperty[] props = oc.getPropSet();
+	    		if(props != null) {
+	    			for(DynamicProperty prop : props) {
+	    				if(prop.getVal().equals(dvPortGroupName))
+	    					return oc.getObj();
+	    			}
+	    		}
+	    	}
+	    }
+	    return null;
+	}	
 
-	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-	    
-	    return _context.getService().retrieveProperties(
-	    	_context.getServiceContent().getPropertyCollector(), 
-	    	new PropertyFilterSpec[] { pfSpec }); 
+	public boolean hasDvPortGroup(String dvPortGroupName) throws Exception {
+		ManagedObjectReference morNetwork = getDvPortGroupMor(dvPortGroupName);
+		if(morNetwork != null)
+			return true;
+		return false;		
 	}
 	
-	public ObjectContent[] getVmPropertiesOnDatacenterVmFolder(String[] propertyPaths) throws Exception {
+	public DVPortgroupConfigInfo getDvPortGroupSpec(String dvPortGroupName) throws Exception {
+		DVPortgroupConfigInfo configSpec = null;
+		String nameProperty = null;
 		PropertySpec pSpec = new PropertySpec();
-		pSpec.setType("VirtualMachine");
-		pSpec.setPathSet(propertyPaths);
+		pSpec.setType("DistributedVirtualPortgroup");
+		pSpec.setPathSet(new String[] {"name", "config"});
 		
-	    TraversalSpec dc2VmFolderTraversal = new TraversalSpec();
-	    dc2VmFolderTraversal.setType("Datacenter");
-	    dc2VmFolderTraversal.setPath("vmFolder");
-	    dc2VmFolderTraversal.setName("dc2VmFolderTraversal");
-	    
-	    SelectionSpec recurseFolders = new SelectionSpec();
-	    recurseFolders.setName("folder2childEntity");
-	      
-	    TraversalSpec folder2childEntity = new TraversalSpec();
-	    folder2childEntity.setType("Folder");
-	    folder2childEntity.setPath("childEntity");
-	    folder2childEntity.setName(recurseFolders.getName());
-	    folder2childEntity.setSelectSet(new SelectionSpec[] { recurseFolders });
-	    dc2VmFolderTraversal.setSelectSet(new SelectionSpec[] { folder2childEntity } );
+	    TraversalSpec datacenter2DvPortGroupTraversal = new TraversalSpec();
+	    datacenter2DvPortGroupTraversal.setType("Datacenter");
+	    datacenter2DvPortGroupTraversal.setPath("network");
+	    datacenter2DvPortGroupTraversal.setName("datacenter2DvPortgroupTraversal");
 
 	    ObjectSpec oSpec = new ObjectSpec();
 	    oSpec.setObj(_mor);
 	    oSpec.setSkip(Boolean.TRUE);
-	    oSpec.setSelectSet(new SelectionSpec[] { dc2VmFolderTraversal });
+	    oSpec.setSelectSet(new SelectionSpec[] { datacenter2DvPortGroupTraversal });
 
 	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
 	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
 	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
 	    
-	    return _context.getService().retrieveProperties(
+	    ObjectContent[] ocs = _context.getService().retrieveProperties(
 	    	_context.getServiceContent().getPropertyCollector(), 
-	    	new PropertyFilterSpec[] { pfSpec }); 
-	}
-	
-	public static Pair<DatacenterMO, String> getOwnerDatacenter(VmwareContext context, 
-		ManagedObjectReference morEntity) throws Exception {
-		
-		PropertySpec pSpec = new PropertySpec();
-		pSpec.setType("Datacenter");
-		pSpec.setPathSet(new String[] { "name" });
-		
-	    TraversalSpec entityParentTraversal = new TraversalSpec();
-	    entityParentTraversal.setType("ManagedEntity");
-	    entityParentTraversal.setPath("parent");
-	    entityParentTraversal.setName("entityParentTraversal");
-	    entityParentTraversal.setSelectSet(new SelectionSpec[] { new SelectionSpec(null, null, "entityParentTraversal") });
-
-	    ObjectSpec oSpec = new ObjectSpec();
-	    oSpec.setObj(morEntity);
-	    oSpec.setSkip(Boolean.TRUE);
-	    oSpec.setSelectSet(new SelectionSpec[] { entityParentTraversal });
-
-	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-	    
-	    ObjectContent[] ocs = context.getService().retrieveProperties(
-	    	context.getServiceContent().getPropertyCollector(), 
 	    	new PropertyFilterSpec[] { pfSpec });
 	    
-	    assert(ocs != null);
-	    assert(ocs[0].getObj() != null);
-	    assert(ocs[0].getPropSet(0) != null);
-	    assert(ocs[0].getPropSet(0).getVal() != null);
-	    
-	    String dcName = ocs[0].getPropSet(0).getVal().toString(); 
-	    return new Pair<DatacenterMO, String>(new DatacenterMO(context, ocs[0].getObj()), dcName); 
-	}
+	    if(ocs != null) {
+	    	for(ObjectContent oc : ocs) {
+	    		DynamicProperty[] props = oc.getPropSet();
+	    		if(props != null) {
+	    			assert(props.length == 2);
+	    			for(DynamicProperty prop : props) {
+	    				if(prop.getName().equals("config")) {
+	    					  configSpec = (DVPortgroupConfigInfo) prop.getVal();
+	    				}
+	    				else {
+	    					nameProperty = prop.getVal().toString();
+	    				}
+	    			}
+	    			if(nameProperty.equalsIgnoreCase(dvPortGroupName)) {
+	    				return configSpec;	    			
+	    			}
+	    		}
+	    	}
+	    }
+	    return null;
+	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aa1f26cb/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
index 8ea4c5f..03293e2 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
@@ -27,9 +27,7 @@ import com.vmware.apputils.vim25.ServiceUtil;
 import com.vmware.vim25.AboutInfo;
 import com.vmware.vim25.ClusterDasConfigInfo;
 import com.vmware.vim25.ComputeResourceSummary;
-import com.vmware.vim25.DVPortgroupConfigSpec;
 import com.vmware.vim25.DatastoreSummary;
-import com.vmware.vim25.DistributedVirtualSwitchInfo;
 import com.vmware.vim25.DynamicProperty;
 import com.vmware.vim25.HostConfigManager;
 import com.vmware.vim25.HostConnectInfo;
@@ -895,95 +893,4 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
     	HostRuntimeInfo runtimeInfo = (HostRuntimeInfo)_context.getServiceUtil().getDynamicProperty(_mor, "runtime");
     	return runtimeInfo.getConnectionState() == HostSystemConnectionState.connected;
 	}
-	
-	public DVPortgroupConfigSpec getDvPortGroupSpec(String dvPortGroupName) throws Exception {
-		DVPortgroupConfigSpec configSpec = null;
-		String nameProperty = null;
-		PropertySpec pSpec = new PropertySpec();
-		pSpec.setType("DistributedVirtualPortgroup");
-		pSpec.setPathSet(new String[] {"summary.name", "config"});
-		
-	    TraversalSpec host2DvPortGroupTraversal = new TraversalSpec();
-	    host2DvPortGroupTraversal.setType("HostSystem");
-	    host2DvPortGroupTraversal.setPath("network");
-	    host2DvPortGroupTraversal.setName("host2DvPortgroupTraversal");
-
-	    ObjectSpec oSpec = new ObjectSpec();
-	    oSpec.setObj(_mor);
-	    oSpec.setSkip(Boolean.TRUE);
-	    oSpec.setSelectSet(new SelectionSpec[] { host2DvPortGroupTraversal });
-
-	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-	    
-	    ObjectContent[] ocs = _context.getService().retrieveProperties(
-	    	_context.getServiceContent().getPropertyCollector(), 
-	    	new PropertyFilterSpec[] { pfSpec });
-	    
-	    if(ocs != null) {
-	    	for(ObjectContent oc : ocs) {
-	    		DynamicProperty[] props = oc.getPropSet();
-	    		if(props != null) {
-	    			assert(props.length == 2);
-	    			for(DynamicProperty prop : props) {
-	    				if(prop.getName().equals("config")) {
-	    					  configSpec = (DVPortgroupConfigSpec) prop.getVal();
-	    				}
-	    				else {
-	    					nameProperty = prop.getVal().toString();
-	    				}
-	    				if(nameProperty.equalsIgnoreCase(dvPortGroupName)) {
-	    					return configSpec;
-	    				}
-	    			}
-	    		}
-	    	}
-	    }
-	    return null;
-	}
-	
-	public ManagedObjectReference getDvPortGroupMor(String dvPortGroupName) throws Exception {
-		PropertySpec pSpec = new PropertySpec();
-		pSpec.setType("DistributedVirtualPortgroup");
-		pSpec.setPathSet(new String[] {"summary.name"});
-		
-	    TraversalSpec host2DvPortGroupTraversal = new TraversalSpec();
-	    host2DvPortGroupTraversal.setType("HostSystem");
-	    host2DvPortGroupTraversal.setPath("network");
-	    host2DvPortGroupTraversal.setName("host2DvPortgroupTraversal");
-
-	    ObjectSpec oSpec = new ObjectSpec();
-	    oSpec.setObj(_mor);
-	    oSpec.setSkip(Boolean.TRUE);
-	    oSpec.setSelectSet(new SelectionSpec[] { host2DvPortGroupTraversal });
-
-	    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-	    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-	    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-	    
-	    ObjectContent[] ocs = _context.getService().retrieveProperties(
-	    	_context.getServiceContent().getPropertyCollector(), 
-	    	new PropertyFilterSpec[] { pfSpec });
-	    
-	    if(ocs != null) {
-	    	for(ObjectContent oc : ocs) {
-	    		DynamicProperty[] props = oc.getPropSet();
-	    		if(props != null) {
-	    			for(DynamicProperty prop : props) {
-	    				if(prop.getVal().equals(dvPortGroupName))
-	    					return oc.getObj();
-	    			}
-	    		}
-	    	}
-	    }
-	    return null;
-	}
-	
-	public boolean hasDvPortGroup(String dvPortGroupName) throws Exception {
-		ManagedObjectReference morNetwork = getDvPortGroupMor(dvPortGroupName);
-		if(morNetwork != null)
-			return true;
-		return false;		
-	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aa1f26cb/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
----------------------------------------------------------------------
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 6adb302..f44ed1c 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
@@ -38,6 +38,7 @@ import com.vmware.vim25.BoolPolicy;
 import com.vmware.vim25.DVPortgroupConfigSpec;
 import com.vmware.vim25.DVSTrafficShapingPolicy;
 //import com.vmware.vim25.DistributedVirtualSwitchKeyedOpaqueBlob;
+import com.vmware.vim25.DVPortgroupConfigInfo;
 import com.vmware.vim25.DynamicProperty;
 import com.vmware.vim25.HostNetworkTrafficShapingPolicy;
 import com.vmware.vim25.HostPortGroupSpec;
@@ -220,8 +221,10 @@ public class HypervisorHostHelper {
             long timeOutMs) throws Exception, CloudRuntimeException {		
 		ManagedObjectReference morNetwork = null;
 		VmwareContext context = hostMo.getContext();
+		ManagedObjectReference dcMor = hostMo.getHyperHostDatacenter();
+		DatacenterMO dataCenterMo = new DatacenterMO(context, dcMor);
 
-		ManagedObjectReference morEthernetPortProfile = hostMo.getDvPortGroupMor(ethPortProfileName);
+		ManagedObjectReference morEthernetPortProfile = dataCenterMo.getDvPortGroupMor(ethPortProfileName);
 
         if (morEthernetPortProfile == null) {
             String msg = "Unable to find Ethernet port profile " + ethPortProfileName;
@@ -261,12 +264,13 @@ public class HypervisorHostHelper {
 			shapingPolicy.setPeakBandwidth(peakBandwidth);
 			shapingPolicy.setBurstSize(burstSize);
 		}
+		
 		boolean bWaitPortGroupReady = false;
-        if (!hostMo.hasDvPortGroup(networkName)) {
+        if (!dataCenterMo.hasDvPortGroup(networkName)) {
             createPortProfile(context, ethPortProfileName, networkName, vid, networkRateMbps);
             bWaitPortGroupReady = true;
         } else {
-        	DVPortgroupConfigSpec spec = hostMo.getDvPortGroupSpec(networkName);        	
+        	DVPortgroupConfigInfo spec = dataCenterMo.getDvPortGroupSpec(networkName);        	
             if(!isSpecMatch(spec, vid, shapingPolicy)) {
                 updatePortProfile(context, ethPortProfileName, vid, networkRateMbps);                
                 bWaitPortGroupReady = true;
@@ -274,9 +278,9 @@ public class HypervisorHostHelper {
         }
 		//Wait for dvPortGroup on vCenter		
         if(bWaitPortGroupReady) 
-            morNetwork = waitForDvPortGroupReady(hostMo, networkName, timeOutMs);
+            morNetwork = waitForDvPortGroupReady(dataCenterMo, networkName, timeOutMs);
         else
-            morNetwork = hostMo.getDvPortGroupMor(networkName);
+            morNetwork = dataCenterMo.getDvPortGroupMor(networkName);
         if (morNetwork == null) {
             String msg = "Failed to create guest network " + networkName;
             s_logger.error(msg);
@@ -292,14 +296,14 @@ public class HypervisorHostHelper {
 	}
 	
     private static ManagedObjectReference waitForDvPortGroupReady(
-			HostMO hostMo, String dvPortGroupName, long timeOutMs) throws Exception {
+			DatacenterMO dataCenterMo, String dvPortGroupName, long timeOutMs) throws Exception {
 		ManagedObjectReference morDvPortGroup = null;
 
 		// if DvPortGroup is just created, we may fail to retrieve it, we
 		// need to retry
 		long startTick = System.currentTimeMillis();
 		while (System.currentTimeMillis() - startTick <= timeOutMs) {
-			morDvPortGroup = hostMo.getDvPortGroupMor(dvPortGroupName);
+			morDvPortGroup = dataCenterMo.getDvPortGroupMor(dvPortGroupName);
 			if (morDvPortGroup != null) {
 				break;
 			}
@@ -310,7 +314,7 @@ public class HypervisorHostHelper {
 		return morDvPortGroup;
 	}
 
-	private static boolean isSpecMatch(DVPortgroupConfigSpec spec, Integer vid,
+	private static boolean isSpecMatch(DVPortgroupConfigInfo spec, Integer vid,
 			DVSTrafficShapingPolicy shapingPolicy) {
 		DVSTrafficShapingPolicy currentTrafficShapingPolicy;
 		currentTrafficShapingPolicy = spec.getDefaultPortConfig().getInShapingPolicy();