From 687e87faa7a2d828fa428ac0b013e0c1de361bdc Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Tue, 27 Aug 2013 15:04:17 -0700 Subject: [PATCH] CLOUDSTACK-4529: use property collector to collect all information in one round --- .../com/cloud/hypervisor/vmware/mo/HostMO.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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 c0ef2175af5..49a340c366e 100755 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java @@ -35,6 +35,7 @@ import com.vmware.vim25.AboutInfo; import com.vmware.vim25.AlreadyExistsFaultMsg; import com.vmware.vim25.ClusterDasConfigInfo; import com.vmware.vim25.ComputeResourceSummary; +import com.vmware.vim25.CustomFieldStringValue; import com.vmware.vim25.DatastoreSummary; import com.vmware.vim25.DynamicProperty; import com.vmware.vim25.HostConfigManager; @@ -577,8 +578,14 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost { } public HashMap getVmVncPortsOnHost() throws Exception { + + int key = getCustomFieldKey("VirtualMachine", CustomFieldConstants.CLOUD_VM_INTERNAL_NAME); + if(key == 0) { + s_logger.warn("Custom field " + CustomFieldConstants.CLOUD_VM_INTERNAL_NAME + " is not registered ?!"); + } + ObjectContent[] ocs = getVmPropertiesOnHyperHost( - new String[] { "name", "config.extraConfig[\"RemoteDisplay.vnc.port\"]" } + new String[] { "name", "config.extraConfig[\"RemoteDisplay.vnc.port\"]", "value[" + key + "]" } ); HashMap portInfo = new HashMap(); @@ -592,14 +599,15 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost { for(DynamicProperty objProp : objProps) { if(objProp.getName().equals("name")) { vmName = (String)objProp.getVal(); + } else if(objProp.getName().startsWith("value[")) { + if(objProp.getVal() != null) + vmInternalCSName = ((CustomFieldStringValue)objProp.getVal()).getValue(); } else { OptionValue optValue = (OptionValue)objProp.getVal(); value = (String)optValue.getValue(); } } - VirtualMachineMO vmMo = new VirtualMachineMO(_context, oc.getObj()); - // Check if vmMo has the custom property CLOUD_VM_INTERNAL_NAME set. - vmInternalCSName = vmMo.getCustomFieldValue(CustomFieldConstants.CLOUD_VM_INTERNAL_NAME); + if (vmInternalCSName != null && isUserVMInternalCSName(vmInternalCSName)) vmName = vmInternalCSName;