Search in sources :

Example 1 with ChapInfo

use of org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo in project cloudstack by apache.

the class VolumeOrchestrator method getDetails.

private Map<String, String> getDetails(VolumeInfo volumeInfo, DataStore dataStore) {
    Map<String, String> details = new HashMap<String, String>();
    StoragePoolVO storagePool = _storagePoolDao.findById(dataStore.getId());
    details.put(DiskTO.MANAGED, String.valueOf(storagePool.isManaged()));
    details.put(DiskTO.STORAGE_HOST, storagePool.getHostAddress());
    details.put(DiskTO.STORAGE_PORT, String.valueOf(storagePool.getPort()));
    details.put(DiskTO.VOLUME_SIZE, String.valueOf(volumeInfo.getSize()));
    details.put(DiskTO.IQN, volumeInfo.get_iScsiName());
    details.put(DiskTO.MOUNT_POINT, volumeInfo.get_iScsiName());
    VolumeVO volume = _volumeDao.findById(volumeInfo.getId());
    details.put(DiskTO.PROTOCOL_TYPE, (volume.getPoolType() != null) ? volume.getPoolType().toString() : null);
    details.put(StorageManager.STORAGE_POOL_DISK_WAIT.toString(), String.valueOf(StorageManager.STORAGE_POOL_DISK_WAIT.valueIn(storagePool.getId())));
    if (volume.getPoolId() != null) {
        StoragePoolVO poolVO = _storagePoolDao.findById(volume.getPoolId());
        if (poolVO.getParent() != 0L) {
            details.put(DiskTO.PROTOCOL_TYPE, Storage.StoragePoolType.DatastoreCluster.toString());
        }
    }
    ChapInfo chapInfo = volService.getChapInfo(volumeInfo, dataStore);
    if (chapInfo != null) {
        details.put(DiskTO.CHAP_INITIATOR_USERNAME, chapInfo.getInitiatorUsername());
        details.put(DiskTO.CHAP_INITIATOR_SECRET, chapInfo.getInitiatorSecret());
        details.put(DiskTO.CHAP_TARGET_USERNAME, chapInfo.getTargetUsername());
        details.put(DiskTO.CHAP_TARGET_SECRET, chapInfo.getTargetSecret());
    }
    return details;
}
Also used : VolumeVO(com.cloud.storage.VolumeVO) HashMap(java.util.HashMap) StoragePoolVO(org.apache.cloudstack.storage.datastore.db.StoragePoolVO) ChapInfo(org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo)

Example 2 with ChapInfo

use of org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo in project cloudstack by apache.

the class VolumeApiServiceImpl method sendAttachVolumeCommand.

private VolumeVO sendAttachVolumeCommand(UserVmVO vm, VolumeVO volumeToAttach, Long deviceId) {
    String errorMsg = "Failed to attach volume " + volumeToAttach.getName() + " to VM " + vm.getHostName();
    boolean sendCommand = vm.getState() == State.Running;
    AttachAnswer answer = null;
    StoragePoolVO volumeToAttachStoragePool = _storagePoolDao.findById(volumeToAttach.getPoolId());
    HostVO host = getHostForVmVolumeAttach(vm, volumeToAttachStoragePool);
    Long hostId = host == null ? null : host.getId();
    if (host != null && host.getHypervisorType() == HypervisorType.VMware) {
        sendCommand = true;
    }
    if (host != null && host.getHypervisorType() == HypervisorType.XenServer && volumeToAttachStoragePool != null && volumeToAttachStoragePool.isManaged()) {
        sendCommand = true;
    }
    if (volumeToAttachStoragePool != null) {
        verifyManagedStorage(volumeToAttachStoragePool.getId(), hostId);
    }
    // volumeToAttachStoragePool should be null if the VM we are attaching the disk to has never been started before
    DataStore dataStore = volumeToAttachStoragePool != null ? dataStoreMgr.getDataStore(volumeToAttachStoragePool.getId(), DataStoreRole.Primary) : null;
    checkAndSetAttaching(volumeToAttach.getId());
    boolean attached = false;
    try {
        // if we don't have a host, the VM we are attaching the disk to has never been started before
        if (host != null) {
            try {
                volService.grantAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);
            } catch (Exception e) {
                volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);
                throw new CloudRuntimeException(e.getMessage());
            }
        }
        if (sendCommand) {
            if (host != null && host.getHypervisorType() == HypervisorType.KVM && volumeToAttachStoragePool.isManaged() && volumeToAttach.getPath() == null) {
                volumeToAttach.setPath(volumeToAttach.get_iScsiName());
                _volsDao.update(volumeToAttach.getId(), volumeToAttach);
            }
            DataTO volTO = volFactory.getVolume(volumeToAttach.getId()).getTO();
            deviceId = getDeviceId(vm, deviceId);
            DiskTO disk = storageMgr.getDiskWithThrottling(volTO, volumeToAttach.getVolumeType(), deviceId, volumeToAttach.getPath(), vm.getServiceOfferingId(), volumeToAttach.getDiskOfferingId());
            AttachCommand cmd = new AttachCommand(disk, vm.getInstanceName());
            ChapInfo chapInfo = volService.getChapInfo(volFactory.getVolume(volumeToAttach.getId()), dataStore);
            Map<String, String> details = new HashMap<String, String>();
            disk.setDetails(details);
            details.put(DiskTO.MANAGED, String.valueOf(volumeToAttachStoragePool.isManaged()));
            details.put(DiskTO.STORAGE_HOST, volumeToAttachStoragePool.getHostAddress());
            details.put(DiskTO.STORAGE_PORT, String.valueOf(volumeToAttachStoragePool.getPort()));
            details.put(DiskTO.VOLUME_SIZE, String.valueOf(volumeToAttach.getSize()));
            details.put(DiskTO.IQN, volumeToAttach.get_iScsiName());
            details.put(DiskTO.MOUNT_POINT, volumeToAttach.get_iScsiName());
            details.put(DiskTO.PROTOCOL_TYPE, (volumeToAttach.getPoolType() != null) ? volumeToAttach.getPoolType().toString() : null);
            details.put(StorageManager.STORAGE_POOL_DISK_WAIT.toString(), String.valueOf(StorageManager.STORAGE_POOL_DISK_WAIT.valueIn(volumeToAttachStoragePool.getId())));
            if (chapInfo != null) {
                details.put(DiskTO.CHAP_INITIATOR_USERNAME, chapInfo.getInitiatorUsername());
                details.put(DiskTO.CHAP_INITIATOR_SECRET, chapInfo.getInitiatorSecret());
                details.put(DiskTO.CHAP_TARGET_USERNAME, chapInfo.getTargetUsername());
                details.put(DiskTO.CHAP_TARGET_SECRET, chapInfo.getTargetSecret());
            }
            if (volumeToAttach.getPoolId() != null) {
                StoragePoolVO poolVO = _storagePoolDao.findById(volumeToAttach.getPoolId());
                if (poolVO.getParent() != 0L) {
                    details.put(DiskTO.PROTOCOL_TYPE, Storage.StoragePoolType.DatastoreCluster.toString());
                }
            }
            _userVmDao.loadDetails(vm);
            Map<String, String> controllerInfo = new HashMap<String, String>();
            controllerInfo.put(VmDetailConstants.ROOT_DISK_CONTROLLER, vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER));
            controllerInfo.put(VmDetailConstants.DATA_DISK_CONTROLLER, vm.getDetail(VmDetailConstants.DATA_DISK_CONTROLLER));
            cmd.setControllerInfo(controllerInfo);
            s_logger.debug("Attach volume id:" + volumeToAttach.getId() + " on VM id:" + vm.getId() + " has controller info:" + controllerInfo);
            try {
                answer = (AttachAnswer) _agentMgr.send(hostId, cmd);
            } catch (Exception e) {
                if (host != null) {
                    volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);
                }
                throw new CloudRuntimeException(errorMsg + " due to: " + e.getMessage());
            }
        }
        if (!sendCommand || (answer != null && answer.getResult())) {
            // Mark the volume as attached
            if (sendCommand) {
                DiskTO disk = answer.getDisk();
                _volsDao.attachVolume(volumeToAttach.getId(), vm.getId(), disk.getDiskSeq());
                volumeToAttach = _volsDao.findById(volumeToAttach.getId());
                if (volumeToAttachStoragePool.isManaged() && volumeToAttach.getPath() == null) {
                    volumeToAttach.setPath(answer.getDisk().getPath());
                    _volsDao.update(volumeToAttach.getId(), volumeToAttach);
                }
                String chainInfo = answer.getContextParam("chainInfo");
                if (chainInfo != null) {
                    volumeToAttach = _volsDao.findById(volumeToAttach.getId());
                    volumeToAttach.setChainInfo(chainInfo);
                    _volsDao.update(volumeToAttach.getId(), volumeToAttach);
                }
            } else {
                deviceId = getDeviceId(vm, deviceId);
                _volsDao.attachVolume(volumeToAttach.getId(), vm.getId(), deviceId);
                volumeToAttach = _volsDao.findById(volumeToAttach.getId());
                if (vm.getHypervisorType() == HypervisorType.KVM && volumeToAttachStoragePool != null && volumeToAttachStoragePool.isManaged() && volumeToAttach.getPath() == null && volumeToAttach.get_iScsiName() != null) {
                    volumeToAttach.setPath(volumeToAttach.get_iScsiName());
                    _volsDao.update(volumeToAttach.getId(), volumeToAttach);
                }
                if (host != null && volumeToAttachStoragePool.getPoolType() == Storage.StoragePoolType.PowerFlex) {
                    // Unmap the volume on PowerFlex/ScaleIO pool for stopped VM
                    volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);
                }
            }
            // insert record for disk I/O statistics
            VmDiskStatisticsVO diskstats = _vmDiskStatsDao.findBy(vm.getAccountId(), vm.getDataCenterId(), vm.getId(), volumeToAttach.getId());
            if (diskstats == null) {
                diskstats = new VmDiskStatisticsVO(vm.getAccountId(), vm.getDataCenterId(), vm.getId(), volumeToAttach.getId());
                _vmDiskStatsDao.persist(diskstats);
            }
            attached = true;
        } else {
            if (answer != null) {
                String details = answer.getDetails();
                if (details != null && !details.isEmpty()) {
                    errorMsg += "; " + details;
                }
            }
            if (host != null) {
                volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);
            }
            throw new CloudRuntimeException(errorMsg);
        }
    } finally {
        Volume.Event ev = Volume.Event.OperationFailed;
        VolumeInfo volInfo = volFactory.getVolume(volumeToAttach.getId());
        if (attached) {
            ev = Volume.Event.OperationSucceeded;
            s_logger.debug("Volume: " + volInfo.getName() + " successfully attached to VM: " + volInfo.getAttachedVmName());
        } else {
            s_logger.debug("Volume: " + volInfo.getName() + " failed to attach to VM: " + volInfo.getAttachedVmName());
        }
        volInfo.stateTransit(ev);
    }
    return _volsDao.findById(volumeToAttach.getId());
}
Also used : HashMap(java.util.HashMap) ChapInfo(org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo) VmDiskStatisticsVO(com.cloud.user.VmDiskStatisticsVO) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo) HostVO(com.cloud.host.HostVO) NoTransitionException(com.cloud.utils.fsm.NoTransitionException) TransactionCallbackWithException(com.cloud.utils.db.TransactionCallbackWithException) ServerApiException(org.apache.cloudstack.api.ServerApiException) StorageUnavailableException(com.cloud.exception.StorageUnavailableException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) ExecutionException(java.util.concurrent.ExecutionException) InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) ResourceAllocationException(com.cloud.exception.ResourceAllocationException) ConcurrentOperationException(com.cloud.exception.ConcurrentOperationException) JsonParseException(com.google.gson.JsonParseException) PermissionDeniedException(com.cloud.exception.PermissionDeniedException) MalformedURLException(java.net.MalformedURLException) AttachCommand(org.apache.cloudstack.storage.command.AttachCommand) DataTO(com.cloud.agent.api.to.DataTO) VmWorkDetachVolume(com.cloud.vm.VmWorkDetachVolume) VmWorkMigrateVolume(com.cloud.vm.VmWorkMigrateVolume) VmWorkResizeVolume(com.cloud.vm.VmWorkResizeVolume) VmWorkAttachVolume(com.cloud.vm.VmWorkAttachVolume) VmWorkExtractVolume(com.cloud.vm.VmWorkExtractVolume) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) DataStore(org.apache.cloudstack.engine.subsystem.api.storage.DataStore) StoragePoolVO(org.apache.cloudstack.storage.datastore.db.StoragePoolVO) AttachAnswer(org.apache.cloudstack.storage.command.AttachAnswer) DiskTO(com.cloud.agent.api.to.DiskTO)

Example 3 with ChapInfo

use of org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo in project cloudstack by apache.

the class StorageSystemDataMotionStrategy method getVolumeDetails.

private Map<String, String> getVolumeDetails(VolumeInfo volumeInfo) {
    long storagePoolId = volumeInfo.getPoolId();
    StoragePoolVO storagePoolVO = _storagePoolDao.findById(storagePoolId);
    if (!storagePoolVO.isManaged()) {
        return null;
    }
    Map<String, String> volumeDetails = new HashMap<>();
    VolumeVO volumeVO = _volumeDao.findById(volumeInfo.getId());
    volumeDetails.put(DiskTO.STORAGE_HOST, storagePoolVO.getHostAddress());
    volumeDetails.put(DiskTO.STORAGE_PORT, String.valueOf(storagePoolVO.getPort()));
    volumeDetails.put(DiskTO.IQN, volumeVO.get_iScsiName());
    volumeDetails.put(DiskTO.PROTOCOL_TYPE, (volumeVO.getPoolType() != null) ? volumeVO.getPoolType().toString() : null);
    volumeDetails.put(StorageManager.STORAGE_POOL_DISK_WAIT.toString(), String.valueOf(StorageManager.STORAGE_POOL_DISK_WAIT.valueIn(storagePoolVO.getId())));
    volumeDetails.put(DiskTO.VOLUME_SIZE, String.valueOf(volumeVO.getSize()));
    volumeDetails.put(DiskTO.SCSI_NAA_DEVICE_ID, getVolumeProperty(volumeInfo.getId(), DiskTO.SCSI_NAA_DEVICE_ID));
    ChapInfo chapInfo = _volumeService.getChapInfo(volumeInfo, volumeInfo.getDataStore());
    if (chapInfo != null) {
        volumeDetails.put(DiskTO.CHAP_INITIATOR_USERNAME, chapInfo.getInitiatorUsername());
        volumeDetails.put(DiskTO.CHAP_INITIATOR_SECRET, chapInfo.getInitiatorSecret());
        volumeDetails.put(DiskTO.CHAP_TARGET_USERNAME, chapInfo.getTargetUsername());
        volumeDetails.put(DiskTO.CHAP_TARGET_SECRET, chapInfo.getTargetSecret());
    }
    return volumeDetails;
}
Also used : VolumeVO(com.cloud.storage.VolumeVO) HashMap(java.util.HashMap) VMTemplateStoragePoolVO(com.cloud.storage.VMTemplateStoragePoolVO) StoragePoolVO(org.apache.cloudstack.storage.datastore.db.StoragePoolVO) ChapInfo(org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo)

Example 4 with ChapInfo

use of org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo in project cloudstack by apache.

the class StorageSystemSnapshotStrategy method getSourceDetails.

private Map<String, String> getSourceDetails(VolumeInfo volumeInfo) {
    Map<String, String> sourceDetails = new HashMap<>();
    VolumeVO volumeVO = volumeDao.findById(volumeInfo.getId());
    long storagePoolId = volumeVO.getPoolId();
    StoragePoolVO storagePoolVO = storagePoolDao.findById(storagePoolId);
    sourceDetails.put(DiskTO.STORAGE_HOST, storagePoolVO.getHostAddress());
    sourceDetails.put(DiskTO.STORAGE_PORT, String.valueOf(storagePoolVO.getPort()));
    sourceDetails.put(DiskTO.IQN, volumeVO.get_iScsiName());
    sourceDetails.put(DiskTO.PROTOCOL_TYPE, (storagePoolVO.getPoolType() != null) ? storagePoolVO.getPoolType().toString() : null);
    ChapInfo chapInfo = volService.getChapInfo(volumeInfo, volumeInfo.getDataStore());
    if (chapInfo != null) {
        sourceDetails.put(DiskTO.CHAP_INITIATOR_USERNAME, chapInfo.getInitiatorUsername());
        sourceDetails.put(DiskTO.CHAP_INITIATOR_SECRET, chapInfo.getInitiatorSecret());
        sourceDetails.put(DiskTO.CHAP_TARGET_USERNAME, chapInfo.getTargetUsername());
        sourceDetails.put(DiskTO.CHAP_TARGET_SECRET, chapInfo.getTargetSecret());
    }
    return sourceDetails;
}
Also used : VolumeVO(com.cloud.storage.VolumeVO) HashMap(java.util.HashMap) StoragePoolVO(org.apache.cloudstack.storage.datastore.db.StoragePoolVO) ChapInfo(org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo)

Example 5 with ChapInfo

use of org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo in project cloudstack by apache.

the class VolumeServiceImpl method copyTemplateToManagedTemplateVolume.

/**
 * This function copies a template from secondary storage to a template volume
 * created on managed storage. This template volume will be used as a cache.
 * Instead of copying the template to a ROOT volume every time, a clone is performed instead.
 *
 * @param srcTemplateInfo Source from which to copy the template
 * @param templateOnPrimary Dest to copy to
 * @param templatePoolRef Template reference on primary storage (entry in the template_spool_ref)
 * @param destPrimaryDataStore The managed primary storage
 * @param destHost The host that we will use for the copy
 */
private void copyTemplateToManagedTemplateVolume(TemplateInfo srcTemplateInfo, TemplateInfo templateOnPrimary, VMTemplateStoragePoolVO templatePoolRef, PrimaryDataStore destPrimaryDataStore, Host destHost) throws StorageAccessException {
    AsyncCallFuture<VolumeApiResult> copyTemplateFuture = new AsyncCallFuture<>();
    int storagePoolMaxWaitSeconds = NumbersUtil.parseInt(configDao.getValue(Config.StoragePoolMaxWaitSeconds.key()), 3600);
    long templatePoolRefId = templatePoolRef.getId();
    try {
        templatePoolRef = _tmpltPoolDao.acquireInLockTable(templatePoolRefId, storagePoolMaxWaitSeconds);
        if (templatePoolRef == null) {
            throw new CloudRuntimeException("Unable to acquire lock on VMTemplateStoragePool: " + templatePoolRefId);
        }
        if (templatePoolRef.getDownloadState() == Status.DOWNLOADED) {
            // There can be cases where we acquired the lock, but the template
            // was already copied by a previous thread. Just return in that case.
            s_logger.debug("Template already downloaded, nothing to do");
            return;
        }
        // copy the template from sec storage to the created volume
        CreateBaseImageContext<CreateCmdResult> copyContext = new CreateBaseImageContext<>(null, null, destPrimaryDataStore, srcTemplateInfo, copyTemplateFuture, templateOnPrimary, templatePoolRefId);
        AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> copyCaller = AsyncCallbackDispatcher.create(this);
        copyCaller.setCallback(copyCaller.getTarget().copyManagedTemplateCallback(null, null)).setContext(copyContext);
        // Populate details which will be later read by the storage subsystem.
        Map<String, String> details = new HashMap<>();
        details.put(PrimaryDataStore.MANAGED, Boolean.TRUE.toString());
        details.put(PrimaryDataStore.STORAGE_HOST, destPrimaryDataStore.getHostAddress());
        details.put(PrimaryDataStore.STORAGE_PORT, String.valueOf(destPrimaryDataStore.getPort()));
        details.put(PrimaryDataStore.MANAGED_STORE_TARGET, templateOnPrimary.getInstallPath());
        details.put(PrimaryDataStore.MANAGED_STORE_TARGET_ROOT_VOLUME, srcTemplateInfo.getUniqueName());
        details.put(PrimaryDataStore.REMOVE_AFTER_COPY, Boolean.TRUE.toString());
        details.put(PrimaryDataStore.VOLUME_SIZE, String.valueOf(templateOnPrimary.getSize()));
        details.put(StorageManager.STORAGE_POOL_DISK_WAIT.toString(), String.valueOf(StorageManager.STORAGE_POOL_DISK_WAIT.valueIn(destPrimaryDataStore.getId())));
        ChapInfo chapInfo = getChapInfo(templateOnPrimary, destPrimaryDataStore);
        if (chapInfo != null) {
            details.put(PrimaryDataStore.CHAP_INITIATOR_USERNAME, chapInfo.getInitiatorUsername());
            details.put(PrimaryDataStore.CHAP_INITIATOR_SECRET, chapInfo.getInitiatorSecret());
            details.put(PrimaryDataStore.CHAP_TARGET_USERNAME, chapInfo.getTargetUsername());
            details.put(PrimaryDataStore.CHAP_TARGET_SECRET, chapInfo.getTargetSecret());
        }
        destPrimaryDataStore.setDetails(details);
        try {
            grantAccess(templateOnPrimary, destHost, destPrimaryDataStore);
        } catch (Exception e) {
            throw new StorageAccessException("Unable to grant access to template: " + templateOnPrimary.getId() + " on host: " + destHost.getId());
        }
        templateOnPrimary.processEvent(Event.CopyingRequested);
        VolumeApiResult result;
        try {
            motionSrv.copyAsync(srcTemplateInfo, templateOnPrimary, destHost, copyCaller);
            result = copyTemplateFuture.get();
        } finally {
            revokeAccess(templateOnPrimary, destHost, destPrimaryDataStore);
            if (HypervisorType.VMware.equals(destHost.getHypervisorType())) {
                details.put(ModifyTargetsCommand.IQN, templateOnPrimary.getInstallPath());
                List<Map<String, String>> targets = new ArrayList<>();
                targets.add(details);
                removeDynamicTargets(destHost.getId(), targets);
            }
        }
        if (result.isFailed()) {
            throw new CloudRuntimeException("Failed to copy template " + templateOnPrimary.getId() + " to primary storage " + destPrimaryDataStore.getId() + ": " + result.getResult());
        // XXX: I find it is useful to destroy the volume on primary storage instead of another thread trying the copy again because I've seen
        // something weird happens to the volume (XenServer creates an SR, but the VDI copy can fail).
        // For now, I just retry the copy.
        }
    } catch (StorageAccessException e) {
        throw e;
    } catch (Throwable e) {
        s_logger.debug("Failed to create a template on primary storage", e);
        templateOnPrimary.processEvent(Event.OperationFailed);
        throw new CloudRuntimeException(e.getMessage());
    } finally {
        _tmpltPoolDao.releaseFromLockTable(templatePoolRefId);
    }
}
Also used : HashMap(java.util.HashMap) ChapInfo(org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo) ArrayList(java.util.ArrayList) StorageAccessException(com.cloud.exception.StorageAccessException) CreateCmdResult(org.apache.cloudstack.engine.subsystem.api.storage.CreateCmdResult) EndPoint(org.apache.cloudstack.engine.subsystem.api.storage.EndPoint) RemoteHostEndPoint(org.apache.cloudstack.storage.RemoteHostEndPoint) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) StorageAccessException(com.cloud.exception.StorageAccessException) ExecutionException(java.util.concurrent.ExecutionException) ResourceAllocationException(com.cloud.exception.ResourceAllocationException) AsyncCallFuture(org.apache.cloudstack.framework.async.AsyncCallFuture) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) CopyCommandResult(org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult) Map(java.util.Map) HashMap(java.util.HashMap)

Aggregations

HashMap (java.util.HashMap)6 ChapInfo (org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo)6 StoragePoolVO (org.apache.cloudstack.storage.datastore.db.StoragePoolVO)4 ResourceAllocationException (com.cloud.exception.ResourceAllocationException)3 VolumeVO (com.cloud.storage.VolumeVO)3 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)3 ExecutionException (java.util.concurrent.ExecutionException)3 StorageAccessException (com.cloud.exception.StorageAccessException)2 CopyCommandResult (org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult)2 CreateCmdResult (org.apache.cloudstack.engine.subsystem.api.storage.CreateCmdResult)2 AsyncCallFuture (org.apache.cloudstack.framework.async.AsyncCallFuture)2 DataTO (com.cloud.agent.api.to.DataTO)1 DiskTO (com.cloud.agent.api.to.DiskTO)1 ConcurrentOperationException (com.cloud.exception.ConcurrentOperationException)1 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)1 PermissionDeniedException (com.cloud.exception.PermissionDeniedException)1 StorageUnavailableException (com.cloud.exception.StorageUnavailableException)1 HostVO (com.cloud.host.HostVO)1 VMTemplateStoragePoolVO (com.cloud.storage.VMTemplateStoragePoolVO)1 VmDiskStatisticsVO (com.cloud.user.VmDiskStatisticsVO)1