Updated keystoneclient commands in tools/create_userrc.sh
to their openstackclient equivalents.
Change-Id: I03c17cfc9740c3eb257152c95d9c4f021db2c89e
| ... | ... |
@@ -34,7 +34,7 @@ Optional Arguments |
| 34 | 34 |
-P include password to the rc files; with -A it assume all users password is the same |
| 35 | 35 |
-A try with all user |
| 36 | 36 |
-u <username> create files just for the specified user |
| 37 |
--C <tanent_name> create user and tenant, the specifid tenant will be the user's tenant |
|
| 37 |
+-C <tenant_name> create user and tenant, the specifid tenant will be the user's tenant |
|
| 38 | 38 |
-r <name> when combined with -C and the (-u) user exists it will be the user's tenant role in the (-C)tenant (default: Member) |
| 39 | 39 |
-p <userpass> password for the user |
| 40 | 40 |
--os-username <username> |
| ... | ... |
@@ -62,8 +62,8 @@ ADDPASS="" |
| 62 | 62 |
|
| 63 | 63 |
# The services users usually in the service tenant. |
| 64 | 64 |
# rc files for service users, is out of scope. |
| 65 |
-# Supporting different tanent for services is out of scope. |
|
| 66 |
-SKIP_TENANT=",service," # tenant names are between commas(,) |
|
| 65 |
+# Supporting different tenant for services is out of scope. |
|
| 66 |
+SKIP_TENANT="service" |
|
| 67 | 67 |
MODE="" |
| 68 | 68 |
ROLE=Member |
| 69 | 69 |
USER_NAME="" |
| ... | ... |
@@ -126,15 +126,15 @@ fi |
| 126 | 126 |
|
| 127 | 127 |
export -n SERVICE_TOKEN SERVICE_ENDPOINT OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT |
| 128 | 128 |
|
| 129 |
-EC2_URL=http://localhost:8773/service/Cloud |
|
| 130 |
-S3_URL=http://localhost:3333 |
|
| 131 |
- |
|
| 132 |
-ec2=`keystone endpoint-get --service ec2 | awk '/\|[[:space:]]*ec2.publicURL/ {print $4}'`
|
|
| 133 |
-[ -n "$ec2" ] && EC2_URL=$ec2 |
|
| 134 |
- |
|
| 135 |
-s3=`keystone endpoint-get --service s3 | awk '/\|[[:space:]]*s3.publicURL/ {print $4}'`
|
|
| 136 |
-[ -n "$s3" ] && S3_URL=$s3 |
|
| 129 |
+EC2_URL=`openstack endpoint show ec2 | grep " ec2.publicURL " | cut -d " " -f4` |
|
| 130 |
+if [[ -z $EC2_URL ]]; then |
|
| 131 |
+ EC2_URL=http://localhost:8773/service/Cloud |
|
| 132 |
+fi |
|
| 137 | 133 |
|
| 134 |
+S3_URL=`openstack endpoint show s3 | grep " s3.publicURL " | cut -d " " -f4` |
|
| 135 |
+if [[ -z $S3_URL ]]; then |
|
| 136 |
+ S3_URL=http://localhost:3333 |
|
| 137 |
+fi |
|
| 138 | 138 |
|
| 139 | 139 |
mkdir -p "$ACCOUNT_DIR" |
| 140 | 140 |
ACCOUNT_DIR=`readlink -f "$ACCOUNT_DIR"` |
| ... | ... |
@@ -158,13 +158,13 @@ function add_entry {
|
| 158 | 158 |
local user_passwd=$5 |
| 159 | 159 |
|
| 160 | 160 |
# The admin user can see all user's secret AWS keys, it does not looks good |
| 161 |
- local line=`keystone ec2-credentials-list --user_id $user_id | grep -E "^\\|[[:space:]]*($tenant_name|$tenant_id)[[:space:]]*\\|" | head -n 1` |
|
| 161 |
+ local line=`openstack ec2 credentials list --user $user_id | grep " $tenant_id "` |
|
| 162 | 162 |
if [ -z "$line" ]; then |
| 163 |
- keystone ec2-credentials-create --user-id $user_id --tenant-id $tenant_id 1>&2 |
|
| 164 |
- line=`keystone ec2-credentials-list --user_id $user_id | grep -E "^\\|[[:space:]]*($tenant_name|$tenant_id)[[:space:]]*\\|" | head -n 1` |
|
| 163 |
+ openstack ec2 credentials create --user $user_id --project $tenant_id 1>&2 |
|
| 164 |
+ line=`openstack ec2 credentials list --user $user_id | grep " $tenant_id "` |
|
| 165 | 165 |
fi |
| 166 | 166 |
local ec2_access_key ec2_secret_key |
| 167 |
- read ec2_access_key ec2_secret_key <<< `echo $line | awk '{print $4 " " $6 }'`
|
|
| 167 |
+ read ec2_access_key ec2_secret_key <<< `echo $line | awk '{print $2 " " $4 }'`
|
|
| 168 | 168 |
mkdir -p "$ACCOUNT_DIR/$tenant_name" |
| 169 | 169 |
local rcfile="$ACCOUNT_DIR/$tenant_name/$user_name" |
| 170 | 170 |
# The certs subject part are the tenant ID "dash" user ID, but the CN should be the first part of the DN |
| ... | ... |
@@ -212,41 +212,35 @@ EOF |
| 212 | 212 |
} |
| 213 | 213 |
|
| 214 | 214 |
#admin users expected |
| 215 |
-function create_or_get_tenant {
|
|
| 216 |
- local tenant_name=$1 |
|
| 217 |
- local tenant_id=`keystone tenant-list | awk '/\|[[:space:]]*'"$tenant_name"'[[:space:]]*\|.*\|/ {print $2}'`
|
|
| 218 |
- if [ -n "$tenant_id" ]; then |
|
| 219 |
- echo $tenant_id |
|
| 220 |
- else |
|
| 221 |
- keystone tenant-create --name "$tenant_name" | awk '/\|[[:space:]]*id[[:space:]]*\|.*\|/ {print $4}'
|
|
| 215 |
+function create_or_get_project {
|
|
| 216 |
+ local name=$1 |
|
| 217 |
+ local id |
|
| 218 |
+ eval $(openstack project show -f shell -c id $name) |
|
| 219 |
+ if [[ -z $id ]]; then |
|
| 220 |
+ eval $(openstack project create -f shell -c id $name) |
|
| 222 | 221 |
fi |
| 222 |
+ echo $id |
|
| 223 | 223 |
} |
| 224 | 224 |
|
| 225 | 225 |
function create_or_get_role {
|
| 226 |
- local role_name=$1 |
|
| 227 |
- local role_id=`keystone role-list| awk '/\|[[:space:]]*'"$role_name"'[[:space:]]*\|/ {print $2}'`
|
|
| 228 |
- if [ -n "$role_id" ]; then |
|
| 229 |
- echo $role_id |
|
| 230 |
- else |
|
| 231 |
- keystone role-create --name "$role_name" |awk '/\|[[:space:]]*id[[:space:]]*\|.*\|/ {print $4}'
|
|
| 226 |
+ local name=$1 |
|
| 227 |
+ local id |
|
| 228 |
+ eval $(openstack role show -f shell -c id $name) |
|
| 229 |
+ if [[ -z $id ]]; then |
|
| 230 |
+ eval $(openstack role create -f shell -c id $name) |
|
| 232 | 231 |
fi |
| 232 |
+ echo $id |
|
| 233 | 233 |
} |
| 234 | 234 |
|
| 235 | 235 |
# Provides empty string when the user does not exists |
| 236 | 236 |
function get_user_id {
|
| 237 |
- local user_name=$1 |
|
| 238 |
- keystone user-list | awk '/^\|[^|]*\|[[:space:]]*'"$user_name"'[[:space:]]*\|.*\|/ {print $2}'
|
|
| 237 |
+ openstack user list | grep " $1 " | cut -d " " -f2 |
|
| 239 | 238 |
} |
| 240 | 239 |
|
| 241 | 240 |
if [ $MODE != "create" ]; then |
| 242 |
-# looks like I can't ask for all tenant related to a specified user |
|
| 243 |
- for tenant_id_at_name in `keystone tenant-list | awk 'BEGIN {IGNORECASE = 1} /true[[:space:]]*\|$/ {print $2 "@" $4}'`; do
|
|
| 244 |
- read tenant_id tenant_name <<< `echo "$tenant_id_at_name" | sed 's/@/ /'` |
|
| 245 |
- if echo $SKIP_TENANT| grep -q ",$tenant_name,"; then |
|
| 246 |
- continue; |
|
| 247 |
- fi |
|
| 248 |
- for user_id_at_name in `keystone user-list --tenant-id $tenant_id | awk 'BEGIN {IGNORECASE = 1} /true[[:space:]]*\|[^|]*\|$/ {print $2 "@" $4}'`; do
|
|
| 249 |
- read user_id user_name <<< `echo "$user_id_at_name" | sed 's/@/ /'` |
|
| 241 |
+# looks like I can't ask for all tenant related to a specified user |
|
| 242 |
+ openstack project list --long --quote none -f csv | grep ',True' | grep -v "${SKIP_TENANT}" | while IFS=, read tenant_id tenant_name desc enabled; do
|
|
| 243 |
+ openstack user list --project $tenant_id --long --quote none -f csv | grep ',True' | while IFS=, read user_id user_name project email enabled; do |
|
| 250 | 244 |
if [ $MODE = one -a "$user_name" != "$USER_NAME" ]; then |
| 251 | 245 |
continue; |
| 252 | 246 |
fi |
| ... | ... |
@@ -263,18 +257,16 @@ if [ $MODE != "create" ]; then |
| 263 | 263 |
done |
| 264 | 264 |
else |
| 265 | 265 |
tenant_name=$TENANT |
| 266 |
- tenant_id=`create_or_get_tenant "$TENANT"` |
|
| 266 |
+ tenant_id=$(create_or_get_project "$TENANT") |
|
| 267 | 267 |
user_name=$USER_NAME |
| 268 | 268 |
user_id=`get_user_id $user_name` |
| 269 | 269 |
if [ -z "$user_id" ]; then |
| 270 |
- #new user |
|
| 271 |
- user_id=`keystone user-create --name "$user_name" --tenant-id "$tenant_id" --pass "$USER_PASS" --email "$user_name@example.com" | awk '/\|[[:space:]]*id[[:space:]]*\|.*\|/ {print $4}'`
|
|
| 272 |
- #The password is in the cmd line. It is not a good thing |
|
| 270 |
+ eval $(openstack user create "$user_name" --project "$tenant_id" --password "$USER_PASS" --email "$user_name@example.com" -f shell -c id) |
|
| 271 |
+ user_id=$id |
|
| 273 | 272 |
add_entry "$user_id" "$user_name" "$tenant_id" "$tenant_name" "$USER_PASS" |
| 274 | 273 |
else |
| 275 |
- #new role |
|
| 276 |
- role_id=`create_or_get_role "$ROLE"` |
|
| 277 |
- keystone user-role-add --user-id "$user_id" --tenant-id "$tenant_id" --role-id "$role_id" |
|
| 274 |
+ role_id=$(create_or_get_role "$ROLE") |
|
| 275 |
+ openstack role add "$role_id" --user "$user_id" --project "$tenant_id" |
|
| 278 | 276 |
add_entry "$user_id" "$user_name" "$tenant_id" "$tenant_name" "$USER_PASS" |
| 279 | 277 |
fi |
| 280 | 278 |
fi |