Search in sources :

Example 71 with Guid

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());
        }
    }
}
Also used : Snapshot(org.ovirt.engine.core.common.businessentities.Snapshot) ActionReturnValue(org.ovirt.engine.core.common.action.ActionReturnValue) EngineException(org.ovirt.engine.core.common.errors.EngineException) Guid(org.ovirt.engine.core.compat.Guid) HashSet(java.util.HashSet)

Example 72 with Guid

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;
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) LinkedList(java.util.LinkedList) Guid(org.ovirt.engine.core.compat.Guid) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage)

Example 73 with Guid

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);
    }
}
Also used : Snapshot(org.ovirt.engine.core.common.businessentities.Snapshot) DiskImageBase(org.ovirt.engine.core.common.businessentities.storage.DiskImageBase) ArrayList(java.util.ArrayList) List(java.util.List) LinkedList(java.util.LinkedList) Guid(org.ovirt.engine.core.compat.Guid) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage) Date(java.util.Date)

Example 74 with Guid

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);
        }
    }
}
Also used : GlusterBrickEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity) GlusterVolumeEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity) Guid(org.ovirt.engine.core.compat.Guid)

Example 75 with Guid

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;
}
Also used : GlusterBrickEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity) GlusterVolumeEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity) Guid(org.ovirt.engine.core.compat.Guid) HashSet(java.util.HashSet)

Aggregations

Guid (org.ovirt.engine.core.compat.Guid)1431 ArrayList (java.util.ArrayList)330 Test (org.junit.Test)322 DiskImage (org.ovirt.engine.core.common.businessentities.storage.DiskImage)219 HashMap (java.util.HashMap)211 List (java.util.List)167 VM (org.ovirt.engine.core.common.businessentities.VM)144 Map (java.util.Map)118 VDS (org.ovirt.engine.core.common.businessentities.VDS)117 IdQueryParameters (org.ovirt.engine.core.common.queries.IdQueryParameters)106 HashSet (java.util.HashSet)102 StorageDomain (org.ovirt.engine.core.common.businessentities.StorageDomain)89 Pair (org.ovirt.engine.core.common.utils.Pair)79 ActionReturnValue (org.ovirt.engine.core.common.action.ActionReturnValue)77 StoragePool (org.ovirt.engine.core.common.businessentities.StoragePool)72 VDSReturnValue (org.ovirt.engine.core.common.vdscommands.VDSReturnValue)70 Cluster (org.ovirt.engine.core.common.businessentities.Cluster)69 QueryReturnValue (org.ovirt.engine.core.common.queries.QueryReturnValue)57 ActionType (org.ovirt.engine.core.common.action.ActionType)56 Set (java.util.Set)52