Michael Pasternak has uploaded a new change for review.

Change subject: restapi: Create ISCSI LUN Disk: Connection details should be 
mandatory #864840
......................................................................

restapi: Create ISCSI LUN Disk: Connection details should be mandatory #864840

extra validation according to [1]

[1] https://bugzilla.redhat.com/show_bug.cgi?id=864840#c7

Change-Id: Icfd508f225a1386f6a588c9d58cc1df286a82cbb
Signed-off-by: Michael Pasternak <mpast...@redhat.com>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDisksResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResource.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResourceTest.java
3 files changed, 53 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/97/8997/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDisksResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDisksResource.java
index f884b23..612bb6d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDisksResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDisksResource.java
@@ -10,6 +10,8 @@
 import org.ovirt.engine.api.model.StorageType;
 import org.ovirt.engine.api.resource.DiskResource;
 import org.ovirt.engine.api.resource.DisksResource;
+import org.ovirt.engine.api.restapi.logging.Messages;
+import 
org.ovirt.engine.api.restapi.resource.BaseBackendResource.WebFaultException;
 import org.ovirt.engine.api.restapi.resource.utils.DiskResourceUtils;
 import org.ovirt.engine.core.common.action.AddDiskParameters;
 import org.ovirt.engine.core.common.action.RemoveDiskParameters;
@@ -48,15 +50,21 @@
     }
 
     protected void validateDiskForCreation(Disk disk) {
-        validateParameters(disk, "format", "interface");
+        validateParameters(disk, 3, "format", "interface");
         if (DiskResourceUtils.isLunDisk(disk)) {
-            validateParameters(disk.getLunStorage(), "type"); // when creating 
a LUN disk, user must specify type.
+            validateParameters(disk.getLunStorage(), 3, "type"); // when 
creating a LUN disk, user must specify type.
             StorageType storageType = 
StorageType.fromValue(disk.getLunStorage().getType());
-            if (storageType!=null && storageType==StorageType.ISCSI) {
-                    
validateParameters(disk.getLunStorage().getLogicalUnits().get(0), "address", 
"target", "port");
+            if (storageType != null && storageType == StorageType.ISCSI) {
+                
validateParameters(disk.getLunStorage().getLogicalUnits().get(0), 3, "address", 
"target", "port", "id");
             }
+        } else if (disk.isSetLunStorage() && 
disk.getLunStorage().getLogicalUnits().isEmpty()) {
+            // TODO: Implement nested entity existence validation infra for 
validateParameters()
+            throw new WebFaultException(null,
+                                        
localize(Messages.INCOMPLETE_PARAMS_REASON),
+                                        
localize(Messages.INCOMPLETE_PARAMS_DETAIL_TEMPLATE, "LogicalUnit", "", "add"),
+                                        Response.Status.BAD_REQUEST);
         } else {
-            validateParameters(disk, "provisionedSize|size"); // Non lun disks 
require size
+            validateParameters(disk, 3, "provisionedSize|size"); // Non lun 
disks require size
         }
         validateEnums(Disk.class, disk);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResource.java
index 5412280..650a93c 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResource.java
@@ -27,7 +27,9 @@
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.api.restapi.logging.Messages;
 import 
org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource.ParametersProvider;
+import 
org.ovirt.engine.api.restapi.resource.BaseBackendResource.WebFaultException;
 import org.ovirt.engine.api.restapi.resource.utils.DiskResourceUtils;
 
 public class BackendVmDisksResource
@@ -184,15 +186,21 @@
     }
 
     protected void validateDiskForCreation(Disk disk) {
-        validateParameters(disk, "format", "interface");
+        validateParameters(disk, 3, "format", "interface");
         if (DiskResourceUtils.isLunDisk(disk)) {
-            validateParameters(disk.getLunStorage(), "type"); // when creating 
a LUN disk, user must specify type.
+            validateParameters(disk.getLunStorage(), 3, "type"); // when 
creating a LUN disk, user must specify type.
             StorageType storageType = 
StorageType.fromValue(disk.getLunStorage().getType());
             if (storageType != null && storageType == StorageType.ISCSI) {
-                
validateParameters(disk.getLunStorage().getLogicalUnits().get(0), "address", 
"target", "port");
+                
validateParameters(disk.getLunStorage().getLogicalUnits().get(0), 3, "address", 
"target", "port", "id");
             }
+        } else if (disk.isSetLunStorage() && 
disk.getLunStorage().getLogicalUnits().isEmpty()) {
+            // TODO: Implement nested entity existence validation infra for 
validateParameters()
+            throw new WebFaultException(null,
+                                        
localize(Messages.INCOMPLETE_PARAMS_REASON),
+                                        
localize(Messages.INCOMPLETE_PARAMS_DETAIL_TEMPLATE, "LogicalUnit", "", "add"),
+                                        Response.Status.BAD_REQUEST);
         } else {
-            validateParameters(disk, "provisionedSize|size"); // Non lun disks 
require size
+            validateParameters(disk, 3, "provisionedSize|size"); // Non lun 
disks require size
         }
         validateEnums(Disk.class, disk);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResourceTest.java
index 0107981..4b27754 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmDisksResourceTest.java
@@ -343,7 +343,8 @@
             collection.add(model);
             fail("expected WebApplicationException on incomplete parameters");
         } catch (WebApplicationException wae) {
-            verifyIncompleteException(wae, "Disk", "validateDiskForCreation", 
"format", "interface");
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "Disk", 
"testAddIncompleteParameters", "format", "interface");
         }
     }
 
@@ -356,7 +357,8 @@
             collection.add(model);
             fail("expected WebApplicationException on incomplete parameters");
         } catch (WebApplicationException wae) {
-            verifyIncompleteException(wae, "Disk", "validateDiskForCreation", 
"provisionedSize|size");
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "Disk", 
"testAddIncompleteParameters_2", "provisionedSize|size");
         }
     }
 
@@ -370,7 +372,23 @@
             collection.add(model);
             fail("expected WebApplicationException on incomplete parameters");
         } catch (WebApplicationException wae) {
-            verifyIncompleteException(wae, "Storage", 
"validateDiskForCreation", "type");
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "Storage", 
"testAddLunDisk_MissingType", "type");
+        }
+    }
+
+    @Test
+    public void testAddLunDisk_MissingId() {
+        Disk model = createIscsiLunDisk();
+        model.getLunStorage().getLogicalUnits().get(0).setId(null);
+        setUriInfo(setUpBasicUriExpectations());
+        control.replay();
+        try {
+            collection.add(model);
+            fail("expected WebApplicationException on incomplete parameters");
+        } catch (WebApplicationException wae) {
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "LogicalUnit", 
"testAddLunDisk_MissingId", "id");
         }
     }
 
@@ -384,7 +402,8 @@
             collection.add(model);
             fail("expected WebApplicationException on incomplete parameters");
         } catch (WebApplicationException wae) {
-            verifyIncompleteException(wae, "LogicalUnit", 
"validateDiskForCreation", "address");
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "LogicalUnit", 
"testAddIscsiLunDisk_IncompleteParameters_ConnectionAddress", "address");
         }
     }
 
@@ -398,7 +417,8 @@
             collection.add(model);
             fail("expected WebApplicationException on incomplete parameters");
         } catch (WebApplicationException wae) {
-            verifyIncompleteException(wae, "LogicalUnit", 
"validateDiskForCreation", "target");
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "LogicalUnit", 
"testAddIscsiLunDisk_IncompleteParameters_ConnectionTarget", "target");
         }
     }
 
@@ -412,7 +432,8 @@
             collection.add(model);
             fail("expected WebApplicationException on incomplete parameters");
         } catch (WebApplicationException wae) {
-            verifyIncompleteException(wae, "LogicalUnit", 
"validateDiskForCreation", "port");
+            // Because of extra frame offset used current method name in test, 
while in real world used "add" method name
+            verifyIncompleteException(wae, "LogicalUnit", 
"testAddIscsiLunDisk_IncompleteParameters_ConnectionPort", "port");
         }
     }
 
@@ -421,6 +442,7 @@
         model.setLunStorage(new Storage());
         model.getLunStorage().setType("iscsi");
         model.getLunStorage().getLogicalUnits().add(new LogicalUnit());
+        
model.getLunStorage().getLogicalUnits().get(0).setId(GUIDS[0].toString());
         
model.getLunStorage().getLogicalUnits().get(0).setAddress(ISCSI_SERVER_ADDRESS);
         
model.getLunStorage().getLogicalUnits().get(0).setTarget(ISCSI_SERVER_TARGET);
         
model.getLunStorage().getLogicalUnits().get(0).setPort(ISCSI_SERVER_CONNECTION_PORT);


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icfd508f225a1386f6a588c9d58cc1df286a82cbb
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Michael Pasternak <mpast...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to