Search in sources :

Example 1 with DiskTO

use of com.cloud.legacymodel.to.DiskTO in project cosmic by MissionCriticalCloud.

the class LibvirtComputingResource method createVbd.

public void createVbd(final Connect conn, final VirtualMachineTO vmSpec, final String vmName, final LibvirtVmDef vm) throws InternalErrorException, LibvirtException, URISyntaxException {
    final List<DiskTO> disks = Arrays.asList(vmSpec.getDisks());
    Collections.sort(disks, new Comparator<DiskTO>() {

        @Override
        public int compare(final DiskTO arg0, final DiskTO arg1) {
            return arg0.getDiskSeq() > arg1.getDiskSeq() ? 1 : -1;
        }
    });
    for (final DiskTO volume : disks) {
        KvmPhysicalDisk physicalDisk = null;
        KvmStoragePool pool = null;
        final DataTO data = volume.getData();
        if (volume.getType() == VolumeType.ISO && data.getPath() != null) {
            final NfsTO nfsStore = (NfsTO) data.getDataStore();
            final String volPath = nfsStore.getUrl() + File.separator + data.getPath();
            final int index = volPath.lastIndexOf("/");
            final String volDir = volPath.substring(0, index);
            final String volName = volPath.substring(index + 1);
            final KvmStoragePool secondaryStorage = this.storagePoolMgr.getStoragePoolByUri(volDir);
            physicalDisk = secondaryStorage.getPhysicalDisk(volName);
        } else if (volume.getType() != VolumeType.ISO) {
            final PrimaryDataStoreTO store = (PrimaryDataStoreTO) data.getDataStore();
            physicalDisk = this.storagePoolMgr.getPhysicalDisk(store.getPoolType(), store.getUuid(), data.getPath());
            pool = physicalDisk.getPool();
        }
        String volPath = null;
        if (physicalDisk != null) {
            volPath = physicalDisk.getPath();
        }
        // check for disk activity, if detected we should exit because vm is running elsewhere
        if (this.diskActivityCheckEnabled && physicalDisk != null && physicalDisk.getFormat() == PhysicalDiskFormat.QCOW2) {
            logger.debug("Checking physical disk file at path " + volPath + " for disk activity to ensure vm is not running elsewhere");
            try {
                HypervisorUtils.checkVolumeFileForActivity(volPath, this.diskActivityCheckTimeoutSeconds, this.diskActivityInactiveThresholdMilliseconds, this.diskActivityCheckFileSizeMin);
            } catch (final IOException ex) {
                throw new CloudRuntimeException("Unable to check physical disk file for activity", ex);
            }
            logger.debug("Disk activity check cleared");
        }
        final LibvirtDiskDef disk = new LibvirtDiskDef();
        if (volume.getType() == VolumeType.ISO) {
            if (volPath == null) {
                /* Add iso as placeholder */
                disk.defIsoDisk(null);
            } else {
                disk.defIsoDisk(volPath);
            }
        } else {
            final int devId = volume.getDiskSeq().intValue();
            if (volume.getDiskController() == DiskControllerType.SCSI) {
                disk.setQemuDriver(true);
                disk.setDiscard(DiscardType.UNMAP);
            }
            disk.setImageFormat(volume.getDiskFormat());
            if (pool.getType() == StoragePoolType.RBD) {
                /*
                     * For RBD pools we use the secret mechanism in libvirt. We store the secret under the UUID of the pool,
                     * that's why we pass the pool's UUID as the authSecret
                     */
                disk.defNetworkBasedDisk(physicalDisk.getPath().replace("rbd:", ""), pool.getSourceHost(), pool.getSourcePort(), pool.getAuthUserName(), pool.getUuid(), devId, volume.getDiskController(), DiskProtocol.RBD, ImageFormat.RAW);
            } else if (pool.getType() == StoragePoolType.Gluster) {
                final String mountpoint = pool.getLocalPath();
                final String path = physicalDisk.getPath();
                final String glusterVolume = pool.getSourceDir().replace("/", "");
                disk.defNetworkBasedDisk(glusterVolume + path.replace(mountpoint, ""), pool.getSourceHost(), pool.getSourcePort(), null, null, devId, volume.getDiskController(), DiskProtocol.GLUSTER, ImageFormat.QCOW2);
            } else if (pool.getType() == StoragePoolType.CLVM || pool.getType() == StoragePoolType.LVM) {
                disk.defBlockBasedDisk(physicalDisk.getPath(), devId, volume.getDiskController());
            } else if (pool.getType() == StoragePoolType.NetworkFilesystem) {
                disk.defFileBasedDisk(physicalDisk.getPath(), devId, volume.getDiskController(), volume.getDiskFormat());
            } else {
                disk.defFileBasedDisk(physicalDisk.getPath(), devId, volume.getDiskController(), volume.getDiskFormat());
            }
        }
        if (data instanceof VolumeObjectTO) {
            final VolumeObjectTO volumeObjectTo = (VolumeObjectTO) data;
            disk.setSerial(volumeObjectTo.getDeviceId() + "-" + diskUuidToSerial(volumeObjectTo.getUuid()));
            disk.setDeviceId(volumeObjectTo.getDeviceId().intValue());
            if (volumeObjectTo.getBytesReadRate() != null && volumeObjectTo.getBytesReadRate() > 0) {
                disk.setBytesReadRate(volumeObjectTo.getBytesReadRate());
            }
            if (volumeObjectTo.getBytesWriteRate() != null && volumeObjectTo.getBytesWriteRate() > 0) {
                disk.setBytesWriteRate(volumeObjectTo.getBytesWriteRate());
            }
            if (volumeObjectTo.getIopsReadRate() != null && volumeObjectTo.getIopsReadRate() > 0) {
                disk.setIopsReadRate(volumeObjectTo.getIopsReadRate());
            }
            if (volumeObjectTo.getIopsWriteRate() != null && volumeObjectTo.getIopsWriteRate() > 0) {
                disk.setIopsWriteRate(volumeObjectTo.getIopsWriteRate());
            }
            if (volumeObjectTo.getIopsTotalRate() != null && volumeObjectTo.getIopsTotalRate() > 0) {
                disk.setIopsTotalRate(volumeObjectTo.getIopsTotalRate());
            }
            if (volumeObjectTo.getCacheMode() != null) {
                disk.setCacheMode(LibvirtDiskDef.DiskCacheMode.valueOf(volumeObjectTo.getCacheMode().toString().toUpperCase()));
            }
            if (volumeObjectTo.getFormat() != null) {
                physicalDisk.setFormat(physicalDisk.getPhysicalDiskFormatFromImageFormat(volumeObjectTo.getFormat()));
            }
        }
        logger.debug("Adding disk: " + disk.toString());
        vm.getDevices().addDevice(disk);
    }
    if (vmSpec.getType() != VirtualMachineType.User) {
        final String sysvmIsoPath = getSysvmIsoPath();
        if (sysvmIsoPath != null) {
            final LibvirtDiskDef iso = new LibvirtDiskDef();
            iso.defIsoDisk(sysvmIsoPath);
            vm.getDevices().addDevice(iso);
        }
    }
}
Also used : KvmStoragePool(com.cloud.agent.resource.kvm.storage.KvmStoragePool) IOException(java.io.IOException) NfsTO(com.cloud.legacymodel.to.NfsTO) DataTO(com.cloud.legacymodel.to.DataTO) LibvirtDiskDef(com.cloud.agent.resource.kvm.xml.LibvirtDiskDef) PrimaryDataStoreTO(com.cloud.legacymodel.to.PrimaryDataStoreTO) CloudRuntimeException(com.cloud.legacymodel.exceptions.CloudRuntimeException) VolumeObjectTO(com.cloud.legacymodel.to.VolumeObjectTO) KvmPhysicalDisk(com.cloud.agent.resource.kvm.storage.KvmPhysicalDisk) DiskTO(com.cloud.legacymodel.to.DiskTO)

Example 2 with DiskTO

use of com.cloud.legacymodel.to.DiskTO in project cosmic by MissionCriticalCloud.

the class LibvirtComputingResourceTest method testPrepareForMigrationCommandInternalErrorException.

@Test
public void testPrepareForMigrationCommandInternalErrorException() {
    final Connect conn = Mockito.mock(Connect.class);
    final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
    final VirtualMachineTO vm = Mockito.mock(VirtualMachineTO.class);
    final KvmStoragePoolManager storagePoolManager = Mockito.mock(KvmStoragePoolManager.class);
    final NicTO nicTO = Mockito.mock(NicTO.class);
    final DiskTO volume = Mockito.mock(DiskTO.class);
    final PrepareForMigrationCommand command = new PrepareForMigrationCommand(vm);
    when(this.libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
    try {
        when(libvirtUtilitiesHelper.getConnectionByVmName(vm.getName())).thenReturn(conn);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    }
    when(vm.getNics()).thenReturn(new NicTO[] { nicTO });
    when(nicTO.getType()).thenReturn(TrafficType.Guest);
    when(this.libvirtComputingResource.getVifDriver(nicTO.getType())).thenThrow(InternalErrorException.class);
    when(this.libvirtComputingResource.getStoragePoolMgr()).thenReturn(storagePoolManager);
    try {
        when(this.libvirtComputingResource.getVolumePath(conn, volume)).thenReturn("/path");
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    } catch (final URISyntaxException e) {
        fail(e.getMessage());
    }
    final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
    assertNotNull(wrapper);
    final Answer answer = wrapper.execute(command, this.libvirtComputingResource);
    assertFalse(answer.getResult());
    verify(this.libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
    try {
        verify(libvirtUtilitiesHelper, times(1)).getConnectionByVmName(vm.getName());
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    }
    verify(this.libvirtComputingResource, times(1)).getStoragePoolMgr();
    verify(vm, times(1)).getNics();
}
Also used : Answer(com.cloud.legacymodel.communication.answer.Answer) CheckRouterAnswer(com.cloud.legacymodel.communication.answer.CheckRouterAnswer) AttachAnswer(com.cloud.legacymodel.communication.answer.AttachAnswer) LibvirtRequestWrapper(com.cloud.agent.resource.kvm.wrapper.LibvirtRequestWrapper) LibvirtException(org.libvirt.LibvirtException) PrepareForMigrationCommand(com.cloud.legacymodel.communication.command.PrepareForMigrationCommand) Connect(org.libvirt.Connect) KvmStoragePoolManager(com.cloud.agent.resource.kvm.storage.KvmStoragePoolManager) URISyntaxException(java.net.URISyntaxException) VirtualMachineTO(com.cloud.legacymodel.to.VirtualMachineTO) LibvirtUtilitiesHelper(com.cloud.agent.resource.kvm.wrapper.LibvirtUtilitiesHelper) NicTO(com.cloud.legacymodel.to.NicTO) DiskTO(com.cloud.legacymodel.to.DiskTO) Test(org.junit.Test)

Example 3 with DiskTO

use of com.cloud.legacymodel.to.DiskTO in project cosmic by MissionCriticalCloud.

the class VirtualMachineManagerImpl method handlePath.

private void handlePath(final DiskTO[] disks, final Map<String, String> iqnToPath) {
    if (disks != null && iqnToPath != null) {
        for (final DiskTO disk : disks) {
            final Map<String, String> details = disk.getDetails();
            final boolean isManaged = details != null && Boolean.parseBoolean(details.get(DiskTO.MANAGED));
            if (isManaged) {
                final Long volumeId = disk.getData().getId();
                final VolumeVO volume = _volsDao.findById(volumeId);
                final String iScsiName = volume.get_iScsiName();
                final String path = iqnToPath.get(iScsiName);
                if (path != null) {
                    volume.setPath(path);
                    _volsDao.update(volumeId, volume);
                }
            }
        }
    }
}
Also used : VolumeVO(com.cloud.storage.VolumeVO) DiskTO(com.cloud.legacymodel.to.DiskTO)

Example 4 with DiskTO

use of com.cloud.legacymodel.to.DiskTO in project cosmic by MissionCriticalCloud.

the class VirtualMachineManagerImplTest method testOrchestrateStart.

@Test
public void testOrchestrateStart() throws Exception {
    final DeployDestination deployDestination = new DeployDestination(null, _pod, _cluster, _host);
    final VirtualMachineGuru guru = mock(VirtualMachineGuru.class);
    final DiskTO[] disks = {};
    when(guru.finalizeStart(any(VirtualMachineProfile.class), anyLong(), any(Commands.class), any(ReservationContext.class))).thenReturn(true);
    _vmMgr._vmGurus = new HashMap<>();
    _vmMgr._vmGurus.put(VirtualMachineType.User, guru);
    final HypervisorGuru guruMock = mock(HypervisorGuru.class);
    final VirtualMachineTO vmTO = mock(VirtualMachineTO.class);
    when(vmTO.getDisks()).thenReturn(disks);
    when(guruMock.implement(any(VirtualMachineProfile.class))).thenReturn(vmTO);
    when(_hvGuruMgr.getGuru(any(HypervisorType.class))).thenReturn(guruMock);
    when(_dpMgr.planDeployment(any(VirtualMachineProfile.class), any(DeploymentPlan.class), any(DeploymentPlanner.ExcludeList.class), any(DeploymentPlanner.class))).thenReturn(deployDestination);
    doReturn(true).when(this._vmMgr).stateTransitTo(eq(_vmMock), eq(Event.StartRequested), eq(null), any(String.class));
    doReturn(true).when(this._vmMgr).changeState(eq(_vmMock), eq(Event.OperationRetry), anyLong(), any(ItWorkVO.class), eq(ItWorkVO.Step.Prepare));
    doReturn(true).when(this._vmMgr).changeState(eq(_vmMock), eq(Event.OperationSucceeded), anyLong(), any(ItWorkVO.class), eq(ItWorkVO.Step.Done));
    when(_work.getStep()).thenReturn(ItWorkVO.Step.Prepare);
    when(_agentMgr.send(anyLong(), any(Commands.class))).thenAnswer(invocation -> {
        Commands cmds = ((Commands) invocation.getArguments()[1]);
        StartAnswer startAnswer = new StartAnswer(cmds.getCommand(StartCommand.class));
        com.cloud.legacymodel.communication.answer.Answer[] answers = { startAnswer };
        cmds.setAnswers(answers);
        return answers;
    });
    _vmMgr.orchestrateStart("uuid", null, null, null);
}
Also used : StartAnswer(com.cloud.legacymodel.communication.answer.StartAnswer) StartCommand(com.cloud.legacymodel.communication.command.StartCommand) VirtualMachineTO(com.cloud.legacymodel.to.VirtualMachineTO) HypervisorType(com.cloud.model.enumeration.HypervisorType) MigrateWithStorageReceiveAnswer(com.cloud.legacymodel.communication.answer.MigrateWithStorageReceiveAnswer) MigrateWithStorageAnswer(com.cloud.legacymodel.communication.answer.MigrateWithStorageAnswer) MigrateWithStorageSendAnswer(com.cloud.legacymodel.communication.answer.MigrateWithStorageSendAnswer) StopAnswer(com.cloud.legacymodel.communication.answer.StopAnswer) StartAnswer(com.cloud.legacymodel.communication.answer.StartAnswer) PrepareForMigrationAnswer(com.cloud.legacymodel.communication.answer.PrepareForMigrationAnswer) MigrateWithStorageCompleteAnswer(com.cloud.legacymodel.communication.answer.MigrateWithStorageCompleteAnswer) ScaleVmAnswer(com.cloud.legacymodel.communication.answer.ScaleVmAnswer) CheckVirtualMachineAnswer(com.cloud.legacymodel.communication.answer.CheckVirtualMachineAnswer) HypervisorGuru(com.cloud.hypervisor.HypervisorGuru) DeployDestination(com.cloud.deploy.DeployDestination) Commands(com.cloud.agent.manager.Commands) DeploymentPlanner(com.cloud.deploy.DeploymentPlanner) DeploymentPlan(com.cloud.deploy.DeploymentPlan) DiskTO(com.cloud.legacymodel.to.DiskTO) Test(org.junit.Test)

Example 5 with DiskTO

use of com.cloud.legacymodel.to.DiskTO in project cosmic by MissionCriticalCloud.

the class HypervisorGuruBase method toVirtualMachineTO.

protected VirtualMachineTO toVirtualMachineTO(final VirtualMachineProfile vmProfile) {
    final ServiceOffering offering = _serviceOfferingDao.findById(vmProfile.getId(), vmProfile.getServiceOfferingId());
    final VirtualMachine vm = vmProfile.getVirtualMachine();
    final Long minMemory = (long) (offering.getRamSize() / vmProfile.getMemoryOvercommitRatio());
    final VirtualMachineTO to = new VirtualMachineTO(vm.getId(), vm.getInstanceName(), vm.getType(), offering.getCpu(), minMemory * 1024l * 1024l, offering.getRamSize() * 1024l * 1024l, null, null, vm.isHaEnabled(), vm.limitCpuUse(), vm.getVncPassword());
    to.setBootArgs(vmProfile.getBootArgs());
    final List<NicProfile> nicProfiles = vmProfile.getNics();
    final NicTO[] nics = new NicTO[nicProfiles.size()];
    int i = 0;
    List<Long> vpcList = new ArrayList<>();
    for (final NicProfile nicProfile : nicProfiles) {
        nics[i++] = toNicTO(nicProfile);
        if (TrafficType.Guest.equals(nicProfile.getTrafficType())) {
            final NetworkVO network = _networkDao.findById(nicProfile.getNetworkId());
            final Long vpcId = network.getVpcId();
            if (vpcId != null) {
                vpcList.add(network.getVpcId());
            }
        }
    }
    to.setNics(nics);
    to.setDisks(vmProfile.getDisks().toArray(new DiskTO[vmProfile.getDisks().size()]));
    if (vmProfile.getTemplate().getBits() == 32) {
        to.setArch("i686");
    } else {
        to.setArch("x86_64");
    }
    final Map<String, String> detailsInVm = _userVmDetailsDao.listDetailsKeyPairs(vm.getId());
    if (detailsInVm != null) {
        to.setDetails(detailsInVm);
    }
    // Set GPU details
    ServiceOfferingDetailsVO offeringDetail;
    if ((offeringDetail = _serviceOfferingDetailsDao.findDetail(offering.getId(), GPU.Keys.vgpuType.toString())) != null) {
        final ServiceOfferingDetailsVO groupName = _serviceOfferingDetailsDao.findDetail(offering.getId(), GPU.Keys.pciDevice.toString());
        to.setGpuDevice(_resourceMgr.getGPUDevice(vm.getHostId(), groupName.getValue(), offeringDetail.getValue()));
    }
    // Workaround to make sure the TO has the UUID we need for Niciri integration
    final VMInstanceVO vmInstance = _virtualMachineDao.findById(to.getId());
    // check if XStools tools are present in the VM and dynamic scaling feature is enabled (per zone/global)
    final Boolean isDynamicallyScalable = vmInstance.isDynamicallyScalable() && UserVmManager.EnableDynamicallyScaleVm.valueIn(vm.getDataCenterId());
    to.setEnableDynamicallyScaleVm(isDynamicallyScalable);
    to.setUuid(vmInstance.getUuid());
    to.setManufacturer(vmInstance.getManufacturerString());
    to.setOptimiseFor(vmInstance.getOptimiseFor());
    to.setMaintenancePolicy(vmInstance.getMaintenancePolicy());
    to.setBootMenuTimeout(vmInstance.getBootMenuTimeout());
    to.setLastStartVersion(vmInstance.getLastStartVersion());
    to.setLastStartDateTime(vmInstance.getLastStartDateTime());
    to.setVmData(vmProfile.getVmData());
    to.setConfigDriveLabel(vmProfile.getConfigDriveLabel());
    to.setConfigDriveIsoRootFolder(vmProfile.getConfigDriveIsoRootFolder());
    to.setConfigDriveIsoFile(vmProfile.getConfigDriveIsoFile());
    LinkedHashSet<BootOrder> order = new LinkedHashSet<>();
    if (vmInstance.getBootOrder() != null) {
        for (final String dev : vmInstance.getBootOrder().split(",")) {
            order.add(BootOrder.stringToEnum(dev));
        }
    } else {
        // If bootorder column in DB is empty do default behaviour
        order.add(BootOrder.CDROM);
        order.add(BootOrder.HARDDISK);
    }
    to.setBootOrder(new ArrayList<>(order));
    final MetadataTO metadataTO = new MetadataTO();
    final DomainVO domain = _domainDao.findById(vm.getDomainId());
    metadataTO.setDomainUuid(domain.getUuid());
    metadataTO.setCosmicDomainName(domain.getName());
    metadataTO.setCosmicDomainPath(domain.getPath());
    metadataTO.setInstanceName(vm.getInstanceName());
    metadataTO.setVmId(vm.getId());
    metadataTO.setHostname(vm.getHostName());
    final Map<String, String> resourceDetails = ApiDBUtils.getResourceDetails(vm.getId(), ResourceTag.ResourceObjectType.UserVm);
    final Map<String, String> resourceTags = new HashMap<String, String>();
    final List<String> vpcNameList = new LinkedList<>();
    if (VirtualMachineType.User.equals(vm.getType())) {
        final List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceTag.ResourceObjectType.UserVm, vm.getId());
        for (final ResourceTag tag : tags) {
            resourceTags.put("instance_" + tag.getKey(), tag.getValue());
        }
    }
    for (final Long vpcId : vpcList) {
        final VpcVO vpc = _vpcDao.findById(vpcId);
        if (vpc != null) {
            vpcNameList.add(vpc.getName());
        }
        final List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceTag.ResourceObjectType.Vpc, vpcId);
        for (final ResourceTag tag : tags) {
            if (tag != null) {
                resourceTags.put("vpc_" + tag.getKey(), tag.getValue());
            }
        }
    }
    metadataTO.setResourceDetails(resourceDetails);
    metadataTO.setResourceTags(resourceTags);
    metadataTO.setVpcNameList(vpcNameList);
    to.setMetadata(metadataTO);
    return to;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) BootOrder(com.cloud.model.enumeration.BootOrder) MetadataTO(com.cloud.legacymodel.to.MetadataTO) ArrayList(java.util.ArrayList) ServiceOfferingDetailsVO(com.cloud.service.ServiceOfferingDetailsVO) VirtualMachineTO(com.cloud.legacymodel.to.VirtualMachineTO) NicTO(com.cloud.legacymodel.to.NicTO) NetworkVO(com.cloud.network.dao.NetworkVO) ServiceOffering(com.cloud.offering.ServiceOffering) VMInstanceVO(com.cloud.vm.VMInstanceVO) NicProfile(com.cloud.vm.NicProfile) LinkedList(java.util.LinkedList) DomainVO(com.cloud.domain.DomainVO) VpcVO(com.cloud.network.vpc.VpcVO) ResourceTag(com.cloud.server.ResourceTag) VirtualMachine(com.cloud.legacymodel.vm.VirtualMachine) DiskTO(com.cloud.legacymodel.to.DiskTO)

Aggregations

DiskTO (com.cloud.legacymodel.to.DiskTO)34 AttachAnswer (com.cloud.legacymodel.communication.answer.AttachAnswer)14 CloudRuntimeException (com.cloud.legacymodel.exceptions.CloudRuntimeException)13 Answer (com.cloud.legacymodel.communication.answer.Answer)11 DataTO (com.cloud.legacymodel.to.DataTO)11 PrimaryDataStoreTO (com.cloud.legacymodel.to.PrimaryDataStoreTO)9 VirtualMachineTO (com.cloud.legacymodel.to.VirtualMachineTO)9 Connect (org.libvirt.Connect)9 LibvirtException (org.libvirt.LibvirtException)9 VolumeObjectTO (com.cloud.legacymodel.to.VolumeObjectTO)8 NicTO (com.cloud.legacymodel.to.NicTO)7 Test (org.junit.Test)7 InternalErrorException (com.cloud.legacymodel.exceptions.InternalErrorException)6 TemplateObjectTO (com.cloud.legacymodel.to.TemplateObjectTO)6 KvmStoragePoolManager (com.cloud.agent.resource.kvm.storage.KvmStoragePoolManager)5 LibvirtRequestWrapper (com.cloud.agent.resource.kvm.wrapper.LibvirtRequestWrapper)5 VolumeVO (com.cloud.storage.VolumeVO)5 Connection (com.xensource.xenapi.Connection)5 VDI (com.xensource.xenapi.VDI)5 VM (com.xensource.xenapi.VM)5