use of org.ovirt.engine.core.common.businessentities.VmPool in project ovirt-engine by oVirt.
the class CommonVmPoolCommand method validate.
@Override
protected boolean validate() {
if (getCluster() == null) {
return failValidation(EngineMessage.VDS_CLUSTER_IS_NOT_VALID);
}
// A Pool cannot be added in a cluster without a defined architecture
if (getCluster().getArchitecture() == ArchitectureType.undefined) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_CLUSTER_UNDEFINED_ARCHITECTURE);
}
VmPool pool = vmPoolDao.getByName(getParameters().getVmPool().getName());
if (pool != null && (getActionType() == ActionType.AddVmPool || !pool.getVmPoolId().equals(getParameters().getVmPoolId()))) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_NAME_ALREADY_USED);
}
setStoragePoolId(getCluster().getStoragePoolId());
if (!validate(new StoragePoolValidator(getStoragePool()).existsAndUp())) {
return false;
}
ensureDestinationImageMap();
// check if the selected template is compatible with Cluster architecture.
if (!getVmTemplate().getId().equals(VmTemplateHandler.BLANK_VM_TEMPLATE_ID) && getCluster().getArchitecture() != getVmTemplate().getClusterArch()) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_TEMPLATE_IS_INCOMPATIBLE);
}
final int nicsCount = getParameters().getVmsCount() * vmNicDao.getAllForTemplate(getVmTemplateId()).size();
if (!validate(vmHandler.verifyMacPool(nicsCount, getMacPool()))) {
return false;
}
final int priority = getParameters().getVmStaticData().getPriority();
if (!validate(vmHandler.isVmPriorityValueLegal(priority))) {
return false;
}
if (getVmTemplate().getDiskTemplateMap().values().size() != diskInfoDestinationMap.size()) {
log.error("Can not found any default active domain for one of the disks of template with id '{}'", getVmTemplate().getId());
addValidationMessage(EngineMessage.ACTION_TYPE_FAILED_MISSED_STORAGES_FOR_SOME_DISKS);
return false;
}
List<Guid> storageIds = new ArrayList<>();
for (DiskImage diskImage : diskInfoDestinationMap.values()) {
Guid storageId = diskImage.getStorageIds().get(0);
if (!storageIds.contains(storageId) && !areTemplateImagesInStorageReady(storageId)) {
return false;
}
storageIds.add(storageId);
}
if (getActionType() == ActionType.AddVmPool && getParameters().getVmsCount() < 1) {
return failValidation(EngineMessage.VM_POOL_CANNOT_CREATE_WITH_NO_VMS);
}
if (getParameters().getVmPool().getPrestartedVms() > getParameters().getVmPool().getAssignedVmsCount() + getParameters().getVmsCount()) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_PRESTARTED_VMS_CANNOT_EXCEED_VMS_COUNT);
}
if (!setAndValidateDiskProfiles()) {
return false;
}
if (!setAndValidateCpuProfile()) {
return false;
}
return checkDestDomains();
}
use of org.ovirt.engine.core.common.businessentities.VmPool in project ovirt-engine by oVirt.
the class GetAllVmsAndVmPoolsQuery method executeQueryCommand.
@Override
protected void executeQueryCommand() {
boolean isSucceeded = true;
List<Object> retValList = new ArrayList<>();
// Add all VMs that the user has direct or indirect privileges on
// that do not belong to a VM Pool
QueryReturnValue queryResult = runInternalQuery(QueryType.GetAllVms, getParameters());
if (queryResult != null && queryResult.getSucceeded()) {
for (VM vm : queryResult.<List<VM>>getReturnValue()) {
if (Guid.isNullOrEmpty(vm.getVmPoolId())) {
retValList.add(vm);
}
}
} else {
isSucceeded = false;
}
// Query for all VMs the user has direct permissions on, if
// a user has taken a VM from VM Pool it should be returned here
queryResult = runInternalQuery(QueryType.GetAllVmsForUser, getParameters());
if (queryResult != null && queryResult.getSucceeded()) {
for (VM vm : queryResult.<List<VM>>getReturnValue()) {
if (!retValList.contains(vm)) {
retValList.add(vm);
}
}
} else {
isSucceeded = false;
}
if (isSucceeded) {
queryResult = runInternalQuery(QueryType.GetAllVmPoolsAttachedToUser, new QueryParametersBase());
if (queryResult != null && queryResult.getSucceeded()) {
retValList.addAll(queryResult.<List<VmPool>>getReturnValue());
} else {
isSucceeded = false;
}
}
if (!isSucceeded) {
getQueryReturnValue().setSucceeded(false);
return;
}
getQueryReturnValue().setReturnValue(retValList);
}
Aggregations