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

Reply via email to