Moti Asayag has uploaded a new change for review.

Change subject: restapi: Attaching network to cluster failure
......................................................................

restapi: Attaching network to cluster failure

The server throws an internal server error when
add network command is executed with invalid network
name.

Based on commit 0888726b8e5c39cacaefd5af9242513507d86292
which was reverted.

Change-Id: Ia43074bc0819b19873e11ac0203cd518459e6644
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/AbstractBackendResource.java
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
3 files changed, 33 insertions(+), 23 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/14680/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
index 6644080..973e530 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendResource.java
@@ -377,6 +377,10 @@
         throw new WebApplicationException(Response.Status.NOT_FOUND);
     }
 
+    protected void badRequest(String message) {
+        throw new WebFaultException(null, message, 
Response.Status.BAD_REQUEST);
+    }
+
     protected abstract class EntityIdResolver<T> implements IResolver<T, Q> {
 
         public abstract Q lookupEntity(T id) throws BackendFailureException;
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 8eb94ef..11666e1 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
@@ -35,15 +35,22 @@
     @Override
     public Response add(Network network) {
         validateParameters(network, "name"); //right now, name is mandatory 
(future - id alone will be enough)
-        if (!network.isSetId()) {
-            network.setId(getNetworkId(network.getName(), clusterId));
+        String networkId = getNetworkId(network.getName(), clusterId);
+        if (networkId == null) {
+            notFound(Network.class);
         }
+
+        if (!network.isSetId()) {
+            network.setId(networkId);
+        } else if (!network.getId().equals(networkId)) {
+            badRequest("Network ID provided does not match the ID for network 
with name: " + network.getName());
+        }
+
         org.ovirt.engine.core.common.businessentities.network.Network entity = 
map(network);
         return performCreate(addAction,
                                getActionParameters(network, entity),
                                new NetworkIdResolver(network.getName()));
     }
-
 
     @Override
     protected VdcQueryParametersBase getQueryParameters() {
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 06d38a0..7c4c426 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,19 +92,15 @@
         VDSGroup vdsGroup = setUpVDSGroupExpectations(CLUSTER_ID);
 
         setUriInfo(setUpBasicUriExpectations());
-
-        setUpCreationExpectations(VdcActionType.AttachNetworkToVdsGroup,
-                                  AttachNetworkToVdsGroupParameter.class,
-                                  new String[] { "VdsGroupId" },
-                                  new Object[] { CLUSTER_ID },
-                                  true,
-                                  true,
-                                  null,
-                                  VdcQueryType.GetAllNetworksByClusterId,
-                                  IdQueryParameters.class,
-                                  new String[] { "Id" },
-                                  new Object[] { CLUSTER_ID },
-                                  asList(getEntity(0)));
+        setUpEntityQueryExpectations(1, null);
+        setUpGetClusterExpectations();
+        setUpGetNetworksByDataCenterExpectations(1, null);
+        setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
+                AttachNetworkToVdsGroupParameter.class,
+                new String[] { "VdsGroupId" },
+                new Object[] { CLUSTER_ID },
+                true,
+                true);
         Network model = getModel(0);
         Response response = collection.add(model);
         assertEquals(201, response.getStatus());
@@ -123,14 +119,17 @@
     }
 
     private void doTestBadAddNetwork(boolean canDo, boolean success, String 
detail) throws Exception {
-        setUpVDSGroupExpectations(CLUSTER_ID);
+        VDSGroup vdsGroup = setUpVDSGroupExpectations(CLUSTER_ID);
 
-        
setUriInfo(setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
-                                           
AttachNetworkToVdsGroupParameter.class,
-                                           new String[] { "VdsGroupId" },
-                                           new Object[] { CLUSTER_ID },
-                                           canDo,
-                                           success));
+        setUriInfo(setUpBasicUriExpectations());
+        setUpGetClusterExpectations();
+        setUpGetNetworksByDataCenterExpectations(1, null);
+        setUpActionExpectations(VdcActionType.AttachNetworkToVdsGroup,
+                AttachNetworkToVdsGroupParameter.class,
+                new String[] { "VdsGroupId" },
+                new Object[] { CLUSTER_ID },
+                canDo,
+                success);
         Network model = getModel(0);
 
         try {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia43074bc0819b19873e11ac0203cd518459e6644
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