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;
}
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;
}
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;
}
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;
}
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;
}
Aggregations