Search in sources :

Example 31 with VmPool

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

Example 32 with VmPool

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);
}
Also used : QueryReturnValue(org.ovirt.engine.core.common.queries.QueryReturnValue) VmPool(org.ovirt.engine.core.common.businessentities.VmPool) VM(org.ovirt.engine.core.common.businessentities.VM) ArrayList(java.util.ArrayList) QueryParametersBase(org.ovirt.engine.core.common.queries.QueryParametersBase) List(java.util.List) ArrayList(java.util.ArrayList)

Aggregations

VmPool (org.ovirt.engine.core.common.businessentities.VmPool)32 Test (org.junit.Test)12 VM (org.ovirt.engine.core.common.businessentities.VM)9 ArrayList (java.util.ArrayList)8 IdQueryParameters (org.ovirt.engine.core.common.queries.IdQueryParameters)8 QueryReturnValue (org.ovirt.engine.core.common.queries.QueryReturnValue)7 Guid (org.ovirt.engine.core.compat.Guid)7 QueryType (org.ovirt.engine.core.common.queries.QueryType)6 List (java.util.List)5 Frontend (org.ovirt.engine.ui.frontend.Frontend)5 HelpTag (org.ovirt.engine.ui.uicommonweb.help.HelpTag)5 ConstantsManager (org.ovirt.engine.ui.uicompat.ConstantsManager)5 ActionType (org.ovirt.engine.core.common.action.ActionType)4 VmPoolParametersBase (org.ovirt.engine.core.common.action.VmPoolParametersBase)4 ActionParametersBase (org.ovirt.engine.core.common.action.ActionParametersBase)3 AddVmPoolParameters (org.ovirt.engine.core.common.action.AddVmPoolParameters)3 VmPoolType (org.ovirt.engine.core.common.businessentities.VmPoolType)3 SearchType (org.ovirt.engine.core.common.interfaces.SearchType)3 SearchParameters (org.ovirt.engine.core.common.queries.SearchParameters)3 UICommand (org.ovirt.engine.ui.uicommonweb.UICommand)3