Daniel Erez has uploaded a new change for review.

Change subject: rest: VirtIO-SCSI enabled flag
......................................................................

rest: VirtIO-SCSI enabled flag

* Added 'virtio_scsi_enabled' boolean to VM/Template resource (api.xsd).
* Set 'VirtioScsiEnabled' value in:
  BackendVmsResource (add VM) / BackendVmResource (update VM)
  BackendTemplatesResource (add template) / BackendTemplateResource (update 
tempalte)
* Added VmHelper -> getVirtioScsiControllersForEntity
* Updated rsdl
* Updated tests
* Usage:
  an indication on new/edit VM for whether to attach a VirtIO-SCSI
  controller upon VM start (defaulted to true on cluster >= 3.3).

Feature page: http://www.ovirt.org/Features/Virtio-SCSI

Change-Id: I481025152b20579ac615d9023ed0cef9b64558e1
Bug-Url: https://bugzilla.redhat.com/1014491
Signed-off-by: Daniel Erez <[email protected]>
---
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/BackendApplication.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
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/ResourceHelper.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/VmHelper.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java
17 files changed, 220 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/20247/1

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 2ed8911..c35f28a 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
@@ -1180,6 +1180,12 @@
     <xs:attribute name="enabled" type="xs:boolean"/>
   </xs:complexType>
 
+  <xs:element name="virtio_scsi" type="VirtIO_SCSI"/>
+
+  <xs:complexType name="VirtIO_SCSI">
+    <xs:attribute name="enabled" type="xs:boolean"/>
+  </xs:complexType>
+
   <xs:complexType name="SchedulingPolicyThresholds">
     <xs:attribute name="low" type="xs:int">
         <xs:annotation>
@@ -2213,6 +2219,7 @@
           <xs:element ref="domain" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="usb" minOccurs="0" maxOccurs="1"/>
           <xs:element name="tunnel_migration" type="xs:boolean" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element ref="virtio_scsi" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="permissions" minOccurs="0" maxOccurs="1"/>
           <!-- also rel="cdroms/disks/nics/watchdogs" links, see Devices below 
-->
         </xs:sequence>
@@ -2424,6 +2431,7 @@
           <xs:element ref="quota" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="usb" minOccurs="0" maxOccurs="1"/>
           <xs:element name="tunnel_migration" type="xs:boolean" minOccurs="0" 
maxOccurs="1"/>
+          <xs:element ref="virtio_scsi" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="permissions" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="vmpool" minOccurs="0" maxOccurs="1">
             <xs:annotation>
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 43cfc73..1cb7761 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
@@ -82,6 +82,7 @@
           vm.origin: xs:string
           vm.os.kernel: xs:string
           vm.tunnel_migration: xs:boolean
+          vm.virtio_scsi.enabled: xs:boolean
           vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', 
payload.volume_id: 'xs:string', payload.files.file--COLLECTION: {file.name: 
'xs:string', file.content: 'xs:string'}}
           vm.cpu.cpu_tune.vcpu_pin--COLLECTION: {vcpu_pin.vcpu: 'xs:int', 
vcpu_pin.cpu_set: 'xs:string'}
         description: update the virtual machine in the system for the given 
virtual machine id with the values specified in the request
@@ -152,6 +153,7 @@
           vm.os.kernel: xs:string
           vm.disks.clone: xs:boolean
           vm.tunnel_migration: xs:boolean
+          vm.virtio_scsi.enabled: xs:boolean
           vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', 
payload.volume_id: 'xs:string', payload.files.file--COLLECTION: {file.name: 
'xs:string', file.content: 'xs:string'}}
           vm.initialization.configuration.type: 'xs:string'
           vm.initialization.configuration.data: 'xs:string'
@@ -195,6 +197,7 @@
           vm.origin: xs:string
           vm.os.kernel: xs:string
           vm.tunnel_migration: xs:boolean
+          vm.virtio_scsi.enabled: xs:boolean
           vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', 
payload.volume_id: 'xs:string', payload.files.file--COLLECTION: {file.name: 
'xs:string', file.content: 'xs:string'}}
           vm.cpu.cpu_tune.vcpu_pin--COLLECTION: {vcpu_pin.vcpu: 'xs:int', 
vcpu_pin.cpu_set: 'xs:string'}
         description: add a virtual machine to the system by cloning from a 
snapshot
@@ -236,6 +239,7 @@
                 vm.os.kernel: xs:string
                 vm.disks.clone: xs:boolean
                 vm.tunnel_migration: xs:boolean
+                vm.virtio_scsi.enabled: xs:boolean
                 vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', 
payload.volume_id: 'xs:string', payload.files.file--COLLECTION: {file.name: 
'xs:string', file.content: 'xs:string'}}
                 vm.initialization.configuration.type: 'xs:string'
                 vm.initialization.configuration.data: 'xs:string'
@@ -3117,6 +3121,7 @@
           template.usb.enabled: xs:boolean
           template.usb.type: xs:string
           template.tunnel_migration: xs:boolean
+          template.virtio_scsi.enabled: xs:boolean
         description: update the specified template in the system
     urlparams: {}
     headers:
@@ -3161,6 +3166,7 @@
           template.usb.enabled: xs:boolean
           template.usb.type: xs:string
           template.tunnel_migration: xs:boolean
+          template.virtio_scsi.enabled: xs:boolean
           template.vm.disks.disk--COLLECTION: {disk.id: 'xs:string', 
storage_domains.storage_domain--COLLECTION: {storage_domain.id: 'xs:string'}}
           template.permissions.clone: xs:boolean
           template.cpu.cpu_tune.vcpu_pin--COLLECTION: {vcpu_pin.vcpu: 
'xs:int', vcpu_pin.cpu_set: 'xs:string'}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
index b063d9e..40b3e9e 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
@@ -62,6 +62,7 @@
 import org.ovirt.engine.api.restapi.security.auth.LoginValidator;
 import org.ovirt.engine.api.restapi.types.MappingLocator;
 import org.ovirt.engine.api.restapi.util.SessionHelper;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
 
 @ApplicationPath("/")
@@ -134,6 +135,7 @@
         addResource(new BackendJobsResource());
         addResource(new BackendStorageServerConnectionsResource());
         addResource(new BackendVnicProfilesResource());
+        addResource(VmHelper.getInstance());
 
         // Authentication singletons:
         final BasicAuthorizationScheme scheme = new BasicAuthorizationScheme();
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 f6205f8..11277d7 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
@@ -10,6 +10,7 @@
 import org.ovirt.engine.api.model.NIC;
 import org.ovirt.engine.api.model.Nics;
 import org.ovirt.engine.api.model.Template;
+import org.ovirt.engine.api.model.VirtIOSCSI;
 import org.ovirt.engine.api.resource.ActionResource;
 import org.ovirt.engine.api.resource.AssignedPermissionsResource;
 import org.ovirt.engine.api.resource.CreationResource;
@@ -19,6 +20,7 @@
 import org.ovirt.engine.api.resource.TemplateResource;
 import org.ovirt.engine.api.resource.WatchdogsResource;
 import org.ovirt.engine.api.restapi.types.VmMapper;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.MoveVmParameters;
 import org.ovirt.engine.core.common.action.UpdateVmTemplateParameters;
@@ -130,6 +132,10 @@
             model.setConsole(new Console());
         }
         
model.getConsole().setEnabled(!getConsoleDevicesForEntity(entity.getId()).isEmpty());
+        if (!model.isSetVirtioScsi()) {
+            model.setVirtioScsi(new VirtIOSCSI());
+        }
+        
model.getVirtioScsi().setEnabled(!VmHelper.getInstance().getVirtioScsiControllersForEntity(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 8bf67b7..2dd9677 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
@@ -11,9 +11,11 @@
 import org.ovirt.engine.api.model.Template;
 import org.ovirt.engine.api.model.Templates;
 import org.ovirt.engine.api.model.VM;
+import org.ovirt.engine.api.model.VirtIOSCSI;
 import org.ovirt.engine.api.resource.TemplateResource;
 import org.ovirt.engine.api.resource.TemplatesResource;
 import org.ovirt.engine.api.restapi.types.VmMapper;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.action.AddVmTemplateParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VmTemplateParametersBase;
@@ -79,6 +81,8 @@
         params.setConsoleEnabled(template.getConsole() != null && 
template.getConsole().isSetEnabled() ?
                         template.getConsole().isEnabled() :
                         
!getConsoleDevicesForEntity(staticVm.getId()).isEmpty());
+        params.setVirtioScsiEnabled(template.isSetVirtioScsi() && 
template.getVirtioScsi().isSetEnabled() ?
+                template.getVirtioScsi().isEnabled() : null);
         boolean isDomainSet = false;
         if (template.isSetStorageDomain() && 
template.getStorageDomain().isSetId()) {
             
params.setDestinationStorageDomainId(asGuid(template.getStorageDomain().getId()));
@@ -178,6 +182,10 @@
             model.setConsole(new Console());
         }
         
model.getConsole().setEnabled(!getConsoleDevicesForEntity(entity.getId()).isEmpty());
+        if (!model.isSetVirtioScsi()) {
+            model.setVirtioScsi(new VirtIOSCSI());
+        }
+        
model.getVirtioScsi().setEnabled(!VmHelper.getInstance().getVirtioScsiControllersForEntity(entity.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 82ea6ae..3f74942 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
@@ -9,6 +9,7 @@
 import org.ovirt.engine.api.model.VmPools;
 import org.ovirt.engine.api.resource.VmPoolResource;
 import org.ovirt.engine.api.resource.VmPoolsResource;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.action.AddVmPoolWithVmsParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VmPoolParametersBase;
@@ -68,6 +69,7 @@
 
         AddVmPoolWithVmsParameters params = new 
AddVmPoolWithVmsParameters(entity, vm, size, -1);
         
params.setConsoleEnabled(!getConsoleDevicesForEntity(template.getId()).isEmpty());
+        
params.setVirtioScsiEnabled(!VmHelper.getInstance().getVirtioScsiControllersForEntity(template.getId()).isEmpty());
 
         return performCreate(VdcActionType.AddVmPoolWithVms,
                                params,
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 fcf06ff..3dccc3f 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
@@ -338,6 +338,7 @@
     @Override
     protected VM doPopulate(VM model, 
org.ovirt.engine.core.common.businessentities.VM entity) {
         parent.setConsoleDevice(model);
+        parent.setVirtioScsiController(model);
         return model;
     }
 
@@ -391,6 +392,9 @@
             if (incoming.isSetConsole() && 
incoming.getConsole().isSetEnabled()) {
                 params.setConsoleEnabled(incoming.getConsole().isEnabled());
             }
+            if (incoming.isSetVirtioScsi()) {
+                
params.setVirtioScsiEnabled(incoming.getVirtioScsi().isEnabled());
+            }
             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 8304f79..bc0e26f 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
@@ -28,10 +28,12 @@
 import org.ovirt.engine.api.model.Tags;
 import org.ovirt.engine.api.model.VM;
 import org.ovirt.engine.api.model.VMs;
+import org.ovirt.engine.api.model.VirtIOSCSI;
 import org.ovirt.engine.api.resource.VmResource;
 import org.ovirt.engine.api.resource.VmsResource;
 import org.ovirt.engine.api.restapi.types.DiskMapper;
 import org.ovirt.engine.api.restapi.types.VmMapper;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.action.AddVmFromScratchParameters;
 import org.ovirt.engine.core.common.action.AddVmFromSnapshotParameters;
 import org.ovirt.engine.core.common.action.AddVmFromTemplateParameters;
@@ -251,6 +253,8 @@
                 new AddVmFromSnapshotParameters(staticVm, sourceSnapshotId);
         params.setDiskInfoDestinationMap(images);
         params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
+        params.setVirtioScsiEnabled(vm.isSetVirtioScsi() && 
vm.getVirtioScsi().isSetEnabled() ?
+                vm.getVirtioScsi().isEnabled() : null);
 
         params.setConsoleEnabled(vm.isSetConsole() && 
vm.getConsole().isSetEnabled()
                 ? vm.getConsole().isEnabled()
@@ -264,6 +268,8 @@
     private Response cloneVmFromTemplate(VmStatic staticVm, VM vm, Guid 
templateId) {
         AddVmFromTemplateParameters params = new 
AddVmFromTemplateParameters(staticVm, getDisksToClone(vm.getDisks(), 
templateId), Guid.Empty);
         params.setVmPayload(getPayload(vm));
+        params.setVirtioScsiEnabled(vm.isSetVirtioScsi() && 
vm.getVirtioScsi().isSetEnabled() ?
+                vm.getVirtioScsi().isEnabled() : null);
         if (vm.isSetMemoryPolicy() && vm.getMemoryPolicy().isSetBallooning()) {
             params.setBalloonEnabled(vm.getMemoryPolicy().isBallooning());
         }
@@ -327,6 +333,9 @@
                 ? vm.getConsole().isEnabled()
                 : !getConsoleDevicesForEntity(templateId).isEmpty());
 
+        params.setVirtioScsiEnabled(vm.isSetVirtioScsi() && 
vm.getVirtioScsi().isSetEnabled() ?
+                vm.getVirtioScsi().isEnabled() : null);
+
         return performCreate(VdcActionType.AddVm,
                                params,
                                new 
QueryIdResolver<Guid>(VdcQueryType.GetVmByVmId, IdQueryParameters.class));
@@ -346,6 +355,8 @@
         }
         params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
         params.setStorageDomainId(storageDomainId);
+        params.setVirtioScsiEnabled(vm.isSetVirtioScsi() && 
vm.getVirtioScsi().isSetEnabled() ?
+                vm.getVirtioScsi().isEnabled() : null);
 
         if (vm.isSetConsole() && vm.getConsole().isSetEnabled()) {
             params.setConsoleEnabled(vm.getConsole().isEnabled());
@@ -525,6 +536,13 @@
         model.getConsole().setEnabled(!getConsoleDevicesForEntity(new 
Guid(model.getId())).isEmpty());
     }
 
+    protected void setVirtioScsiController(VM model) {
+        if (!model.isSetVirtioScsi()) {
+            model.setVirtioScsi(new VirtIOSCSI());
+        }
+        
model.getVirtioScsi().setEnabled(!VmHelper.getInstance().getVirtioScsiControllersForEntity(new
 Guid(model.getId())).isEmpty());
+    }
+
     public void setCertificateInfo(VM model) {
         VdcQueryReturnValue result =
                 runQuery(VdcQueryType.GetVdsCertificateSubjectByVmId,
@@ -554,6 +572,7 @@
         setPayload(model);
         setBallooning(model);
         setConsoleDevice(model);
+        setVirtioScsiController(model);
         setCertificateInfo(model);
         return model;
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/ResourceHelper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/ResourceHelper.java
new file mode 100644
index 0000000..f8c4e7d
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/ResourceHelper.java
@@ -0,0 +1,15 @@
+package org.ovirt.engine.api.restapi.util;
+
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+import org.ovirt.engine.api.restapi.resource.BackendResource;
+
+public abstract class ResourceHelper extends BackendResource {
+
+    public ResourceHelper() {
+        ResteasyProviderFactory.getInstance()
+                .getInjectorFactory()
+                .createPropertyInjector(this.getClass())
+                .inject(this);
+    }
+
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/VmHelper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/VmHelper.java
new file mode 100644
index 0000000..33d7901
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/VmHelper.java
@@ -0,0 +1,27 @@
+package org.ovirt.engine.api.restapi.util;
+
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+import java.util.List;
+
+public class VmHelper extends ResourceHelper {
+
+    private final static VmHelper instance = new VmHelper();
+
+    private VmHelper() {
+        // empty block
+    }
+
+    public static VmHelper getInstance() {
+        return instance;
+    }
+
+    public List<String> getVirtioScsiControllersForEntity(Guid id) {
+        return getEntity(List.class,
+                VdcQueryType.GetVirtioScsiControllers,
+                new IdQueryParameters(id),
+                "GetVirtioScsiControllers", true);
+    }
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
index df3e0db..f7a8714 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
@@ -611,4 +611,12 @@
                 control.createMock(UriInfo.class),
                 true);
     }
+
+    protected void initBackendResource(BackendResource resource) {
+        resource.setBackend(backend);
+        resource.setValidatorLocator(validatorLocator);
+        resource.setSessionHelper(sessionHelper);
+        resource.setMessageBundle(messageBundle);
+        resource.setHttpHeaders(httpHeaders);
+    }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResourceTest.java
index 0888b82..735e337 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResourceTest.java
@@ -6,12 +6,8 @@
         extends AbstractBackendBaseTest {
 
     protected void initResource(AbstractBackendResource<R, Q> resource) {
-        resource.setBackend(backend);
         resource.setMappingLocator(mapperLocator);
-        resource.setValidatorLocator(validatorLocator);
-        resource.setSessionHelper(sessionHelper);
-        resource.setMessageBundle(messageBundle);
-        resource.setHttpHeaders(httpHeaders);
+        initBackendResource(resource);
     }
 
     protected abstract Q getEntity(int index);
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResourceTest.java
index 79e4740..202c310 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplateResourceTest.java
@@ -17,6 +17,7 @@
 import org.ovirt.engine.api.model.CreationStatus;
 import org.ovirt.engine.api.model.StorageDomain;
 import org.ovirt.engine.api.model.Template;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.action.MoveVmParameters;
 import org.ovirt.engine.core.common.action.UpdateVmTemplateParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -34,8 +35,16 @@
 public class BackendTemplateResourceTest
     extends AbstractBackendSubResourceTest<Template, VmTemplate, 
BackendTemplateResource> {
 
+    protected VmHelper vmHelper = VmHelper.getInstance();
+
     public BackendTemplateResourceTest() {
         super(new BackendTemplateResource(GUIDS[0].toString()));
+    }
+
+    @Override
+    public void init() {
+        super.init();
+        initBackendResource(vmHelper);
     }
 
     @Test
@@ -90,6 +99,7 @@
             populates.add("true");
             
expect(httpHeaders.getRequestHeader(BackendResource.POPULATE)).andReturn(populates).anyTimes();
             setUpGetConsoleExpectations(new int[]{0});
+            setUpGetVirtioScsiExpectations(new int[]{0});
         }
         control.replay();
 
@@ -123,6 +133,7 @@
                 new Object[] { GUIDS[2] },
                 getVdsGroupEntity());
         setUpGetConsoleExpectations(new int[]{0});
+        setUpGetVirtioScsiExpectations(new int[]{0});
 
         setUriInfo(setUpActionExpectations(VdcActionType.UpdateVmTemplate,
                                            UpdateVmTemplateParameters.class,
@@ -312,6 +323,16 @@
         return setUpActionExpectations(task, clz, names, values, true, true, 
null, asyncTasks, asyncStatuses, null, null, uri, true);
     }
 
+    private void setUpGetVirtioScsiExpectations(int ... idxs) throws Exception 
{
+        for (int i = 0; i < idxs.length; i++) {
+            setUpGetEntityExpectations(VdcQueryType.GetVirtioScsiControllers,
+                    IdQueryParameters.class,
+                    new String[] { "Id" },
+                    new Object[] { GUIDS[idxs[i]] },
+                    new ArrayList<>());
+        }
+    }
+
     private void verifyActionResponse(Response r) throws Exception {
         verifyActionResponse(r, "templates/" + GUIDS[0], false);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResourceTest.java
index 0cf7cc6..12c0f1b 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResourceTest.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.api.model.Permissions;
 import org.ovirt.engine.api.model.Template;
 import org.ovirt.engine.api.model.VM;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.action.AddVmTemplateParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VmTemplateParametersBase;
@@ -33,10 +34,17 @@
 public class BackendTemplatesResourceTest
     extends AbstractBackendCollectionResourceTest<Template, VmTemplate, 
BackendTemplatesResource> {
 
+    protected VmHelper vmHelper = VmHelper.getInstance();
+
     public BackendTemplatesResourceTest() {
         super(new BackendTemplatesResource(), SearchType.VmTemplate, "Template 
: ");
     }
 
+    @Override
+    public void init() {
+        super.init();
+        initBackendResource(vmHelper);
+    }
 
     @Test
     public void testAddWithClonePermissionsDontClone() throws Exception {
@@ -63,6 +71,7 @@
                 setUpVm(GUIDS[1]));
         setUpGetEntityExpectations();
         setUpGetConsoleExpectations(new int[]{0, 0, 0});
+        setUpGetVirtioScsiExpectations(new int[]{0, 0});
         setUpEntityQueryExpectations(VdcQueryType.GetVdsGroupByVdsGroupId,
                 IdQueryParameters.class,
                 new String[] { "Id" },
@@ -182,6 +191,7 @@
                 getVdsGroupEntity());
 
         setUpGetConsoleExpectations(new int[]{0,0});
+        setUpGetVirtioScsiExpectations(new int[]{0});
         setUpGetEntityExpectations(VdcQueryType.GetVmByVmId,
                                    IdQueryParameters.class,
                                    new String[] { "Id" },
@@ -218,6 +228,7 @@
         setUpHttpHeaderExpectations("Expect", "201-created");
 
         setUpGetConsoleExpectations(new int[]{0, 0, 0});
+        setUpGetVirtioScsiExpectations(new int[]{0, 0});
         setUpGetEntityExpectations(VdcQueryType.GetVmByVmId,
                                    IdQueryParameters.class,
                                    new String[] { "Id" },
@@ -268,6 +279,7 @@
                                    setUpVm(GUIDS[1]));
         setUpGetEntityExpectations();
         setUpGetConsoleExpectations(new int[] {0, 0, 0});
+        setUpGetVirtioScsiExpectations(new int[] {0, 0});
 
         setUpCreationExpectations(VdcActionType.AddVmTemplate,
                                   AddVmTemplateParameters.class,
@@ -315,6 +327,7 @@
 
         setUpGetEntityExpectations();
         setUpGetConsoleExpectations(new int[] {0,0,0});
+        setUpGetVirtioScsiExpectations(new int[] {0,0});
 
         setUpCreationExpectations(VdcActionType.AddVmTemplate,
                                   AddVmTemplateParameters.class,
@@ -360,6 +373,7 @@
         setUpGetEntityExpectations();
 
         setUpGetConsoleExpectations(new int[] {0, 0, 0});
+        setUpGetVirtioScsiExpectations(new int[] {0, 0});
 
         setUpCreationExpectations(VdcActionType.AddVmTemplate,
                                   AddVmTemplateParameters.class,
@@ -405,6 +419,7 @@
         setUpGetEntityExpectations();
 
         setUpGetConsoleExpectations(new int[] {0, 0, 0});
+        setUpGetVirtioScsiExpectations(new int[] {0, 0});
 
         setUpGetEntityExpectations("Cluster: name=" + NAMES[2],
                                    SearchType.Cluster,
@@ -552,6 +567,7 @@
             populates.add("true");
             
expect(httpHeaders.getRequestHeader(BackendResource.POPULATE)).andReturn(populates).anyTimes();
             setUpGetConsoleExpectations(new int[]{0, 1, 2});
+            setUpGetVirtioScsiExpectations(new int[] {0, 1, 2});
         }
 
         setUpQueryExpectations("");
@@ -585,4 +601,14 @@
         assertEquals(4, model.getCpu().getTopology().getCores().intValue());
         assertEquals(2, model.getCpu().getTopology().getSockets().intValue());
     }
+
+    private void setUpGetVirtioScsiExpectations(int ... idxs) throws Exception 
{
+        for (int i = 0; i < idxs.length; i++) {
+            setUpGetEntityExpectations(VdcQueryType.GetVirtioScsiControllers,
+                    IdQueryParameters.class,
+                    new String[] { "Id" },
+                    new Object[] { GUIDS[idxs[i]] },
+                    new ArrayList<>());
+        }
+    }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResourceTest.java
index 87acc8d..3f4287e 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolsResourceTest.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.api.model.Template;
 import org.ovirt.engine.api.model.VmPool;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VmPoolParametersBase;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
@@ -17,6 +18,7 @@
 
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
+import java.util.ArrayList;
 import java.util.List;
 
 import static org.easymock.EasyMock.expect;
@@ -24,8 +26,16 @@
 public class BackendVmPoolsResourceTest extends
         AbstractBackendCollectionResourceTest<VmPool, 
org.ovirt.engine.core.common.businessentities.VmPool, BackendVmPoolsResource> {
 
+    protected VmHelper vmHelper = VmHelper.getInstance();
+
     public BackendVmPoolsResourceTest() {
         super(new BackendVmPoolsResource(), SearchType.VmPools, "Pools : ");
+    }
+
+    @Override
+    public void init() {
+        super.init();
+        initBackendResource(vmHelper);
     }
 
     @Override
@@ -82,6 +92,12 @@
 
         setUpGetConsoleExpectations(new int[]{1});
 
+        setUpGetEntityExpectations(VdcQueryType.GetVirtioScsiControllers,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[1] },
+                new ArrayList<>());
+
         setUpCreationExpectations(VdcActionType.AddVmPoolWithVms,
              VmPoolParametersBase.class,
              new String[] { "StorageDomainId" },
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
index 2ed3aea..ebd6ffc 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
@@ -37,6 +37,7 @@
 import org.ovirt.engine.api.model.Ticket;
 import org.ovirt.engine.api.model.VM;
 import org.ovirt.engine.api.model.VmPlacementPolicy;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.api.restapi.utils.OsTypeMockUtils;
 import org.ovirt.engine.core.common.action.ChangeVMClusterParameters;
 import org.ovirt.engine.core.common.action.MigrateVmParameters;
@@ -77,6 +78,8 @@
     private static final String PAYLOAD_COMTENT = "payload";
     private static HashMap<Integer, String> osNames = new HashMap<>();
 
+    protected VmHelper vmHelper = VmHelper.getInstance();
+
     public BackendVmResourceTest() {
         super(new BackendVmResource(GUIDS[0].toString(), new 
BackendVmsResource()));
     }
@@ -90,6 +93,7 @@
         resource.getParent().httpHeaders = httpHeaders;
         resource.getParent().messageBundle = messageBundle;
         OsTypeMockUtils.mockOsTypes();
+        initBackendResource(vmHelper);
     }
 
     @Test
@@ -164,6 +168,7 @@
             populates.add("true");
             
expect(httpHeaders.getRequestHeader(BackendResource.POPULATE)).andReturn(populates).anyTimes();
             setUpGetConsoleExpectations(new int[]{0});
+            setUpGetVirtioScsiExpectations(new int[] {0});
         }
         setUpGetEntityExpectations(1);
         setUpGetPayloadExpectations(0, 1);
@@ -205,6 +210,7 @@
         setUpGetBallooningExpectations();
         setUpGetBallooningExpectations();
         setUpGetConsoleExpectations(new int[] {0});
+        setUpGetVirtioScsiExpectations(new int[] {0});
         setUriInfo(setUpActionExpectations(VdcActionType.UpdateVm,
                                            VmManagementParametersBase.class,
                                            new String[] {},
@@ -230,6 +236,7 @@
         setUpGetBallooningExpectations();
         setUpGetBallooningExpectations();
         setUpGetConsoleExpectations(new int[] {0});
+        setUpGetVirtioScsiExpectations(new int[] {0});
 
         setUriInfo(setUpActionExpectations(VdcActionType.UpdateVm,
                                            VmManagementParametersBase.class,
@@ -270,6 +277,7 @@
         setUpGetBallooningExpectations();
         setUpGetBallooningExpectations();
         setUpGetConsoleExpectations(new int[]{0});
+        setUpGetVirtioScsiExpectations(new int[] {0});
         setUpGetEntityExpectations("Hosts: name=" + NAMES[1],
                 SearchType.VDS,
                 getHost());
@@ -306,6 +314,7 @@
         setUpGetBallooningExpectations();
         setUpGetBallooningExpectations();
         setUpGetConsoleExpectations(new int[] {0});
+        setUpGetVirtioScsiExpectations(new int[] {0});
         setUriInfo(setUpActionExpectations(VdcActionType.ChangeVMCluster,
                                            ChangeVMClusterParameters.class,
                                            new String[] {"ClusterId", "VmId"},
@@ -926,4 +935,14 @@
                 CERTIFICATE);
     }
 
+    private void setUpGetVirtioScsiExpectations(int ... idxs) throws Exception 
{
+        for (int i = 0; i < idxs.length; i++) {
+            setUpGetEntityExpectations(VdcQueryType.GetVirtioScsiControllers,
+                    IdQueryParameters.class,
+                    new String[] { "Id" },
+                    new Object[] { GUIDS[idxs[i]] },
+                    new ArrayList<>());
+        }
+    }
+
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java
index 34476ec..42247d2 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java
@@ -28,6 +28,7 @@
 import org.ovirt.engine.api.model.VM;
 import org.ovirt.engine.api.model.VmPlacementPolicy;
 import org.ovirt.engine.api.restapi.types.DiskMapper;
+import org.ovirt.engine.api.restapi.util.VmHelper;
 import org.ovirt.engine.api.restapi.utils.OsTypeMockUtils;
 import org.ovirt.engine.core.common.action.AddVmFromScratchParameters;
 import org.ovirt.engine.core.common.action.AddVmFromSnapshotParameters;
@@ -63,6 +64,8 @@
     private static final String PAYLOAD_COMTENT = "payload";
     public static final String CERTIFICATE = "O=Redhat,CN=X.Y.Z.Q";
 
+    protected VmHelper vmHelper = VmHelper.getInstance();
+
     public BackendVmsResourceTest() {
         super(new BackendVmsResource(), SearchType.VM, "VMs : ");
     }
@@ -71,6 +74,7 @@
     public void init() {
         super.init();
         OsTypeMockUtils.mockOsTypes();
+        initBackendResource(vmHelper);
     }
 
     @Test
@@ -228,6 +232,7 @@
         setUpGetPayloadExpectations(1, 0);
         setUpGetBallooningExpectations(1, 0);
         setUpGetConsoleExpectations(new int[]{0});
+        setUpGetVirtioScsiExpectations(new int[]{0});
         setUpGetCertuficateExpectations(1, 0);
         setUpEntityQueryExpectations(VdcQueryType.GetVdsGroupByVdsGroupId,
                 IdQueryParameters.class,
@@ -275,6 +280,7 @@
         setUpHttpHeaderExpectations("Expect", "201-created");
         setUpGetPayloadExpectations(2, 0);
         setUpGetConsoleExpectations(new int[]{0, 0});
+        setUpGetVirtioScsiExpectations(new int[]{0, 0});
         setUpGetBallooningExpectations(2, 0);
         setUpGetCertuficateExpectations(2, 0);
         setUpEntityQueryExpectations(VdcQueryType.GetVmByVmId,
@@ -330,6 +336,7 @@
         setUpGetPayloadExpectations(2, 0);
         setUpGetBallooningExpectations(2, 0);
         setUpGetConsoleExpectations(new int[]{0, 0});
+        setUpGetVirtioScsiExpectations(new int[]{0, 0});
         setUpGetCertuficateExpectations(2, 0);
         setUpEntityQueryExpectations(VdcQueryType.GetVmByVmId,
                                      IdQueryParameters.class,
@@ -380,6 +387,7 @@
         setUpGetPayloadExpectations(2, 0);
         setUpGetBallooningExpectations(2, 0);
         setUpGetConsoleExpectations(new int[]{0, 0});
+        setUpGetVirtioScsiExpectations(new int[]{0, 0});
         setUpGetCertuficateExpectations(2, 0);
         setUpHttpHeaderExpectations("Expect", "201-created");
         setUpGetEntityExpectations("Cluster: name=" + NAMES[1],
@@ -477,6 +485,7 @@
         setUpGetPayloadExpectations(1, 2);
         setUpGetBallooningExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpGetCertuficateExpectations(1, 2);
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
@@ -524,6 +533,7 @@
         setUpGetBallooningExpectations(1, 2);
         setUpGetCertuficateExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{0, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpEntityQueryExpectations(VdcQueryType.GetVmConfigurationBySnapshot,
                 IdQueryParameters.class,
                 new String[] { "Id" },
@@ -557,6 +567,7 @@
         setUpGetPayloadExpectations(1, 2);
         setUpGetBallooningExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpGetCertuficateExpectations(1, 2);
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
@@ -594,6 +605,7 @@
         setUpGetBallooningExpectations(1, 2);
         setUpGetCertuficateExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1,2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
                                      new String[] { "Id" },
@@ -629,6 +641,7 @@
         setUpGetBallooningExpectations(1, 2);
         setUpGetCertuficateExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         VM model = createModel(null);
         org.ovirt.engine.core.common.businessentities.VM returnedVM = 
getEntity(2);
         model.setInitialization(new Initialization());
@@ -665,6 +678,7 @@
         setUpGetBallooningExpectations(1, 2);
         setUpGetCertuficateExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         VM model = createModel(null);
         org.ovirt.engine.core.common.businessentities.VM returnedVM = 
getEntity(2);
         model.setInitialization(new Initialization());
@@ -758,6 +772,7 @@
         setUpGetPayloadExpectations(1, 2);
         setUpGetBallooningExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpGetCertuficateExpectations(1, 2);
         setUpGetEntityExpectations("Hosts: name=" + NAMES[1],
                 SearchType.VDS,
@@ -808,6 +823,7 @@
         setUpGetPayloadExpectations(1, 2);
         setUpGetBallooningExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpGetCertuficateExpectations(1, 2);
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
@@ -847,6 +863,7 @@
         setUpGetPayloadExpectations(1, 2);
         setUpGetBallooningExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpGetCertuficateExpectations(1, 2);
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
@@ -907,6 +924,7 @@
         setUpGetBallooningExpectations(1, 2);
         setUpGetCertuficateExpectations(1, 2);
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
                                      new String[] { "Id" },
@@ -957,6 +975,7 @@
         setUpGetCertuficateExpectations(1, 2);
 
         setUpGetConsoleExpectations(new int[]{1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{2});
         setUpEntityQueryExpectations(VdcQueryType.GetVmTemplate,
                                      GetVmTemplateParameters.class,
                                      new String[]{"Id"},
@@ -1026,6 +1045,7 @@
             setUpGetPayloadExpectations(3);
             setUpGetBallooningExpectations(3);
             setUpGetConsoleExpectations(new int[]{0, 1, 2});
+            setUpGetVirtioScsiExpectations(new int[]{0, 1, 2});
             setUpGetCertuficateExpectations(3);
         }
 
@@ -1043,6 +1063,7 @@
         setUpGetPayloadExpectations(3);
         setUpGetBallooningExpectations(3);
         setUpGetConsoleExpectations(new int[]{0, 1, 2});
+        setUpGetVirtioScsiExpectations(new int[]{0, 1, 2});
         setUpGetCertuficateExpectations(3);
         setUpQueryExpectations("");
         collection.setUriInfo(uriInfo);
@@ -1376,4 +1397,15 @@
                     true);
         }
     }
+
+    private void setUpGetVirtioScsiExpectations(int ... idxs) throws Exception 
{
+        for (int i = 0; i < idxs.length; i++) {
+            setUpGetEntityExpectations(VdcQueryType.GetVirtioScsiControllers,
+                    IdQueryParameters.class,
+                    new String[] { "Id" },
+                    new Object[] { GUIDS[idxs[i]] },
+                    new ArrayList<>());
+        }
+    }
+
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I481025152b20579ac615d9023ed0cef9b64558e1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.3
Gerrit-Owner: Daniel Erez <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to