Browse code

Exercise quantum v2 api without namespace

Added quantum_v2.sh for quantum v2 api exercise.

Quantum exercise script requires the following settings:
- Q_USE_NAMESPACE=False
- LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver

And the following services enabled:
- quantum, q-svc, q-agt, q-dhcp

Change-Id: I5767f94c94187a4ca0fd189244fa6f5781519ab4

Dan Wendlandt authored on 2012/08/22 21:53:17
Showing 3 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,486 @@
0
+#!/usr/bin/env bash
1
+#
2
+
3
+# **quantum.sh**
4
+
5
+# We will use this test to perform integration testing of nova and
6
+# other components with Quantum.
7
+
8
+echo "*********************************************************************"
9
+echo "Begin DevStack Exercise: $0"
10
+echo "*********************************************************************"
11
+
12
+# This script exits on an error so that errors don't compound and you see
13
+# only the first error that occured.
14
+
15
+set -o errtrace
16
+trap failed ERR
17
+failed() {
18
+    local r=$?
19
+    set +o errtrace
20
+    set +o xtrace
21
+    echo "Failed to execute"
22
+    echo "Starting cleanup..."
23
+    delete_all
24
+    echo "Finished cleanup"
25
+    exit $r
26
+}
27
+
28
+# Print the commands being run so that we can see the command that triggers
29
+# an error.  It is also useful for following allowing as the install occurs.
30
+set -o xtrace
31
+
32
+#------------------------------------------------------------------------------
33
+# Quantum config check
34
+#------------------------------------------------------------------------------
35
+# Warn if quantum is not enabled
36
+if [[ ! "$ENABLED_SERVICES" =~ "q-svc" ]]; then
37
+    echo "WARNING: Running quantum test without enabling quantum"
38
+fi
39
+
40
+#------------------------------------------------------------------------------
41
+# Environment
42
+#------------------------------------------------------------------------------
43
+
44
+# Keep track of the current directory
45
+EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
46
+TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
47
+
48
+# Import common functions
49
+source $TOP_DIR/functions
50
+
51
+# Import configuration
52
+source $TOP_DIR/openrc
53
+
54
+# Import exercise configuration
55
+source $TOP_DIR/exerciserc
56
+
57
+# If quantum is not enabled we exit with exitcode 55 which mean
58
+# exercise is skipped.
59
+is_service_enabled quantum && is_service_enabled q-agt && is_service_enabled q-dhcp || exit 55
60
+
61
+#------------------------------------------------------------------------------
62
+# Test settings for quantum
63
+#------------------------------------------------------------------------------
64
+
65
+TENANTS="DEMO1"
66
+# TODO (nati)_Test public network
67
+#TENANTS="DEMO1,DEMO2"
68
+
69
+PUBLIC_NAME="admin"
70
+DEMO1_NAME="demo1"
71
+DEMO2_NAME="demo2"
72
+
73
+PUBLIC_NUM_NET=1
74
+DEMO1_NUM_NET=1
75
+DEMO2_NUM_NET=2
76
+
77
+PUBLIC_NET1_CIDR="200.0.0.0/24"
78
+DEMO1_NET1_CIDR="190.0.0.0/24"
79
+DEMO2_NET1_CIDR="191.0.0.0/24"
80
+DEMO2_NET2_CIDR="191.0.1.0/24"
81
+
82
+PUBLIC_NET1_GATEWAY="200.0.0.1"
83
+DEMO1_NET1_GATEWAY="190.0.0.1"
84
+DEMO2_NET1_GATEWAY="191.0.0.1"
85
+DEMO2_NET2_GATEWAY="191.0.1.1"
86
+
87
+PUBLIC_NUM_VM=1
88
+DEMO1_NUM_VM=1
89
+DEMO2_NUM_VM=2
90
+
91
+PUBLIC_VM1_NET='admin-net1'
92
+DEMO1_VM1_NET='demo1-net1'
93
+# Multinic settings. But this is fail without nic setting in OS image
94
+DEMO2_VM1_NET='demo2-net1'
95
+DEMO2_VM2_NET='demo2-net2'
96
+
97
+PUBLIC_NUM_ROUTER=1
98
+DEMO1_NUM_ROUTER=1
99
+DEMO2_NUM_ROUTER=1
100
+
101
+PUBLIC_ROUTER1_NET="admin-net1"
102
+DEMO1_ROUTER1_NET="demo1-net1"
103
+DEMO2_ROUTER1_NET="demo2-net1"
104
+
105
+#------------------------------------------------------------------------------
106
+# Keystone settings.
107
+#------------------------------------------------------------------------------
108
+KEYSTONE="keystone"
109
+
110
+#------------------------------------------------------------------------------
111
+# Get a token for clients that don't support service catalog
112
+#------------------------------------------------------------------------------
113
+
114
+# manually create a token by querying keystone (sending JSON data).  Keystone
115
+# returns a token and catalog of endpoints.  We use python to parse the token
116
+# and save it.
117
+
118
+TOKEN=`keystone token-get | grep ' id ' | awk '{print $4}'`
119
+
120
+#------------------------------------------------------------------------------
121
+# Various functions.
122
+#------------------------------------------------------------------------------
123
+function foreach_tenant {
124
+    COMMAND=$1
125
+    for TENANT in ${TENANTS//,/ };do
126
+        eval ${COMMAND//%TENANT%/$TENANT}
127
+    done
128
+}
129
+
130
+function foreach_tenant_resource {
131
+    COMMAND=$1
132
+    RESOURCE=$2
133
+    for TENANT in ${TENANTS//,/ };do
134
+        eval 'NUM=$'"${TENANT}_NUM_$RESOURCE"
135
+        for i in `seq $NUM`;do
136
+            local COMMAND_LOCAL=${COMMAND//%TENANT%/$TENANT}
137
+            COMMAND_LOCAL=${COMMAND_LOCAL//%NUM%/$i}
138
+            eval $COMMAND_LOCAL
139
+        done
140
+    done
141
+}
142
+
143
+function foreach_tenant_vm {
144
+    COMMAND=$1
145
+    foreach_tenant_resource "$COMMAND" 'VM'
146
+}
147
+
148
+function foreach_tenant_net {
149
+    COMMAND=$1
150
+    foreach_tenant_resource "$COMMAND" 'NET'
151
+}
152
+
153
+function get_image_id {
154
+    local IMAGE_ID=$(glance image-list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
155
+    echo "$IMAGE_ID"
156
+}
157
+
158
+function get_tenant_id {
159
+    local TENANT_NAME=$1
160
+    local TENANT_ID=`keystone tenant-list | grep " $TENANT_NAME " | head -n 1 | get_field 1`
161
+    echo "$TENANT_ID"
162
+}
163
+
164
+function get_user_id {
165
+    local USER_NAME=$1
166
+    local USER_ID=`keystone user-list | grep $USER_NAME | awk '{print $2}'`
167
+    echo "$USER_ID"
168
+}
169
+
170
+function get_role_id {
171
+    local ROLE_NAME=$1
172
+    local ROLE_ID=`keystone role-list | grep $ROLE_NAME | awk '{print $2}'`
173
+    echo "$ROLE_ID"
174
+}
175
+
176
+function get_network_id {
177
+    local NETWORK_NAME="$1"
178
+    local NETWORK_ID=`quantum net-list -F id  -- --name=$NETWORK_NAME | awk "NR==4" | awk '{print $2}'`
179
+    echo $NETWORK_ID
180
+}
181
+
182
+function get_flavor_id {
183
+    local INSTANCE_TYPE=$1
184
+    local FLAVOR_ID=`nova flavor-list | grep $INSTANCE_TYPE | awk '{print $2}'`
185
+    echo "$FLAVOR_ID"
186
+}
187
+
188
+function confirm_server_active {
189
+    local VM_UUID=$1
190
+    if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova  --no_cache show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then
191
+    echo "server '$VM_UUID' did not become active!"
192
+    false
193
+fi
194
+
195
+}
196
+
197
+function add_tenant {
198
+    local TENANT=$1
199
+    local USER=$2
200
+
201
+    $KEYSTONE tenant-create --name=$TENANT
202
+    $KEYSTONE user-create --name=$USER --pass=${ADMIN_PASSWORD}
203
+
204
+    local USER_ID=$(get_user_id $USER)
205
+    local TENANT_ID=$(get_tenant_id $TENANT)
206
+
207
+    $KEYSTONE user-role-add --user-id $USER_ID --role-id $(get_role_id Member) --tenant-id $TENANT_ID
208
+}
209
+
210
+function remove_tenant {
211
+    local TENANT=$1
212
+    local TENANT_ID=$(get_tenant_id $TENANT)
213
+
214
+    $KEYSTONE tenant-delete $TENANT_ID
215
+}
216
+
217
+function remove_user {
218
+    local USER=$1
219
+    local USER_ID=$(get_user_id $USER)
220
+
221
+    $KEYSTONE user-delete $USER_ID
222
+}
223
+
224
+
225
+
226
+#------------------------------------------------------------------------------
227
+# "Create" functions
228
+#------------------------------------------------------------------------------
229
+
230
+function create_tenants {
231
+    source $TOP_DIR/openrc admin admin
232
+    add_tenant demo1 demo1 demo1
233
+    add_tenant demo2 demo2 demo2
234
+}
235
+
236
+function delete_tenants_and_users {
237
+    source $TOP_DIR/openrc admin admin
238
+    remove_user demo1
239
+    remove_tenant demo1
240
+    remove_user demo2
241
+    remove_tenant demo2
242
+    echo "removed all tenants"
243
+}
244
+
245
+function create_network {
246
+    local TENANT=$1
247
+    local GATEWAY=$2
248
+    local CIDR=$3
249
+    local NUM=$4
250
+    local EXTRA=$5
251
+    local NET_NAME="${TENANT}-net$NUM"
252
+    local ROUTER_NAME="${TENANT}-router${NUM}"
253
+    source $TOP_DIR/openrc admin admin
254
+    local TENANT_ID=$(get_tenant_id $TENANT)
255
+    source $TOP_DIR/openrc $TENANT $TENANT
256
+    local NET_ID=$(quantum net-create --tenant_id $TENANT_ID $NET_NAME $EXTRA| grep ' id ' | awk '{print $4}' )
257
+    quantum subnet-create --ip_version 4 --tenant_id $TENANT_ID --gateway $GATEWAY $NET_ID $CIDR
258
+    #T0DO(nati) comment out until l3-agent is merged
259
+    #local ROUTER_ID=$($QUANTUM router-create --tenant_id $TENANT_ID $ROUTER_NAME| grep ' id ' | awk '{print $4}' )
260
+    #for NET_NAME in ${NET_NAMES//,/ };do
261
+    #    SUBNET_ID=`get_subnet_id $NET_NAME`
262
+    #    $QUANTUM router-interface-create $NAME --subnet_id $SUBNET_ID
263
+    #done
264
+}
265
+
266
+function create_networks {
267
+    foreach_tenant_net 'create_network ${%TENANT%_NAME} ${%TENANT%_NET%NUM%_GATEWAY} ${%TENANT%_NET%NUM%_CIDR} %NUM% ${%TENANT%_NET%NUM%_EXTRA}'
268
+    #TODO(nati) test security group function
269
+    # allow ICMP for both tenant's security groups
270
+    #source $TOP_DIR/openrc demo1 demo1
271
+    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
272
+    #source $TOP_DIR/openrc demo2 demo2
273
+    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
274
+}
275
+
276
+function create_vm {
277
+    local TENANT=$1
278
+    local NUM=$2
279
+    local NET_NAMES=$3
280
+    source $TOP_DIR/openrc $TENANT $TENANT
281
+    local NIC=""
282
+    for NET_NAME in ${NET_NAMES//,/ };do
283
+        NIC="$NIC --nic net-id="`get_network_id $NET_NAME`
284
+    done
285
+    #TODO (nati) Add multi-nic test
286
+    #TODO (nati) Add public-net test
287
+    local VM_UUID=`nova --no_cache boot --flavor $(get_flavor_id m1.tiny) \
288
+        --image $(get_image_id) \
289
+        $NIC \
290
+        $TENANT-server$NUM | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
291
+    die_if_not_set VM_UUID "Failure launching $TENANT-server$NUM" VM_UUID
292
+    confirm_server_active $VM_UUID
293
+}
294
+
295
+function create_vms {
296
+    foreach_tenant_vm 'create_vm ${%TENANT%_NAME} %NUM% ${%TENANT%_VM%NUM%_NET}'
297
+}
298
+
299
+function ping_ip {
300
+   # Test agent connection.  Assumes namespaces are disabled, and
301
+   # that DHCP is in use, but not L3
302
+   local VM_NAME=$1
303
+   IP=`nova  --no_cache show $VM_NAME | grep 'network' | awk '{print $5}'`
304
+   if ! timeout $BOOT_TIMEOUT sh -c "while ! ping -c1 -w1 $IP; do sleep 1; done"; then
305
+        echo "Could not ping $VM_NAME"
306
+        false
307
+   fi
308
+}
309
+
310
+function check_vm {
311
+    local TENANT=$1
312
+    local NUM=$2
313
+    local VM_NAME="$TENANT-server$NUM"
314
+    source $TOP_DIR/openrc $TENANT $TENANT
315
+    ping_ip $VM_NAME
316
+    # TODO (nati) test ssh connection
317
+    # TODO (nati) test inter connection between vm
318
+    # TODO (nati) test namespace dhcp
319
+    # TODO (nati) test dhcp host routes
320
+    # TODO (nati) test multi-nic
321
+    # TODO (nati) use test-agent
322
+    # TODO (nati) test L3 forwarding
323
+    # TODO (nati) test floating ip
324
+    # TODO (nati) test security group
325
+}
326
+
327
+function check_vms {
328
+    foreach_tenant_vm 'check_vm ${%TENANT%_NAME} %NUM%'
329
+}
330
+
331
+function shutdown_vm {
332
+    local TENANT=$1
333
+    local NUM=$2
334
+    source $TOP_DIR/openrc $TENANT $TENANT
335
+    VM_NAME=${TENANT}-server$NUM
336
+    nova --no_cache delete $VM_NAME
337
+}
338
+
339
+function shutdown_vms {
340
+    foreach_tenant_vm 'shutdown_vm ${%TENANT%_NAME} %NUM%'
341
+    if ! timeout $TERMINATE_TIMEOUT sh -c "while nova --no_cache list | grep -q ACTIVE; do sleep 1; done"; then
342
+        echo "Some VMs failed to shutdown"
343
+        false
344
+    fi
345
+}
346
+
347
+function delete_network {
348
+    local TENANT=$1
349
+    source $TOP_DIR/openrc admin admin
350
+    local TENANT_ID=$(get_tenant_id $TENANT)
351
+    #TODO(nati) comment out until l3-agent merged
352
+    #for res in port subnet net router;do
353
+    for res in port subnet net;do
354
+        quantum ${res}-list -F id -F tenant_id | grep $TENANT_ID | awk '{print $2}' | xargs -I % quantum ${res}-delete %
355
+    done
356
+}
357
+
358
+function delete_networks {
359
+   foreach_tenant 'delete_network ${%TENANT%_NAME}'
360
+   #TODO(nati) add secuirty group check after it is implemented
361
+   # source $TOP_DIR/openrc demo1 demo1
362
+   # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
363
+   # source $TOP_DIR/openrc demo2 demo2
364
+   # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
365
+}
366
+
367
+function create_all {
368
+    create_tenants
369
+    create_networks
370
+    create_vms
371
+}
372
+
373
+function delete_all {
374
+    shutdown_vms
375
+    delete_networks
376
+    delete_tenants_and_users
377
+}
378
+
379
+function all {
380
+    create_all
381
+    check_vms
382
+    delete_all
383
+}
384
+
385
+#------------------------------------------------------------------------------
386
+# Test functions.
387
+#------------------------------------------------------------------------------
388
+function test_functions {
389
+    IMAGE=$(get_image_id)
390
+    echo $IMAGE
391
+
392
+    TENANT_ID=$(get_tenant_id demo)
393
+    echo $TENANT_ID
394
+
395
+    FLAVOR_ID=$(get_flavor_id m1.tiny)
396
+    echo $FLAVOR_ID
397
+
398
+    NETWORK_ID=$(get_network_id admin)
399
+    echo $NETWORK_ID
400
+}
401
+
402
+#------------------------------------------------------------------------------
403
+# Usage and main.
404
+#------------------------------------------------------------------------------
405
+usage() {
406
+    echo "$0: [-h]"
407
+    echo "  -h, --help              Display help message"
408
+    echo "  -t, --tenant            Create tenants"
409
+    echo "  -n, --net               Create networks"
410
+    echo "  -v, --vm                Create vms"
411
+    echo "  -c, --check             Check connection"
412
+    echo "  -x, --delete-tenants    Delete tenants"
413
+    echo "  -y, --delete-nets       Delete networks"
414
+    echo "  -z, --delete-vms        Delete vms"
415
+    echo "  -T, --test              Test functions"
416
+}
417
+
418
+main() {
419
+
420
+    echo Description
421
+    echo
422
+    echo Copyright 2012, Cisco Systems
423
+    echo Copyright 2012, Nicira Networks, Inc.
424
+    echo Copyright 2012, NTT MCL, Inc.
425
+    echo
426
+    echo Please direct any questions to dedutta@cisco.com, dan@nicira.com, nachi@nttmcl.com
427
+    echo
428
+
429
+
430
+    if [ $# -eq 0 ] ; then
431
+        # if no args are provided, run all tests
432
+        all
433
+    else
434
+
435
+        while [ "$1" != "" ]; do
436
+            case $1 in
437
+                -h | --help )   usage
438
+                                exit
439
+                                ;;
440
+                -n | --net )    create_networks
441
+                                exit
442
+                                ;;
443
+                -v | --vm )     create_vms
444
+                                exit
445
+                                ;;
446
+                -t | --tenant ) create_tenants
447
+                                exit
448
+                                ;;
449
+                -c | --check )   check_vms
450
+                                exit
451
+                                ;;
452
+                -T | --test )   test_functions
453
+                                exit
454
+                                ;;
455
+                -x | --delete-tenants ) delete_tenants_and_users
456
+                                exit
457
+                                ;;
458
+                -y | --delete-nets ) delete_networks
459
+                                exit
460
+                                ;;
461
+                -z | --delete-vms ) shutdown_vms
462
+                                exit
463
+                                ;;
464
+                -a | --all )    all
465
+                                exit
466
+                                ;;
467
+                * )             usage
468
+                                exit 1
469
+            esac
470
+            shift
471
+        done
472
+    fi
473
+}
474
+
475
+
476
+#-------------------------------------------------------------------------------
477
+# Kick off script.
478
+#-------------------------------------------------------------------------------
479
+echo $*
480
+main $*
481
+
482
+set +o xtrace
483
+echo "*********************************************************************"
484
+echo "SUCCESS: End DevStack Exercise: $0"
485
+echo "*********************************************************************"
0 486
deleted file mode 100755
... ...
@@ -1,396 +0,0 @@
1
-#!/usr/bin/env bash
2
-#
3
-
4
-# **quantum.sh**
5
-
6
-# We will use this test to perform integration testing of nova and
7
-# other components with Quantum.
8
-
9
-echo "*********************************************************************"
10
-echo "Begin DevStack Exercise: $0"
11
-echo "*********************************************************************"
12
-
13
-# This script exits on an error so that errors don't compound and you see
14
-# only the first error that occured.
15
-set -o errexit
16
-
17
-# Print the commands being run so that we can see the command that triggers
18
-# an error.  It is also useful for following allowing as the install occurs.
19
-set -o xtrace
20
-
21
-#------------------------------------------------------------------------------
22
-# Quantum config check
23
-#------------------------------------------------------------------------------
24
-# Warn if quantum is not enabled
25
-if [[ ! "$ENABLED_SERVICES" =~ "q-svc" ]]; then
26
-    echo "WARNING: Running quantum test without enabling quantum"
27
-fi
28
-
29
-#------------------------------------------------------------------------------
30
-# Environment
31
-#------------------------------------------------------------------------------
32
-
33
-# Keep track of the current directory
34
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
35
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
36
-
37
-# Import common functions
38
-source $TOP_DIR/functions
39
-
40
-# Import configuration
41
-source $TOP_DIR/openrc
42
-
43
-# Import exercise configuration
44
-source $TOP_DIR/exerciserc
45
-
46
-# If quantum is not enabled we exit with exitcode 55 which mean
47
-# exercise is skipped.
48
-is_service_enabled quantum || exit 55
49
-
50
-#------------------------------------------------------------------------------
51
-# Various default parameters.
52
-#------------------------------------------------------------------------------
53
-
54
-# Max time to wait while vm goes from build to active state
55
-ACTIVE_TIMEOUT=${ACTIVE_TIMEOUT:-30}
56
-
57
-# Max time till the vm is bootable
58
-BOOT_TIMEOUT=${BOOT_TIMEOUT:-60}
59
-
60
-# Max time to wait for proper association and dis-association.
61
-ASSOCIATE_TIMEOUT=${ASSOCIATE_TIMEOUT:-15}
62
-
63
-# Max time to wait before delete VMs and delete Networks
64
-VM_NET_DELETE_TIMEOUT=${VM_NET_TIMEOUT:-10}
65
-
66
-# Instance type to create
67
-DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
68
-
69
-# Boot this image, use first AMi image if unset
70
-DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-ami}
71
-
72
-# OVS Hosts
73
-OVS_HOSTS=${DEFAULT_OVS_HOSTS:-"localhost"}
74
-
75
-#------------------------------------------------------------------------------
76
-# Nova settings.
77
-#------------------------------------------------------------------------------
78
-if [ -f /opt/stack/nova/bin/nova-manage ] ; then
79
-    NOVA_MANAGE=/opt/stack/nova/bin/nova-manage
80
-else
81
-    NOVA_MANAGE=/usr/local/bin/nova-manage
82
-NOVA=/usr/local/bin/nova
83
-NOVA_CONF=/etc/nova/nova.conf
84
-
85
-#------------------------------------------------------------------------------
86
-# Mysql settings.
87
-#------------------------------------------------------------------------------
88
-MYSQL="/usr/bin/mysql --skip-column-name --host=$MYSQL_HOST"
89
-
90
-#------------------------------------------------------------------------------
91
-# Keystone settings.
92
-#------------------------------------------------------------------------------
93
-KEYSTONE="keystone"
94
-
95
-#------------------------------------------------------------------------------
96
-# Get a token for clients that don't support service catalog
97
-#------------------------------------------------------------------------------
98
-
99
-# manually create a token by querying keystone (sending JSON data).  Keystone
100
-# returns a token and catalog of endpoints.  We use python to parse the token
101
-# and save it.
102
-
103
-TOKEN=`keystone token-get | grep ' id ' | awk '{print $4}'`
104
-
105
-#------------------------------------------------------------------------------
106
-# Various functions.
107
-#------------------------------------------------------------------------------
108
-function get_image_id {
109
-    local IMAGE_ID=$(glance image-list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
110
-    echo "$IMAGE_ID"
111
-}
112
-
113
-function get_tenant_id {
114
-    local TENANT_NAME=$1
115
-    local TENANT_ID=`keystone tenant-list | grep $TENANT_NAME | awk '{print $2}'`
116
-    echo "$TENANT_ID"
117
-}
118
-
119
-function get_user_id {
120
-    local USER_NAME=$1
121
-    local USER_ID=`keystone user-list | grep $USER_NAME | awk '{print $2}'`
122
-    echo "$USER_ID"
123
-}
124
-
125
-function get_role_id {
126
-    local ROLE_NAME=$1
127
-    local ROLE_ID=`keystone role-list | grep $ROLE_NAME | awk '{print $2}'`
128
-    echo "$ROLE_ID"
129
-}
130
-
131
-# TODO: (Debo) Change Quantum client CLI and then remove the MYSQL stuff.
132
-function get_network_id {
133
-    local NETWORK_NAME=$1
134
-    local QUERY="select uuid from networks where label='$NETWORK_NAME'"
135
-    local NETWORK_ID=`echo $QUERY | $MYSQL -u root -p$MYSQL_PASSWORD nova`
136
-    echo "$NETWORK_ID"
137
-}
138
-
139
-function get_flavor_id {
140
-    local INSTANCE_TYPE=$1
141
-    local FLAVOR_ID=`nova flavor-list | grep $INSTANCE_TYPE | awk '{print $2}'`
142
-    echo "$FLAVOR_ID"
143
-}
144
-
145
-function add_tenant {
146
-    local TENANT=$1
147
-    local USER=$3
148
-    local PASSWORD=$2
149
-
150
-    $KEYSTONE tenant-create --name=$TENANT
151
-    $KEYSTONE user-create --name=$USER --pass=${PASSWORD}
152
-
153
-    local USER_ID=$(get_user_id $USER)
154
-    local TENANT_ID=$(get_tenant_id $TENANT)
155
-
156
-    $KEYSTONE user-role-add --user $USER_ID --role $(get_role_id Member) --tenant_id $TENANT_ID
157
-    $KEYSTONE user-role-add --user $USER_ID --role $(get_role_id admin) --tenant_id $TENANT_ID
158
-    $KEYSTONE user-role-add --user $USER_ID --role $(get_role_id anotherrole) --tenant_id $TENANT_ID
159
-    #$KEYSTONE user-role-add --user $USER_ID --role $(get_role_id sysadmin) --tenant_id $TENANT_ID
160
-    #$KEYSTONE user-role-add --user $USER_ID --role $(get_role_id netadmin) --tenant_id $TENANT_ID
161
-}
162
-
163
-function remove_tenant {
164
-    local TENANT=$1
165
-    local TENANT_ID=$(get_tenant_id $TENANT)
166
-
167
-    $KEYSTONE tenant-delete $TENANT_ID
168
-}
169
-
170
-function remove_user {
171
-    local USER=$1
172
-    local USER_ID=$(get_user_id $USER)
173
-
174
-    $KEYSTONE user-delete $USER_ID
175
-}
176
-
177
-
178
-#------------------------------------------------------------------------------
179
-# "Create" functions
180
-#------------------------------------------------------------------------------
181
-
182
-function create_tenants {
183
-    add_tenant demo1 nova demo1
184
-    add_tenant demo2 nova demo2
185
-}
186
-
187
-function delete_tenants_and_users {
188
-    remove_tenant demo1
189
-    remove_tenant demo2
190
-    remove_user demo1
191
-    remove_user demo2
192
-}
193
-
194
-function create_networks {
195
-    $NOVA_MANAGE --flagfile=$NOVA_CONF network create \
196
-        --label=public-net1 \
197
-        --fixed_range_v4=11.0.0.0/24
198
-
199
-    $NOVA_MANAGE --flagfile=$NOVA_CONF network create \
200
-        --label=demo1-net1 \
201
-        --fixed_range_v4=12.0.0.0/24 \
202
-        --project_id=$(get_tenant_id demo1) \
203
-        --priority=1
204
-
205
-    $NOVA_MANAGE --flagfile=$NOVA_CONF network create \
206
-        --label=demo2-net1 \
207
-        --fixed_range_v4=13.0.0.0/24 \
208
-        --project_id=$(get_tenant_id demo2) \
209
-        --priority=1
210
-}
211
-
212
-function create_vms {
213
-    PUBLIC_NET1_ID=$(get_network_id public-net1)
214
-    DEMO1_NET1_ID=$(get_network_id demo1-net1)
215
-    DEMO2_NET1_ID=$(get_network_id demo2-net1)
216
-
217
-    export OS_TENANT_NAME=demo1
218
-    export OS_USERNAME=demo1
219
-    export OS_PASSWORD=nova
220
-    VM_UUID1=`$NOVA boot --flavor $(get_flavor_id m1.tiny) \
221
-        --image $(get_image_id) \
222
-        --nic net-id=$PUBLIC_NET1_ID \
223
-        --nic net-id=$DEMO1_NET1_ID \
224
-        demo1-server1 | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
225
-    die_if_not_set VM_UUID1 "Failure launching demo1-server1"
226
-
227
-    export OS_TENANT_NAME=demo2
228
-    export OS_USERNAME=demo2
229
-    export OS_PASSWORD=nova
230
-    VM_UUID2=`$NOVA boot --flavor $(get_flavor_id m1.tiny) \
231
-        --image $(get_image_id) \
232
-        --nic net-id=$PUBLIC_NET1_ID \
233
-        --nic net-id=$DEMO2_NET1_ID \
234
-        demo2-server1 | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
235
-    die_if_not_set VM_UUID2 "Failure launching demo2-server1"
236
-
237
-    VM_UUID3=`$NOVA boot --flavor $(get_flavor_id m1.tiny) \
238
-        --image $(get_image_id) \
239
-        --nic net-id=$PUBLIC_NET1_ID \
240
-        --nic net-id=$DEMO2_NET1_ID \
241
-        demo2-server2 | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
242
-    die_if_not_set VM_UUID3 "Failure launching demo2-server2"
243
-
244
-}
245
-
246
-function ping_vms {
247
-
248
-    echo "Sleeping a bit let the VMs come up"
249
-    sleep $ACTIVE_TIMEOUT
250
-
251
-    export OS_TENANT_NAME=demo1
252
-    export OS_USERNAME=demo1
253
-    export OS_PASSWORD=nova
254
-    # get the IP of the servers
255
-    PUBLIC_IP1=`nova show $VM_UUID1 | grep public-net1 | awk '{print $5}'`
256
-    export OS_TENANT_NAME=demo2
257
-    export OS_USERNAME=demo2
258
-    export OS_PASSWORD=nova
259
-    PUBLIC_IP2=`nova show $VM_UUID2 | grep public-net1 | awk '{print $5}'`
260
-
261
-    MULTI_HOST=`trueorfalse False $MULTI_HOST`
262
-    if [ "$MULTI_HOST" = "False" ]; then
263
-        # sometimes the first ping fails (10 seconds isn't enough time for the VM's
264
-        # network to respond?), so let's ping for a default of 15 seconds with a
265
-        # timeout of a second for each ping.
266
-        if ! timeout $BOOT_TIMEOUT sh -c "while ! ping -c1 -w1 $PUBLIC_IP1; do sleep 1; done"; then
267
-            echo "Couldn't ping server"
268
-            exit 1
269
-        fi
270
-        if ! timeout $BOOT_TIMEOUT sh -c "while ! ping -c1 -w1 $PUBLIC_IP2; do sleep 1; done"; then
271
-            echo "Couldn't ping server"
272
-            exit 1
273
-        fi
274
-    else
275
-        # On a multi-host system, without vm net access, do a sleep to wait for the boot
276
-        sleep $BOOT_TIMEOUT
277
-    fi
278
-}
279
-
280
-function shutdown_vms {
281
-    export OS_TENANT_NAME=demo1
282
-    export OS_USERNAME=demo1
283
-    export OS_PASSWORD=nova
284
-    nova delete $VM_UUID1
285
-
286
-    export OS_TENANT_NAME=demo2
287
-    export OS_USERNAME=demo2
288
-    export OS_PASSWORD=nova
289
-    nova delete $VM_UUID2
290
-    nova delete $VM_UUID3
291
-
292
-}
293
-
294
-function delete_networks {
295
-    PUBLIC_NET1_ID=$(get_network_id public-net1)
296
-    DEMO1_NET1_ID=$(get_network_id demo1-net1)
297
-    DEMO2_NET1_ID=$(get_network_id demo2-net1)
298
-    nova-manage network delete --uuid=$PUBLIC_NET1_ID
299
-    nova-manage network delete --uuid=$DEMO1_NET1_ID
300
-    nova-manage network delete --uuid=$DEMO2_NET1_ID
301
-}
302
-
303
-function all {
304
-    create_tenants
305
-    create_networks
306
-    create_vms
307
-    ping_vms
308
-    shutdown_vms
309
-    delete_networks
310
-    delete_tenants_and_users
311
-}
312
-
313
-#------------------------------------------------------------------------------
314
-# Test functions.
315
-#------------------------------------------------------------------------------
316
-function test_functions {
317
-    IMAGE=$(get_image_id)
318
-    echo $IMAGE
319
-
320
-    TENANT_ID=$(get_tenant_id demo)
321
-    echo $TENANT_ID
322
-
323
-    FLAVOR_ID=$(get_flavor_id m1.tiny)
324
-    echo $FLAVOR_ID
325
-
326
-    NETWORK_ID=$(get_network_id private)
327
-    echo $NETWORK_ID
328
-}
329
-
330
-#------------------------------------------------------------------------------
331
-# Usage and main.
332
-#------------------------------------------------------------------------------
333
-usage() {
334
-    echo "$0: [-h]"
335
-    echo "  -h, --help     Display help message"
336
-    echo "  -n, --net      Create networks"
337
-    echo "  -v, --vm       Create vms"
338
-    echo "  -t, --tenant   Create tenants"
339
-    echo "  -T, --test     Test functions"
340
-}
341
-
342
-main() {
343
-    if [ $# -eq 0 ] ; then
344
-        usage
345
-        exit
346
-    fi
347
-
348
-    echo Description
349
-    echo
350
-    echo Copyright 2012, Cisco Systems
351
-    echo Copyright 2012, Nicira Networks, Inc.
352
-    echo
353
-    echo Please direct any questions to dedutta@cisco.com, dlapsley@nicira.com
354
-    echo
355
-
356
-    while [ "$1" != "" ]; do
357
-        case $1 in
358
-            -h | --help )   usage
359
-                            exit
360
-                            ;;
361
-            -n | --net )    create_networks
362
-                            exit
363
-                            ;;
364
-            -v | --vm )     create_vms
365
-                            exit
366
-                            ;;
367
-            -t | --tenant ) create_tenants
368
-                            exit
369
-                            ;;
370
-            -p | --ping )   ping_vms
371
-                            exit
372
-                            ;;
373
-            -T | --test )   test_functions
374
-                            exit
375
-                            ;;
376
-            -a | --all )    all
377
-                            exit
378
-                            ;;
379
-            * )             usage
380
-                            exit 1
381
-        esac
382
-        shift
383
-    done
384
-}
385
-
386
-
387
-#-------------------------------------------------------------------------------
388
-# Kick off script.
389
-#-------------------------------------------------------------------------------
390
-echo $*
391
-main -a
392
-
393
-set +o xtrace
394
-echo "*********************************************************************"
395
-echo "SUCCESS: End DevStack Exercise: $0"
396
-echo "*********************************************************************"
... ...
@@ -269,7 +269,8 @@ Q_HOST=${Q_HOST:-localhost}
269 269
 Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-quantum}
270 270
 # Default auth strategy
271 271
 Q_AUTH_STRATEGY=${Q_AUTH_STRATEGY:-keystone}
272
-
272
+# Use namespace or not
273
+Q_USE_NAMESPACE=${Q_USE_NAMESPACE:-True}
273 274
 
274 275
 # Name of the lvm volume group to use/create for iscsi volumes
275 276
 VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
... ...
@@ -1204,6 +1205,7 @@ if is_service_enabled q-dhcp; then
1204 1204
     iniset $Q_DHCP_CONF_FILE DEFAULT verbose True
1205 1205
     # Set debug
1206 1206
     iniset $Q_DHCP_CONF_FILE DEFAULT debug True
1207
+    iniset $Q_DHCP_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
1207 1208
 
1208 1209
     # Update database
1209 1210
     iniset $Q_DHCP_CONF_FILE DEFAULT db_connection "mysql:\/\/$MYSQL_USER:$MYSQL_PASSWORD@$MYSQL_HOST\/$Q_DB_NAME?charset=utf8"