Daniel Erez has uploaded a new change for review. Change subject: restapi: data_center element under openstack_volume_provider ......................................................................
restapi: data_center element under openstack_volume_provider Populate data_center element on doPopulate of OpenstackVolumeProvider. I.e. when using "All-Content: true", data_center element should be populated and returned. Feature Page: http://www.ovirt.org/Features/Cinder_Integration Change-Id: Id253f9bc482b6dd499cfcce604c7b960d9d90b55 Bug-Url: https://bugzilla.redhat.com/1185826 Signed-off-by: Daniel Erez <de...@redhat.com> --- M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProvidersResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResourceTest.java 3 files changed, 96 insertions(+), 22 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/39327/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResource.java index 7bbe1bd..54309a9 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResource.java @@ -19,13 +19,27 @@ import org.ovirt.engine.api.model.OpenStackVolumeProvider; import org.ovirt.engine.api.resource.openstack.OpenStackVolumeProviderResource; import org.ovirt.engine.api.restapi.resource.AbstractBackendExternalProviderResource; +import org.ovirt.engine.core.common.businessentities.Provider; import static org.ovirt.engine.api.restapi.resource.openstack.BackendOpenStackVolumeProvidersResource.SUB_COLLECTIONS; public class BackendOpenStackVolumeProviderResource extends AbstractBackendExternalProviderResource<OpenStackVolumeProvider> implements OpenStackVolumeProviderResource { - public BackendOpenStackVolumeProviderResource(String id) { + + private BackendOpenStackVolumeProvidersResource parent; + + public BackendOpenStackVolumeProviderResource(String id, BackendOpenStackVolumeProvidersResource parent) { super(id, OpenStackVolumeProvider.class, SUB_COLLECTIONS); + this.parent = parent; + } + + @Override + protected OpenStackVolumeProvider doPopulate(OpenStackVolumeProvider model, Provider entity) { + return parent.doPopulate(model, entity); + } + + BackendOpenStackVolumeProvidersResource getParent() { + return parent; } } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProvidersResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProvidersResource.java index ecb0765..78c82f4 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProvidersResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProvidersResource.java @@ -31,6 +31,7 @@ import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.ProviderType; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.GetAllProvidersParameters; @@ -63,7 +64,8 @@ private OpenStackVolumeProviders mapCollection(List<Provider> entities) { OpenStackVolumeProviders collection = new OpenStackVolumeProviders(); for (Provider entity : entities) { - collection.getOpenStackVolumeProviders().add(addLinks(map(entity))); + OpenStackVolumeProvider provider = map(entity); + collection.getOpenStackVolumeProviders().add(addLinks(populate(provider, entity))); } return collection; } @@ -114,13 +116,17 @@ @Override protected OpenStackVolumeProvider doPopulate(OpenStackVolumeProvider model, Provider entity) { + StoragePool storagePool = getStoragePoolIdByStorageDomainName(entity.getName()); + if (storagePool != null) { + model.setDataCenter(DataCenterMapper.map(storagePool, null)); + } return model; } @Override @SingleEntityResource public OpenStackVolumeProviderResource getOpenStackVolumeProvider(@PathParam("id") String id) { - return inject(new BackendOpenStackVolumeProviderResource(id)); + return inject(new BackendOpenStackVolumeProviderResource(id, this)); } public StoragePool getStoragePool(DataCenter dataCenter) { @@ -138,4 +144,16 @@ } return pool; } + + private StoragePool getStoragePoolIdByStorageDomainName(String storageDomainName) { + StorageDomainStatic storageDomain = getEntity(StorageDomainStatic.class, VdcQueryType.GetStorageDomainByName, + new NameQueryParameters(storageDomainName), "StorageDomain: name=" + storageDomainName); + List<StoragePool> storagePools = getEntity(List.class, VdcQueryType.GetStoragePoolsByStorageDomainId, + new IdQueryParameters(storageDomain.getId()), "Datacenters"); + if (!storagePools.isEmpty()) { + return storagePools.get(0); + } + // The storage domain is unattached + return null; + } } diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResourceTest.java index 8abf0fd..e84abf4 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/openstack/BackendOpenStackVolumeProviderResourceTest.java @@ -22,24 +22,35 @@ import org.ovirt.engine.core.common.action.ProviderParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.NameQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import javax.ws.rs.WebApplicationException; + +import java.util.Collections; +import java.util.List; import static org.easymock.EasyMock.expect; public class BackendOpenStackVolumeProviderResourceTest extends AbstractBackendSubResourceTest<OpenStackVolumeProvider, Provider, BackendOpenStackVolumeProviderResource> { public BackendOpenStackVolumeProviderResourceTest() { - super(new BackendOpenStackVolumeProviderResource(GUIDS[0].toString())); + super(new BackendOpenStackVolumeProviderResource(GUIDS[0].toString(), new BackendOpenStackVolumeProvidersResource())); + } + + protected void init() { + super.init(); + initResource(resource.getParent()); } @Test public void testBadGuid() throws Exception { control.replay(); try { - new BackendOpenStackVolumeProviderResource("foo"); + new BackendOpenStackVolumeProviderResource("foo", resource.getParent()); fail("expected WebApplicationException"); } catch (WebApplicationException wae) { @@ -83,16 +94,17 @@ @Test public void testUpdate() throws Exception { - setUpGetEntityExpectations(2); + setUpGetEntityExpectations(2, false); + setUpGetEntityExpectationsOnDoPopulate(false); setUriInfo( - setUpActionExpectations( - VdcActionType.UpdateProvider, - ProviderParameters.class, - new String[] { "Provider.Id" }, - new Object[] { GUIDS[0] }, - true, - true - ) + setUpActionExpectations( + VdcActionType.UpdateProvider, + ProviderParameters.class, + new String[]{"Provider.Id"}, + new Object[]{GUIDS[0]}, + true, + true + ) ); verifyModel(resource.update(getModel(0)), 0); } @@ -110,14 +122,14 @@ private void doTestBadUpdate(boolean canDo, boolean success, String detail) throws Exception { setUpGetEntityExpectations(1); setUriInfo( - setUpActionExpectations( - VdcActionType.UpdateProvider, - ProviderParameters.class, - new String[] { "Provider.Id" }, - new Object[] { GUIDS[0] }, - canDo, - success - ) + setUpActionExpectations( + VdcActionType.UpdateProvider, + ProviderParameters.class, + new String[]{"Provider.Id"}, + new Object[]{GUIDS[0]}, + canDo, + success + ) ); try { resource.update(getModel(0)); @@ -161,6 +173,19 @@ return provider; } + public StorageDomainStatic getStorageDomainStatic() { + StorageDomainStatic storageDomainStatic = control.createMock(StorageDomainStatic.class); + expect(storageDomainStatic.getId()).andReturn(GUIDS[0]).anyTimes(); + expect(storageDomainStatic.getName()).andReturn(NAMES[0]).anyTimes(); + return storageDomainStatic; + } + + public List<StoragePool> getStoragePools() { + StoragePool storagePool = new StoragePool(); + storagePool.setId(GUIDS[1]); + return Collections.singletonList(storagePool); + } + protected void setUpGetEntityExpectations(int times) throws Exception { setUpGetEntityExpectations(times, false); } @@ -176,4 +201,21 @@ ); } } + + protected void setUpGetEntityExpectationsOnDoPopulate(boolean notFound) throws Exception { + setUpGetEntityExpectations( + VdcQueryType.GetStorageDomainByName, + NameQueryParameters.class, + new String[]{"Name"}, + new Object[]{NAMES[0]}, + notFound ? null : getStorageDomainStatic() + ); + setUpGetEntityExpectations( + VdcQueryType.GetStoragePoolsByStorageDomainId, + IdQueryParameters.class, + new String[]{"Id"}, + new Object[]{GUIDS[0]}, + notFound ? null : getStoragePools() + ); + } } -- To view, visit https://gerrit.ovirt.org/39327 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id253f9bc482b6dd499cfcce604c7b960d9d90b55 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches