Yevgeny Zaspitsky has uploaded a new change for review.

Change subject: restapi: provide management network link upon cluster retrieval
......................................................................

restapi: provide management network link upon cluster retrieval

Provide management network link upon cluster retrieval

Change-Id: Iad3403dc1ece3d2973054f29f4c7dd2049d39878
Bug-Url: https://bugzilla.redhat.com/1200687
Signed-off-by: Yevgeny Zaspitsky <[email protected]>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClustersResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClustersResourceTest.java
7 files changed, 177 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/38627/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
index 4ad4677..b992b6d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java
@@ -1,8 +1,6 @@
 package org.ovirt.engine.api.restapi.resource;
 
 
-import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResource.SUB_COLLECTIONS;
-
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.api.resource.AffinityGroupsResource;
 import org.ovirt.engine.api.resource.AssignedCpuProfilesResource;
@@ -23,11 +21,16 @@
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 
-public class BackendClusterResource extends 
AbstractBackendSubResource<Cluster, VDSGroup> implements
-        ClusterResource {
+import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResource.SUB_COLLECTIONS;
 
-    public BackendClusterResource(String id) {
+public class BackendClusterResource<P extends BackendClustersResource>
+        extends AbstractBackendSubResource<Cluster, VDSGroup> implements 
ClusterResource {
+
+    protected final P parent;
+
+    public BackendClusterResource(String id, P parent) {
         super(id, Cluster.class, VDSGroup.class, SUB_COLLECTIONS);
+        this.parent = parent;
     }
 
     @Override
@@ -71,8 +74,8 @@
     }
 
     @Override
-    protected Cluster doPopulate(Cluster model, VDSGroup entity) {
-        return model;
+    protected Cluster doPopulate(Cluster cluster, VDSGroup entity) {
+        return parent.doPopulate(cluster, entity);
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
index 6629aea..43b6932 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
@@ -70,7 +70,7 @@
     @Override
     @SingleEntityResource
     public ClusterResource getClusterSubResource(String id) {
-        return inject(new BackendClusterResource(id));
+        return inject(new BackendClusterResource(id, this));
     }
 
     @Override
@@ -131,7 +131,7 @@
     protected Clusters mapCollection(List<VDSGroup> entities) {
         Clusters collection = new Clusters();
         for (org.ovirt.engine.core.common.businessentities.VDSGroup entity : 
entities) {
-            collection.getClusters().add(addLinks(map(entity)));
+            collection.getClusters().add(addLinks(populate(map(entity), 
entity)));
         }
         return collection;
     }
@@ -153,7 +153,21 @@
     }
 
     @Override
-    protected Cluster doPopulate(Cluster model, VDSGroup entity) {
-        return model;
+    protected Cluster doPopulate(Cluster cluster, VDSGroup entity) {
+        final Guid clusterId = entity.getId();
+        final org.ovirt.engine.core.common.businessentities.network.Network 
network =
+                
getOptionalEntity(org.ovirt.engine.core.common.businessentities.network.Network.class,
+                        VdcQueryType.GetManagementNetwork,
+                        new IdQueryParameters(clusterId),
+                        clusterId.toString(),
+                        false);
+        if (network != null) {
+            final Network managementNetwork = new 
org.ovirt.engine.api.model.Network();
+            managementNetwork.setCluster(cluster);
+            managementNetwork.setId(network.getId().toString());
+            cluster.setManagementNetwork(managementNetwork);
+        }
+
+        return cluster;
     }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java
index 900434f..781cff4 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java
@@ -6,12 +6,10 @@
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 
-public class BackendDataCenterClusterResource extends BackendClusterResource {
+public class BackendDataCenterClusterResource extends 
BackendClusterResource<BackendDataCenterClustersResource> {
 
-    private BackendDataCenterClustersResource parent;
     public BackendDataCenterClusterResource(BackendDataCenterClustersResource 
parent, String id) {
-        super(id);
-        this.parent = parent;
+        super(id, parent);
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterResourceTest.java
index 88009dd..264e6f5 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterResourceTest.java
@@ -1,30 +1,45 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.getModel;
-import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.setUpEntityExpectations;
+import java.util.Collections;
 
 import javax.ws.rs.WebApplicationException;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdsGroupOperationParameters;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+import static org.easymock.EasyMock.expect;
+import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.getModel;
+import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.setUpEntityExpectations;
 
 public class BackendClusterResourceTest
-        extends AbstractBackendSubResourceTest<Cluster, VDSGroup, 
BackendClusterResource> {
+        extends AbstractBackendSubResourceTest<Cluster, VDSGroup, 
BackendClusterResource<BackendClustersResource>> {
+
+    private static final Guid MANAGEMENT_NETWORK_ID = Guid.newGuid();
+
+    private boolean isPopulateSet = false;
 
     public BackendClusterResourceTest() {
-        super(new BackendClusterResource(GUIDS[0].toString()));
+        super(new BackendClusterResource(GUIDS[0].toString(), new 
BackendClustersResource()));
+    }
+
+    @Before
+    public void initParent() {
+        initResource(resource.parent);
     }
 
     @Test
     public void testBadGuid() throws Exception {
         control.replay();
         try {
-            new BackendClusterResource("foo");
+            new BackendClusterResource("foo", new BackendClustersResource());
             fail("expected WebApplicationException");
         } catch (WebApplicationException wae) {
             verifyNotFoundException(wae);
@@ -48,9 +63,13 @@
     public void testGet() throws Exception {
         setUriInfo(setUpBasicUriExpectations());
         setUpGetEntityExpectations(1);
+        setUpManagementNetworkExpectation();
         control.replay();
 
-        verifyModel(resource.get(), 0);
+        final Cluster cluster = resource.get();
+        verifyModel(cluster, 0);
+
+        verifyManagementNetwork(cluster);
     }
 
     @Test
@@ -69,6 +88,7 @@
     @Test
     public void testUpdate() throws Exception {
         setUpGetEntityExpectations(2);
+        setUpManagementNetworkExpectation();
 
         setUriInfo(setUpActionExpectations(VdcActionType.UpdateVdsGroup,
                                            VdsGroupOperationParameters.class,
@@ -77,7 +97,21 @@
                                            true,
                                            true));
 
-        verifyModel(resource.update(getModel(0)), 0);
+        final Cluster updatedCluster = resource.update(getModel(0));
+
+        verifyModel(updatedCluster, 0);
+
+        verifyManagementNetwork(updatedCluster);
+    }
+
+    private void verifyManagementNetwork(Cluster updatedCluster) {
+        assertEquals(String.format("%s/%s/%s/%s/%s",
+                        BASE_PATH,
+                        "clusters",
+                        GUIDS[0],
+                        "networks",
+                        MANAGEMENT_NETWORK_ID),
+                updatedCluster.getManagementNetwork().getHref());
     }
 
     @Test
@@ -137,6 +171,26 @@
         }
     }
 
+    private void setUpManagementNetworkExpectation() throws Exception {
+        setUpPopulateExpectation();
+        final Network mockNetwork = control.createMock(Network.class);
+        expect(mockNetwork.getId()).andReturn(MANAGEMENT_NETWORK_ID);
+
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[0] },
+                mockNetwork);
+    }
+
+    private void setUpPopulateExpectation() {
+        if (!isPopulateSet) {
+            
expect(httpHeaders.getRequestHeader(BackendResource.POPULATE)).andReturn(Collections.singletonList("true"))
+                    .anyTimes();
+            isPopulateSet = true;
+        }
+    }
+
     @Override
     protected VDSGroup getEntity(int index) {
         return setUpEntityExpectations(control.createMock(VDSGroup.class), 
index);
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClustersResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClustersResourceTest.java
index 31fc494..691223d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClustersResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClustersResourceTest.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.api.restapi.resource;
 
 import java.util.List;
+
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 
@@ -102,6 +103,12 @@
                                    new Object[] { GUIDS[1] },
                                    setUpStoragePool(-1));
 
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                                   IdQueryParameters.class,
+                                   new String[] { "Id" },
+                                   new Object[] { GUIDS[0] },
+                                   null);
+
         setUpCreationExpectations(VdcActionType.AddVdsGroup,
                                   AddClusterOperationParameters.class,
                                   new String[] { 
"VdsGroup.CompatibilityVersion" },
@@ -132,6 +139,12 @@
                                    new String[] { "Id" },
                                    new Object[] { GUIDS[1] },
                                    setUpStoragePool(-1));
+
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                                   IdQueryParameters.class,
+                                   new String[] { "Id" },
+                                   new Object[] { GUIDS[0] },
+                                   null);
 
         setUpCreationExpectations(VdcActionType.AddVdsGroup,
                                   AddClusterOperationParameters.class,
@@ -203,6 +216,12 @@
                 new Object[] { NAMES[1] },
                 setUpStoragePool(1));
 
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[0] },
+                null);
+
         setUpCreationExpectations(VdcActionType.AddVdsGroup,
                                   AddClusterOperationParameters.class,
                                   new String[] {},
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResourceTest.java
index 8d84a0f..344420a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResourceTest.java
@@ -1,33 +1,45 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.getModel;
-import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.setUpEntityExpectations;
-
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.UriInfo;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdsGroupOperationParameters;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 
-public class BackendDataCenterClusterResourceTest
-        extends AbstractBackendSubResourceTest<Cluster, VDSGroup, 
BackendClusterResource> {
+import static org.easymock.EasyMock.expect;
+import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.getModel;
+import static 
org.ovirt.engine.api.restapi.resource.BackendClustersResourceTest.setUpEntityExpectations;
 
-    static Guid clusterId = GUIDS[0];
-    static Guid dataCenterId = GUIDS[1];
+public class BackendDataCenterClusterResourceTest
+        extends AbstractBackendSubResourceTest<Cluster, VDSGroup, 
BackendClusterResource<BackendDataCenterClustersResource>> {
+
+    private static final Guid MANAGEMENT_NETWORK_ID = Guid.newGuid();
+    private static final Guid clusterId = GUIDS[0];
+    private static final Guid dataCenterId = GUIDS[1];
+
+    private boolean isPopulateSet = false;
 
     public BackendDataCenterClusterResourceTest() {
         super(new BackendDataCenterClusterResource(
                 new BackendDataCenterClustersResource(dataCenterId.toString()),
                 clusterId.toString()));
+    }
+
+    @Before
+    public void initParent() {
+        initResource(resource.parent);
     }
 
     @Override
@@ -103,6 +115,7 @@
     @Test
     public void testUpdate() throws Exception {
         setUpGetEntityExpectations(2);
+        setUpManagementNetworkExpectation();
 
         setUriInfo(setUpActionExpectations(VdcActionType.UpdateVdsGroup,
                                            VdsGroupOperationParameters.class,
@@ -111,7 +124,41 @@
                                            true,
                                            true));
 
-        verifyModel(resource.update(getModel(0)), 0);
+        final Cluster updatedCluster = resource.update(getModel(0));
+
+        verifyModel(updatedCluster, 0);
+
+        verifyManagementNetwork(updatedCluster);
+    }
+
+    private void verifyManagementNetwork(Cluster updatedCluster) {
+        assertEquals(String.format("%s/%s/%s/%s/%s",
+                        BASE_PATH,
+                        "clusters",
+                        GUIDS[0],
+                        "networks",
+                        MANAGEMENT_NETWORK_ID),
+                updatedCluster.getManagementNetwork().getHref());
+    }
+
+    private void setUpManagementNetworkExpectation() throws Exception {
+        setUpPopulateExpectation();
+        final Network mockNetwork = control.createMock(Network.class);
+        expect(mockNetwork.getId()).andReturn(MANAGEMENT_NETWORK_ID);
+
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[0] },
+                mockNetwork);
+    }
+
+    private void setUpPopulateExpectation() {
+        if (!isPopulateSet) {
+            
expect(httpHeaders.getRequestHeader(BackendResource.POPULATE)).andReturn(Collections.singletonList("true"))
+                    .anyTimes();
+            isPopulateSet = true;
+        }
     }
 
     @Test
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClustersResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClustersResourceTest.java
index 8f2757b..0dd1827 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClustersResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClustersResourceTest.java
@@ -112,6 +112,12 @@
                                    new Object[] { GUIDS[1] },
                                    setUpStoragePool(-1));
 
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                                   IdQueryParameters.class,
+                                   new String[] { "Id" },
+                                   new Object[] { GUIDS[0] },
+                                   null);
+
         setUpCreationExpectations(VdcActionType.AddVdsGroup,
                                   AddClusterOperationParameters.class,
                                   new String[] { 
"VdsGroup.CompatibilityVersion" },
@@ -143,6 +149,12 @@
                                    new Object[] { GUIDS[1] },
                                    setUpStoragePool(-1));
 
+        setUpGetEntityExpectations(VdcQueryType.GetManagementNetwork,
+                IdQueryParameters.class,
+                new String[] { "Id" },
+                new Object[] { GUIDS[0] },
+                null);
+
         setUpCreationExpectations(VdcActionType.AddVdsGroup,
                                   AddClusterOperationParameters.class,
                                   new String[] { 
"VdsGroup.CompatibilityVersion" },


-- 
To view, visit https://gerrit.ovirt.org/38627
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to