Martin Mucha has uploaded a new change for review.

Change subject: <core | restapi | tools | history | engine | userportal | 
webadmin>:
......................................................................

<core | restapi | tools | history | engine | userportal | webadmin>:

Change-Id: I1f5d080b6628f86ab2ff88f8e2dfaab21d367c7f
Signed-off-by: Martin Mucha <mmu...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/roles_ui/RoleTreeView.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
M 
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
A packaging/dbscripts/upgrade/03_05_0760_add_permissions_to_mac_pools.sql
16 files changed, 237 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/29846/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java
index 3c2e268..c1fd5c1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java
@@ -36,9 +36,9 @@
 
     @Override
     public List<PermissionSubject> getPermissionCheckSubjects() {
-        return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
+        return Collections.singletonList(new PermissionSubject(Guid.SYSTEM,
                 VdcObjectType.System,
-                ActionGroup.CONFIGURE_ENGINE));
+                ActionGroup.CREATE_MAC_POOL));
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java
index 41dcb5d..3403801 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java
@@ -26,7 +26,11 @@
     INSTANCE_OPERATOR(new Guid("DEF00012-0000-0000-0000-DEF000000012")),
     TAG_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000013")),
     BOOKMARK_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000014")),
-    EVENT_NOTIFICATION_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000015"));
+    EVENT_NOTIFICATION_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000015")),
+
+    //TODO MM: there maybe is some rule how to for these GUIDs, verify.
+    MAC_POOL_ADMIN(new Guid("DEF00013-0000-0000-0000-DEF000000013")),
+    MAC_POOL_USER(new Guid("DEF00014-0000-0000-0000-DEF000000014"));
 
     private Guid id;
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java
index 06b1bc7..cbd90b6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java
@@ -71,8 +71,9 @@
 
     @Override
     public List<PermissionSubject> getPermissionCheckSubjects() {
-        return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
-                VdcObjectType.System, ActionGroup.CONFIGURE_ENGINE));
+        return Collections.singletonList(new PermissionSubject(Guid.SYSTEM,
+                VdcObjectType.System,
+                ActionGroup.DELETE_MAC_POOL));
     }
 
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java
index ec6fc07..817710a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java
@@ -74,8 +74,9 @@
 
     @Override
     public List<PermissionSubject> getPermissionCheckSubjects() {
-        return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
-                VdcObjectType.System, ActionGroup.CONFIGURE_ENGINE));
+        return Collections.singletonList(new PermissionSubject(Guid.SYSTEM,
+                VdcObjectType.System,
+                ActionGroup.EDIT_MAC_POOL));
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
index c3d4867..80f38a3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
@@ -1,16 +1,16 @@
 package org.ovirt.engine.core.bll.storage;
 
-import java.util.Collections;
+import java.util.Arrays;
 import java.util.List;
 
 import org.ovirt.engine.core.bll.AddVdsGroupCommand;
-import org.ovirt.engine.core.bll.MultiLevelAdministrationHandler;
 import org.ovirt.engine.core.bll.network.cluster.NetworkHelper;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.utils.VersionSupport;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.StoragePoolManagementParameter;
+import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.businessentities.network.Network;
@@ -100,9 +100,10 @@
 
     @Override
     public List<PermissionSubject> getPermissionCheckSubjects() {
-        return Collections.singletonList(new 
PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID,
-                VdcObjectType.System,
-                getActionType().getActionGroup()));
+        return Arrays.asList(
+                new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, 
getActionType().getActionGroup()),
+                new PermissionSubject(getRequestedMacPoolId(), 
VdcObjectType.MacPool, ActionGroup.CONFIGURE_MAC_POOL)
+        );
     }
 
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java
index 900edd0..b434427 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java
@@ -52,4 +52,8 @@
         List<StoragePool> sps = spDao.getByName(storagePoolName, false);
         return (sps == null || sps.isEmpty());
     }
+
+    protected Guid getRequestedMacPoolId() {
+        return getParameters().getStoragePool().getMacPoolId();
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
index 7c56700..725c019 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
@@ -7,12 +7,14 @@
 import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute;
 import org.ovirt.engine.core.bll.RenamedEntityInfoProvider;
 import org.ovirt.engine.core.bll.context.CommandContext;
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.utils.VersionSupport;
 import org.ovirt.engine.core.bll.validator.NetworkValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.StoragePoolManagementParameter;
+import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
@@ -66,8 +68,8 @@
     @Override
     protected void executeCommand() {
         updateQuotaCache();
-        if (_oldStoragePool.getStatus() == StoragePoolStatus.Up) {
-            if (!StringUtils.equals(_oldStoragePool.getName(), 
getStoragePool().getName())) {
+        if (get_oldStoragePool().getStatus() == StoragePoolStatus.Up) {
+            if (!StringUtils.equals(get_oldStoragePool().getName(), 
getStoragePool().getName())) {
                 runVdsCommand(VDSCommandType.SetStoragePoolDescription,
                     new SetStoragePoolDescriptionVDSCommandParameters(
                         getStoragePool().getId(), getStoragePool().getName())
@@ -75,7 +77,7 @@
             }
         }
 
-        copyUnchangedStoragePoolProperties(getStoragePool(), _oldStoragePool);
+        copyUnchangedStoragePoolProperties(getStoragePool(), 
get_oldStoragePool());
 
         getStoragePoolDAO().updatePartial(getStoragePool());
 
@@ -93,14 +95,14 @@
      * Checks whether part of the update was disabling quota enforcement on 
the Data Center
      */
     private boolean wasQuotaEnforcementChanged() {
-        return _oldStoragePool.getQuotaEnforcementType() != 
getStoragePool().getQuotaEnforcementType();
+        return get_oldStoragePool().getQuotaEnforcementType() != 
getStoragePool().getQuotaEnforcementType();
     }
 
     private void updateStoragePoolFormatType() {
         final StoragePool storagePool = getStoragePool();
         final Guid spId = storagePool.getId();
         final Version spVersion = storagePool.getcompatibility_version();
-        final Version oldSpVersion = 
_oldStoragePool.getcompatibility_version();
+        final Version oldSpVersion = 
get_oldStoragePool().getcompatibility_version();
 
         if (oldSpVersion.equals(spVersion)) {
             return;
@@ -126,7 +128,7 @@
                     }
         });
 
-        if (_oldStoragePool.getStatus() == StoragePoolStatus.Up) {
+        if (get_oldStoragePool().getStatus() == StoragePoolStatus.Up) {
             try {
                 // No need to worry about "reupgrading" as VDSM will silently 
ignore
                 // the request.
@@ -172,14 +174,13 @@
     @Override
     protected boolean canDoAction() {
         boolean returnValue = checkStoragePool();
-        _oldStoragePool = getStoragePoolDAO().get(getStoragePool().getId());
-        if (returnValue && !StringUtils.equals(_oldStoragePool.getName(), 
getStoragePool().getName())
+        if (returnValue && !StringUtils.equals(get_oldStoragePool().getName(), 
getStoragePool().getName())
                 && !isStoragePoolUnique(getStoragePool().getName())) {
             returnValue = false;
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NAME_ALREADY_EXIST);
         }
         if (returnValue
-                && _oldStoragePool.isLocal() != getStoragePool().isLocal()
+                && get_oldStoragePool().isLocal() != getStoragePool().isLocal()
                 && 
getStorageDomainStaticDAO().getAllForStoragePool(getStoragePool().getId()).size()
 > 0) {
             returnValue = false;
             getReturnValue()
@@ -189,14 +190,14 @@
         }
         returnValue = returnValue && checkStoragePoolNameLengthValid();
         if (returnValue
-                && 
!_oldStoragePool.getcompatibility_version().equals(getStoragePool()
+                && 
!get_oldStoragePool().getcompatibility_version().equals(getStoragePool()
                         .getcompatibility_version())) {
             if (!isStoragePoolVersionSupported()) {
                 
addCanDoActionMessage(VersionSupport.getUnsupportedVersionMessage());
                 returnValue = false;
             }
             // decreasing of compatibility version is allowed under conditions
-            else if 
(getStoragePool().getcompatibility_version().compareTo(_oldStoragePool.getcompatibility_version())
 < 0) {
+            else if 
(getStoragePool().getcompatibility_version().compareTo(get_oldStoragePool().getcompatibility_version())
 < 0) {
                 List<Network> networks = 
getNetworkDAO().getAllForDataCenter(getStoragePoolId());
                 if (networks.size() == 1) {
                     Network network = networks.get(0);
@@ -289,7 +290,7 @@
 
     @Override
     public String getEntityOldName() {
-        return _oldStoragePool.getName();
+        return get_oldStoragePool().getName();
     }
 
     @Override
@@ -299,6 +300,34 @@
 
     @Override
     public void setEntityId(AuditLogableBase logable) {
-        logable.setStoragePoolId(_oldStoragePool.getId());
+        logable.setStoragePoolId(get_oldStoragePool().getId());
+    }
+
+    private Guid getOldMacPoolId() {
+        return get_oldStoragePool().getMacPoolId();
+    }
+
+    private StoragePool get_oldStoragePool() {
+        if (_oldStoragePool == null) {
+            _oldStoragePool = 
getStoragePoolDAO().get(getStoragePool().getId());
+        }
+        return _oldStoragePool;
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        final List<PermissionSubject> result = new 
ArrayList<>(super.getPermissionCheckSubjects());
+
+        if (changingPoolDefinition()) {
+            result.add(new PermissionSubject(getRequestedMacPoolId(), 
VdcObjectType.MacPool, ActionGroup.CONFIGURE_MAC_POOL));
+        }
+
+        return result;
+    }
+
+    private boolean changingPoolDefinition() {
+        return getRequestedMacPoolId() == null
+                ? getOldMacPoolId() != null
+                : getRequestedMacPoolId().equals(getOldMacPoolId());
     }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index f45e2ff..2ed89dc 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -370,9 +370,9 @@
     SetDataOnSession(3000, false, QuotaDependency.NONE),
 
     // Mac Pool
-    AddMacPool(3100, ActionGroup.CONFIGURE_ENGINE, false, 
QuotaDependency.NONE),
-    UpdateMacPool(3101, ActionGroup.CONFIGURE_ENGINE, false, 
QuotaDependency.NONE),
-    RemoveMacPool(3102, ActionGroup.CONFIGURE_ENGINE, false, 
QuotaDependency.NONE);
+    AddMacPool(3100, ActionGroup.CREATE_MAC_POOL, false, QuotaDependency.NONE),
+    UpdateMacPool(3101, ActionGroup.EDIT_MAC_POOL, false, 
QuotaDependency.NONE),
+    RemoveMacPool(3102, ActionGroup.DELETE_MAC_POOL, false, 
QuotaDependency.NONE);
 
     private int intValue;
     private ActionGroup actionGroup;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java
index 5aeec1e..35e587f 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ActionGroup.java
@@ -132,7 +132,13 @@
     AUDIT_LOG_MANAGEMENT(1304, RoleType.ADMIN, false),
 
     // affinity group CRUD commands
-    MANIPULATE_AFFINITY_GROUPS(1550, RoleType.ADMIN, true, 
ApplicationMode.VirtOnly);
+    MANIPULATE_AFFINITY_GROUPS(1550, RoleType.ADMIN, true, 
ApplicationMode.VirtOnly),
+
+    // MAC pool actions groups
+    CREATE_MAC_POOL(1660, RoleType.ADMIN, true, ApplicationMode.VirtOnly),
+    EDIT_MAC_POOL(1661, RoleType.ADMIN, true, ApplicationMode.VirtOnly),
+    DELETE_MAC_POOL(1662, RoleType.ADMIN, true, ApplicationMode.VirtOnly),
+    CONFIGURE_MAC_POOL(1663, RoleType.ADMIN, true, ApplicationMode.VirtOnly);
 
     private int id;
     private RoleType roleType;
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 439ae0f..0824dc3 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
@@ -115,7 +115,12 @@
     EVENT_NOTIFICATION_MANAGEMENT,
     AUDIT_LOG_MANAGEMENT,
     // affinity groups CRUD commands
-    MANIPULATE_AFFINITY_GROUPS;
+    MANIPULATE_AFFINITY_GROUPS,
+
+    // Mac Pool action groups
+    CREATE_MAC_POOL,
+    EDIT_MAC_POOL,
+    DELETE_MAC_POOL;
 
     public String value() {
         return name().toLowerCase();
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java
index ff9d19f..4bfea1c 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java
@@ -192,6 +192,12 @@
             return PermitType.MANIPULATE_AFFINITY_GROUPS;
         case ADD_USERS_AND_GROUPS_FROM_DIRECTORY:
             return PermitType.ADD_USERS_AND_GROUPS_FROM_DIRECTORY;
+        case CREATE_MAC_POOL:
+            return PermitType.CREATE_MAC_POOL;
+        case EDIT_MAC_POOL:
+            return PermitType.EDIT_MAC_POOL;
+        case DELETE_MAC_POOL:
+            return PermitType.DELETE_MAC_POOL;
         default:
             return null;
         }
@@ -348,6 +354,12 @@
             return ActionGroup.MANIPULATE_AFFINITY_GROUPS;
         case ADD_USERS_AND_GROUPS_FROM_DIRECTORY:
             return ActionGroup.ADD_USERS_AND_GROUPS_FROM_DIRECTORY;
+        case CREATE_MAC_POOL:
+            return ActionGroup.CREATE_MAC_POOL;
+        case EDIT_MAC_POOL:
+            return ActionGroup.EDIT_MAC_POOL;
+        case DELETE_MAC_POOL:
+            return ActionGroup.DELETE_MAC_POOL;
         default:
             return null;
         }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/roles_ui/RoleTreeView.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/roles_ui/RoleTreeView.java
index 20121cf..96fbb5a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/roles_ui/RoleTreeView.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/roles_ui/RoleTreeView.java
@@ -77,7 +77,8 @@
                                 createTemplateRoleTree(),
                                 createVmRoleTree(),
                                 createVmPoolRoleTree(),
-                                createDiskRoleTree() });
+                                createDiskRoleTree(),
+                                createMacPoolRoleTree() });
 
         // nothing to filter
         if 
(!ApplicationModeHelper.getUiMode().equals(ApplicationMode.AllModes)) {
@@ -86,6 +87,17 @@
         return tree;
     }
 
+    protected static RoleNode createMacPoolRoleTree() {
+        return new RoleNode(getConstants().macPoolTree(), new RoleNode[]{
+                new RoleNode(getConstants().basicOperationsRoleTree(), new 
RoleNode[]{
+                    new RoleNode(ActionGroup.CREATE_MAC_POOL, 
getConstants().allowToCreateMacPoolTooltip()),
+                    new RoleNode(ActionGroup.EDIT_MAC_POOL, 
getConstants().allowToEditMacPoolTooltip()),
+                    new RoleNode(ActionGroup.DELETE_MAC_POOL, 
getConstants().allowToDeleteMacPoolTooltip()),
+                    new RoleNode(ActionGroup.CONFIGURE_MAC_POOL, 
getConstants().allowToUseMacPoolTooltip())
+                })
+        });
+    }
+
     protected static RoleNode createDiskRoleTree() {
         return new RoleNode(getConstants().diskRoleTree(),
                 new RoleNode[] { new 
RoleNode(getConstants().provisioningOperationsRoleTree(),
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
index 5ffecf7..40df5dc 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
@@ -946,4 +946,11 @@
 
     String SELinuxMode___DISABLED();
 
+    String ActionGroup___CREATE_MAC_POOL();
+
+    String ActionGroup___EDIT_MAC_POOL();
+
+    String ActionGroup___DELETE_MAC_POOL();
+
+    String ActionGroup___CONFIGURE_MAC_POOL();
 }
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index 7c52a3a..dfe9c9a 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -2319,5 +2319,29 @@
 
     @DefaultStringValue("Login")
     String loginButtonLabel();
+
+    //TODO MM: REVISIT
+    @DefaultStringValue("MAC Pools")
+    String macPoolTree();
+
+    //TODO MM: REVISIT
+    @DefaultStringValue("MAC Pool User")
+    String macPoolUser();
+
+    //TODO MM: REVISIT
+    @DefaultStringValue("Create")
+    String allowToCreateMacPoolTooltip();
+
+    //TODO MM: REVISIT
+    @DefaultStringValue("Edit")
+    String allowToEditMacPoolTooltip();
+
+    //TODO MM: REVISIT
+    @DefaultStringValue("Delete")
+    String allowToDeleteMacPoolTooltip();
+
+    //TODO MM: REVISIT
+    @DefaultStringValue("Configure")
+    String allowToUseMacPoolTooltip();
 }
 
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
index 5ce7131..4b2abcf 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
+++ 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
@@ -98,6 +98,10 @@
 ActionGroup___MANIPULATE_GLUSTER_HOOK=Manipulate Gluster Hook
 ActionGroup___MANIPULATE_GLUSTER_SERVICE=Manipulate Service
 ActionGroup___MANIPULATE_AFFINITY_GROUPS=Manipulate Affinity Groups
+ActionGroup___CREATE_MAC_POOL=Create
+ActionGroup___EDIT_MAC_POOL=Edit Settings
+ActionGroup___DELETE_MAC_POOL=Delete
+ActionGroup___CONFIGURE_MAC_POOL=Use existing MAC Pool
 EventNotificationEntity___Host=General Host Events:
 EventNotificationEntity___VdsGroup=Cluster Events:
 EventNotificationEntity___VirtHost=Virt Host Events:
diff --git 
a/packaging/dbscripts/upgrade/03_05_0760_add_permissions_to_mac_pools.sql 
b/packaging/dbscripts/upgrade/03_05_0760_add_permissions_to_mac_pools.sql
new file mode 100644
index 0000000..5b39aad
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_0760_add_permissions_to_mac_pools.sql
@@ -0,0 +1,96 @@
+
+Create or replace FUNCTION __temp_insert_mac_pool_roles_and_permissions()
+RETURNS VOID
+   AS $procedure$
+DECLARE
+  v_EVERYONE           UUID;
+  v_MAC_POOL_ADMIN     UUID;
+  v_LOCAL_ADMIN_ID     UUID;
+  v_MAC_POOL_USER      UUID;
+
+  v_CREATE_MAC_POOL    INTEGER;
+  v_EDIT_MAC_POOL      INTEGER;
+  v_DELETE_MAC_POOL    INTEGER;
+  v_CONFIGURE_MAC_POOL INTEGER;
+  v_LOGIN              INTEGER;
+
+  v_APP_MODE           INTEGER;
+
+BEGIN
+  v_EVERYONE := 'EEE00000-0000-0000-0000-123456789EEE';
+  v_MAC_POOL_ADMIN := 'DEF00013-0000-0000-0000-DEF000000013';
+  v_LOCAL_ADMIN_ID := 'FDFC627C-D875-11E0-90F0-83DF133B58CC';
+  v_MAC_POOL_USER := 'DEF00014-0000-0000-0000-DEF000000014';
+
+  v_CREATE_MAC_POOL := 1660;
+  v_EDIT_MAC_POOL := 1661;
+  v_DELETE_MAC_POOL := 1662;
+  v_CONFIGURE_MAC_POOL := 1663;
+  v_LOGIN := 1300;
+
+  v_APP_MODE := 255;
+
+--TODO should be readonly true or false?
+  INSERT INTO roles (id, name, description, is_readonly, role_type, 
allows_viewing_children, app_mode) SELECT
+                                                                               
                          v_MAC_POOL_ADMIN,
+                                                                               
                          'MacPoolAdmin',
+                                                                               
                          'MAC Pool Administrator Role, permission for 
manipulation with MAC pools',
+                                                                               
                          true,
+                                                                               
                          1,
+                                                                               
                          true,
+                                                                               
                          v_APP_MODE;
+
+  INSERT INTO roles (id, name, description, is_readonly, role_type, 
allows_viewing_children, app_mode) SELECT
+                                                                               
                          v_MAC_POOL_USER,
+                                                                               
                          'MacPoolUser',
+                                                                               
                          'MAC Pool User Role, permission allowing using MAC 
pools',
+                                                                               
                          true,
+                                                                               
                          1,
+                                                                               
                          true,
+                                                                               
                          v_APP_MODE;
+
+  INSERT INTO roles_groups (role_id, action_group_id) VALUES 
(v_MAC_POOL_ADMIN, v_CREATE_MAC_POOL);
+  INSERT INTO roles_groups (role_id, action_group_id) VALUES 
(v_MAC_POOL_ADMIN, v_EDIT_MAC_POOL);
+  INSERT INTO roles_groups (role_id, action_group_id) VALUES 
(v_MAC_POOL_ADMIN, v_DELETE_MAC_POOL);
+  INSERT INTO roles_groups (role_id, action_group_id) VALUES 
(v_MAC_POOL_ADMIN, v_CONFIGURE_MAC_POOL);
+  INSERT INTO roles_groups (role_id, action_group_id) VALUES 
(v_MAC_POOL_ADMIN, v_LOGIN);
+
+  INSERT INTO permissions (id,
+                           role_id,
+                           ad_element_id,
+                           object_id,
+                           object_type_id)
+    SELECT
+      uuid_generate_v1(),
+      v_MAC_POOL_ADMIN,
+      v_LOCAL_ADMIN_ID,
+
+      --system object
+      getGlobalIds('system'),
+
+      --org.ovirt.engine.core.common.VdcObjectType.System
+      1;
+
+  INSERT INTO permissions (id,
+                           role_id,
+                           ad_element_id,
+                           object_id,
+                           object_type_id)
+    SELECT
+      uuid_generate_v1(),
+      v_MAC_POOL_USER,
+      v_EVERYONE,
+
+      --system object
+      (select mp.id from mac_pools mp where mp.default_pool is true),
+
+      --org.ovirt.engine.core.common.VdcObjectType.MacPool
+      28;
+
+  RETURN;
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+SELECT __temp_insert_mac_pool_roles_and_permissions();
+DROP FUNCTION __temp_insert_mac_pool_roles_and_permissions();


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

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

Reply via email to