use of com.vmware.vim25.CustomFieldStringValue in project cloudstack by apache.
the class DatacenterMO method findVmByNameAndLabel.
public List<VirtualMachineMO> findVmByNameAndLabel(String vmLabel) throws Exception {
CustomFieldsManagerMO cfmMo = new CustomFieldsManagerMO(_context, _context.getServiceContent().getCustomFieldsManager());
int key = cfmMo.getCustomFieldKey("VirtualMachine", CustomFieldConstants.CLOUD_UUID);
assert (key != 0);
List<VirtualMachineMO> list = new ArrayList<VirtualMachineMO>();
List<ObjectContent> ocs = getVmPropertiesOnDatacenterVmFolder(new String[] { "name", String.format("value[%d]", key) });
if (ocs != null && ocs.size() > 0) {
for (ObjectContent oc : ocs) {
List<DynamicProperty> props = oc.getPropSet();
if (props != null) {
for (DynamicProperty prop : props) {
if (prop.getVal() != null) {
if (prop.getName().equalsIgnoreCase("name")) {
if (prop.getVal().toString().equals(vmLabel)) {
list.add(new VirtualMachineMO(_context, oc.getObj()));
// break out inner loop
break;
}
} else if (prop.getVal() instanceof CustomFieldStringValue) {
String val = ((CustomFieldStringValue) prop.getVal()).getValue();
if (val.equals(vmLabel)) {
list.add(new VirtualMachineMO(_context, oc.getObj()));
// break out inner loop
break;
}
}
}
}
}
}
}
return list;
}
use of com.vmware.vim25.CustomFieldStringValue in project cloudstack by apache.
the class DatacenterMO method checkIfVmAlreadyExistsInVcenter.
public VirtualMachineMO checkIfVmAlreadyExistsInVcenter(String vmNameOnVcenter, String vmNameInCS) 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 ?!");
}
List<ObjectContent> ocs = getVmPropertiesOnDatacenterVmFolder(new String[] { "name", String.format("value[%d]", key) });
if (ocs != null && ocs.size() > 0) {
for (ObjectContent oc : ocs) {
List<DynamicProperty> props = oc.getPropSet();
if (props != null) {
String vmVcenterName = null;
String vmInternalCSName = null;
for (DynamicProperty prop : props) {
if (prop.getName().equals("name")) {
vmVcenterName = prop.getVal().toString();
}
if (prop.getName().startsWith("value[") && prop.getVal() != null) {
vmInternalCSName = ((CustomFieldStringValue) prop.getVal()).getValue();
}
}
if (vmNameOnVcenter.equals(vmVcenterName)) {
if (vmInternalCSName != null && !vmInternalCSName.isEmpty() && !vmNameInCS.equals(vmInternalCSName)) {
return (new VirtualMachineMO(_context, oc.getObj()));
}
}
}
}
}
return null;
}
use of com.vmware.vim25.CustomFieldStringValue in project cloudstack by apache.
the class BaseMO method getCustomFieldValue.
public String getCustomFieldValue(String fieldName) throws Exception {
int key = getCustomFieldKey(fieldName);
if (key == 0)
return null;
CustomFieldStringValue cfValue = (CustomFieldStringValue) _context.getVimClient().getDynamicProperty(getMor(), String.format("value[%d]", key));
if (cfValue != null)
return cfValue.getValue();
return null;
}
use of com.vmware.vim25.CustomFieldStringValue in project cloudstack by apache.
the class HostMO method loadVmCache.
private void loadVmCache() throws Exception {
if (s_logger.isDebugEnabled())
s_logger.debug("load VM cache on host");
_vmCache.clear();
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 ?!");
}
// name is the name of the VM as it appears in vCenter. The CLOUD_VM_INTERNAL_NAME custom
// field value contains the name of the VM as it is maintained internally by cloudstack (i-x-y).
ObjectContent[] ocs = getVmPropertiesOnHyperHost(new String[] { "name", "value[" + key + "]" });
if (ocs != null && ocs.length > 0) {
for (ObjectContent oc : ocs) {
List<DynamicProperty> props = oc.getPropSet();
if (props != null) {
String vmVcenterName = null;
String vmInternalCSName = null;
for (DynamicProperty prop : props) {
if (prop.getName().equals("name")) {
vmVcenterName = prop.getVal().toString();
} else if (prop.getName().startsWith("value[")) {
if (prop.getVal() != null)
vmInternalCSName = ((CustomFieldStringValue) prop.getVal()).getValue();
}
}
String vmName = null;
if (vmInternalCSName != null && isUserVMInternalCSName(vmInternalCSName)) {
vmName = vmInternalCSName;
} else {
vmName = vmVcenterName;
}
if (s_logger.isTraceEnabled())
s_logger.trace("put " + vmName + " into host cache");
VirtualMachineMO virtualMachine = new VirtualMachineMO(_context, oc.getObj());
virtualMachine.setInternalCSName(vmName);
_vmCache.put(vmName, virtualMachine);
}
}
}
}
use of com.vmware.vim25.CustomFieldStringValue in project cloudstack by apache.
the class HostMO method getVmVncPortsOnHost.
public HashMap<String, Integer> 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\"]", "value[" + key + "]" });
HashMap<String, Integer> portInfo = new HashMap<String, Integer>();
if (ocs != null && ocs.length > 0) {
for (ObjectContent oc : ocs) {
List<DynamicProperty> objProps = oc.getPropSet();
if (objProps != null) {
String vmName = null;
String value = null;
String vmInternalCSName = null;
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();
}
}
if (vmInternalCSName != null && isUserVMInternalCSName(vmInternalCSName))
vmName = vmInternalCSName;
if (vmName != null && value != null) {
portInfo.put(vmName, Integer.parseInt(value));
}
}
}
}
return portInfo;
}
Aggregations