Frank Kobzik has uploaded a new change for review. Change subject: frontend: add graphics device to management classes ......................................................................
frontend: add graphics device to management classes This patch adds graphics device to vm/template management (CRUD) commands on frontend (listmodels mostly). todo - introduce widgets for selecting graphics type (now we only have those for picking display type, graphics type is derived from display so far). Change-Id: I4ec3e13b463e05190d05ac342e9edaf6078626cf Signed-off-by: Frantisek Kobzik <[email protected]> Bug-Url: https://bugzilla.redhat.com/1033547 --- M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.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/VmListModel.java 5 files changed, 120 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/28568/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index b68f301..52aa654 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -34,6 +34,8 @@ <include name="common/businessentities/DiskInterface.java" /> <include name="common/businessentities/DiskType.java" /> <include name="common/businessentities/DisplayType.java" /> + <include name="common/businessentities/GraphicsDevice.java" /> + <include name="common/businessentities/GraphicsType.java" /> <include name="common/businessentities/event_subscriber.java" /> <include name="common/businessentities/event_subscriber_id.java" /> <include name="common/businessentities/DbGroup.java" /> 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 60b45f0..88f082f 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 @@ -9,6 +9,9 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VmPoolParametersBase; +import org.ovirt.engine.core.common.businessentities.DisplayType; +import org.ovirt.engine.core.common.businessentities.GraphicsDevice; +import org.ovirt.engine.core.common.businessentities.GraphicsType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmPool; @@ -446,7 +449,6 @@ pool.setSpiceProxy(model.getSpiceProxy().getEntity()); } - VM vm = buildVmOnSave(model); vm.setVmInit(model.getVmInitModel().buildCloudInitParameters(model)); @@ -464,6 +466,8 @@ param.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity()); param.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); + setGraphicsDevicesToParams(model, param); + if (model.getQuota().getSelectedItem() != null) { vm.setQuotaId(model.getQuota().getSelectedItem().getId()); } @@ -502,6 +506,25 @@ name); } + private void setGraphicsDevicesToParams(PoolModel model, AddVmPoolWithVmsParameters params) { + // todo in THIS patch: + // graph. devices will be derived from ui widget. so far they are set + // according to display type (qxl --> spice, vnc --> vnc) + if (model.getDisplayProtocol().getSelectedItem() == null) { + return; + } + + DisplayType selectedDisplayType = model.getDisplayProtocol().getSelectedItem().getEntity(); + + GraphicsType derivedGraphicsType = selectedDisplayType == DisplayType.qxl + ? GraphicsType.SPICE + : GraphicsType.VNC; + + params.setShouldUpdateGraphicsDevice(derivedGraphicsType, true); + GraphicsDevice d = new GraphicsDevice(derivedGraphicsType.getCorrespondingDeviceType()); + params.setGraphicsDevice(d); + } + protected static VM buildVmOnSave(PoolModel model) { VM vm = new VM(); BuilderExecutor.build(model, vm.getStaticData(), 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 a7d19c6..cee130d 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 @@ -13,6 +13,9 @@ import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.action.VmTemplateParametersBase; import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.DisplayType; +import org.ovirt.engine.core.common.businessentities.GraphicsDevice; +import org.ovirt.engine.core.common.businessentities.GraphicsType; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VmTemplate; @@ -609,6 +612,7 @@ UpdateVmTemplateParameters parameters = new UpdateVmTemplateParameters(template); parameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); setVmWatchdogToParams(model, parameters); + setGraphicsDevicesToParams(model, parameters); parameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); Frontend.getInstance().runAction(VdcActionType.UpdateVmTemplate, parameters, @@ -623,6 +627,25 @@ }, this); } + private void setGraphicsDevicesToParams(final UnitVmModel model, VmTemplateParametersBase params) { + // todo in THIS patch: + // graph. devices will be derived from ui widget. so far they are set + // according to display type (qxl --> spice, vnc --> vnc) + if (model.getDisplayProtocol().getSelectedItem() == null) { + return; + } + + DisplayType selectedDisplayType = model.getDisplayProtocol().getSelectedItem().getEntity(); + + GraphicsType derivedGraphicsType = selectedDisplayType == DisplayType.qxl + ? GraphicsType.SPICE + : GraphicsType.VNC; + + params.setShouldUpdateGraphicsDevice(derivedGraphicsType, true); + GraphicsDevice d = new GraphicsDevice(derivedGraphicsType.getCorrespondingDeviceType()); + params.setGraphicsDevice(d); + } + @SuppressWarnings("unchecked") protected static void buildTemplateOnSave(UnitVmModel model, VmTemplate template) { BuilderExecutor.build(model, template, new FullUnitToVmBaseBuilder<VmTemplate>(), new VersionNameUnitToVmBaseBuilder()); 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 bd92b88..fe06755 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 @@ -17,8 +17,11 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VmManagementParametersBase; +import org.ovirt.engine.core.common.action.VmTemplateParametersBase; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.DisplayType; +import org.ovirt.engine.core.common.businessentities.GraphicsDevice; +import org.ovirt.engine.core.common.businessentities.GraphicsType; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDS; @@ -679,6 +682,7 @@ addVmTemplateParameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); addVmTemplateParameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); addVmTemplateParameters.setCopyVmPermissions(model.getCopyPermissions().getEntity()); + setGraphicsDevicesToParams(model, addVmTemplateParameters); if (model.getIsSubTemplate().getEntity()) { addVmTemplateParameters.setBaseTemplateId(model.getBaseTemplate().getSelectedItem().getId()); addVmTemplateParameters.setTemplateVersionName(model.getTemplateVersionName().getEntity()); @@ -1101,6 +1105,7 @@ parameters.setMakeCreatorExplicitOwner(true); parameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); parameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); + setGraphicsDevicesToParams(model, parameters); Frontend.getInstance().runAction(VdcActionType.AddVmFromScratch, parameters, new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), this); } else @@ -1129,6 +1134,7 @@ param.setSoundDeviceEnabled(unitVmModel.getIsSoundcardEnabled().getEntity()); param.setConsoleEnabled(unitVmModel.getIsConsoleDeviceEnabled().getEntity()); + setGraphicsDevicesToParams(unitVmModel, param); Frontend.getInstance().runAction(VdcActionType.AddVmFromTemplate, param, new UnitVmModelNetworkAsyncCallback(unitVmModel, defaultNetworkCreatingManager), this); } }; @@ -1146,6 +1152,7 @@ param.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); param.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); + setGraphicsDevicesToParams(model, param); Frontend.getInstance().runAction(VdcActionType.AddVm, param, new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), this); } } @@ -1167,7 +1174,6 @@ confirmModel.setHashName("edit_next_run_configuration"); //$NON-NLS-1$ confirmModel.setCpuPluggable(selectedItem.getCpuPerSocket() == gettempVm().getCpuPerSocket() && selectedItem.getNumOfSockets() != gettempVm().getNumOfSockets()); - confirmModel.getCommands().add(new UICommand("updateExistingVm", UserPortalListModel.this) //$NON-NLS-1$ .setTitle(ConstantsManager.getInstance().getConstants().ok()) .setIsDefault(true)); @@ -1206,6 +1212,7 @@ VmManagementParametersBase param = new VmManagementParametersBase(gettempVm()); param.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); param.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); + setGraphicsDevicesToParams(model, param); param.setApplyChangesLater(applyCpuChangesLater); Frontend.getInstance().runAction(VdcActionType.UpdateVm, param, new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, gettempVm().getId()), this); @@ -1217,6 +1224,7 @@ VmManagementParametersBase param = new VmManagementParametersBase(gettempVm()); param.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); param.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); + setGraphicsDevicesToParams(model, param); param.setApplyChangesLater(applyCpuChangesLater); Frontend.getInstance().runAction(VdcActionType.UpdateVm, param, new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, gettempVm().getId()), this); @@ -1498,4 +1506,41 @@ protected ConsoleContext getConsoleContext() { return ConsoleContext.UP_EXTENDED; } + + private void setGraphicsDevicesToParams(final UnitVmModel model, VmManagementParametersBase params) { + // todo in THIS patch: + // graph. devices will be derived from ui widget. so far they are set according to display type + GraphicsDevice graphicsFromModel = getGraphicsFromModel(model); + + if (graphicsFromModel != null) { + params.setShouldUpdateGraphicsDevice(GraphicsType.fromVmDeviceType(graphicsFromModel.getVmDeviceType()), true); + params.setGraphicsDevice(graphicsFromModel); + } + } + + private void setGraphicsDevicesToParams(final UnitVmModel model, VmTemplateParametersBase params) { + // todo in THIS patch: + // graph. devices will be derived from ui widget. so far they are set according to display type + GraphicsDevice graphicsFromModel = getGraphicsFromModel(model); + + if (graphicsFromModel != null) { + params.setShouldUpdateGraphicsDevice(GraphicsType.fromVmDeviceType(graphicsFromModel.getVmDeviceType()), true); + params.setGraphicsDevice(graphicsFromModel); + } + } + + private GraphicsDevice getGraphicsFromModel(UnitVmModel model) { + if (model.getDisplayProtocol().getSelectedItem() == null) { + return null; + } + DisplayType selectedDisplayType = model.getDisplayProtocol().getSelectedItem().getEntity(); + + GraphicsType derivedGraphicsType = selectedDisplayType == DisplayType.qxl + ? GraphicsType.SPICE + : GraphicsType.VNC; + + GraphicsDevice d = new GraphicsDevice(derivedGraphicsType.getCorrespondingDeviceType()); + + return d; + } } 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 09d9d53..f7f0ada 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 @@ -24,6 +24,9 @@ import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.DisplayType; +import org.ovirt.engine.core.common.businessentities.GraphicsDevice; +import org.ovirt.engine.core.common.businessentities.GraphicsType; import org.ovirt.engine.core.common.businessentities.HaMaintenanceMode; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -2081,6 +2084,7 @@ VmManagementParametersBase updateVmParams = new VmManagementParametersBase(vm); setVmWatchdogToParams(model, updateVmParams); + setGraphicsDevicesToParams(model, updateVmParams); updateVmParams.setSoundDeviceEnabled(model.getIsSoundcardEnabled() .getEntity()); updateVmParams.setBalloonEnabled(balloonEnabled(model)); @@ -2108,6 +2112,7 @@ VmManagementParametersBase updateVmParams = new VmManagementParametersBase(vm); setVmWatchdogToParams(model, updateVmParams); + setGraphicsDevicesToParams(model, updateVmParams); updateVmParams.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); updateVmParams.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity()); updateVmParams.setBalloonEnabled(balloonEnabled(model)); @@ -2150,6 +2155,7 @@ parameters.setBalloonEnabled(balloonEnabled(model)); setVmWatchdogToParams(model, parameters); + setGraphicsDevicesToParams(model, parameters); Frontend.getInstance().runAction(VdcActionType.AddVmFromScratch, parameters, @@ -2230,6 +2236,7 @@ params.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity()); params.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity()); setVmWatchdogToParams(model, params); + setGraphicsDevicesToParams(model, params); Frontend.getInstance().runAction(VdcActionType.AddVm, params, new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), this); } @@ -2259,6 +2266,24 @@ } } + private void setGraphicsDevicesToParams(final UnitVmModel model, VmManagementParametersBase params) { + // todo in follow up frontend patch: + // graph. devices will be derived from ui widget. so far they are set according to display type + if (model.getDisplayProtocol().getSelectedItem() == null) { + return; + } + + DisplayType selectedDisplayType = model.getDisplayProtocol().getSelectedItem().getEntity(); + + GraphicsType derivedGraphicsType = selectedDisplayType == DisplayType.qxl + ? GraphicsType.SPICE + : GraphicsType.VNC; + + params.setShouldUpdateGraphicsDevice(derivedGraphicsType, true); + GraphicsDevice d = new GraphicsDevice(derivedGraphicsType.getCorrespondingDeviceType()); + params.setGraphicsDevice(d); + } + private void retrieveIsoImages() { Object tempVar = getSelectedItem(); -- To view, visit http://gerrit.ovirt.org/28568 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4ec3e13b463e05190d05ac342e9edaf6078626cf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Frank Kobzik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
