Search in sources :

Example 61 with Guid

use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.

the class ImportVmTemplateFromConfigurationCommand method validateUnregisteredEntity.

private boolean validateUnregisteredEntity(VmTemplate entityFromConfiguration, OvfEntityData ovfEntityData) {
    if (ovfEntityData == null && !getParameters().isImportAsNewEntity()) {
        return failValidation(EngineMessage.ACTION_TYPE_FAILED_UNSUPPORTED_OVF);
    }
    if (entityFromConfiguration == null) {
        return failValidation(EngineMessage.ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED);
    }
    ImportValidator importValidator = new ImportValidator(getParameters());
    if (!validate(importValidator.validateDiskNotAlreadyExistOnDB(getImages(), getParameters().isAllowPartialImport(), imageToDestinationDomainMap, failedDisksToImportForAuditLog))) {
        return false;
    }
    for (DiskImage image : new ArrayList<>(getImages())) {
        DiskImage fromIrs = null;
        Guid storageDomainId = image.getStorageIds().get(0);
        Guid imageGroupId = image.getId() != null ? image.getId() : Guid.Empty;
        try {
            fromIrs = (DiskImage) runVdsCommand(VDSCommandType.GetImageInfo, new GetImageInfoVDSCommandParameters(getStoragePool().getId(), storageDomainId, imageGroupId, image.getImageId())).getReturnValue();
        } catch (Exception e) {
            log.debug("Unable to get image info from storage", e);
        }
        if (fromIrs == null) {
            if (!getParameters().isAllowPartialImport()) {
                return failValidation(EngineMessage.TEMPLATE_IMAGE_NOT_EXIST);
            }
            log.warn("Disk image '{}/{}' doesn't exist on storage domain '{}'. Ignoring since force flag in on", imageGroupId, image.getImageId(), storageDomainId);
            getImages().remove(image);
            failedDisksToImportForAuditLog.putIfAbsent(image.getId(), image.getDiskAlias());
        }
    }
    for (DiskImage image : getImages()) {
        StorageDomain sd = storageDomainDao.getForStoragePool(image.getStorageIds().get(0), getStoragePool().getId());
        ValidationResult result = new StorageDomainValidator(sd).isDomainExistAndActive();
        if (!result.isValid()) {
            if (!getParameters().isAllowPartialImport()) {
                return validate(result);
            } else {
                log.warn("storage domain '{}' does not exists. Ignoring since force flag in on", image.getStorageIds().get(0));
                getImages().remove(image);
                failedDisksToImportForAuditLog.putIfAbsent(image.getId(), image.getDiskAlias());
            }
        }
    }
    if (!getStorageDomain().getStorageDomainType().isDataDomain()) {
        return failValidation(EngineMessage.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_UNSUPPORTED, String.format("$domainId %1$s", getParameters().getStorageDomainId()), String.format("$domainType %1$s", getStorageDomain().getStorageDomainType()));
    }
    return true;
}
Also used : StorageDomain(org.ovirt.engine.core.common.businessentities.StorageDomain) GetImageInfoVDSCommandParameters(org.ovirt.engine.core.common.vdscommands.GetImageInfoVDSCommandParameters) StorageDomainValidator(org.ovirt.engine.core.bll.validator.storage.StorageDomainValidator) ArrayList(java.util.ArrayList) ImportValidator(org.ovirt.engine.core.bll.validator.ImportValidator) Guid(org.ovirt.engine.core.compat.Guid) ValidationResult(org.ovirt.engine.core.bll.ValidationResult) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage) OvfReaderException(org.ovirt.engine.core.utils.ovf.OvfReaderException)

Example 62 with Guid

use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.

the class GlusterAsyncCommandBase method handleTaskReturn.

protected GlusterAsyncTask handleTaskReturn(GlusterAsyncTask asyncTask) {
    Guid externalTaskId = asyncTask.getTaskId();
    asyncTaskStep.setStatus(JobExecutionStatus.STARTED);
    executionHandler.updateStepExternalId(asyncTaskStep, externalTaskId, ExternalSystemType.GLUSTER);
    getExecutionContext().getJob().setStatus(JobExecutionStatus.STARTED);
    asyncTask.setStepId(asyncTaskStep.getId());
    return asyncTask;
}
Also used : Guid(org.ovirt.engine.core.compat.Guid)

Example 63 with Guid

use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.

the class GlusterCommandBase method validateNotSameServer.

protected boolean validateNotSameServer(List<GlusterBrickEntity> newBricks, GlusterVolumeEntity glusterVolume, int newReplicaCount) {
    if (newReplicaCount <= 1) {
        // no validation required for non-replicated volume types
        return true;
    }
    if (glusterVolume.getReplicaCount() == newReplicaCount) {
        return validateNotSameServer(newBricks, newReplicaCount);
    }
    List<Guid> existingServerList = glusterVolume.getBricks().stream().map(GlusterBrickEntity::getServerId).collect(Collectors.toList());
    Set<Guid> brickServers = new HashSet<>();
    int incCount = newReplicaCount - glusterVolume.getReplicaCount();
    for (int i = 0, j = 0; i <= existingServerList.size() - glusterVolume.getReplicaCount(); i += glusterVolume.getReplicaCount(), j += incCount) {
        brickServers.addAll(existingServerList.subList(i, i + glusterVolume.getReplicaCount()));
        List<Guid> subVolNewServers = newBricks.subList(j, j + incCount).stream().map(GlusterBrickEntity::getServerId).collect(Collectors.toList());
        for (Guid serverId : subVolNewServers) {
            if (brickServers.contains(serverId)) {
                addValidationMessage(EngineMessage.ACTION_TYPE_FAILED_REPLICASET_SAME_SERVER);
                return false;
            }
        }
        brickServers.clear();
    }
    return true;
}
Also used : Guid(org.ovirt.engine.core.compat.Guid) HashSet(java.util.HashSet)

Example 64 with Guid

use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.

the class GlusterHostValidator method checkUnsyncedEntries.

public Map<Guid, List<String>> checkUnsyncedEntries(Iterable<Guid> hostIds) {
    Map<Guid, List<String>> result = new HashMap<>();
    for (Guid serverId : hostIds) {
        List<GlusterBrickEntity> bricks = brickDao.getGlusterVolumeBricksByServerId(serverId);
        List<String> bricksWithUnsyncedEntries = bricks.stream().filter(brick -> brick.getStatus() == GlusterStatus.UP && brick.getUnSyncedEntries() != null && brick.getUnSyncedEntries() > 0).map(brick -> brick.getQualifiedName()).collect(Collectors.toList());
        if (!bricksWithUnsyncedEntries.isEmpty()) {
            result.put(serverId, bricksWithUnsyncedEntries);
        }
    }
    return result;
}
Also used : GlusterBrickDao(org.ovirt.engine.core.dao.gluster.GlusterBrickDao) Guid(org.ovirt.engine.core.compat.Guid) HashMap(java.util.HashMap) Singleton(javax.inject.Singleton) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) GlusterVolumeEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity) Inject(javax.inject.Inject) GlusterConstants(org.ovirt.engine.core.common.constants.gluster.GlusterConstants) GlusterStatus(org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus) List(java.util.List) GlusterBrickEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity) Cluster(org.ovirt.engine.core.common.businessentities.Cluster) Map(java.util.Map) GlusterVolumeDao(org.ovirt.engine.core.dao.gluster.GlusterVolumeDao) Validate(org.apache.commons.lang.Validate) GlusterBrickEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) List(java.util.List) Guid(org.ovirt.engine.core.compat.Guid)

Example 65 with Guid

use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.

the class GlusterHostValidator method checkGlusterQuorum.

public List<String> checkGlusterQuorum(Cluster cluster, Iterable<Guid> selectedHostIdsForMaintenance) {
    List<String> volumesWithoutQuorum = new ArrayList<>();
    if (cluster.supportsGlusterService()) {
        List<GlusterBrickEntity> bricksGoingToMaintenance = new ArrayList<>();
        for (Guid serverId : selectedHostIdsForMaintenance) {
            bricksGoingToMaintenance.addAll(brickDao.getGlusterVolumeBricksByServerId(serverId));
        }
        List<GlusterVolumeEntity> volumesInCluster = volumeDao.getByClusterId(cluster.getId());
        volumesWithoutQuorum = volumesInCluster.stream().filter(volume -> volume.getStatus() == GlusterStatus.UP && volume.getVolumeType().isReplicatedType() && !isQuorumMet(volume, bricksGoingToMaintenance)).map(v -> v.getName()).collect(Collectors.toList());
    }
    return volumesWithoutQuorum;
}
Also used : GlusterBrickDao(org.ovirt.engine.core.dao.gluster.GlusterBrickDao) Guid(org.ovirt.engine.core.compat.Guid) HashMap(java.util.HashMap) Singleton(javax.inject.Singleton) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) GlusterVolumeEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity) Inject(javax.inject.Inject) GlusterConstants(org.ovirt.engine.core.common.constants.gluster.GlusterConstants) GlusterStatus(org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus) List(java.util.List) GlusterBrickEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity) Cluster(org.ovirt.engine.core.common.businessentities.Cluster) Map(java.util.Map) GlusterVolumeDao(org.ovirt.engine.core.dao.gluster.GlusterVolumeDao) Validate(org.apache.commons.lang.Validate) GlusterBrickEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity) GlusterVolumeEntity(org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity) ArrayList(java.util.ArrayList) Guid(org.ovirt.engine.core.compat.Guid)

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