Skip to content

Commit e69b78d

Browse files
ianwosfrickler
andcommitted
Simplify role addtion helper functions
Because adding the role is idempotent, we can save doing the initial check for role assignment. Also simplify the output matching by using osc's filters where appropriate. Co-Authored-By: Jens Harbott <harbott@osism.tech> Change-Id: If2a661cc565a43a7821b8f0a10edd97de08eb911
1 parent e3bc6b5 commit e69b78d

1 file changed

Lines changed: 24 additions & 41 deletions

File tree

functions-common

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -966,53 +966,41 @@ function _get_domain_args {
966966
# Usage: get_or_add_user_project_role <role> <user> <project> [<user_domain> <project_domain>]
967967
function get_or_add_user_project_role {
968968
local user_role_id
969+
local domain_args
969970

970971
domain_args=$(_get_domain_args $4 $5)
971972

972-
# Gets user role id
973+
# Note this is idempotent so we are safe across multiple
974+
# duplicate calls.
975+
openstack --os-cloud devstack-system-admin role add $1 \
976+
--user $2 \
977+
--project $3 \
978+
$domain_args
973979
user_role_id=$(openstack --os-cloud devstack-system-admin role assignment list \
974980
--role $1 \
975981
--user $2 \
976982
--project $3 \
977983
$domain_args \
978-
| grep '^|\s[a-f0-9]\+' | get_field 1)
979-
if [[ -z "$user_role_id" ]]; then
980-
# Adds role to user and get it
981-
openstack --os-cloud devstack-system-admin role add $1 \
982-
--user $2 \
983-
--project $3 \
984-
$domain_args
985-
user_role_id=$(openstack --os-cloud devstack-system-admin role assignment list \
986-
--role $1 \
987-
--user $2 \
988-
--project $3 \
989-
$domain_args \
990-
| grep '^|\s[a-f0-9]\+' | get_field 1)
991-
fi
984+
-c Role -f value)
992985
echo $user_role_id
993986
}
994987

995988
# Gets or adds user role to domain
996989
# Usage: get_or_add_user_domain_role <role> <user> <domain>
997990
function get_or_add_user_domain_role {
998991
local user_role_id
999-
# Gets user role id
992+
993+
# Note this is idempotent so we are safe across multiple
994+
# duplicate calls.
995+
openstack --os-cloud devstack-system-admin role add $1 \
996+
--user $2 \
997+
--domain $3
1000998
user_role_id=$(openstack --os-cloud devstack-system-admin role assignment list \
1001999
--role $1 \
10021000
--user $2 \
10031001
--domain $3 \
1004-
| grep '^|\s[a-f0-9]\+' | get_field 1)
1005-
if [[ -z "$user_role_id" ]]; then
1006-
# Adds role to user and get it
1007-
openstack --os-cloud devstack-system-admin role add $1 \
1008-
--user $2 \
1009-
--domain $3
1010-
user_role_id=$(openstack --os-cloud devstack-system-admin role assignment list \
1011-
--role $1 \
1012-
--user $2 \
1013-
--domain $3 \
1014-
| grep '^|\s[a-f0-9]\+' | get_field 1)
1015-
fi
1002+
-c Role -f value)
1003+
10161004
echo $user_role_id
10171005
}
10181006

@@ -1051,23 +1039,18 @@ function get_or_add_user_system_role {
10511039
# Usage: get_or_add_group_project_role <role> <group> <project>
10521040
function get_or_add_group_project_role {
10531041
local group_role_id
1054-
# Gets group role id
1042+
1043+
# Note this is idempotent so we are safe across multiple
1044+
# duplicate calls.
1045+
openstack role add $1 \
1046+
--group $2 \
1047+
--project $3
10551048
group_role_id=$(openstack --os-cloud devstack-system-admin role assignment list \
10561049
--role $1 \
10571050
--group $2 \
10581051
--project $3 \
1059-
-f value)
1060-
if [[ -z "$group_role_id" ]]; then
1061-
# Adds role to group and get it
1062-
openstack --os-cloud devstack-system-admin role add $1 \
1063-
--group $2 \
1064-
--project $3
1065-
group_role_id=$(openstack --os-cloud devstack-system-admin role assignment list \
1066-
--role $1 \
1067-
--group $2 \
1068-
--project $3 \
1069-
-f value)
1070-
fi
1052+
-f value -c Role)
1053+
10711054
echo $group_role_id
10721055
}
10731056

0 commit comments

Comments
 (0)