Moti Asayag has uploaded a new change for review.

Change subject: restapi: Attach network to cluster by ID
......................................................................

restapi: Attach network to cluster by ID

The patch resolves the network which is a candidate
to be attached to a cluster or to be updated within
a cluster by queries all of the networks on DC level
instead for all the networks which are currently
attached to the cluster.

Change-Id: I2293cccf3d88aea384bd61ae75d3c8d5f41408a9
Bug-Url: https://bugzilla.redhat.com/961046
Signed-off-by: Moti Asayag <[email protected]>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java
2 files changed, 73 insertions(+), 32 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/21/14721/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java
index 99c4411..066def5 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResource.java
@@ -21,15 +21,15 @@
 import org.ovirt.engine.core.compat.NGuid;
 
 public class BackendClusterNetworksResource
-    extends AbstractBackendNetworksResource
-    implements AssignedNetworksResource {
+        extends AbstractBackendNetworksResource
+        implements AssignedNetworksResource {
 
     private String clusterId;
 
     public BackendClusterNetworksResource(String clusterId) {
         super(VdcQueryType.GetAllNetworksByClusterId,
-              VdcActionType.AttachNetworkToVdsGroup,
-              VdcActionType.DetachNetworkToVdsGroup);
+                VdcActionType.AttachNetworkToVdsGroup,
+                VdcActionType.DetachNetworkToVdsGroup);
         this.clusterId = clusterId;
     }
 
@@ -39,7 +39,8 @@
 
         String networkName = null;
         if (network.isSetId()) {
-            org.ovirt.engine.core.common.businessentities.network.Network net 
= lookupNetwork(asGuid(network.getId()));
+            org.ovirt.engine.core.common.businessentities.network.Network net =
+                    getNetworkById(network.getId(), clusterId);
             if (net == null) {
                 notFound(Network.class);
             } else {
@@ -49,9 +50,12 @@
 
         String networkId = null;
         if (network.isSetName()) {
-            networkId = getNetworkId(network.getName(), clusterId);
-            if (networkId == null) {
+            org.ovirt.engine.core.common.businessentities.network.Network net =
+                    getNetworkByName(network.getName(), clusterId);
+            if (net == null) {
                 notFound(Network.class);
+            } else {
+                networkId = net.getId().toString();
             }
         }
 
@@ -63,8 +67,27 @@
 
         org.ovirt.engine.core.common.businessentities.network.Network entity = 
map(network);
         return performCreate(addAction,
-                               getActionParameters(network, entity),
-                               new 
NetworkIdResolver(StringUtils.defaultIfEmpty(network.getName(),networkName)));
+                getActionParameters(network, entity),
+                new 
NetworkIdResolver(StringUtils.defaultIfEmpty(network.getName(), networkName)));
+    }
+
+    private org.ovirt.engine.core.common.businessentities.network.Network 
getNetworkById(String networkId, String clusterId) {
+        for (org.ovirt.engine.core.common.businessentities.network.Network 
network : getNetworks(clusterId)) {
+            if (network.getId().toString().equals(networkId)) {
+                return network;
+            }
+        }
+        return null;
+    }
+
+    private org.ovirt.engine.core.common.businessentities.network.Network 
getNetworkByName(String networkName,
+            String clusterId) {
+        for (org.ovirt.engine.core.common.businessentities.network.Network 
network : getNetworks(clusterId)) {
+            if (network.getName().equals(networkName)) {
+                return network;
+            }
+        }
+        return null;
     }
 
     @Override
@@ -73,7 +96,8 @@
     }
 
     @Override
-    protected VdcActionParametersBase getActionParameters(Network network, 
org.ovirt.engine.core.common.businessentities.network.Network entity) {
+    protected VdcActionParametersBase getActionParameters(Network network,
+            org.ovirt.engine.core.common.businessentities.network.Network 
entity) {
         return new AttachNetworkToVdsGroupParameter(getVDSGroup(), entity);
     }
 
@@ -90,9 +114,9 @@
 
     protected VDSGroup getVDSGroup() {
         return getEntity(VDSGroup.class,
-                         VdcQueryType.GetVdsGroupByVdsGroupId,
-                         new 
GetVdsGroupByVdsGroupIdParameters(asGuid(clusterId)),
-                         clusterId);
+                VdcQueryType.GetVdsGroupByVdsGroupId,
+                new GetVdsGroupByVdsGroupIdParameters(asGuid(clusterId)),
+                clusterId);
     }
 
     @Override
@@ -101,17 +125,15 @@
         return inject(new BackendClusterNetworkResource(id, this));
     }
 
-    private String getNetworkId(String networkName, String clusterId) {
-            NGuid dataCenterId = getEntity(VDSGroup.class, 
VdcQueryType.GetVdsGroupById, new GetVdsGroupByIdParameters(asGuid(clusterId)), 
null).getStoragePoolId();
-            IdQueryParameters params = new 
IdQueryParameters(asGuid(dataCenterId));
-            
List<org.ovirt.engine.core.common.businessentities.network.Network> networks = 
getBackendCollection(VdcQueryType.GetAllNetworks, params);
-            for (org.ovirt.engine.core.common.businessentities.network.Network 
nw: networks) {
-                if (nw.getName().equals(networkName)) {
-                    return nw.getId().toString();
-                }
-            }
-            return null;
-        }
+    private 
List<org.ovirt.engine.core.common.businessentities.network.Network> 
getNetworks(String clusterId) {
+        NGuid dataCenterId =
+                getEntity(VDSGroup.class,
+                        VdcQueryType.GetVdsGroupById,
+                        new GetVdsGroupByIdParameters(asGuid(clusterId)),
+                        null).getStoragePoolId();
+        IdQueryParameters params = new IdQueryParameters(asGuid(dataCenterId));
+        return getBackendCollection(VdcQueryType.GetAllNetworks, params);
+    }
 
     @Override
     protected Network doPopulate(Network model, 
org.ovirt.engine.core.common.businessentities.network.Network entity) {
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java
index f84c8b0..61e0754 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworksResourceTest.java
@@ -92,9 +92,9 @@
         setUpVDSGroupExpectations(CLUSTER_ID);
 
         setUriInfo(setUpBasicUriExpectations());
-        setUpEntityQueryExpectations(2, null);
-        setUpGetClusterExpectations();
-        setUpGetNetworksByDataCenterExpectations(1, null);
+        setUpEntityQueryExpectations(1, null);
+        setUpGetClusterExpectations(2, null);
+        setUpGetNetworksByDataCenterExpectations(2, null);
         setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
                 AttachNetworkToVdsGroupParameter.class,
                 new String[] { "VdsGroupId" },
@@ -122,9 +122,8 @@
         setUpVDSGroupExpectations(CLUSTER_ID);
 
         setUriInfo(setUpBasicUriExpectations());
-        setUpGetClusterExpectations();
-        setUpEntityQueryExpectations(1, null);
-        setUpGetNetworksByDataCenterExpectations(1, null);
+        setUpGetClusterExpectations(2, null);
+        setUpGetNetworksByDataCenterExpectations(2, null);
         setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
                 AttachNetworkToVdsGroupParameter.class,
                 new String[] { "VdsGroupId" },
@@ -148,7 +147,25 @@
         model.setName("orcus");
         model.setDescription(DESCRIPTIONS[0]);
         setUpEntityQueryExpectations(1, null);
-        setUpGetClusterExpectations();
+        setUpGetClusterExpectations(1, null);
+        setUpGetNetworksByDataCenterExpectations(1, null);
+        setUpVDSGroupExpectations(CLUSTER_ID);
+        setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
+                AttachNetworkToVdsGroupParameter.class,
+                new String[] { "VdsGroupId" },
+                new Object[] { CLUSTER_ID },
+                true,
+                true);
+        collection.add(model);
+    }
+
+    @Test
+    public void testAddIdSuppliedButNoName() throws Exception {
+        setUriInfo(setUpBasicUriExpectations());
+        Network model = new Network();
+        model.setId("11111111-1111-1111-1111-111111111111");
+        setUpEntityQueryExpectations(1, null);
+        setUpGetClusterExpectations(1, null);
         setUpGetNetworksByDataCenterExpectations(1, null);
         setUpVDSGroupExpectations(CLUSTER_ID);
         setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
@@ -208,7 +225,8 @@
         }
     }
 
-    protected void setUpGetClusterExpectations() {
+    protected void setUpGetClusterExpectations(int times, Object failure) {
+        while (times-- > 0) {
             VDSGroup cluster = new VDSGroup();
             cluster.setStoragePoolId(GUIDS[2]);
             setUpEntityQueryExpectations(VdcQueryType.GetVdsGroupById,
@@ -218,6 +236,7 @@
                     cluster,
                     null);
         }
+    }
 
     protected void setUpQueryExpectations(String query) throws Exception {
         setUpEntityQueryExpectations(1);


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

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

Reply via email to