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

Reply via email to