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