private Map<Guid, DiskImage> getDisksToClone(DiskAttachments diskAttachments, Guid templateId) { Map<Guid, DiskImage> disksMap = new HashMap<>(); if (diskAttachments != null && diskAttachments.isSetDiskAttachments() && diskAttachments.getDiskAttachments().size() > 0){ Map<Guid, DiskImage> templatesDisksMap = getTemplateDisks(templateId); for (DiskAttachment diskAttachment : diskAttachments.getDiskAttachments()) { Disk disk = diskAttachment.getDisk(); if (disk != null && disk.isSetId()) { DiskImage templateDisk = templatesDisksMap.get(asGuid(disk.getId())); if (templateDisk != null) { // when disk profile isn't specified, and disks are cloned to another storage // domain then the original disk, disk profile is cleared since template disk // disk profile isn't matching destination storage domain. if (!disk.isSetDiskProfile() && disk.isSetStorageDomains() && disk.getStorageDomains().isSetStorageDomains() && disk.getStorageDomains().getStorageDomains().get(0).isSetId() && !Objects.equals(disk.getStorageDomains().getStorageDomains().get(0).getId(), Objects.toString(templateDisk.getStorageIds().get(0), null))) { templateDisk.setDiskProfileId(null); } disksMap.put(templateDisk.getId(), map(disk, templateDisk)); } else { throw new WebApplicationException(Response.Status.NOT_FOUND); } } } } return disksMap; }
if (disk == null || !disk.isSetId()) { continue;
@Override public Response add(DiskAttachment attachment) { if (attachment.isSetDisk() && attachment.getDisk().isSetId()) { Guid diskId = Guid.createGuidFromStringDefaultEmpty(attachment.getDisk().getId()); return attachDiskToVm(this, attachment, new AttachDiskResolver(diskId, vmId)); } else { return createDisk(this, attachment, new AddDiskResolver()); } }
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; } }
@Override public Response add(Disk disk) { validateDiskForCreation(disk); AddDiskParameters params = new AddDiskParameters(); Guid storageDomainId = getStorageDomainId(disk); params.setStorageDomainId(storageDomainId); if (storageDomainId != null) { updateStorageTypeForDisk(disk, storageDomainId); } params.setDiskInfo(getMapper(Disk.class, org.ovirt.engine.core.common.businessentities.storage.Disk.class).map(disk, null)); if (disk.isSetLunStorage() && disk.getLunStorage().isSetHost()) { params.setVdsId(getHostId(disk.getLunStorage().getHost())); } if (disk.isSetId()) { params.setUsePassedDiskId(true); } if (disk.isSetImageId()) { params.setUsePassedImageId(true); } return performCreate(ActionType.AddDisk, params, new QueryIdResolver<Guid>(QueryType.GetDiskByDiskId, IdQueryParameters.class)); }
@Override public Response add(Disk disk) { DiskAttachment diskAttachment = new DiskAttachment(); if (disk.isSetBootable()) { diskAttachment.setBootable(disk.isBootable()); } else { diskAttachment.setBootable(false); } if (disk.isSetInterface()) { diskAttachment.setInterface(disk.getInterface()); } else { diskAttachment.setInterface(DiskInterface.VIRTIO); } if (disk.isSetActive()) { diskAttachment.setActive(disk.isActive()); } diskAttachment.setDisk(disk); if (disk.isSetId()) { Guid diskId = Guid.createGuidFromStringDefaultEmpty(disk.getId()); return getAttachmentsResource().attachDiskToVm(this, diskAttachment, new OldAttachDiskResolver(diskId)); } else { return getAttachmentsResource().createDisk(this, diskAttachment, new OldAddDiskResolver()); } }
engineDisk.setDiskAlias(disk.getAlias()); if (disk.isSetId()) { engineDisk.setId(GuidUtils.asGuid(disk.getId()));
to.setFormat(from.getFormat().value()); if (from.isSetId()) { to.setId(from.getId());