Frank Kobzik has uploaded a new change for review.

Change subject: restapi: Make adding (virtio-)console to virtual machines 
optional
......................................................................

restapi: Make adding (virtio-)console to virtual machines optional

This is rest part of a feature that allows users to control attaching
virtio console to vm/pools/templates.

Change-Id: I733e4c4a9c7d8f5dbe68b6b26a49502b8a40ec9d
Bug-Url: https://bugzilla.redhat.com/878459
Signed-off-by: Frantisek Kobzik <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
9 files changed, 48 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/54/16454/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
index 5a7dead..b71fe5d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
@@ -113,7 +113,7 @@
                             diskInfoDestinationMap);
             
addVmAndAttachToPoolParams.setSessionId(getParameters().getSessionId());
             
addVmAndAttachToPoolParams.setParentCommand(VdcActionType.AddVmPoolWithVms);
-            
addVmAndAttachToPoolParams.setSoundDeviceEnabled(getParameters().isSoundDeviceEnabled());
+            
addVmAndAttachToPoolParams.setSoundDeviceEnabled(Boolean.TRUE.equals(getParameters().isSoundDeviceEnabled()));
             
addVmAndAttachToPoolParams.setConsoleEnabled(getParameters().isConsoleEnabled());
             VdcReturnValueBase returnValue =
                     
Backend.getInstance().runInternalAction(VdcActionType.AddVmAndAttachToPool,
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index 108bca9..15dfb9d 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -1941,6 +1941,7 @@
           <xs:element name="display" type="Display" minOccurs="0" 
maxOccurs="1"/>
           <xs:element name="stateless" type="xs:boolean" minOccurs="0"/>
           <xs:element name="delete_protected" type="xs:boolean" minOccurs="0"/>
+          <xs:element name="console_device_enabled" type="xs:boolean" 
minOccurs="0"/>
           <xs:element name="timezone" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element ref="domain" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="usb" minOccurs="0" maxOccurs="1"/>
@@ -2134,6 +2135,7 @@
           <xs:element name="origin" type="xs:string" minOccurs="0"/>
           <xs:element name="stateless" type="xs:boolean" minOccurs="0"/>
           <xs:element name="delete_protected" type="xs:boolean" minOccurs="0"/>
+          <xs:element name="console_device_enabled" type="xs:boolean" 
minOccurs="0"/>
           <xs:element name="timezone" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element ref="domain" minOccurs="0" maxOccurs="1"/>
           <xs:element name="custom_properties" type="CustomProperties" 
minOccurs="0"/>
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index dbb0ad2..e1150c7 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -67,6 +67,7 @@
           vm.description: xs:string
           vm.stateless: xs:boolean
           vm.delete_protected: xs:boolean
+          vm.console_device_enabled: xs:boolean
           vm.cpu.topology.sockets: xs:int
           vm.placement_policy.affinity: xs:string
           vm.placement_policy.host.id|name: xs:string
@@ -126,6 +127,7 @@
           vm.description: xs:string
           vm.stateless: xs:boolean
           vm.delete_protected: xs:boolean
+          vm.console_device_enabled: xs:boolean
           vm.cpu.mode: xs:string
           vm.cpu.topology.sockets: xs:int
           vm.placement_policy.affinity: xs:string
@@ -164,6 +166,7 @@
           vm.description: xs:string
           vm.stateless: xs:boolean
           vm.delete_protected: xs:boolean
+          vm.console_device_enabled: xs:boolean
           vm.cpu.topology.sockets: xs:int
           vm.placement_policy.affinity: xs:string
           vm.placement_policy.host.id|name: xs:string
@@ -2387,6 +2390,7 @@
           template.type: xs:string
           template.stateless: 'xs:boolean'
           template.delete_protected: xs:boolean
+          template.console_device_enabled: xs:boolean
           template.placement_policy.affinity: xs:string
           template.description: xs:string
           template.custom_properties.custom_property--COLLECTION: 
{custom_property.name: 'xs:string', custom_property.value: 'xs:string'}
@@ -2425,6 +2429,7 @@
           template.type: xs:string
           template.stateless: 'xs:boolean'
           template.delete_protected: xs:boolean
+          template.console_device_enabled: xs:boolean
           template.placement_policy.affinity: xs:string
           template.description: xs:string
           template.custom_properties.custom_property--COLLECTION: 
{custom_property.name: 'xs:string', custom_property.value: 'xs:string'}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
index 7f2142f..1323ffb 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
@@ -418,4 +418,11 @@
             return doGetEntity(entityType, query, 
getQueryParams(queryParamsClass, id), id.toString());
         }
     }
+
+    protected List<String> getConsoleDevicesForEntity(Guid id) {
+        return getEntity(List.class,
+                VdcQueryType.GetConsoleDevices,
+                new IdQueryParameters(id),
+                null, true);
+    }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResource.java
index 0482f5e..e784568 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResource.java
@@ -1,8 +1,8 @@
 package org.ovirt.engine.api.restapi.resource;
 
 
+import java.util.List;
 import javax.ws.rs.core.Response;
-
 import org.ovirt.engine.api.model.Action;
 import org.ovirt.engine.api.model.CdRom;
 import org.ovirt.engine.api.model.CdRoms;
@@ -114,7 +114,9 @@
             
updated.setUsbPolicy(VmMapper.getUsbPolicyOnUpdate(incoming.getUsb(), 
entity.getUsbPolicy(),
                     lookupCluster(updated.getVdsGroupId())));
 
-            return new UpdateVmTemplateParameters(updated);
+            UpdateVmTemplateParameters params = new 
UpdateVmTemplateParameters(updated);
+            params.setConsoleEnabled(incoming.isSetConsoleDeviceEnabled() && 
incoming.isConsoleDeviceEnabled());
+            return params;
         }
     }
 
@@ -124,6 +126,7 @@
 
     @Override
     protected Template doPopulate(Template model, VmTemplate entity) {
+        
model.setConsoleDeviceEnabled(!getConsoleDevicesForEntity(entity.getId()).isEmpty());
         return model;
     }
 
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
index 0cbfc2c..6ffd662 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
@@ -75,6 +75,7 @@
         AddVmTemplateParameters params = new AddVmTemplateParameters(staticVm,
                                        template.getName(),
                                        template.getDescription());
+        
params.setConsoleEnabled(!getConsoleDevicesForEntity(staticVm.getId()).isEmpty());
         boolean isDomainSet = false;
         if (template.isSetStorageDomain() && 
template.getStorageDomain().isSetId()) {
             
params.setDestinationStorageDomainId(asGuid(template.getStorageDomain().getId()));
@@ -161,6 +162,7 @@
 
     @Override
     protected Template doPopulate(Template model, VmTemplate entity) {
+        model.setConsoleDeviceEnabled(!getConsoleDevicesForEntity(new 
Guid(model.getId())).isEmpty());
         return model;
     }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResource.java
index bb2aed9..997646b 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResource.java
@@ -63,8 +63,11 @@
 
         int size = pool.isSetSize() ? pool.getSize() : 1;
 
+        AddVmPoolWithVmsParameters params = new 
AddVmPoolWithVmsParameters(entity, vm, size, -1);
+        
params.setConsoleEnabled(!getConsoleDevicesForEntity(template.getId()).isEmpty());
+
         return performCreate(VdcActionType.AddVmPoolWithVms,
-                               new AddVmPoolWithVmsParameters(entity, vm, 
size, -1),
+                               params,
                                new 
QueryIdResolver<Guid>(VdcQueryType.GetVmPoolById,
                                                    IdQueryParameters.class));
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
index 4cc1803..c2ed1c9 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
@@ -1,15 +1,10 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import static 
org.ovirt.engine.api.restapi.resource.BackendVmsResource.SUB_COLLECTIONS;
-import static org.ovirt.engine.core.utils.Ticketing.GenerateOTP;
-
 import java.util.List;
 import java.util.Set;
-
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
-
 import org.ovirt.engine.api.common.util.DetailHelper;
 import org.ovirt.engine.api.common.util.DetailHelper.Detail;
 import org.ovirt.engine.api.common.util.LinkHelper;
@@ -62,6 +57,10 @@
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
 import org.ovirt.engine.core.compat.Guid;
+
+
+import static 
org.ovirt.engine.api.restapi.resource.BackendVmsResource.SUB_COLLECTIONS;
+import static org.ovirt.engine.core.utils.Ticketing.GenerateOTP;
 
 public class BackendVmResource extends
         AbstractBackendActionableResource<VM, 
org.ovirt.engine.core.common.businessentities.VM> implements
@@ -339,6 +338,7 @@
 
     @Override
     protected VM doPopulate(VM model, 
org.ovirt.engine.core.common.businessentities.VM entity) {
+        parent.setConsoleDevice(model);
         return model;
     }
 
@@ -389,6 +389,7 @@
             if (incoming.isSetMemoryPolicy() && 
incoming.getMemoryPolicy().isSetBallooning()) {
                
params.setBalloonEnabled(incoming.getMemoryPolicy().isBallooning());
             }
+            params.setConsoleEnabled(incoming.isSetConsoleDeviceEnabled() && 
incoming.isConsoleDeviceEnabled());
             return params;
         }
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
index 59ca65f..cafe0ce 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
@@ -144,6 +144,7 @@
             prepareImagesForCloneFromSnapshotParams(vm.getDisks(), 
diskImagesByImageId);
         }
         return cloneVmFromSnapshot(vmConfiguration.getStaticData(),
+                        vm,
                         snapshotId,
                         diskImagesByImageId);
     }
@@ -211,6 +212,7 @@
     }
 
     private Response cloneVmFromSnapshot(VmStatic staticVm,
+            VM vm,
             String snapshotId,
             HashMap<Guid, DiskImage> images) {
         Guid sourceSnapshotId = asGuid(snapshotId);
@@ -218,6 +220,9 @@
                 new AddVmFromSnapshotParameters(staticVm, sourceSnapshotId);
         params.setDiskInfoDestinationMap(images);
         params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
+        if (vm.isSetConsoleDeviceEnabled()) {
+            params.setConsoleEnabled(vm.isConsoleDeviceEnabled());
+        }
         return performCreate(VdcActionType.AddVmFromSnapshot,
                                 params,
                                 new 
QueryIdResolver<Guid>(VdcQueryType.GetVmByVmId, IdQueryParameters.class));
@@ -228,6 +233,9 @@
         params.setVmPayload(getPayload(vm));
         if (vm.isSetMemoryPolicy() && vm.getMemoryPolicy().isSetBallooning()) {
             params.setBalloonEnabled(vm.getMemoryPolicy().isBallooning());
+        }
+        if (vm.isSetConsoleDeviceEnabled()) {
+            params.setConsoleEnabled(vm.isConsoleDeviceEnabled());
         }
         params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
         return performCreate(VdcActionType.AddVmFromTemplate,
@@ -277,6 +285,7 @@
         params.setStorageDomainId(storageDomainId);
         params.setDiskInfoDestinationMap(getDisksToClone(vm.getDisks(), 
templateId));
         params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
+        params.setConsoleEnabled(vm.isSetConsoleDeviceEnabled() && 
vm.isConsoleDeviceEnabled());
         return performCreate(VdcActionType.AddVm,
                                params,
                                new 
QueryIdResolver<Guid>(VdcQueryType.GetVmByVmId, IdQueryParameters.class));
@@ -290,6 +299,7 @@
         }
         params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
         params.setStorageDomainId(storageDomainId);
+        params.setConsoleEnabled(vm.isSetConsoleDeviceEnabled() && 
vm.isConsoleDeviceEnabled());
         return performCreate(VdcActionType.AddVmFromScratch,
                                params,
                                new 
QueryIdResolver<Guid>(VdcQueryType.GetVmByVmId, IdQueryParameters.class));
@@ -457,6 +467,10 @@
         vm.getMemoryPolicy().setBallooning(balloonEnabled);
     }
 
+    protected void setConsoleDevice(VM model) {
+        model.setConsoleDeviceEnabled(!getConsoleDevicesForEntity(new 
Guid(model.getId())).isEmpty());
+    }
+
     public void setCertificateInfo(VM model) {
         VdcQueryReturnValue result =
                 runQuery(VdcQueryType.GetVdsCertificateSubjectByVmId,
@@ -485,7 +499,9 @@
     protected VM doPopulate(VM model, 
org.ovirt.engine.core.common.businessentities.VM entity) {
         setPayload(model);
         setBallooning(model);
+        setConsoleDevice(model);
         setCertificateInfo(model);
         return model;
     }
+
 }


-- 
To view, visit http://gerrit.ovirt.org/16454
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I733e4c4a9c7d8f5dbe68b6b26a49502b8a40ec9d
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