Search in sources :

Example 6 with VirtualDeviceBackingInfo

use of com.vmware.vim25.VirtualDeviceBackingInfo in project cloudstack by apache.

the class VirtualMachineMO method getAllDiskDatastores.

public List<Pair<Integer, ManagedObjectReference>> getAllDiskDatastores() throws Exception {
    List<Pair<Integer, ManagedObjectReference>> disks = new ArrayList<Pair<Integer, ManagedObjectReference>>();
    List<VirtualDevice> devices = _context.getVimClient().getDynamicProperty(_mor, "config.hardware.device");
    if (devices != null && devices.size() > 0) {
        for (VirtualDevice device : devices) {
            if (device instanceof VirtualDisk) {
                VirtualDeviceBackingInfo backingInfo = ((VirtualDisk) device).getBacking();
                if (backingInfo instanceof VirtualDiskFlatVer2BackingInfo) {
                    VirtualDiskFlatVer2BackingInfo diskBackingInfo = (VirtualDiskFlatVer2BackingInfo) backingInfo;
                    disks.add(new Pair<Integer, ManagedObjectReference>(new Integer(device.getKey()), diskBackingInfo.getDatastore()));
                }
            }
        }
    }
    return disks;
}
Also used : VirtualDiskFlatVer2BackingInfo(com.vmware.vim25.VirtualDiskFlatVer2BackingInfo) ArrayList(java.util.ArrayList) VirtualDevice(com.vmware.vim25.VirtualDevice) VirtualDeviceBackingInfo(com.vmware.vim25.VirtualDeviceBackingInfo) VirtualDisk(com.vmware.vim25.VirtualDisk) ArrayOfManagedObjectReference(com.vmware.vim25.ArrayOfManagedObjectReference) ManagedObjectReference(com.vmware.vim25.ManagedObjectReference) Pair(com.cloud.utils.Pair)

Example 7 with VirtualDeviceBackingInfo

use of com.vmware.vim25.VirtualDeviceBackingInfo in project CloudStack-archive by CloudStack-extras.

the class VirtualMachineMO method getDiskDevice.

// return pair of VirtualDisk and disk device bus name(ide0:0, etc)
public Pair<VirtualDisk, String> getDiskDevice(String vmdkDatastorePath, boolean matchExactly) throws Exception {
    VirtualDevice[] devices = (VirtualDevice[]) _context.getServiceUtil().getDynamicProperty(_mor, "config.hardware.device");
    s_logger.info("Look for disk device info from volume : " + vmdkDatastorePath);
    DatastoreFile dsSrcFile = new DatastoreFile(vmdkDatastorePath);
    String srcBaseName = dsSrcFile.getFileBaseName();
    if (devices != null && devices.length > 0) {
        for (VirtualDevice device : devices) {
            if (device instanceof VirtualDisk) {
                s_logger.info("Test against disk device, controller key: " + device.getControllerKey() + ", unit number: " + device.getUnitNumber());
                VirtualDeviceBackingInfo backingInfo = ((VirtualDisk) device).getBacking();
                if (backingInfo instanceof VirtualDiskFlatVer2BackingInfo) {
                    VirtualDiskFlatVer2BackingInfo diskBackingInfo = (VirtualDiskFlatVer2BackingInfo) backingInfo;
                    do {
                        s_logger.info("Test against disk backing : " + diskBackingInfo.getFileName());
                        DatastoreFile dsBackingFile = new DatastoreFile(diskBackingInfo.getFileName());
                        String backingBaseName = dsBackingFile.getFileBaseName();
                        if (matchExactly) {
                            if (backingBaseName.equalsIgnoreCase(srcBaseName)) {
                                String deviceNumbering = getDeviceBusName(devices, device);
                                s_logger.info("Disk backing : " + diskBackingInfo.getFileName() + " matches ==> " + deviceNumbering);
                                return new Pair<VirtualDisk, String>((VirtualDisk) device, deviceNumbering);
                            }
                        } else {
                            if (backingBaseName.contains(srcBaseName)) {
                                String deviceNumbering = getDeviceBusName(devices, device);
                                s_logger.info("Disk backing : " + diskBackingInfo.getFileName() + " matches ==> " + deviceNumbering);
                                return new Pair<VirtualDisk, String>((VirtualDisk) device, deviceNumbering);
                            }
                        }
                        diskBackingInfo = diskBackingInfo.getParent();
                    } while (diskBackingInfo != null);
                }
            }
        }
    }
    return null;
}
Also used : VirtualDiskFlatVer2BackingInfo(com.vmware.vim25.VirtualDiskFlatVer2BackingInfo) VirtualDevice(com.vmware.vim25.VirtualDevice) VirtualDeviceBackingInfo(com.vmware.vim25.VirtualDeviceBackingInfo) VirtualDisk(com.vmware.vim25.VirtualDisk) Pair(com.cloud.utils.Pair)

Example 8 with VirtualDeviceBackingInfo

use of com.vmware.vim25.VirtualDeviceBackingInfo in project cloudstack by apache.

the class VirtualMachineMO method getDiskInfoBuilder.

public VirtualMachineDiskInfoBuilder getDiskInfoBuilder() throws Exception {
    VirtualMachineDiskInfoBuilder builder = new VirtualMachineDiskInfoBuilder();
    List<VirtualDevice> devices = _context.getVimClient().getDynamicProperty(_mor, "config.hardware.device");
    if (devices != null && devices.size() > 0) {
        for (VirtualDevice device : devices) {
            if (device instanceof VirtualDisk) {
                VirtualDeviceBackingInfo backingInfo = ((VirtualDisk) device).getBacking();
                if (backingInfo instanceof VirtualDiskFlatVer2BackingInfo) {
                    VirtualDiskFlatVer2BackingInfo diskBackingInfo = (VirtualDiskFlatVer2BackingInfo) backingInfo;
                    while (diskBackingInfo != null) {
                        String deviceBusName = getDeviceBusName(devices, device);
                        builder.addDisk(deviceBusName, diskBackingInfo.getFileName());
                        diskBackingInfo = diskBackingInfo.getParent();
                    }
                }
            }
        }
    }
    return builder;
}
Also used : VirtualDiskFlatVer2BackingInfo(com.vmware.vim25.VirtualDiskFlatVer2BackingInfo) VirtualDevice(com.vmware.vim25.VirtualDevice) VirtualDeviceBackingInfo(com.vmware.vim25.VirtualDeviceBackingInfo) VirtualDisk(com.vmware.vim25.VirtualDisk)

Example 9 with VirtualDeviceBackingInfo

use of com.vmware.vim25.VirtualDeviceBackingInfo in project cloudstack by apache.

the class VirtualMachineMO method getDiskDevice.

// return pair of VirtualDisk and disk device bus name(ide0:0, etc)
public Pair<VirtualDisk, String> getDiskDevice(String vmdkDatastorePath) throws Exception {
    List<VirtualDevice> devices = _context.getVimClient().getDynamicProperty(_mor, "config.hardware.device");
    ArrayList<Pair<VirtualDisk, String>> partialMatchingDiskDevices = new ArrayList<Pair<VirtualDisk, String>>();
    DatastoreFile dsSrcFile = new DatastoreFile(vmdkDatastorePath);
    String srcBaseName = dsSrcFile.getFileBaseName();
    String trimmedSrcBaseName = VmwareHelper.trimSnapshotDeltaPostfix(srcBaseName);
    s_logger.info("Look for disk device info for volume : " + vmdkDatastorePath + " with base name: " + srcBaseName);
    if (devices != null && devices.size() > 0) {
        for (VirtualDevice device : devices) {
            if (device instanceof VirtualDisk) {
                s_logger.info("Test against disk device, controller key: " + device.getControllerKey() + ", unit number: " + device.getUnitNumber());
                VirtualDeviceBackingInfo backingInfo = ((VirtualDisk) device).getBacking();
                if (backingInfo instanceof VirtualDiskFlatVer2BackingInfo) {
                    VirtualDiskFlatVer2BackingInfo diskBackingInfo = (VirtualDiskFlatVer2BackingInfo) backingInfo;
                    do {
                        s_logger.info("Test against disk backing : " + diskBackingInfo.getFileName());
                        DatastoreFile dsBackingFile = new DatastoreFile(diskBackingInfo.getFileName());
                        String backingBaseName = dsBackingFile.getFileBaseName();
                        if (backingBaseName.equalsIgnoreCase(srcBaseName)) {
                            String deviceNumbering = getDeviceBusName(devices, device);
                            s_logger.info("Disk backing : " + diskBackingInfo.getFileName() + " matches ==> " + deviceNumbering);
                            return new Pair<VirtualDisk, String>((VirtualDisk) device, deviceNumbering);
                        }
                        if (backingBaseName.contains(trimmedSrcBaseName)) {
                            String deviceNumbering = getDeviceBusName(devices, device);
                            partialMatchingDiskDevices.add(new Pair<VirtualDisk, String>((VirtualDisk) device, deviceNumbering));
                        }
                        diskBackingInfo = diskBackingInfo.getParent();
                    } while (diskBackingInfo != null);
                }
            }
        }
    }
    // No disk device was found with an exact match for the volume path, hence look for disk device that matches the trimmed name.
    s_logger.info("No disk device with an exact match found for volume : " + vmdkDatastorePath + ". Look for disk device info against trimmed base name: " + srcBaseName);
    if (partialMatchingDiskDevices != null) {
        if (partialMatchingDiskDevices.size() == 1) {
            VirtualDiskFlatVer2BackingInfo matchingDiskBackingInfo = (VirtualDiskFlatVer2BackingInfo) partialMatchingDiskDevices.get(0).first().getBacking();
            s_logger.info("Disk backing : " + matchingDiskBackingInfo.getFileName() + " matches ==> " + partialMatchingDiskDevices.get(0).second());
            return partialMatchingDiskDevices.get(0);
        } else if (partialMatchingDiskDevices.size() > 1) {
            s_logger.warn("Disk device info lookup for volume: " + vmdkDatastorePath + " failed as multiple disk devices were found to match" + " volume's trimmed base name: " + trimmedSrcBaseName);
            return null;
        }
    }
    s_logger.warn("Disk device info lookup for volume: " + vmdkDatastorePath + " failed as no matching disk device found");
    return null;
}
Also used : VirtualDiskFlatVer2BackingInfo(com.vmware.vim25.VirtualDiskFlatVer2BackingInfo) VirtualDevice(com.vmware.vim25.VirtualDevice) ArrayList(java.util.ArrayList) VirtualDeviceBackingInfo(com.vmware.vim25.VirtualDeviceBackingInfo) VirtualDisk(com.vmware.vim25.VirtualDisk) Pair(com.cloud.utils.Pair)

Example 10 with VirtualDeviceBackingInfo

use of com.vmware.vim25.VirtualDeviceBackingInfo in project cloudstack by apache.

the class VmwareResource method getAbsoluteVmdkFile.

private String getAbsoluteVmdkFile(VirtualDisk disk) {
    String vmdkAbsFile = null;
    VirtualDeviceBackingInfo backingInfo = disk.getBacking();
    if (backingInfo instanceof VirtualDiskFlatVer2BackingInfo) {
        VirtualDiskFlatVer2BackingInfo diskBackingInfo = (VirtualDiskFlatVer2BackingInfo) backingInfo;
        vmdkAbsFile = diskBackingInfo.getFileName();
    }
    return vmdkAbsFile;
}
Also used : VirtualDiskFlatVer2BackingInfo(com.vmware.vim25.VirtualDiskFlatVer2BackingInfo) VirtualDeviceBackingInfo(com.vmware.vim25.VirtualDeviceBackingInfo)

Aggregations

VirtualDeviceBackingInfo (com.vmware.vim25.VirtualDeviceBackingInfo)12 VirtualDiskFlatVer2BackingInfo (com.vmware.vim25.VirtualDiskFlatVer2BackingInfo)11 VirtualDisk (com.vmware.vim25.VirtualDisk)7 VirtualDevice (com.vmware.vim25.VirtualDevice)6 Pair (com.cloud.utils.Pair)5 ArrayList (java.util.ArrayList)5 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)4 ArrayOfManagedObjectReference (com.vmware.vim25.ArrayOfManagedObjectReference)3 IOException (java.io.IOException)3 VirtualDeviceConnectInfo (com.vmware.vim25.VirtualDeviceConnectInfo)2 VirtualDiskFlatVer1BackingInfo (com.vmware.vim25.VirtualDiskFlatVer1BackingInfo)2 VirtualDiskRawDiskMappingVer1BackingInfo (com.vmware.vim25.VirtualDiskRawDiskMappingVer1BackingInfo)2 VirtualDiskSparseVer1BackingInfo (com.vmware.vim25.VirtualDiskSparseVer1BackingInfo)2 VirtualDiskSparseVer2BackingInfo (com.vmware.vim25.VirtualDiskSparseVer2BackingInfo)2 VirtualMachineFileInfo (com.vmware.vim25.VirtualMachineFileInfo)2 NicTO (com.cloud.agent.api.to.NicTO)1 CloudException (com.cloud.exception.CloudException)1 InternalErrorException (com.cloud.exception.InternalErrorException)1 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)1 BoolPolicy (com.vmware.vim25.BoolPolicy)1