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
