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

Reply via email to