protected Map<Guid, Guid> getDiskToDestinationMap(Action action) { Map<Guid, Guid> diskToDestinationMap = new HashMap<>(); if (action.isSetVm() && action.getVm().isSetDiskAttachments() && action.getVm().getDiskAttachments().isSetDiskAttachments()) { for (DiskAttachment diskAttachment : action.getVm().getDiskAttachments().getDiskAttachments()) { Disk disk = diskAttachment.getDisk(); if (disk != null && disk.isSetId() && disk.isSetStorageDomains() && disk.getStorageDomains().isSetStorageDomains() && disk.getStorageDomains().getStorageDomains().get(0).isSetId()) { diskToDestinationMap.put(Guid.createGuidFromStringDefaultEmpty(disk.getId()), Guid.createGuidFromStringDefaultEmpty(disk.getStorageDomains().getStorageDomains().get(0).getId())); } } } return diskToDestinationMap; } }
RunVmParams params; ActionType actionType; if (action.isSetVm()) { Vm vm = action.getVm(); actionType = ActionType.RunVmOnce;
private void setVolumesTypeFormat(Action action) { if (action.isSetVm()) { Vm modelVm = action.getVm(); if (!modelVm.isSetDiskAttachments()) { return; } Map<Guid, org.ovirt.engine.core.common.businessentities.storage.Disk> entityDisks = getDiskMap(); for (DiskAttachment modelDiskAttachment : modelVm.getDiskAttachments().getDiskAttachments()) { Disk modelDisk = modelDiskAttachment.getDisk(); if (modelDisk != null) { validateParameters(modelDisk, "id"); Guid modelDiskId = Guid.createGuidFromString(modelDisk.getId()); DiskImage entityDisk = (DiskImage) entityDisks.get(modelDiskId); if (entityDisk == null) { continue; } if (modelDisk.isSetFormat()) { VolumeFormat entityDiskFormat = DiskMapper.map(modelDisk.getFormat(), null); entityDisk.setVolumeFormat(entityDiskFormat); } if (modelDisk.isSetSparse()) { entityDisk.setVolumeType(modelDisk.isSparse() ? VolumeType.Sparse : VolumeType.Preallocated); } } } } }
@Override public Response doImport(Action action) { validateParameters(action, "storageDomain.id|name"); Guid destStorageDomainId = getDestStorageDomainId(action); Guid clusterId = null; if (action.isSetCluster()) { clusterId = getClusterId(action); } ImportVmParameters params = new ImportVmParameters(getEntity(), parent.getStorageDomainId(), destStorageDomainId, parent.getDataCenterId(destStorageDomainId), clusterId); params.setImageToDestinationDomainMap(getDiskToDestinationMap(action)); params.setForceOverride(action.isSetExclusive() ? action.isExclusive() : false); boolean collapseSnapshots = ParametersHelper.getBooleanParameter(httpHeaders, uriInfo, COLLAPSE_SNAPSHOTS, true, false); if (collapseSnapshots) { params.setCopyCollapse(collapseSnapshots); } setVolumesTypeFormat(action); if (action.isSetClone()) { params.setImportAsNewEntity(action.isClone()); if (action.isSetVm() && action.getVm().isSetName()) { params.getVm().setName(action.getVm().getName()); } } return doAction(ActionType.ImportVm, params, action); }
if (action.isSetVm() && action.getTemplate().isSetName()) { params.getVmTemplate().setName(action.getTemplate().getName());
if (action.isSetVm() && action.getVm().isSetName()) { params.getVm().setName(action.getVm().getName());
to.setVirtualFunctionsConfiguration(adaptOut(from.getVirtualFunctionsConfiguration())); if (from.isSetVm()) { to.setVm(adaptOut(from.getVm()));