use of org.ovirt.engine.core.common.businessentities.VM in project ovirt-engine by oVirt.
the class VmSnapshotListModel method cloneVM.
private void cloneVM() {
Snapshot snapshot = getSelectedItem();
if (snapshot == null) {
return;
}
if (getWindow() != null) {
return;
}
VM selectedVm = getEntity();
UnitVmModel model = new UnitVmModel(new CloneVmFromSnapshotModelBehavior(), this);
model.getVmType().setSelectedItem(selectedVm.getVmType());
// $NON-NLS-1$
model.setIsAdvancedModeLocalStorageKey("wa_snapshot_dialog");
setWindow(model);
model.startProgress();
AsyncDataProvider.getInstance().getVmConfigurationBySnapshot(new AsyncQuery<>(vm -> {
UnitVmModel unitVmModel = (UnitVmModel) getWindow();
CloneVmFromSnapshotModelBehavior behavior = (CloneVmFromSnapshotModelBehavior) unitVmModel.getBehavior();
behavior.setVm(vm);
unitVmModel.setTitle(ConstantsManager.getInstance().getConstants().cloneVmFromSnapshotTitle());
unitVmModel.setHelpTag(HelpTag.clone_vm_from_snapshot);
// $NON-NLS-1$
unitVmModel.setHashName("clone_vm_from_snapshot");
unitVmModel.setCustomPropertiesKeysList(AsyncDataProvider.getInstance().getCustomPropertiesList());
unitVmModel.initialize();
VmBasedWidgetSwitchModeCommand switchModeCommand = new VmBasedWidgetSwitchModeCommand();
switchModeCommand.init(unitVmModel);
unitVmModel.getCommands().add(switchModeCommand);
// $NON-NLS-1$
UICommand tempVar = UICommand.createDefaultOkUiCommand("OnCloneVM", VmSnapshotListModel.this);
unitVmModel.getCommands().add(tempVar);
// $NON-NLS-1$
UICommand tempVar2 = UICommand.createCancelUiCommand("Cancel", VmSnapshotListModel.this);
unitVmModel.getCommands().add(tempVar2);
stopProgress();
}), snapshot.getId());
}
use of org.ovirt.engine.core.common.businessentities.VM in project ovirt-engine by oVirt.
the class VmSnapshotListModel method onCloneVM.
private void onCloneVM() {
UnitVmModel model = (UnitVmModel) getWindow();
CloneVmFromSnapshotModelBehavior behavior = (CloneVmFromSnapshotModelBehavior) model.getBehavior();
Snapshot snapshot = getSelectedItem();
if (snapshot == null) {
cancel();
return;
}
if (!model.validate()) {
return;
}
VM vm = behavior.getVm();
// Save changes.
buildVmOnClone(model, vm);
vm.setUseHostCpuFlags(model.getHostCpu().getEntity());
vm.setDiskMap(behavior.getVm().getDiskMap());
HashMap<Guid, DiskImage> imageToDestinationDomainMap = model.getDisksAllocationModel().getImageToDestinationDomainMap();
AddVmFromSnapshotParameters parameters = new AddVmFromSnapshotParameters(vm.getStaticData(), snapshot.getId());
parameters.setDiskInfoDestinationMap(imageToDestinationDomainMap);
parameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
parameters.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
parameters.setBalloonEnabled(model.getMemoryBalloonDeviceEnabled().getEntity());
BuilderExecutor.build(model, parameters, new UnitToGraphicsDeviceParamsBuilder());
if (!StringHelper.isNullOrEmpty(model.getVmId().getEntity())) {
parameters.setVmId(new Guid(model.getVmId().getEntity()));
}
model.startProgress();
Frontend.getInstance().runAction(ActionType.AddVmFromSnapshot, parameters, result -> {
VmSnapshotListModel vmSnapshotListModel = (VmSnapshotListModel) result.getState();
vmSnapshotListModel.getWindow().stopProgress();
ActionReturnValue returnValueBase = result.getReturnValue();
if (returnValueBase != null && returnValueBase.getSucceeded()) {
vmSnapshotListModel.cancel();
vmSnapshotListModel.updateActionAvailability();
}
}, this);
}
use of org.ovirt.engine.core.common.businessentities.VM in project ovirt-engine by oVirt.
the class VncConsoleModel method invokeConsole.
private void invokeConsole() {
final GraphicsInfo vncInfo = getEntity().getGraphicsInfos().get(GraphicsType.VNC);
if (vncInfo == null) {
// $NON-NLS-1$
throw new IllegalStateException("Trying to invoke VNC console but VM GraphicsInfo is null.");
}
vncImpl.getOptions().setVmId(getEntity().getId());
ConfigureConsoleOptionsParams parameters = new ConfigureConsoleOptionsParams(vncImpl.getOptions(), true);
parameters.setEngineBaseUrl(FrontendUrlUtils.getRootURL());
parameters.setConsoleClientResourcesUrl(dynamicMessages.consoleClientResourcesUrl());
Frontend.getInstance().runQuery(QueryType.ConfigureConsoleOptions, parameters, new ShowErrorAsyncQuery(returnValue -> {
ConsoleOptions configuredOptions = ((QueryReturnValue) returnValue).getReturnValue();
// overriding global server settings by frontend settings
configuredOptions.setRemapCtrlAltDelete(vncImpl.getOptions().isRemapCtrlAltDelete());
vncImpl.setOptions(configuredOptions);
vncImpl.getOptions().setTitle(getClientTitle());
vncImpl.getOptions().setVmName(getEntity().getName());
vncImpl.invokeClient();
}));
}
use of org.ovirt.engine.core.common.businessentities.VM in project ovirt-engine by oVirt.
the class MainVirtualMachineView method initTable.
void initTable() {
getTable().enableColumnResizing();
VmStatusColumn<VM> statusIconColumn = new VmStatusColumn<>();
statusIconColumn.setContextMenuTitle(constants.statusIconVm());
statusIconColumn.makeSortable(VmConditionFieldAutoCompleter.STATUS);
// $NON-NLS-1$
getTable().addColumn(statusIconColumn, constants.empty(), "35px");
VmTypeColumn typeColumn = new VmTypeColumn();
typeColumn.setContextMenuTitle(constants.typeVm());
typeColumn.makeSortable(VmConditionFieldAutoCompleter.TYPE);
// $NON-NLS-1$
getTable().addColumn(typeColumn, constants.empty(), "60px");
AbstractTextColumn<VM> nameColumn = new AbstractLinkColumn<VM>(new FieldUpdater<VM, String>() {
@Override
public void update(int index, VM vm, String value) {
Map<String, String> parameters = new HashMap<>();
parameters.put(FragmentParams.NAME.getName(), vm.getName());
// The link was clicked, now fire an event to switch to details.
getPlaceTransitionHandler().handlePlaceTransition(WebAdminApplicationPlaces.virtualMachineGeneralSubTabPlace, parameters);
}
}) {
@Override
public String getValue(VM object) {
return object.getName();
}
};
nameColumn.makeSortable(VmConditionFieldAutoCompleter.NAME);
// $NON-NLS-1$
getTable().addColumn(nameColumn, constants.nameVm(), "120px");
CommentColumn<VM> commentColumn = new CommentColumn<>();
getTable().addColumnWithHtmlHeader(commentColumn, SafeHtmlUtils.fromSafeConstant(constants.commentLabel()), // $NON-NLS-1$
"75px");
AbstractTextColumn<VM> hostColumn = new AbstractLinkColumn<VM>(new FieldUpdater<VM, String>() {
@Override
public void update(int index, VM vm, String value) {
Map<String, String> parameters = new HashMap<>();
parameters.put(FragmentParams.NAME.getName(), vm.getRunOnVdsName());
getPlaceTransitionHandler().handlePlaceTransition(WebAdminApplicationPlaces.hostGeneralSubTabPlace, parameters);
}
}) {
@Override
public String getValue(VM object) {
return object.getRunOnVdsName();
}
};
hostColumn.makeSortable(VmConditionFieldAutoCompleter.HOST);
// $NON-NLS-1$
getTable().addColumn(hostColumn, constants.hostVm(), "120px");
AbstractTextColumn<VM> ipColumn = new AbstractTextColumn<VM>() {
@Override
public String getValue(VM object) {
return object.getIp();
}
};
ipColumn.makeSortable(VmConditionFieldAutoCompleter.IP);
// $NON-NLS-1$
getTable().addColumn(ipColumn, constants.ipVm(), "120px");
AbstractTextColumn<VM> fqdnColumn = new AbstractTextColumn<VM>() {
@Override
public String getValue(VM object) {
return object.getFqdn();
}
};
fqdnColumn.makeSortable(VmConditionFieldAutoCompleter.FQDN);
// $NON-NLS-1$
getTable().addColumn(fqdnColumn, constants.fqdn(), "120px");
AbstractTextColumn<VM> clusterColumn = new AbstractLinkColumn<VM>(new FieldUpdater<VM, String>() {
@Override
public void update(int index, VM vm, String value) {
Map<String, String> parameters = new HashMap<>();
parameters.put(FragmentParams.NAME.getName(), vm.getClusterName());
getPlaceTransitionHandler().handlePlaceTransition(WebAdminApplicationPlaces.clusterGeneralSubTabPlace, parameters);
}
}) {
@Override
public String getValue(VM object) {
return object.getClusterName();
}
};
clusterColumn.makeSortable(VmConditionFieldAutoCompleter.CLUSTER);
// $NON-NLS-1$
getTable().addColumn(clusterColumn, constants.clusterVm(), "120px");
AbstractTextColumn<VM> dcColumn = new AbstractLinkColumn<VM>(new FieldUpdater<VM, String>() {
@Override
public void update(int index, VM vm, String value) {
Map<String, String> parameters = new HashMap<>();
parameters.put(FragmentParams.NAME.getName(), vm.getStoragePoolName());
getPlaceTransitionHandler().handlePlaceTransition(WebAdminApplicationPlaces.dataCenterStorageSubTabPlace, parameters);
}
}) {
@Override
public String getValue(VM object) {
return object.getStoragePoolName();
}
};
dcColumn.makeSortable(VmConditionFieldAutoCompleter.DATACENTER);
// $NON-NLS-1$
getTable().addColumn(dcColumn, constants.dcVm(), "120px");
getTable().addColumn(new ColumnResizeTableLineChartProgressBar<VM>(getTable(), VmConditionFieldAutoCompleter.MEM_USAGE) {
@Override
protected List<Integer> getProgressValues(VM object) {
return object.getMemoryUsageHistory();
}
}, constants.memoryVm(), // $NON-NLS-1$
"80px");
getTable().addColumn(new ColumnResizeTableLineChartProgressBar<VM>(getTable(), VmConditionFieldAutoCompleter.CPU_USAGE) {
@Override
protected List<Integer> getProgressValues(VM object) {
return object.getCpuUsageHistory();
}
}, constants.cpuVm(), // $NON-NLS-1$
"80px");
getTable().addColumn(new ColumnResizeTableLineChartProgressBar<VM>(getTable(), VmConditionFieldAutoCompleter.NETWORK_USAGE) {
@Override
protected List<Integer> getProgressValues(VM object) {
return object.getNetworkUsageHistory();
}
}, constants.networkVm(), // $NON-NLS-1$
"80px");
AbstractTextColumn<VM> graphicsColumn = new AbstractEnumColumn<VM, UnitVmModel.GraphicsTypes>() {
@Override
protected UnitVmModel.GraphicsTypes getRawValue(VM vm) {
if ((vm.getStatus() == VMStatus.Down) || (vm.getStatus() == VMStatus.ImageLocked)) {
return UnitVmModel.GraphicsTypes.NONE;
}
Map<GraphicsType, GraphicsInfo> graphicsInfos = vm.getGraphicsInfos();
return UnitVmModel.GraphicsTypes.fromGraphicsTypes(graphicsInfos.keySet());
}
};
// $NON-NLS-1$
getTable().addColumn(graphicsColumn, constants.graphicsVm(), "70px");
AbstractTextColumn<VM> statusColumn = new AbstractEnumColumn<VM, VMStatus>() {
@Override
public VMStatus getRawValue(VM object) {
return object.getStatus();
}
@Override
public String getValue(VM vm) {
if (vm.getStatus() == VMStatus.MigratingFrom) {
// will be rendered by progress column
return null;
}
if (vm.getBackgroundOperationDescription() != null) {
// will be rendered by progress column
return null;
}
return super.getValue(vm);
}
};
MigrationProgressColumn migrationProgressColumn = new MigrationProgressColumn();
ImportProgressColumn importProgressColumn = new ImportProgressColumn();
ReasonColumn<VM> reasonColumn = new ReasonColumn<VM>() {
@Override
protected String getReason(VM value) {
return value.getStopReason();
}
};
List<HasCell<VM, ?>> list = new ArrayList<>();
list.add(statusColumn);
list.add(reasonColumn);
list.add(migrationProgressColumn);
list.add(importProgressColumn);
Cell<VM> compositeCell = new StatusCompositeCell<>(list);
AbstractColumn<VM, VM> statusTextColumn = new AbstractColumn<VM, VM>(compositeCell) {
@Override
public VM getValue(VM object) {
return object;
}
@Override
public SafeHtml getTooltip(VM value) {
String stopReason = value.getStopReason();
if (stopReason != null && !stopReason.trim().isEmpty()) {
return SafeHtmlUtils.fromString(stopReason);
}
return null;
}
};
statusTextColumn.makeSortable(VmConditionFieldAutoCompleter.STATUS);
// $NON-NLS-1$
getTable().addColumn(statusTextColumn, constants.statusVm(), "120px");
AbstractTextColumn<VM> uptimeColumn = new AbstractUptimeColumn<VM>() {
@Override
public Double getRawValue(VM object) {
return object.getElapsedTime();
}
};
uptimeColumn.makeSortable(VmConditionFieldAutoCompleter.UPTIME);
// $NON-NLS-1$
getTable().addColumn(uptimeColumn, constants.uptimeVm(), "100px");
AbstractTextColumn<VM> descriptionColumn = new AbstractTextColumn<VM>() {
@Override
public String getValue(VM object) {
return object.getDescription();
}
};
descriptionColumn.makeSortable(VmConditionFieldAutoCompleter.DESCRIPTION);
// $NON-NLS-1$
getTable().addColumn(descriptionColumn, constants.description(), "150px");
}
use of org.ovirt.engine.core.common.businessentities.VM in project ovirt-engine by oVirt.
the class AddVmCommand method validate.
@Override
protected boolean validate() {
if (getCluster() == null) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_CLUSTER_CAN_NOT_BE_EMPTY);
}
if (getVmTemplate() == null) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_TEMPLATE_DOES_NOT_EXIST);
}
if (getVmTemplate().isDisabled()) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_TEMPLATE_IS_DISABLED);
}
StoragePoolValidator spValidator = new StoragePoolValidator(getStoragePool());
if (!validate(spValidator.exists())) {
return false;
}
if (!isExternalVM() && !validate(spValidator.isInStatus(StoragePoolStatus.Up))) {
return false;
}
if (!isTemplateInValidDc()) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_TEMPLATE_NOT_EXISTS_IN_CURRENT_DC);
}
if (!isDisksVolumeFormatValid()) {
return false;
}
Version customCompatibilityVersionFromParams = getParameters().getVmStaticData().getCustomCompatibilityVersion();
if (customCompatibilityVersionFromParams != null && !isCompatibilityVersionSupportedByCluster(customCompatibilityVersionFromParams)) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_CUSTOM_COMPATIBILITY_VERSION_NOT_SUPPORTED, String.format("$Ccv %s", customCompatibilityVersionFromParams));
}
// A VM cannot be added in a cluster without a defined architecture
if (getCluster().getArchitecture() == ArchitectureType.undefined) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_CLUSTER_UNDEFINED_ARCHITECTURE);
}
if (verifySourceDomains() && buildAndCheckDestStorageDomains()) {
chooseDisksSourceDomains();
} else {
return false;
}
if (getParameters().getVmStaticData().getVmType() == VmType.HighPerformance && !FeatureSupported.isHighPerformanceTypeSupported(getEffectiveCompatibilityVersion())) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_HIGH_PERFORMANCE_IS_NOT_SUPPORTED, String.format("$Version %s", getEffectiveCompatibilityVersion()));
}
if (isBalloonEnabled() && !osRepository.isBalloonEnabled(getParameters().getVmStaticData().getOsId(), getEffectiveCompatibilityVersion())) {
addValidationMessageVariable("clusterArch", getCluster().getArchitecture());
return failValidation(EngineMessage.BALLOON_REQUESTED_ON_NOT_SUPPORTED_ARCH);
}
if (isSoundDeviceEnabled() && !osRepository.isSoundDeviceEnabled(getParameters().getVmStaticData().getOsId(), getEffectiveCompatibilityVersion())) {
addValidationMessageVariable("clusterArch", getCluster().getArchitecture());
return failValidation(EngineMessage.SOUND_DEVICE_REQUESTED_ON_NOT_SUPPORTED_ARCH);
}
if (!validateQuota(getParameters().getVmStaticData().getQuotaId())) {
return false;
}
// otherwise..
storageToDisksMap = ImagesHandler.buildStorageToDiskMap(getImagesToCheckDestinationStorageDomains(), diskInfoDestinationMap);
if (!validateAddVmCommand()) {
return false;
}
VM vmFromParams = getParameters().getVm();
// 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);
}
if (StringUtils.isEmpty(vmFromParams.getName())) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_NAME_MAY_NOT_BE_EMPTY);
}
// check that VM name is not too long
if (!isVmNameValidLength(vmFromParams)) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_NAME_LENGTH_IS_TOO_LONG);
}
// check for Vm Payload
if (getParameters().getVmPayload() != null) {
if (!checkPayload(getParameters().getVmPayload())) {
return false;
}
// otherwise, we save the content in base64 string
for (Map.Entry<String, String> entry : getParameters().getVmPayload().getFiles().entrySet()) {
entry.setValue(new String(BASE_64.encode(entry.getValue().getBytes()), StandardCharsets.UTF_8));
}
}
// check for Vm Watchdog Model
if (getParameters().getWatchdog() != null) {
if (!validate(new VmWatchdogValidator(vmFromParams.getOs(), getParameters().getWatchdog(), getEffectiveCompatibilityVersion()).isValid())) {
return false;
}
}
// check if the OS type is supported
if (!validate(vmHandler.isOsTypeSupported(vmFromParams.getOs(), getCluster().getArchitecture()))) {
return false;
}
if (!validate(vmHandler.isCpuSupported(vmFromParams.getVmOsId(), getEffectiveCompatibilityVersion(), getCluster().getCpuName()))) {
return false;
}
// Check if the graphics and display from parameters are supported
if (!validate(vmHandler.isGraphicsAndDisplaySupported(getParameters().getVmStaticData().getOsId(), vmHandler.getResultingVmGraphics(getVmDeviceUtils().getGraphicsTypesOfEntity(getVmTemplateId()), getParameters().getGraphicsDevices()), vmFromParams.getDefaultDisplayType(), getEffectiveCompatibilityVersion()))) {
return false;
}
if (!validate(vmHandler.validateSmartCardDevice(getParameters().getVmStaticData()))) {
return false;
}
if (!FeatureSupported.isMigrationSupported(getCluster().getArchitecture(), getEffectiveCompatibilityVersion()) && vmFromParams.getMigrationSupport() != MigrationSupport.PINNED_TO_HOST) {
return failValidation(EngineMessage.VM_MIGRATION_IS_NOT_SUPPORTED);
}
// check cpuPinning if the check haven't failed yet
if (!validate(isCpuPinningValid(vmFromParams.getCpuPinning(), vmFromParams.getStaticData()))) {
return false;
}
if (vmFromParams.isUseHostCpuFlags() && vmFromParams.getMigrationSupport() != MigrationSupport.PINNED_TO_HOST) {
return failValidation(EngineMessage.VM_HOSTCPU_MUST_BE_PINNED_TO_HOST);
}
if (vmFromParams.isUseHostCpuFlags() && (ArchitectureType.ppc == getCluster().getArchitecture().getFamily())) {
return failValidation(EngineMessage.USE_HOST_CPU_REQUESTED_ON_UNSUPPORTED_ARCH);
}
if (!validateMemoryAlignment(getParameters().getVmStaticData())) {
return false;
}
if (getInstanceTypeId() != null && getInstanceType() == null) {
// invalid instance type
return failValidation(EngineMessage.ACTION_TYPE_FAILED_INSTANCE_TYPE_DOES_NOT_EXIST);
}
if (imageTypeId != null && getImageType() == null) {
// invalid image type
return failValidation(EngineMessage.ACTION_TYPE_FAILED_IMAGE_TYPE_DOES_NOT_EXIST);
}
if (!validate(VmValidator.validateCpuSockets(getParameters().getVmStaticData(), getEffectiveCompatibilityVersion()))) {
return false;
}
if (!isCpuSharesValid(vmFromParams)) {
return failValidation(EngineMessage.QOS_CPU_SHARES_OUT_OF_RANGE);
}
if (!VmCpuCountHelper.validateCpuCounts(vmFromParams)) {
return failValidation(EngineMessage.TOO_MANY_CPU_COMPONENTS);
}
if (Boolean.TRUE.equals(getParameters().isVirtioScsiEnabled())) {
// Verify OS compatibility
if (!validate(vmHandler.isOsTypeSupportedForVirtioScsi(vmFromParams.getOs(), getEffectiveCompatibilityVersion()))) {
return false;
}
}
if (vmFromParams.getMinAllocatedMem() > vmFromParams.getMemSizeMb()) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_MIN_MEMORY_CANNOT_EXCEED_MEMORY_SIZE);
}
if (!setAndValidateDiskProfiles()) {
return false;
}
if (!setAndValidateCpuProfile()) {
return false;
}
if (getVmId() != null && vmStaticDao.get(getVmId()) != null) {
return failValidation(EngineMessage.VM_ID_EXISTS);
}
List<CinderDisk> cinderDisks = DisksFilter.filterCinderDisks(diskInfoDestinationMap.values());
CinderDisksValidator cinderDisksValidator = new CinderDisksValidator(cinderDisks);
if (!validate(cinderDisksValidator.validateCinderDiskLimits())) {
return false;
}
if (getParameters().getVmLargeIcon() != null && !validate(IconValidator.validate(IconValidator.DimensionsType.LARGE_CUSTOM_ICON, getParameters().getVmLargeIcon()))) {
return false;
}
if (getSmallIconId() != null && // icon id is ignored if large icon is sent
getParameters().getVmLargeIcon() == null && !validate(IconValidator.validateIconId(getSmallIconId(), "Small"))) {
return false;
}
if (getLargeIconId() != null && // icon id is ignored if large icon is sent
getParameters().getVmLargeIcon() == null && !validate(IconValidator.validateIconId(getLargeIconId(), "Large"))) {
return false;
}
if (!validate(getNumaValidator().checkVmNumaNodesIntegrity(getParameters().getVm(), getParameters().getVm().getvNumaNodeList()))) {
return false;
}
if (getCluster().isInUpgradeMode()) {
getParameters().getVm().setClusterCompatibilityVersion(getCluster().getCompatibilityVersion());
if (!validate(getClusterUpgradeValidator().isVmReadyForUpgrade(getParameters().getVm()))) {
return false;
}
}
if (!validate(vmHandler.validateMaxMemorySize(getParameters().getVmStaticData(), getEffectiveCompatibilityVersion()))) {
return false;
}
if (shouldAddLease(getParameters().getVmStaticData()) && !canAddLease()) {
return false;
}
List<EngineMessage> msgs = openStackMetadataAdapter.validate(getParameters().getVmStaticData().getVmInit());
if (!CollectionUtils.isEmpty(msgs)) {
return failValidation(msgs);
}
return true;
}
Aggregations