Shahar Havivi has uploaded a new change for review. Change subject: temp ......................................................................
temp Change-Id: Ia5c1a0b08f913e415581a606caa3a1a98099d47b Signed-off-by: Shahar Havivi <shah...@redhat.com> --- M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/PermitValidator.java R packaging/dbscripts/upgrade/03_06_0580_insert_granular_vm_roles.sql 5 files changed, 80 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/19/35519/1 diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java index 8927e24..499ded5 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java @@ -22,6 +22,12 @@ CREATE_VM, DELETE_VM, EDIT_VM_PROPERTIES, + /** + * @deprecated This has been replaced by REBOOT_VM, STOP_VM, SHUT_DOWN_VM, HIBERNATE_VM and RUN_VM + * which give more granular options for vm operations + */ + @Deprecated + VM_BASIC_OPERATIONS, REBOOT_VM, STOP_VM, SHUT_DOWN_VM, @@ -152,6 +158,12 @@ } } + // VM_BASIC_OPERATIONS is deprecated in ActionGroup + // We are keeping its id for backward compatibility. + public static String getVmBasicOperationsId() { + return "4"; + } + PermitType(ActionGroup actionGroup) { this.actionGroup = actionGroup; } @@ -162,7 +174,7 @@ public static PermitType valueOf(ActionGroup actionGroup) { for (PermitType permitType : values()) { - if (permitType.getActionGroup().equals(actionGroup)) { + if (actionGroup.equals(permitType.getActionGroup())) { return permitType; } } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitResource.java index 630c1a8..8a2a182 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitResource.java @@ -1,6 +1,7 @@ package org.ovirt.engine.api.restapi.resource; import org.ovirt.engine.api.model.Permit; +import org.ovirt.engine.api.model.PermitType; import org.ovirt.engine.api.resource.PermitResource; import org.ovirt.engine.core.common.businessentities.ActionGroup; @@ -23,6 +24,17 @@ @Override public Permit get() { + // VM_BASIC_OPERATIONS is deprecated in ActionGroup + // We are building Permit of VM_BASIC_OPERATIONS for backward compatibility, + // We are using RUN_VM since its one of VM_BASIC_OPERATIONS + if (id.equals(PermitType.getVmBasicOperationsId())) { + Permit p = new Permit(); + p.setName(PermitType.VM_BASIC_OPERATIONS.toString().toLowerCase()); + p.setId(PermitType.getVmBasicOperationsId()); + ActionGroup runVm = parent.lookupId(String.valueOf(ActionGroup.RUN_VM.getId())); + p.setAdministrative(org.ovirt.engine.api.model.RoleType.ADMIN.toString().equals(runVm.getRoleType().toString())); + return addLinks(p); + } ActionGroup entity = parent.lookupId(id); if (entity == null) { return notFound(); diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitsResource.java index 3ec14b9..39e979a 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendPermitsResource.java @@ -2,10 +2,9 @@ import java.util.ArrayList; import java.util.List; - import javax.ws.rs.core.Response; - import org.ovirt.engine.api.model.Permit; +import org.ovirt.engine.api.model.PermitType; import org.ovirt.engine.api.model.Permits; import org.ovirt.engine.api.model.Role; import org.ovirt.engine.api.resource.PermitResource; @@ -39,10 +38,28 @@ validateParameters(permit, "name|id"); validateEnums(Permit.class, permit); ArrayList<ActionGroup> actionGroups = new ArrayList<ActionGroup>(); - actionGroups.add(map(permit)); + // VM_BASIC_OPERATIONS is deprecated, its now more detailed with the following: + // REBOOT_VM, STOP_VM, SHUT_DOWN_VM, HIBERNATE_VM and RUN_VM + // We use addIfNotExists since user may send VM_BASIC_OPERATIONS with RUN_VM etc. + if (PermitType.getVmBasicOperationsId().equals(permit.getId()) || + permit.getName() != null && permit.getName().toLowerCase().equals(PermitType.VM_BASIC_OPERATIONS.toString().toLowerCase())) { + addIfNotExists(actionGroups, ActionGroup.REBOOT_VM); + addIfNotExists(actionGroups, ActionGroup.STOP_VM); + addIfNotExists(actionGroups, ActionGroup.SHUT_DOWN_VM); + addIfNotExists(actionGroups, ActionGroup.HIBERNATE_VM); + addIfNotExists(actionGroups, ActionGroup.RUN_VM); + } else { + addIfNotExists(actionGroups, map(permit)); + } return performCreate(VdcActionType.AttachActionGroupsToRole, new ActionGroupsToRoleParameter(roleId, actionGroups), new PermitIdResolver(actionGroups.get(0))); + } + + private void addIfNotExists(List<ActionGroup> list, ActionGroup item) { + if (!list.contains(item)) { + list.add(item); + } } @Override @@ -68,7 +85,24 @@ protected Permits mapCollection(List<ActionGroup> entities) { Permits collection = new Permits(); + // VM_BASIC_OPERATIONS is deprecated, its now more detailed with the following: + // REBOOT_VM, STOP_VM, SHUT_DOWN_VM, HIBERNATE_VM and RUN_VM + // for backward compatibility we show the user VM_BASIC_OPERATIONS if all this + // ActionGroup are present + if (entities.contains(ActionGroup.REBOOT_VM) && + entities.contains(ActionGroup.STOP_VM) && + entities.contains(ActionGroup.SHUT_DOWN_VM) && + entities.contains(ActionGroup.HIBERNATE_VM) && + entities.contains(ActionGroup.RUN_VM)) { + Permit p = new Permit(); + p.setName(PermitType.VM_BASIC_OPERATIONS.toString().toLowerCase()); + p.setId(PermitType.getVmBasicOperationsId()); + ActionGroup runVm = entities.get(entities.indexOf(ActionGroup.RUN_VM)); + p.setAdministrative(org.ovirt.engine.api.model.RoleType.ADMIN.toString().equals(runVm.getRoleType().toString())); + collection.getPermits().add(addLinks(p)); + } for (ActionGroup entity : entities) { + Permit permit = map(entity); collection.getPermits().add(addLinks(map(entity))); } return collection; diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/PermitValidator.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/PermitValidator.java index e708150..eba2de0 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/PermitValidator.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/PermitValidator.java @@ -1,13 +1,12 @@ package org.ovirt.engine.api.restapi.resource.validation; +import static org.ovirt.engine.api.common.util.EnumValidator.validateEnum; + import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; - import org.ovirt.engine.api.model.Permit; import org.ovirt.engine.api.model.PermitType; import org.ovirt.engine.api.restapi.types.PermitMapper; - -import static org.ovirt.engine.api.common.util.EnumValidator.validateEnum; @ValidatedClass(clazz = Permit.class) public class PermitValidator implements Validator<Permit> { @@ -16,15 +15,25 @@ public void validateEnums(Permit permit) { if (permit!=null) { if (permit.isSetName()) { - validateEnum(PermitType.class, permit.getName(), true); + // VM_BASIC_OPERATIONS is deprecated in ActionGroup + // We are keeping its id for backward compatibility. + if (!permit.getName().toLowerCase().equals(PermitType.VM_BASIC_OPERATIONS.toString().toLowerCase())) { + validateEnum(PermitType.class, permit.getName(), true); + } } if (permit.isSetId()) { boolean valid = false; - for (PermitType permitType : PermitType.values()) { - Permit mappedPermit = PermitMapper.map(permitType, (Permit)null); - if (mappedPermit != null && mappedPermit.getId().equals(permit.getId())) { - valid = true; - break; + // VM_BASIC_OPERATIONS is deprecated in ActionGroup + // We are keeping its id for backward compatibility. + if (permit.getId().equals(PermitType.getVmBasicOperationsId())) { + valid = true; + } else { + for (PermitType permitType : PermitType.values()) { + Permit mappedPermit = PermitMapper.map(permitType, (Permit)null); + if (mappedPermit != null && mappedPermit.getId().equals(permit.getId())) { + valid = true; + break; + } } } if (!valid) { diff --git a/packaging/dbscripts/upgrade/03_06_0560_insert_granular_vm_roles.sql b/packaging/dbscripts/upgrade/03_06_0580_insert_granular_vm_roles.sql similarity index 100% rename from packaging/dbscripts/upgrade/03_06_0560_insert_granular_vm_roles.sql rename to packaging/dbscripts/upgrade/03_06_0580_insert_granular_vm_roles.sql -- To view, visit http://gerrit.ovirt.org/35519 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia5c1a0b08f913e415581a606caa3a1a98099d47b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shahar Havivi <shav...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches