Browse code

Cleanup keystone_data.sh

* Remove the compatibility code for older keystone client
* Reformat commands similar to keystone sample_data.sh
* Improve documentation

Change-Id: I2fc544555a1b936d28f11c3c4eaaf885b2cb6d17

Dean Troyer authored on 2012/03/02 23:43:09
Showing 1 changed files
... ...
@@ -1,165 +1,149 @@
1 1
 #!/bin/bash
2
-# Tenants
2
+#
3
+# Initial data for Keystone using python-keystoneclient
4
+#
5
+# A set of EC2-compatible credentials is created for both admin and demo
6
+# users and placed in $DEVSTACK_DIR/ec2rc.
7
+#
8
+# Tenant               User      Roles
9
+# -------------------------------------------------------
10
+# admin                admin     admin
11
+# service              glance    admin
12
+# service              nova      admin
13
+# service              quantum   admin        # if enabled
14
+# service              swift     admin        # if enabled
15
+# demo                 admin     admin
16
+# demo                 demo      Member,sysadmin,netadmin
17
+# invisible_to_admin   demo      Member
18
+#
19
+# Variables set before calling this script:
20
+# SERVICE_TOKEN - aka admin_token in keystone.conf
21
+# SERVICE_ENDPOINT - local Keystone admin endpoint
22
+# SERVICE_TENANT_NAME - name of tenant containing service accounts
23
+# ENABLED_SERVICES - stack.sh's list of services to start
24
+# DEVSTACK_DIR - Top-level DevStack directory
25
+
26
+ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete}
27
+SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
3 28
 export SERVICE_TOKEN=$SERVICE_TOKEN
4 29
 export SERVICE_ENDPOINT=$SERVICE_ENDPOINT
30
+SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
5 31
 
6 32
 function get_id () {
7
-    echo `$@ | grep ' id ' | awk '{print $4}'`
33
+    echo `$@ | awk '/ id / { print $4 }'`
8 34
 }
9 35
 
10
-# Detect if the keystone cli binary has the command names changed
11
-# in https://review.openstack.org/4375
12
-# FIXME(dtroyer): Remove the keystone client command checking
13
-#                 after a suitable transition period.  add-user-role
14
-#                 and ec2-create-credentials were renamed
15
-if keystone help | grep -q user-role-add; then
16
-    KEYSTONE_COMMAND_4375=1
17
-fi
18
-
19
-ADMIN_TENANT=`get_id keystone tenant-create --name=admin`
20
-SERVICE_TENANT=`get_id keystone tenant-create --name=$SERVICE_TENANT_NAME`
21
-DEMO_TENANT=`get_id keystone tenant-create --name=demo`
22
-INVIS_TENANT=`get_id keystone tenant-create --name=invisible_to_admin`
36
+# Tenants
37
+ADMIN_TENANT=$(get_id keystone tenant-create --name=admin)
38
+SERVICE_TENANT=$(get_id keystone tenant-create --name=$SERVICE_TENANT_NAME)
39
+DEMO_TENANT=$(get_id keystone tenant-create --name=demo)
40
+INVIS_TENANT=$(get_id keystone tenant-create --name=invisible_to_admin)
23 41
 
24 42
 
25 43
 # Users
26
-ADMIN_USER=`get_id keystone user-create \
27
-                                 --name=admin \
28
-                                 --pass="$ADMIN_PASSWORD" \
29
-                                 --email=admin@example.com`
30
-DEMO_USER=`get_id keystone user-create \
31
-                                 --name=demo \
32
-                                 --pass="$ADMIN_PASSWORD" \
33
-                                 --email=admin@example.com`
44
+ADMIN_USER=$(get_id keystone user-create --name=admin \
45
+                                         --pass="$ADMIN_PASSWORD" \
46
+                                         --email=admin@example.com)
47
+DEMO_USER=$(get_id keystone user-create --name=demo \
48
+                                        --pass="$ADMIN_PASSWORD" \
49
+                                        --email=demo@example.com)
34 50
 
35 51
 # Roles
36
-ADMIN_ROLE=`get_id keystone role-create --name=admin`
37
-MEMBER_ROLE=`get_id keystone role-create --name=Member`
38
-KEYSTONEADMIN_ROLE=`get_id keystone role-create --name=KeystoneAdmin`
39
-KEYSTONESERVICE_ROLE=`get_id keystone role-create --name=KeystoneServiceAdmin`
40
-SYSADMIN_ROLE=`get_id keystone role-create --name=sysadmin`
41
-NETADMIN_ROLE=`get_id keystone role-create --name=netadmin`
42
-
43
-
44
-if [[ -n "$KEYSTONE_COMMAND_4375" ]]; then
45
-    # Add Roles to Users in Tenants
46
-    keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT
47
-    keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $DEMO_TENANT
48
-    keystone user-role-add --user $DEMO_USER --role $SYSADMIN_ROLE --tenant_id $DEMO_TENANT
49
-    keystone user-role-add --user $DEMO_USER --role $NETADMIN_ROLE --tenant_id $DEMO_TENANT
50
-    keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $INVIS_TENANT
51
-    keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $DEMO_TENANT
52
-
53
-    # TODO(termie): these two might be dubious
54
-    keystone user-role-add --user $ADMIN_USER --role $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT
55
-    keystone user-role-add --user $ADMIN_USER --role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT
56
-else
57
-    ### compat
58
-    # Add Roles to Users in Tenants
59
-    keystone add-user-role $ADMIN_USER $ADMIN_ROLE $ADMIN_TENANT
60
-    keystone add-user-role $DEMO_USER $MEMBER_ROLE $DEMO_TENANT
61
-    keystone add-user-role $DEMO_USER $SYSADMIN_ROLE $DEMO_TENANT
62
-    keystone add-user-role $DEMO_USER $NETADMIN_ROLE $DEMO_TENANT
63
-    keystone add-user-role $DEMO_USER $MEMBER_ROLE $INVIS_TENANT
64
-    keystone add-user-role $ADMIN_USER $ADMIN_ROLE $DEMO_TENANT
65
-
66
-    # TODO(termie): these two might be dubious
67
-    keystone add-user-role $ADMIN_USER $KEYSTONEADMIN_ROLE $ADMIN_TENANT
68
-    keystone add-user-role $ADMIN_USER $KEYSTONESERVICE_ROLE $ADMIN_TENANT
69
-    ###
70
-fi
52
+ADMIN_ROLE=$(get_id keystone role-create --name=admin)
53
+KEYSTONEADMIN_ROLE=$(get_id keystone role-create --name=KeystoneAdmin)
54
+KEYSTONESERVICE_ROLE=$(get_id keystone role-create --name=KeystoneServiceAdmin)
55
+SYSADMIN_ROLE=$(get_id keystone role-create --name=sysadmin)
56
+NETADMIN_ROLE=$(get_id keystone role-create --name=netadmin)
57
+
58
+
59
+# Add Roles to Users in Tenants
60
+keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT
61
+keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $DEMO_TENANT
62
+keystone user-role-add --user $DEMO_USER --role $SYSADMIN_ROLE --tenant_id $DEMO_TENANT
63
+keystone user-role-add --user $DEMO_USER --role $NETADMIN_ROLE --tenant_id $DEMO_TENANT
64
+
65
+# TODO(termie): these two might be dubious
66
+keystone user-role-add --user $ADMIN_USER --role $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT
67
+keystone user-role-add --user $ADMIN_USER --role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT
68
+
69
+
70
+# The Member role is used by Horizon and Swift so we need to keep it:
71
+MEMBER_ROLE=$(get_id keystone role-create --name=Member)
72
+keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $DEMO_TENANT
73
+keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $INVIS_TENANT
74
+
71 75
 
72 76
 # Services
73
-keystone service-create \
74
-                                 --name=nova \
75
-                                 --type=compute \
76
-                                 --description="Nova Compute Service"
77
-NOVA_USER=`get_id keystone user-create \
78
-                                 --name=nova \
79
-                                 --pass="$SERVICE_PASSWORD" \
80
-                                 --tenant_id $SERVICE_TENANT \
81
-                                 --email=nova@example.com`
77
+keystone service-create --name=keystone \
78
+                        --type=identity \
79
+                        --description="Keystone Identity Service"
80
+
81
+keystone service-create --name=nova \
82
+                        --type=compute \
83
+                        --description="Nova Compute Service"
84
+NOVA_USER=$(get_id keystone user-create --name=nova \
85
+                                        --pass="$SERVICE_PASSWORD" \
86
+                                        --tenant_id $SERVICE_TENANT \
87
+                                        --email=nova@example.com)
82 88
 keystone user-role-add --tenant_id $SERVICE_TENANT \
83
-                                 --user $NOVA_USER \
84
-                                 --role $ADMIN_ROLE
85
-
86
-keystone service-create \
87
-                                 --name=ec2 \
88
-                                 --type=ec2 \
89
-                                 --description="EC2 Compatibility Layer"
90
-
91
-keystone service-create \
92
-                                 --name=glance \
93
-                                 --type=image \
94
-                                 --description="Glance Image Service"
95
-GLANCE_USER=`get_id keystone user-create \
96
-                                 --name=glance \
97
-                                 --pass="$SERVICE_PASSWORD" \
98
-                                 --tenant_id $SERVICE_TENANT \
99
-                                 --email=glance@example.com`
89
+                       --user $NOVA_USER \
90
+                       --role $ADMIN_ROLE
91
+
92
+keystone service-create --name=ec2 \
93
+                        --type=ec2 \
94
+                        --description="EC2 Compatibility Layer"
95
+
96
+keystone service-create --name=glance \
97
+                        --type=image \
98
+                        --description="Glance Image Service"
99
+GLANCE_USER=$(get_id keystone user-create --name=glance \
100
+                                          --pass="$SERVICE_PASSWORD" \
101
+                                          --tenant_id $SERVICE_TENANT \
102
+                                          --email=glance@example.com)
100 103
 keystone user-role-add --tenant_id $SERVICE_TENANT \
101
-                                 --user $GLANCE_USER \
102
-                                 --role $ADMIN_ROLE
103
-
104
-keystone service-create \
105
-                                 --name=keystone \
106
-                                 --type=identity \
107
-                                 --description="Keystone Identity Service"
104
+                       --user $GLANCE_USER \
105
+                       --role $ADMIN_ROLE
108 106
 
109 107
 if [[ "$ENABLED_SERVICES" =~ "n-vol" ]]; then
110
-    keystone service-create \
111
-                                 --name="nova-volume" \
112
-                                 --type=volume \
113
-                                 --description="Nova Volume Service"
108
+    keystone service-create --name="nova-volume" \
109
+                            --type=volume \
110
+                            --description="Nova Volume Service"
114 111
 fi
115 112
 
116 113
 if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
117
-    keystone service-create \
118
-                                 --name=swift \
119
-                                 --type="object-store" \
120
-                                 --description="Swift Service"
121
-    SWIFT_USER=`get_id keystone user-create \
122
-                                 --name=swift \
123
-                                 --pass="$SERVICE_PASSWORD" \
124
-                                 --tenant_id $SERVICE_TENANT \
125
-                                 --email=swift@example.com`
114
+    keystone service-create --name=swift \
115
+                            --type="object-store" \
116
+                            --description="Swift Service"
117
+    SWIFT_USER=$(get_id keystone user-create --name=swift \
118
+                                             --pass="$SERVICE_PASSWORD" \
119
+                                             --tenant_id $SERVICE_TENANT \
120
+                                             --email=swift@example.com)
126 121
     keystone user-role-add --tenant_id $SERVICE_TENANT \
127
-                                 --user $SWIFT_USER \
128
-                                 --role $ADMIN_ROLE
122
+                           --user $SWIFT_USER \
123
+                           --role $ADMIN_ROLE
129 124
 fi
125
+
130 126
 if [[ "$ENABLED_SERVICES" =~ "quantum" ]]; then
131
-    keystone service-create \
132
-                                 --name=quantum \
133
-                                 --type=network \
134
-                                 --description="Quantum Service"
135
-    QUANTUM_USER=`get_id keystone user-create \
136
-                                 --name=quantum \
137
-                                 --pass="$SERVICE_PASSWORD" \
138
-                                 --tenant_id $SERVICE_TENANT \
139
-                                 --email=quantum@example.com`
127
+    keystone service-create --name=quantum \
128
+                            --type=network \
129
+                            --description="Quantum Service"
130
+    QUANTUM_USER=$(get_id keystone user-create --name=quantum \
131
+                                               --pass="$SERVICE_PASSWORD" \
132
+                                               --tenant_id $SERVICE_TENANT \
133
+                                               --email=quantum@example.com)
140 134
     keystone user-role-add --tenant_id $SERVICE_TENANT \
141
-                                 --user $QUANTUM_USER \
142
-                                 --role $ADMIN_ROLE
135
+                           --user $QUANTUM_USER \
136
+                           --role $ADMIN_ROLE
143 137
 fi
144 138
 
145 139
 # create ec2 creds and parse the secret and access key returned
146
-if [[ -n "$KEYSTONE_COMMAND_4375" ]]; then
147
-    RESULT=`keystone ec2-credentials-create --tenant_id=$ADMIN_TENANT --user=$ADMIN_USER`
148
-else
149
-    RESULT=`keystone ec2-create-credentials --tenant_id=$ADMIN_TENANT --user_id=$ADMIN_USER`
150
-fi
151
-    echo `$@ | grep id | awk '{print $4}'`
152
-ADMIN_ACCESS=`echo "$RESULT" | grep access | awk '{print $4}'`
153
-ADMIN_SECRET=`echo "$RESULT" | grep secret | awk '{print $4}'`
140
+RESULT=$(keystone ec2-credentials-create --tenant_id=$ADMIN_TENANT --user=$ADMIN_USER)
141
+ADMIN_ACCESS=$(echo "$RESULT" | awk '/ access / { print $4 }')
142
+ADMIN_SECRET=$(echo "$RESULT" | awk '/ secret / { print $4 }')
154 143
 
155
-
156
-if [[ -n "$KEYSTONE_COMMAND_4375" ]]; then
157
-    RESULT=`keystone ec2-credentials-create --tenant_id=$DEMO_TENANT --user=$DEMO_USER`
158
-else
159
-    RESULT=`keystone ec2-create-credentials --tenant_id=$DEMO_TENANT --user_id=$DEMO_USER`
160
-fi
161
-DEMO_ACCESS=`echo "$RESULT" | grep access | awk '{print $4}'`
162
-DEMO_SECRET=`echo "$RESULT" | grep secret | awk '{print $4}'`
144
+RESULT=$(keystone ec2-credentials-create --tenant_id=$DEMO_TENANT --user=$DEMO_USER)
145
+DEMO_ACCESS=$(echo "$RESULT" | awk '/ access / { print $4 }')
146
+DEMO_SECRET=$(echo "$RESULT" | awk '/ secret / { print $4 }')
163 147
 
164 148
 # write the secret and access to ec2rc
165 149
 cat > $DEVSTACK_DIR/ec2rc <<EOF