use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class ImportVmCommand method copyAllMemoryImages.
private void copyAllMemoryImages(Guid containerId) {
Set<Guid> handledMemoryDisks = new HashSet<>();
for (Snapshot snapshot : getVm().getSnapshots()) {
if (!snapshot.containsMemory()) {
continue;
}
Guid memoryDiskId = snapshot.getMemoryDiskId();
if (!handledMemoryDisks.contains(memoryDiskId)) {
handledMemoryDisks.add(memoryDiskId);
// copy the memory dump image
ActionReturnValue vdcRetValue = runInternalActionWithTasksContext(ActionType.CopyImageGroup, buildMoveOrCopyImageGroupParametersForMemoryDumpImage(containerId, memoryDiskDomainMap.get(memoryDiskId), memoryDiskId, getMemoryDiskImageId(memoryDiskId)));
if (!vdcRetValue.getSucceeded()) {
throw new EngineException(vdcRetValue.getFault().getError(), "Failed to copy memory image");
}
// TODO: Currently REST-API doesn't support coco for async commands, remove when bug 1199011 fixed
getTaskIdList().addAll(vdcRetValue.getVdsmTaskIdList());
}
Guid confDiskId = snapshot.getMetadataDiskId();
if (!handledMemoryDisks.contains(confDiskId)) {
handledMemoryDisks.add(confDiskId);
// copy the memory configuration (of the VM) image
ActionReturnValue vdcRetValue = runInternalActionWithTasksContext(ActionType.CopyImageGroup, buildMoveOrCopyImageGroupParametersForMemoryConfImage(containerId, memoryDiskDomainMap.get(confDiskId), confDiskId, getMemoryDiskImageId(confDiskId)));
if (!vdcRetValue.getSucceeded()) {
throw new EngineException(vdcRetValue.getFault().getError(), "Failed to copy metadata image");
}
// TODO: Currently REST-API doesn't support coco for async commands, remove when bug 1199011 fixed
getTaskIdList().addAll(vdcRetValue.getVdsmTaskIdList());
}
}
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class ImportVmCommand method validateImages.
protected boolean validateImages(Map<Guid, StorageDomain> domainsMap) {
List<String> validationMessages = getReturnValue().getValidationMessages();
// Iterate over all the VM images (active image and snapshots)
for (DiskImage image : getImages()) {
if (Guid.Empty.equals(image.getVmSnapshotId())) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID);
}
if (getParameters().getCopyCollapse()) {
// a match with the image from the VM.
for (DiskImage p : imageList) {
// only if requested by the user
if (p.getImageId().equals(image.getImageId())) {
if (p.getVolumeFormat() != null) {
image.setVolumeFormat(p.getVolumeFormat());
}
if (p.getVolumeType() != null) {
image.setVolumeType(p.getVolumeType());
}
// Validate the configuration of the image got from the parameters.
if (!validateImageConfig(validationMessages, domainsMap, image)) {
return false;
}
break;
}
}
}
image.setStoragePoolId(getParameters().getStoragePoolId());
// we put the source domain id in order that copy will
// work properly.
// we fix it to DestDomainId in
// MoveOrCopyAllImageGroups();
image.setStorageIds(new ArrayList<>(Arrays.asList(getSourceDomainId(image))));
}
Map<Guid, List<DiskImage>> images = ImagesHandler.getImagesLeaf(getImages());
images.entrySet().stream().forEach(e -> getVm().getDiskMap().put(e.getKey(), getActiveVolumeDisk(e.getValue())));
return true;
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class ImportVmCommand method addVmImagesAndSnapshots.
protected void addVmImagesAndSnapshots() {
Map<Guid, List<DiskImage>> images = ImagesHandler.getImagesLeaf(getImages());
if (isCopyCollapseOrNoSnapshots()) {
Guid snapshotId = Guid.newGuid();
int aliasCounter = 0;
for (List<DiskImage> diskList : images.values()) {
DiskImage disk = getActiveVolumeDisk(diskList);
disk.setParentId(VmTemplateHandler.BLANK_VM_TEMPLATE_ID);
disk.setImageTemplateId(VmTemplateHandler.BLANK_VM_TEMPLATE_ID);
disk.setVmSnapshotId(snapshotId);
disk.setActive(true);
if (getParameters().getVm().getDiskMap() != null && getParameters().getVm().getDiskMap().containsKey(disk.getId())) {
DiskImageBase diskImageBase = (DiskImageBase) getParameters().getVm().getDiskMap().get(disk.getId());
disk.setVolumeFormat(diskImageBase.getVolumeFormat());
disk.setVolumeType(diskImageBase.getVolumeType());
}
setDiskStorageDomainInfo(disk);
if (getParameters().isImportAsNewEntity()) {
generateNewDiskId(diskList, disk);
updateManagedDeviceMap(disk, getVm().getStaticData().getManagedDeviceMap());
} else {
newDiskIdForDisk.put(disk.getId(), disk);
}
disk.setCreationDate(new Date());
saveImage(disk);
ImagesHandler.setDiskAlias(disk, getVm(), ++aliasCounter);
saveBaseDisk(disk);
saveDiskVmElement(disk.getId(), getVmId(), disk.getDiskVmElementForVm(getParameters().getVmId()));
saveDiskImageDynamic(disk);
}
Snapshot snapshot = addActiveSnapshot(snapshotId);
getVm().setSnapshots(Arrays.asList(snapshot));
} else {
Guid snapshotId = null;
for (DiskImage disk : getImages()) {
disk.setActive(false);
setDiskStorageDomainInfo(disk);
saveImage(disk);
snapshotId = disk.getVmSnapshotId();
saveSnapshotIfNotExists(snapshotId, disk);
saveDiskImageDynamic(disk);
}
int aliasCounter = 0;
for (List<DiskImage> diskList : images.values()) {
DiskImage disk = getActiveVolumeDisk(diskList);
newDiskIdForDisk.put(disk.getId(), disk);
snapshotId = disk.getVmSnapshotId();
disk.setActive(true);
ImagesHandler.setDiskAlias(disk, getVm(), ++aliasCounter);
updateImage(disk);
saveBaseDisk(disk);
saveDiskVmElement(disk.getId(), getVmId(), disk.getDiskVmElementForVm(getParameters().getVmId()));
}
// Update active snapshot's data, since it was inserted as a regular snapshot.
updateActiveSnapshot(snapshotId);
}
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddBricksToGlusterVolumeCommand method executeCommand.
@Override
protected void executeCommand() {
final List<GlusterBrickEntity> bricksList = getParameters().getBricks();
GlusterVolumeEntity volumeBeforeBrickAdd = getGlusterVolume();
// Add bricks in a single transaction
TransactionSupport.executeInScope(TransactionScopeOption.Required, () -> {
addGlusterVolumeBricks(bricksList, getParameters().getReplicaCount(), getParameters().getStripeCount(), getParameters().isForce());
return null;
});
if (getGlusterVolume().getIsGeoRepMaster() || getGlusterVolume().getIsGeoRepSlave()) {
Set<Guid> newServerIds = findNewServers(bricksList, volumeBeforeBrickAdd);
if (!newServerIds.isEmpty()) {
postAddBrickHandleGeoRepCase(bricksList, newServerIds);
}
}
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddBricksToGlusterVolumeCommand method getSlaveNodesSet.
private Set<Guid> getSlaveNodesSet(GlusterGeoRepSession currentSession) {
Set<Guid> slaveNodesSet = new HashSet<>();
GlusterVolumeEntity sessionSlaveVolume = glusterVolumeDao.getById(currentSession.getSlaveVolumeId());
for (GlusterBrickEntity currentSlaveBrick : sessionSlaveVolume.getBricks()) {
slaveNodesSet.add(currentSlaveBrick.getServerId());
}
return slaveNodesSet;
}
Aggregations