Yair Zaslavsky has uploaded a new change for review. Change subject: engine: Adding Manipulate provider action group ......................................................................
engine: Adding Manipulate provider action group Adding manipulate pprovider action group and Provider Manager role for permission handling of providers. As previously manipulating providers was associated with the action group for creating a DC, the upgrade script must create permissions for all objects that have permission with create dc on them. Change-Id: I360db0b3168331ca0c67335679bfc825461e5091 Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCertificateChainCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCetificateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/TestProviderConnectivityCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/UpdateProviderCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/AddSubnetToProviderCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/RemoveSubnetFromProviderCommand.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 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_06_0580_add_manipulate_provider_role.sql 16 files changed, 76 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/35494/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java index 84ef462..f32563b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddProviderCommand.java @@ -56,7 +56,7 @@ public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCertificateChainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCertificateChainCommand.java index ecaf4e0..e389cbf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCertificateChainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCertificateChainCommand.java @@ -53,7 +53,7 @@ // Need to revisit that when designing the permission scheme for providers return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } private void saveChainToTrustStore(List<? extends Certificate> chain) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCetificateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCetificateCommand.java index d6338da..5c9e71e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCetificateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ImportProviderCetificateCommand.java @@ -71,7 +71,7 @@ // Need to revisit that when designing the permission scheme for providers return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } private void saveCertificateToTrustStore(final Certificate cert) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java index ec721e6..5566aad 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/RemoveProviderCommand.java @@ -69,7 +69,7 @@ public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/TestProviderConnectivityCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/TestProviderConnectivityCommand.java index d9a481d..319ba17 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/TestProviderConnectivityCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/TestProviderConnectivityCommand.java @@ -41,7 +41,7 @@ public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/UpdateProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/UpdateProviderCommand.java index 6352748..90a58bf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/UpdateProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/UpdateProviderCommand.java @@ -73,7 +73,7 @@ public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/AddSubnetToProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/AddSubnetToProviderCommand.java index a622507..5e15d3a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/AddSubnetToProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/AddSubnetToProviderCommand.java @@ -93,7 +93,7 @@ public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/RemoveSubnetFromProviderCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/RemoveSubnetFromProviderCommand.java index 0a2c8b8..737679c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/RemoveSubnetFromProviderCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/network/RemoveSubnetFromProviderCommand.java @@ -83,6 +83,6 @@ public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.singletonList(new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, - ActionGroup.CREATE_STORAGE_POOL)); + ActionGroup.MANIPULATE_PROVIDERS)); } } 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 4fd3d76..f8d3a78 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 @@ -310,9 +310,9 @@ AddExternalEvent(1500, ActionGroup.INJECT_EXTERNAL_EVENTS, QuotaDependency.NONE), // Providers - AddProvider(1600, false, QuotaDependency.NONE), - UpdateProvider(1601, false, QuotaDependency.NONE), - RemoveProvider(1602, false, QuotaDependency.NONE), + AddProvider(1600, ActionGroup.MANIPULATE_PROVIDERS, false, QuotaDependency.NONE), + UpdateProvider(1601, ActionGroup.MANIPULATE_PROVIDERS, false, QuotaDependency.NONE), + RemoveProvider(1602, ActionGroup.MANIPULATE_PROVIDERS, false, QuotaDependency.NONE), TestProviderConnectivity(1603, false, QuotaDependency.NONE), ImportProviderCertificateChain(1604, false, QuotaDependency.NONE), AddNetworkOnProvider(1605, ActionGroup.CREATE_STORAGE_POOL_NETWORK, false, QuotaDependency.NONE), 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 ea9bb44..c17d527 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 @@ -143,7 +143,9 @@ 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); + CONFIGURE_MAC_POOL(1663, RoleType.ADMIN, true, ApplicationMode.VirtOnly), + + MANIPULATE_PROVIDERS(1700, RoleType.ADMIN, true, ApplicationMode.AllModes); private int id; 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 6ea1c7e..b74e931 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 @@ -118,6 +118,7 @@ AUDIT_LOG_MANAGEMENT, // affinity groups CRUD commands MANIPULATE_AFFINITY_GROUPS, + MANIPULATE_PROVIDER, // Mac Pool action groups CREATE_MAC_POOL, 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 85653f6..aa1f3b3 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 @@ -78,7 +78,9 @@ createVmRoleTree(), createVmPoolRoleTree(), createDiskRoleTree(), - createMacPoolRoleTree() }); + createMacPoolRoleTree(), + createProivderRoleTree() + }); // nothing to filter if (!ApplicationModeHelper.getUiMode().equals(ApplicationMode.AllModes)) { @@ -87,6 +89,14 @@ return tree; } + private static RoleNode createProivderRoleTree() { + return new RoleNode(getConstants().macPoolTree(), new RoleNode[] { + new RoleNode(getConstants().basicOperationsRoleTree(), new RoleNode[] { + new RoleNode(ActionGroup.MANIPULATE_ROLES, getConstants().allowToManipulateProvider()) + }) + }); + } + protected static RoleNode createMacPoolRoleTree() { return new RoleNode(getConstants().macPoolTree(), new RoleNode[]{ new RoleNode(getConstants().basicOperationsRoleTree(), new RoleNode[]{ 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 bdcbbc8..e21dbf1 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 @@ -199,6 +199,8 @@ String ActionGroup___DELETE_NETWORK_VNIC_PROFILE(); String ActionGroup___MANIPULATE_AFFINITY_GROUPS(); + + String ActionGroup___MANIPULATE_PROVIDERS(); // Gluster action groups String ActionGroup___CREATE_GLUSTER_VOLUME(); 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 fde7b44..c2d00ec 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 @@ -2426,6 +2426,9 @@ @DefaultStringValue("Configure") String allowToUseMacPoolTooltip(); + @DefaultStringValue("Configure") + String allowToManipulateProvider(); + @DefaultStringValue("The following volumes were found not to be of the suggested replica-3 type : \n") String optimiseForVirtStoreWarning(); 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 4289f4b..b41f9f0 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 @@ -100,6 +100,7 @@ ActionGroup___MANIPULATE_GLUSTER_HOOK=Manipulate Gluster Hook ActionGroup___MANIPULATE_GLUSTER_SERVICE=Manipulate Service ActionGroup___MANIPULATE_AFFINITY_GROUPS=Manipulate Affinity Groups +ActionGroup___MANIPULATE_PROVIDERS=Manipulate External Providers ActionGroup___CREATE_MAC_POOL=Create ActionGroup___EDIT_MAC_POOL=Edit Settings ActionGroup___DELETE_MAC_POOL=Delete diff --git a/packaging/dbscripts/upgrade/03_06_0580_add_manipulate_provider_role.sql b/packaging/dbscripts/upgrade/03_06_0580_add_manipulate_provider_role.sql new file mode 100644 index 0000000..40f4d0f --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_0580_add_manipulate_provider_role.sql @@ -0,0 +1,44 @@ +Create or replace FUNCTION __temp_add_manipulate_provider_action_group() +RETURNS VOID + AS $procedure$ + DECLARE + v_SUPER_USER_ID UUID; + v_DATA_CENTER_ADMIN_ID UUID; + v_MANIPULATE_PROVIDER_ACTION_GROUP_ID INTEGER; + v_PROVIDER_MANAGER_ROLE_ID UUID; + v_CREATE_STORAGE_POOL_ACTION_GROUP_ID INTEGER; + +BEGIN + v_SUPER_USER_ID := '00000000-0000-0000-0000-000000000001'; + v_DATA_CENTER_ADMIN_ID := 'DEF00002-0000-0000-0000-DEF000000002'; + v_MANIPULATE_PROVIDER_ACTION_GROUP_ID = 1700; + v_CREATE_STORAGE_POOL_ACTION_GROUP_ID = 700; + v_PROVIDER_MANAGER_ROLE_ID := 'DEF00011-0000-0000-0000-DEF000001616'; + +INSERT INTO roles_groups (role_id, action_group_id) VALUES (V_SUPER_USER_ID, V_MANIPULATE_PROVIDER_ACTION_GROUP_ID); +INSERT INTO roles_groups (role_id, action_group_id) VALUES (V_DATA_CENTER_ADMIN_ID, V_MANIPULATE_PROVIDER_ACTION_GROUP_ID); +INSERT INTO roles(id, name, description, is_readonly, role_type, allows_viewing_children, app_mode) +SELECT v_PROVIDER_MANAGER_ROLE_ID, 'ProviderManager', 'Provider Manager', true, 1, true, 255 + WHERE NOT EXISTS ( + SELECT id FROM roles + WHERE id = v_PROVIDER_MANAGER_ROLE_ID + ); +INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_PROVIDER_MANAGER_ROLE_ID, V_MANIPULATE_PROVIDER_ACTION_GROUP_ID); + + +--As the role for manipulating providers have changed, we must give +--Permissions to those who are assigned with CREATE_SOTRAGE_POOL_ID +--to be able to manipulate providers as well +INSERT INTO permissions (id, role_id, ad_element_id, object_id, object_type_id) + SELECT uuid_generate_v1(), v_PROVIDER_MANAGER_ROLE_ID, ad_element_id, object_id, object_type_id from permissions + WHERE role_id IN ( + SELECT role_id FROM roles_groups where action_group_id = v_CREATE_STORAGE_POOL_ACTION_GROUP_ID + ); + +END; $procedure$ + +LANGUAGE plpgsql; + +select __temp_add_manipulate_provider_action_group(); +drop function __temp_add_manipulate_provider_action_group(); + -- To view, visit http://gerrit.ovirt.org/35494 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I360db0b3168331ca0c67335679bfc825461e5091 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches