Search in sources :

Example 41 with VirtualMachine

use of com.vmware.vim25.mo.VirtualMachine in project cloudstack by apache.

the class VirtualMachineMO method getSnapshotDescriptorDatastorePath.

public String getSnapshotDescriptorDatastorePath() throws Exception {
    PropertySpec pSpec = new PropertySpec();
    pSpec.setType("VirtualMachine");
    pSpec.getPathSet().add("name");
    pSpec.getPathSet().add("config.files");
    ObjectSpec oSpec = new ObjectSpec();
    oSpec.setObj(_mor);
    oSpec.setSkip(Boolean.FALSE);
    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
    pfSpec.getPropSet().add(pSpec);
    pfSpec.getObjectSet().add(oSpec);
    List<PropertyFilterSpec> pfSpecArr = new ArrayList<PropertyFilterSpec>();
    pfSpecArr.add(pfSpec);
    List<ObjectContent> ocs = _context.getService().retrieveProperties(_context.getPropertyCollector(), pfSpecArr);
    assert (ocs != null);
    String vmName = null;
    VirtualMachineFileInfo fileInfo = null;
    assert (ocs.size() == 1);
    for (ObjectContent oc : ocs) {
        List<DynamicProperty> props = oc.getPropSet();
        if (props != null) {
            assert (props.size() == 2);
            for (DynamicProperty prop : props) {
                if (prop.getName().equals("name")) {
                    vmName = prop.getVal().toString();
                } else {
                    fileInfo = (VirtualMachineFileInfo) prop.getVal();
                }
            }
        }
    }
    assert (vmName != null);
    assert (fileInfo != null);
    // .vmsd file exists at the same directory of .vmx file
    DatastoreFile vmxFile = new DatastoreFile(fileInfo.getVmPathName());
    return vmxFile.getCompanionPath(vmName + ".vmsd");
}
Also used : PropertyFilterSpec(com.vmware.vim25.PropertyFilterSpec) ObjectContent(com.vmware.vim25.ObjectContent) ObjectSpec(com.vmware.vim25.ObjectSpec) PropertySpec(com.vmware.vim25.PropertySpec) DynamicProperty(com.vmware.vim25.DynamicProperty) ArrayList(java.util.ArrayList) VirtualMachineFileInfo(com.vmware.vim25.VirtualMachineFileInfo)

Aggregations

ObjectContent (com.vmware.vim25.ObjectContent)22 DynamicProperty (com.vmware.vim25.DynamicProperty)16 ObjectSpec (com.vmware.vim25.ObjectSpec)15 PropertyFilterSpec (com.vmware.vim25.PropertyFilterSpec)15 PropertySpec (com.vmware.vim25.PropertySpec)15 ArrayList (java.util.ArrayList)14 VirtualMachine (com.vmware.vim25.mo.VirtualMachine)13 TraversalSpec (com.vmware.vim25.TraversalSpec)12 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)7 RemoteException (java.rmi.RemoteException)7 ManagedEntity (com.vmware.vim25.mo.ManagedEntity)6 VmwareHypervisorHost (com.cloud.hypervisor.vmware.mo.VmwareHypervisorHost)5 CustomFieldStringValue (com.vmware.vim25.CustomFieldStringValue)5 HostMO (com.cloud.hypervisor.vmware.mo.HostMO)4 Gson (com.google.gson.Gson)4 InventoryNavigator (com.vmware.vim25.mo.InventoryNavigator)4 HashMap (java.util.HashMap)4 PerfCounterInfo (com.vmware.vim25.PerfCounterInfo)3 VirtualMachinePowerState (com.vmware.vim25.VirtualMachinePowerState)3 UnsupportedEncodingException (java.io.UnsupportedEncodingException)3