Libor Spevak has uploaded a new change for review.

Change subject: restapi: Throw exception if setting lower VM pool size
......................................................................

restapi: Throw exception if setting lower VM pool size

Report, if the user tries to lower the number
of VMs in the VM pool.

Change-Id: Ibe4ad50e6962159df5891be4653bc05eb3dfd237
Bug-Url: https://bugzilla.redhat.com/950049
Signed-off-by: Libor Spevak <lspe...@redhat.com>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
1 file changed, 20 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/13978/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
index a419301..d436d29 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
@@ -5,10 +5,12 @@
 
 import java.util.List;
 
+import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 
 import org.ovirt.engine.api.common.util.LinkHelper;
 import org.ovirt.engine.api.model.Action;
+import org.ovirt.engine.api.model.Fault;
 import org.ovirt.engine.api.model.VmPool;
 import org.ovirt.engine.api.resource.ActionResource;
 import org.ovirt.engine.api.resource.AssignedPermissionsResource;
@@ -100,19 +102,28 @@
         @Override
         public VdcActionParametersBase getParameters(VmPool incoming,
                 org.ovirt.engine.core.common.businessentities.VmPool current) {
-            int currentVmCount = current.getAssignedVmsCount();
-            org.ovirt.engine.core.common.businessentities.VmPool entity = 
map(incoming, current);
+            final int currentVmCount = current.getAssignedVmsCount();
 
-            VM vm = mapToVM(map(entity));
+            int size = 0;
+            if (incoming.isSetSize()) {
+                if (incoming.getSize() < currentVmCount) {
+                    final Fault f = new Fault();
+                    final String faultString = "Requested VM pool size cannot 
be lower than the current capacity";
+                    f.setReason(faultString);
+                    final Response response = 
Response.status(Response.Status.BAD_REQUEST).entity(f).build();
+                    throw new WebApplicationException(response);
+                } else {
+                    size = incoming.getSize() - currentVmCount;
+                }
+            }
 
-            int size = incoming.isSetSize() && incoming.getSize() > 
currentVmCount
-                       ? incoming.getSize() - currentVmCount
-                       : 0;
+            final org.ovirt.engine.core.common.businessentities.VmPool entity 
= map(incoming, current);
+            final VM vm = mapToVM(map(entity));
 
             if (incoming.isSetTemplate()) {
                 vm.setVmtGuid(new Guid(incoming.getTemplate().getId()));
             } else {
-                VM existing = currentVmCount > 0
+                final VM existing = currentVmCount > 0
                               ? getEntity(VM.class, SearchType.VM, "Vms: 
pool=" + incoming.getName())
                               : null;
                 if (existing != null) {
@@ -121,14 +132,14 @@
             }
 
             if (vm.getVmtGuid() != null) {
-                VmTemplate template = getEntity(VmTemplate.class,
+                final VmTemplate template = getEntity(VmTemplate.class,
                                                 VdcQueryType.GetVmTemplate,
                                                 new 
GetVmTemplateParameters(vm.getId()),
                                                 vm.getId().toString());
                 vm.getStaticData().setMemSizeMb(template.getMemSizeMb());
             }
 
-            AddVmPoolWithVmsParameters parameters = new 
AddVmPoolWithVmsParameters(entity, vm, size, -1);
+            final AddVmPoolWithVmsParameters parameters = new 
AddVmPoolWithVmsParameters(entity, vm, size, -1);
             parameters.setStorageDomainId(getStorageDomainId(vm.getVmtGuid()));
             return parameters;
         }


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

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

Reply via email to