private boolean doesHostSupportAnyCluster(List<Cluster> clusterList, VDS host){ for (Cluster cluster : clusterList){ if (host.getSupportedClusterVersionsSet().contains(cluster.getCompatibilityVersion())){ return true; } } return false; }
/** * @return Set of required rng sources. */ public Set<VmRngDevice.Source> getRequiredRngSources() { final Set<VmRngDevice.Source> requiredRngSources = new HashSet<>(getAdditionalRngSources()); requiredRngSources.add(VmRngDevice.Source.getUrandomOrRandomFor(getCompatibilityVersion())); return Collections.unmodifiableSet(requiredRngSources); }
public static Version getEffective(VmBase vmBase, Supplier<Cluster> clusterSupplier) { if (vmBase != null && vmBase.getCustomCompatibilityVersion() != null) { return vmBase.getCustomCompatibilityVersion(); } else { Cluster cluster = clusterSupplier.get(); return cluster != null ? cluster.getCompatibilityVersion() : null; } }
public static Version getEffective(VmBase vmBase, Cluster cluster) { Version vmCustomCompatibilityVersion = vmBase != null ? vmBase.getCustomCompatibilityVersion() : null; Version clusterCompatibilityVersion = cluster != null ? cluster.getCompatibilityVersion() : null; return getEffective(vmCustomCompatibilityVersion, clusterCompatibilityVersion, Version.getLast()); }
/** * Checks whether it is ok to have {@code rngDevice} assigned to a VM / Template with {@code effectiveVersion} * in {@code cluster}. */ public static RngValidationResult validate(Cluster cluster, VmRngDevice rngDevice) { VmRngDevice.Source source = rngDevice.getSource(); if (cluster == null) { return validateForNonClusterEntity(source); } // This can be dropped when we stop to support 4.0 compatibility level if (cluster.getCompatibilityVersion() != null && EnumSet.of(VmRngDevice.Source.URANDOM, VmRngDevice.Source.RANDOM).contains(source) && containsAtLeastOne(cluster.getRequiredRngSources(), VmRngDevice.Source.URANDOM, VmRngDevice.Source.RANDOM) && !cluster.getRequiredRngSources().contains(source)) { return RngValidationResult.UNSUPPORTED_URANDOM_OR_RANDOM; } final boolean valid = cluster.getRequiredRngSources().contains(source); return valid ? RngValidationResult.VALID : RngValidationResult.INVALID; }
protected Cluster setUpCluster(Guid id) { Cluster cluster = mock(Cluster.class); when(cluster.getId()).thenReturn(id); when(cluster.getCompatibilityVersion()).thenReturn(Version.getLast()); return cluster; }
public Version getCompatibilityVersion() { ListModel<Version> customCompatibilityVersion = getCustomCompatibilityVersion(); if (customCompatibilityVersion != null && customCompatibilityVersion.getSelectedItem() != null) { return customCompatibilityVersion.getSelectedItem(); } Cluster cluster = getSelectedCluster(); if (cluster != null) { return cluster.getCompatibilityVersion(); } return null; }
private void copyRngDeviceFromTemplateOrInstanceType(AddVmParameters params, VmStatic vmStatic, Cluster cluster, Guid templateId, Guid instanceTypeId) { List<VmRngDevice> devices = VmHelper.getRngDevicesForEntity( this, instanceTypeId != null ? instanceTypeId : templateId); if (devices != null && !devices.isEmpty()) { final VmRngDevice rngDevice = devices.get(0); final Version effectiveVersion = CompatibilityVersionUtils.getEffective(vmStatic.getCustomCompatibilityVersion(), cluster.getCompatibilityVersion(), null); rngDevice.updateSourceByVersion(effectiveVersion); boolean supported = EnumSet.of( RngUtils.RngValidationResult.VALID, RngUtils.RngValidationResult.UNSUPPORTED_URANDOM_OR_RANDOM) .contains(RngUtils.validate(cluster, rngDevice)); if (shouldCopyDevice(supported, templateId, instanceTypeId)) { params.setUpdateRngDevice(true); params.setRngDevice(rngDevice); } } }
private Version calculateNewVersionWhichShouldBeSelected(List<Version> versions) { ListModel<Version> version = getVersion(); Version selectedVersion = version.getSelectedItem(); if (!getIsEdit() && (selectedVersion == null || !versions.contains(selectedVersion) || selectedVersion.compareTo(selectedDataCenter.getCompatibilityVersion()) > 0)) { if (ApplicationModeHelper.getUiMode().equals(ApplicationMode.GlusterOnly)) { return versions.stream().max(Comparator.naturalOrder()).orElse(null); } else { return selectedDataCenter.getCompatibilityVersion(); } } else if (getIsEdit()) { return Linq.firstOrNull(versions, x -> x.equals(getEntity().getCompatibilityVersion())); } else { return selectedVersion; } } }), ApplicationModeHelper.getUiMode().equals(ApplicationMode.GlusterOnly) ? null : selectedDataCenter.getId());
private void setRngAvailability() { TModel model = getModel(); Set<VmRngDevice.Source> requiredRngSources = model.getSelectedCluster().getRequiredRngSources(); boolean urandomSourceAvailable = requiredRngSources.contains(VmRngDevice.Source.URANDOM) || requiredRngSources.contains(VmRngDevice.Source.RANDOM); boolean hwrngSourceAvailable = requiredRngSources.contains(VmRngDevice.Source.HWRNG); model.getRngSourceUrandom().setIsChangeable(urandomSourceAvailable); if (!urandomSourceAvailable) { model.getRngSourceUrandom().setChangeProhibitionReason(messages.rngSourceNotSupportedByCluster( VmRngDevice.Source.getUrandomOrRandomFor(getModel().getSelectedCluster().getCompatibilityVersion()) .toString().toLowerCase())); } model.getRngSourceHwrng().setIsChangeable(hwrngSourceAvailable); if (!hwrngSourceAvailable) { model.getRngSourceHwrng().setChangeProhibitionReason(messages.rngSourceNotSupportedByCluster( VmRngDevice.Source.HWRNG.toString().toLowerCase())); } }
/** * @return it may return `null` */ private CpuVendor getCurrentCpuVendor() { if (getCluster().getSelectedItem() == null) { return null; } final Cluster selectedCluster = getCluster().getSelectedItem(); final ServerCpu clustersCpu = AsyncDataProvider.getInstance() .getCpuByName(selectedCluster.getCpuName(), selectedCluster.getCompatibilityVersion()); if (clustersCpu == null) { // in case CPU of cluster was not yet set return null; } return clustersCpu.getVendor(); }
private void updateArbiterAvailability() { getArbiterVolume().setIsAvailable(getTypeList().getSelectedItem().isReplicatedType() && getCluster().getSelectedItem() != null && Version.v4_1.compareTo(getCluster().getSelectedItem().getCompatibilityVersion()) <= 0); }
private void maybeLoadAttachableDisks(InstanceImagesAttachDiskModel model) { if (model.getVm().getId() == null) { Integer osType = parentModel.getUnitVmModel().getOSType().getSelectedItem(); Version compatibilityVersion = parentModel.getUnitVmModel().getSelectedCluster().getCompatibilityVersion(); model.loadAttachableDisks(osType, compatibilityVersion, getDisk()); } else { model.loadAttachableDisks(getDisk()); } }
private void onSaveConfirmCV(ClusterModel model) { if (!model.getVersion().getSelectedItem().equals(getSelectedItem().getCompatibilityVersion())) { final ConfirmationModel confirmModel = new ConfirmationModel(); setConfirmWindow(confirmModel); confirmModel.setTitle(constants.changeClusterCompatibilityVersionTitle()); confirmModel.setHelpTag(HelpTag.change_cluster_compatibility_version); confirmModel.setHashName("change_cluster_compatibility_version"); //$NON-NLS-1$ UICommand tempVar = UICommand.createDefaultOkUiCommand("OnSaveConfirmCpuThreads", this); //$NON-NLS-1$ getConfirmWindow().getCommands().add(tempVar); UICommand tempVar2 = UICommand.createCancelUiCommand("CancelConfirmation", this); //$NON-NLS-1$ getConfirmWindow().getCommands().add(tempVar2); checkForActiveVms(model, confirmModel); } else { onSaveConfirmCpuThreads(); } }
private void updateSoundCard() { if (getOSType().getSelectedItem() != null && getSelectedCluster() != null) { int osType = getOSType().getSelectedItem(); boolean soundCardEnabled = AsyncDataProvider.getInstance().isSoundDeviceEnabled(osType, getSelectedCluster().getCompatibilityVersion()); getIsSoundcardEnabled().setIsChangeable(soundCardEnabled, constants.soundDeviceUnavailable()); } }
protected void getNics(final AsyncQuery<List<VmNetworkInterface>> getNicsQuery, final Guid vmId, final UnitVmModel unitVmModel) { AsyncDataProvider.getInstance().getNicTypeList(unitVmModel.getOSType().getSelectedItem(), unitVmModel.getDataCenterWithClustersList().getSelectedItem().getCluster().getCompatibilityVersion(), new AsyncQuery<>(returnValue -> { defaultType = AsyncDataProvider.getInstance().getDefaultNicType(returnValue); supportedInterfaceTypes = returnValue; AsyncDataProvider.getInstance().getVmNicList(getNicsQuery, vmId); })); }
private boolean isRestoreMemoryVolumeSupported() { Version oldVmEffectiveVersion = getVm().getCompatibilityVersion(); // before edit Version newVmCustomCompatibilityVersion = getModel().getCustomCompatibilityVersion() == null ? null : getModel().getCustomCompatibilityVersion().getSelectedItem(); Version newClusterVersion = getModel().getSelectedCluster() == null ? null : getModel().getSelectedCluster().getCompatibilityVersion(); Version newVmEffectiveVersion = CompatibilityVersionUtils.getEffective(newVmCustomCompatibilityVersion, newClusterVersion, Version.getLast()); return oldVmEffectiveVersion.equals(newVmEffectiveVersion); }
@Mapping(from = MemoryPolicy.class, to = Cluster.class) public static Cluster map(MemoryPolicy model, Cluster template) { Cluster entity = template != null ? template : new Cluster(); if (model.isSetOverCommit() && model.getOverCommit().getPercent()!=null) { entity.setMaxVdsMemoryOverCommit(model.getOverCommit().getPercent()); } if (model.isSetTransparentHugepages() && model.getTransparentHugepages().isSetEnabled()) { entity.setTransparentHugepages(model.getTransparentHugepages().isEnabled()); } else if (template != null && greaterOrEqual(template.getCompatibilityVersion(), min_thp_version)){ entity.setTransparentHugepages(true); } return entity; }
protected VM mapToVM(VmPool model, VmTemplate template, Cluster cluster) { // apply template VmStatic fromTemplate = getMapper(VmTemplate.class, VmStatic.class).map(template, null); VmStatic fromInstanceType = null; if (model.isSetInstanceType()) { org.ovirt.engine.core.common.businessentities.InstanceType instanceType = loadInstanceType(model); fromTemplate.setInstanceTypeId(instanceType.getId()); fromInstanceType = VmMapper.map(instanceType, fromTemplate, cluster.getCompatibilityVersion()); fromInstanceType.setInstanceTypeId(instanceType.getId()); } // override with client-provided data VM vm = new VM(getMapper(VmPool.class, VmStatic.class).map( model, fromInstanceType != null ? fromInstanceType : fromTemplate), new VmDynamic(), new VmStatistics()); return vm; }
private void updateProperties() { Cluster cluster = getEntity(); setName(cluster.getName()); setDescription(cluster.getDescription()); setCpuType(cluster.getCpuName()); setDataCenterName(cluster.getStoragePoolName()); setMemoryOverCommit(cluster.getMaxVdsMemoryOverCommit()); setCpuThreads(cluster.getCountThreadsAsCores()); setResiliencePolicy(cluster.getMigrateOnError()); setEmulatedMachine(cluster.getEmulatedMachine()); setCompatibilityVersion(cluster.getCompatibilityVersion().getValue()); generateClusterType(cluster.supportsGlusterService(), cluster.supportsVirtService()); AsyncDataProvider.getInstance().getNumberOfVmsInCluster(new AsyncQuery<>( (QueryReturnValue returnValue) -> setNumberOfVms((Integer) returnValue.getReturnValue())), cluster.getId()); }