Frank Kobzik has uploaded a new change for review. Change subject: frontend: Make adding (virtio-)console to virtual machines optional ......................................................................
frontend: Make adding (virtio-)console to virtual machines optional This patch makes it possible to control attaching virtio-console for VMs/templates/VMs in pool. The console is a managed device, therefore corresponding device type was added. Also a command for querying DB for console devices was added. Affected frontend behavior: - New checkbox in new/edit vm/template/pool dialog for controlling attaching of the console device. - For new vm/tepmlates entities if the operating system listbox changes, the console device checkbox is changed accordingly (if the selected OS is linux type, it is checked, otherwise it is unchecked). Change-Id: I0cbdfcf10ae7d3b4ebc450aecac3840dfc294369 Bug-Url: https://bugzilla.redhat.com/878459 Signed-off-by: Frantisek Kobzik <fkob...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java 15 files changed, 131 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/15555/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index f3669d7..29c903f 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -343,11 +343,14 @@ @DefaultStringValue("Start in Pause Mode") String runAndPauseVmPopup(); - @DefaultStringValue("Delete protection") + @DefaultStringValue("Delete Protection") String deleteProtectionPopup(); - @DefaultStringValue("Smartcard enabled") + @DefaultStringValue("Smartcard Enabled") String smartcardVmPopup(); + + @DefaultStringValue("Console Device Enabled") + String consoleDeviceEnabled(); @DefaultStringValue("Pool") String poolVmPopup(); @@ -1268,4 +1271,5 @@ @DefaultStringValue("Are you sure you want to remove the following items?") String removeConfirmationPopupMessage(); + } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java index 52f380f..c878bea 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java @@ -175,6 +175,11 @@ @WithElementId("isDeleteProtected") public EntityModelCheckBoxEditor isDeleteProtectedEditor; + @UiField(provided = true) + @Path(value = "isConsoleDeviceEnabled.entity") + @WithElementId("isConsoleDeviceEnabled") + public EntityModelCheckBoxEditor isConsoleDeviceEnabledEditor; + @UiField @Ignore Label generalWarningMessage; @@ -536,6 +541,7 @@ isRunAndPauseEditor = new EntityModelCheckBoxEditor(Align.RIGHT); isDeleteProtectedEditor = new EntityModelCheckBoxEditor(Align.RIGHT); isSmartcardEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); + isConsoleDeviceEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); cdAttachedEditor = new EntityModelCheckBoxEditor(Align.LEFT); allowConsoleReconnectEditor = new EntityModelCheckBoxEditor(Align.RIGHT); @@ -782,6 +788,7 @@ isStatelessEditor.setLabel(constants.statelessVmPopup()); isRunAndPauseEditor.setLabel(constants.runAndPauseVmPopup()); isDeleteProtectedEditor.setLabel(constants.deleteProtectionPopup()); + isConsoleDeviceEnabledEditor.setLabel(constants.consoleDeviceEnabled()); isSmartcardEnabledEditor.setLabel(constants.smartcardVmPopup()); // Pools Tab @@ -1159,6 +1166,7 @@ isStatelessEditor.setTabIndex(nextTabIndex++); isRunAndPauseEditor.setTabIndex(nextTabIndex++); isDeleteProtectedEditor.setTabIndex(nextTabIndex++); + isConsoleDeviceEnabledEditor.setTabIndex(nextTabIndex++); // == Pools == nextTabIndex = poolTab.setTabIndexes(nextTabIndex); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml index 70e0097..3e8867b 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml @@ -296,6 +296,7 @@ <e:EntityModelCheckBoxEditor ui:field="isStatelessEditor" addStyleNames="{style.checkbox}" /> <e:EntityModelCheckBoxEditor ui:field="isRunAndPauseEditor" addStyleNames="{style.checkbox}" /> <e:EntityModelCheckBoxEditor ui:field="isDeleteProtectedEditor" addStyleNames="{style.checkbox}" /> + <e:EntityModelCheckBoxEditor ui:field="isConsoleDeviceEnabledEditor" addStyleNames="{style.checkbox}" /> </g:FlowPanel> <g:FlowPanel addStyleNames="{style.sectionPanel}"> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java index fc12827..bf351a9 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java @@ -510,6 +510,7 @@ param.setStorageDomainId(Guid.Empty); param.setDiskInfoDestinationMap(model.getDisksAllocationModel() .getImageToDestinationDomainMap()); + param.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); if (model.getQuota().getSelectedItem() != null) { desktop.setQuotaId(((Quota) model.getQuota().getSelectedItem()).getId()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java index 52cc0cc..4971a17 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java @@ -489,6 +489,7 @@ model.startProgress(null); UpdateVmTemplateParameters parameters = new UpdateVmTemplateParameters(template); + parameters.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); setVmWatchdogToParams(model, parameters); Frontend.RunAction(VdcActionType.UpdateVmTemplate, parameters, diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index a2ee542..9d61a4f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -656,6 +656,7 @@ addVmTemplateParameters.setDiskInfoDestinationMap(model.getDisksAllocationModel() .getImageToDestinationDomainMap()); + addVmTemplateParameters.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); Frontend.RunAction(VdcActionType.AddVmTemplate, addVmTemplateParameters, new IFrontendActionAsyncCallback() { @@ -1076,6 +1077,7 @@ new ArrayList<DiskImage>(), NGuid.Empty); parameters.setMakeCreatorExplicitOwner(true); + parameters.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, new IFrontendActionAsyncCallback() { @@ -1105,6 +1107,7 @@ unitVmModel.getDisksAllocationModel().getImageToDestinationDomainMap(), Guid.Empty); param.setMakeCreatorExplicitOwner(true); + param.setConsoleEnabled((Boolean) unitVmModel.getIsConsoleDeviceEnabled().getEntity()); ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); parameters.add(param); @@ -1127,6 +1130,7 @@ VmManagementParametersBase param = new VmManagementParametersBase(gettempVm()); param.setDiskInfoDestinationMap(model.getDisksAllocationModel().getImageToDestinationDomainMap()); param.setMakeCreatorExplicitOwner(true); + param.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); parameters.add(param); @@ -1167,7 +1171,10 @@ } else { - Frontend.RunAction(VdcActionType.UpdateVm, new VmManagementParametersBase(gettempVm()), + VmManagementParametersBase params = new VmManagementParametersBase(gettempVm()); + params.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); + + Frontend.RunAction(VdcActionType.UpdateVm, params, new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult a) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java index 591c715..1d8e5d6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java @@ -7,10 +7,10 @@ import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; -import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VmWatchdog; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; @@ -190,6 +190,13 @@ } })); + Frontend.RunQuery(VdcQueryType.GetConsoleDevices, new IdQueryParameters(getVm().getId()), new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + List<String> consoleDevices = (List<String>) ((VdcQueryReturnValue)returnValue).getReturnValue(); + getModel().getIsConsoleDeviceEnabled().setEntity(!consoleDevices.isEmpty()); + } + })); getModel().getVncKeyboardLayout().setSelectedItem(vm.getVncKeyboardLayout()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java index 45c6b42..1b65d28 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.List; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.Disk; @@ -17,8 +18,13 @@ import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmOsType; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; @@ -179,6 +185,15 @@ } @Override + public void oSType_SelectedItemChanged() { + if (getModel().getOSType().getSelectedItem() == null) { + return; + } + + getModel().getIsConsoleDeviceEnabled().setEntity(((VmOsType) getModel().getOSType().getSelectedItem()).isLinux()); + } + + @Override public void updateMinAllocatedMemory() { } @@ -206,6 +221,14 @@ updateTimeZone(this.vm.getTimeZone()); + Frontend.RunQuery(VdcQueryType.GetConsoleDevices, new IdQueryParameters(this.vm.getId()), new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + List<String> consoleDevices = (List<String>) ((VdcQueryReturnValue)returnValue).getReturnValue(); + getModel().getIsConsoleDeviceEnabled().setEntity(!consoleDevices.isEmpty()); + } + })); + // Update domain list updateDomain(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index 1d0f6a7..644083b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.List; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; @@ -9,11 +10,16 @@ import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VmOsType; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.NGuid; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; @@ -115,6 +121,14 @@ getModel().getCdImage().setSelectedItem(template.getIsoPath()); } + Frontend.RunQuery(VdcQueryType.GetConsoleDevices, new IdQueryParameters(template.getId()), new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + List<String> consoleDevices = (List<String>) ((VdcQueryReturnValue)returnValue).getReturnValue(); + getModel().getIsConsoleDeviceEnabled().setEntity(!consoleDevices.isEmpty()); + } + })); + updateTimeZone(template.getTimeZone()); // Update domain list @@ -210,6 +224,15 @@ } @Override + public void oSType_SelectedItemChanged() { + if (getModel().getOSType().getSelectedItem() == null) { + return; + } + + getModel().getIsConsoleDeviceEnabled().setEntity(((VmOsType) getModel().getOSType().getSelectedItem()).isLinux()); + } + + @Override public void updateMinAllocatedMemory() { VDSGroup cluster = (VDSGroup) getModel().getCluster().getSelectedItem(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java index 7fd2e52..90439fc 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java @@ -11,9 +11,13 @@ import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; @@ -133,6 +137,14 @@ updateTimeZone(vmBase.getTimeZone()); + Frontend.RunQuery(VdcQueryType.GetConsoleDevices, new IdQueryParameters(vmBase.getId()), new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + List<String> consoleDevices = (List<String>) ((VdcQueryReturnValue)returnValue).getReturnValue(); + getModel().getIsConsoleDeviceEnabled().setEntity(!consoleDevices.isEmpty()); + } + })); + // Update domain list updateDomain(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java index ebb8e71..63947e2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; + import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -11,9 +13,12 @@ import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmWatchdog; +import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.NGuid; import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; @@ -195,6 +200,14 @@ } } + Frontend.RunQuery(VdcQueryType.GetConsoleDevices, new IdQueryParameters(template.getId()), new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + List<String> consoleDevices = (List<String>) ((VdcQueryReturnValue)returnValue).getReturnValue(); + getModel().getIsConsoleDeviceEnabled().setEntity(!consoleDevices.isEmpty()); + } + })); + initPriority(this.template.getPriority()); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index 5fbc5cb..2198d6a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -13,12 +13,12 @@ import org.ovirt.engine.core.common.businessentities.MigrationSupport; import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.UsbPolicy; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VmOsType; import org.ovirt.engine.core.common.businessentities.VmType; -import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VmWatchdogAction; import org.ovirt.engine.core.common.businessentities.VmWatchdogType; import org.ovirt.engine.core.common.queries.ConfigurationValues; @@ -610,6 +610,16 @@ privateisSmartcardEnabled = value; } + private NotChangableForVmInPoolEntityModel isConsoleDeviceEnabled; + + public EntityModel getIsConsoleDeviceEnabled() { + return isConsoleDeviceEnabled; + } + + private void setConsoleDeviceEnabled(NotChangableForVmInPoolEntityModel consoleDeviceEnabled) { + this.isConsoleDeviceEnabled = consoleDeviceEnabled; + } + private NotChangableForVmInPoolEntityModel privateIsStateless; public EntityModel getIsStateless() @@ -1082,6 +1092,7 @@ setIsRunAndPause(new NotChangableForVmInPoolEntityModel()); setIsSmartcardEnabled(new NotChangableForVmInPoolEntityModel()); setIsDeleteProtected(new NotChangableForVmInPoolEntityModel()); + setConsoleDeviceEnabled(new NotChangableForVmInPoolEntityModel()); setVncKeyboardLayout(new NotChangableForVmInPoolListModel()); setCdImage(new NotChangableForVmInPoolListModel()); @@ -1231,6 +1242,7 @@ getIsStateless().setEntity(false); getIsRunAndPause().setEntity(false); getIsSmartcardEnabled().setEntity(false); + isConsoleDeviceEnabled.setEntity(false); getIsHighlyAvailable().setEntity(false); getIsAutoAssign().setEntity(true); getIsTemplatePublic().setEntity(true); @@ -1627,6 +1639,8 @@ private void oSType_SelectedItemChanged(Object sender, EventArgs args) { + behavior.oSType_SelectedItemChanged(); + VmOsType osType = (VmOsType) getOSType().getSelectedItem(); setIsWindowsOS(AsyncDataProvider.isWindowsOsType(osType)); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index 45d91dc..5bf65bd 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -1425,6 +1425,7 @@ model.getDisksAllocationModel().getImageToDestinationDomainMap()); model.startProgress(null); + addVmTemplateParameters.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); Frontend.RunAction(VdcActionType.AddVmTemplate, addVmTemplateParameters, new IFrontendActionAsyncCallback() { @@ -2016,10 +2017,10 @@ model.startProgress(null); - AddVmFromScratchParameters parameters = new AddVmFromScratchParameters(getcurrentVm(), new ArrayList<DiskImage>(), NGuid.Empty); + parameters.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); setVmWatchdogToParams(model, parameters); Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, @@ -2065,6 +2066,7 @@ vmListModel.getcurrentVm(), unitVmModel.getDisksAllocationModel().getImageToDestinationDomainMap(), Guid.Empty); + param.setConsoleEnabled((Boolean) unitVmModel.getIsConsoleDeviceEnabled().getEntity()); ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); parameters.add(param); @@ -2094,6 +2096,7 @@ VmManagementParametersBase params = new VmManagementParametersBase(getcurrentVm()); params.setDiskInfoDestinationMap(model.getDisksAllocationModel().getImageToDestinationDomainMap()); + params.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); parameters.add(params); @@ -2175,6 +2178,7 @@ model.startProgress(null); VmManagementParametersBase updateVmParams = new VmManagementParametersBase(getcurrentVm()); + updateVmParams.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); setVmWatchdogToParams(model, updateVmParams); Frontend.RunAction(VdcActionType.UpdateVm, updateVmParams, diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java index 3850c5a..058275f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; + import org.ovirt.engine.core.common.TimeZoneType; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.Disk; @@ -37,8 +38,8 @@ import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemType; -import org.ovirt.engine.ui.uicompat.UIConstants; import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.UIConstants; public abstract class VmModelBehaviorBase<TModel extends UnitVmModel> { @@ -83,6 +84,10 @@ public abstract void updateMinAllocatedMemory(); + public void oSType_SelectedItemChanged() { + // override if needed + } + protected void postInitTemplate() { } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java index 3185449..6efc385 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java @@ -596,6 +596,7 @@ new AddVmFromSnapshotParameters(getcurrentVm().getStaticData(), snapshot.getId()); parameters.setDiskInfoDestinationMap(imageToDestinationDomainMap); setupAddVmFromSnapshotParameters(parameters); + parameters.setConsoleEnabled((Boolean) model.getIsConsoleDeviceEnabled().getEntity()); model.startProgress(null); -- To view, visit http://gerrit.ovirt.org/15555 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0cbdfcf10ae7d3b4ebc450aecac3840dfc294369 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Frank Kobzik <fkob...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches