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

Reply via email to