Browse code

More neutron renames

Rename quantum-adv-test.sh and the package prereq files in files/*/quantum

Change-Id: I4dab635c2ae79f1f42a9cfdadbf7a4d06cf2b925

Dean Troyer authored on 2013/07/09 05:06:33
Showing 8 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,457 @@
0
+#!/usr/bin/env bash
1
+#
2
+
3
+# **neutron-adv-test.sh**
4
+
5
+# Perform integration testing of Nova and other components with Neutron.
6
+
7
+echo "*********************************************************************"
8
+echo "Begin DevStack Exercise: $0"
9
+echo "*********************************************************************"
10
+
11
+# This script exits on an error so that errors don't compound and you see
12
+# only the first error that occurred.
13
+
14
+set -o errtrace
15
+
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
+# Environment
33
+# -----------
34
+
35
+# Keep track of the current directory
36
+EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
37
+TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
38
+
39
+# Import common functions
40
+source $TOP_DIR/functions
41
+
42
+# Import configuration
43
+source $TOP_DIR/openrc
44
+
45
+# Import neutron functions
46
+source $TOP_DIR/lib/neutron
47
+
48
+# If neutron is not enabled we exit with exitcode 55, which means exercise is skipped.
49
+neutron_plugin_check_adv_test_requirements || exit 55
50
+
51
+# Import exercise configuration
52
+source $TOP_DIR/exerciserc
53
+
54
+# Neutron Settings
55
+# ----------------
56
+
57
+TENANTS="DEMO1"
58
+# TODO (nati)_Test public network
59
+#TENANTS="DEMO1,DEMO2"
60
+
61
+PUBLIC_NAME="admin"
62
+DEMO1_NAME="demo1"
63
+DEMO2_NAME="demo2"
64
+
65
+PUBLIC_NUM_NET=1
66
+DEMO1_NUM_NET=1
67
+DEMO2_NUM_NET=2
68
+
69
+PUBLIC_NET1_CIDR="200.0.0.0/24"
70
+DEMO1_NET1_CIDR="10.10.0.0/24"
71
+DEMO2_NET1_CIDR="10.20.0.0/24"
72
+DEMO2_NET2_CIDR="10.20.1.0/24"
73
+
74
+PUBLIC_NET1_GATEWAY="200.0.0.1"
75
+DEMO1_NET1_GATEWAY="10.10.0.1"
76
+DEMO2_NET1_GATEWAY="10.20.0.1"
77
+DEMO2_NET2_GATEWAY="10.20.1.1"
78
+
79
+PUBLIC_NUM_VM=1
80
+DEMO1_NUM_VM=1
81
+DEMO2_NUM_VM=2
82
+
83
+PUBLIC_VM1_NET='admin-net1'
84
+DEMO1_VM1_NET='demo1-net1'
85
+# Multinic settings. But this is fail without nic setting in OS image
86
+DEMO2_VM1_NET='demo2-net1'
87
+DEMO2_VM2_NET='demo2-net2'
88
+
89
+PUBLIC_NUM_ROUTER=1
90
+DEMO1_NUM_ROUTER=1
91
+DEMO2_NUM_ROUTER=1
92
+
93
+PUBLIC_ROUTER1_NET="admin-net1"
94
+DEMO1_ROUTER1_NET="demo1-net1"
95
+DEMO2_ROUTER1_NET="demo2-net1"
96
+
97
+KEYSTONE="keystone"
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
+# Various functions
106
+# -----------------
107
+
108
+function foreach_tenant {
109
+    COMMAND=$1
110
+    for TENANT in ${TENANTS//,/ };do
111
+        eval ${COMMAND//%TENANT%/$TENANT}
112
+    done
113
+}
114
+
115
+function foreach_tenant_resource {
116
+    COMMAND=$1
117
+    RESOURCE=$2
118
+    for TENANT in ${TENANTS//,/ };do
119
+        eval 'NUM=$'"${TENANT}_NUM_$RESOURCE"
120
+        for i in `seq $NUM`;do
121
+            local COMMAND_LOCAL=${COMMAND//%TENANT%/$TENANT}
122
+            COMMAND_LOCAL=${COMMAND_LOCAL//%NUM%/$i}
123
+            eval $COMMAND_LOCAL
124
+        done
125
+    done
126
+}
127
+
128
+function foreach_tenant_vm {
129
+    COMMAND=$1
130
+    foreach_tenant_resource "$COMMAND" 'VM'
131
+}
132
+
133
+function foreach_tenant_net {
134
+    COMMAND=$1
135
+    foreach_tenant_resource "$COMMAND" 'NET'
136
+}
137
+
138
+function get_image_id {
139
+    local IMAGE_ID=$(glance image-list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
140
+    echo "$IMAGE_ID"
141
+}
142
+
143
+function get_tenant_id {
144
+    local TENANT_NAME=$1
145
+    local TENANT_ID=`keystone tenant-list | grep " $TENANT_NAME " | head -n 1 | get_field 1`
146
+    echo "$TENANT_ID"
147
+}
148
+
149
+function get_user_id {
150
+    local USER_NAME=$1
151
+    local USER_ID=`keystone user-list | grep $USER_NAME | awk '{print $2}'`
152
+    echo "$USER_ID"
153
+}
154
+
155
+function get_role_id {
156
+    local ROLE_NAME=$1
157
+    local ROLE_ID=`keystone role-list | grep $ROLE_NAME | awk '{print $2}'`
158
+    echo "$ROLE_ID"
159
+}
160
+
161
+function get_network_id {
162
+    local NETWORK_NAME="$1"
163
+    local NETWORK_ID=`neutron net-list -F id  -- --name=$NETWORK_NAME | awk "NR==4" | awk '{print $2}'`
164
+    echo $NETWORK_ID
165
+}
166
+
167
+function get_flavor_id {
168
+    local INSTANCE_TYPE=$1
169
+    local FLAVOR_ID=`nova flavor-list | grep $INSTANCE_TYPE | awk '{print $2}'`
170
+    echo "$FLAVOR_ID"
171
+}
172
+
173
+function confirm_server_active {
174
+    local VM_UUID=$1
175
+    if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then
176
+        echo "server '$VM_UUID' did not become active!"
177
+        false
178
+    fi
179
+}
180
+
181
+function add_tenant {
182
+    local TENANT=$1
183
+    local USER=$2
184
+
185
+    $KEYSTONE tenant-create --name=$TENANT
186
+    $KEYSTONE user-create --name=$USER --pass=${ADMIN_PASSWORD}
187
+
188
+    local USER_ID=$(get_user_id $USER)
189
+    local TENANT_ID=$(get_tenant_id $TENANT)
190
+
191
+    $KEYSTONE user-role-add --user-id $USER_ID --role-id $(get_role_id Member) --tenant-id $TENANT_ID
192
+}
193
+
194
+function remove_tenant {
195
+    local TENANT=$1
196
+    local TENANT_ID=$(get_tenant_id $TENANT)
197
+    $KEYSTONE tenant-delete $TENANT_ID
198
+}
199
+
200
+function remove_user {
201
+    local USER=$1
202
+    local USER_ID=$(get_user_id $USER)
203
+    $KEYSTONE user-delete $USER_ID
204
+}
205
+
206
+function create_tenants {
207
+    source $TOP_DIR/openrc admin admin
208
+    add_tenant demo1 demo1 demo1
209
+    add_tenant demo2 demo2 demo2
210
+    source $TOP_DIR/openrc demo demo
211
+}
212
+
213
+function delete_tenants_and_users {
214
+    source $TOP_DIR/openrc admin admin
215
+    remove_user demo1
216
+    remove_tenant demo1
217
+    remove_user demo2
218
+    remove_tenant demo2
219
+    echo "removed all tenants"
220
+    source $TOP_DIR/openrc demo demo
221
+}
222
+
223
+function create_network {
224
+    local TENANT=$1
225
+    local GATEWAY=$2
226
+    local CIDR=$3
227
+    local NUM=$4
228
+    local EXTRA=$5
229
+    local NET_NAME="${TENANT}-net$NUM"
230
+    local ROUTER_NAME="${TENANT}-router${NUM}"
231
+    source $TOP_DIR/openrc admin admin
232
+    local TENANT_ID=$(get_tenant_id $TENANT)
233
+    source $TOP_DIR/openrc $TENANT $TENANT
234
+    local NET_ID=$(neutron net-create --tenant_id $TENANT_ID $NET_NAME $EXTRA| grep ' id ' | awk '{print $4}' )
235
+    neutron subnet-create --ip_version 4 --tenant_id $TENANT_ID --gateway $GATEWAY $NET_ID $CIDR
236
+    neutron-debug probe-create --device-owner compute $NET_ID
237
+    source $TOP_DIR/openrc demo demo
238
+}
239
+
240
+function create_networks {
241
+    foreach_tenant_net 'create_network ${%TENANT%_NAME} ${%TENANT%_NET%NUM%_GATEWAY} ${%TENANT%_NET%NUM%_CIDR} %NUM% ${%TENANT%_NET%NUM%_EXTRA}'
242
+    #TODO(nati) test security group function
243
+    # allow ICMP for both tenant's security groups
244
+    #source $TOP_DIR/openrc demo1 demo1
245
+    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
246
+    #source $TOP_DIR/openrc demo2 demo2
247
+    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
248
+}
249
+
250
+function create_vm {
251
+    local TENANT=$1
252
+    local NUM=$2
253
+    local NET_NAMES=$3
254
+    source $TOP_DIR/openrc $TENANT $TENANT
255
+    local NIC=""
256
+    for NET_NAME in ${NET_NAMES//,/ };do
257
+        NIC="$NIC --nic net-id="`get_network_id $NET_NAME`
258
+    done
259
+    #TODO (nati) Add multi-nic test
260
+    #TODO (nati) Add public-net test
261
+    local VM_UUID=`nova boot --flavor $(get_flavor_id m1.tiny) \
262
+        --image $(get_image_id) \
263
+        $NIC \
264
+        $TENANT-server$NUM | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
265
+    die_if_not_set $LINENO VM_UUID "Failure launching $TENANT-server$NUM"
266
+    confirm_server_active $VM_UUID
267
+}
268
+
269
+function create_vms {
270
+    foreach_tenant_vm 'create_vm ${%TENANT%_NAME} %NUM% ${%TENANT%_VM%NUM%_NET}'
271
+}
272
+
273
+function ping_ip {
274
+   # Test agent connection.  Assumes namespaces are disabled, and
275
+   # that DHCP is in use, but not L3
276
+   local VM_NAME=$1
277
+   local NET_NAME=$2
278
+   IP=`nova show $VM_NAME | grep 'network' | awk '{print $5}'`
279
+   ping_check $NET_NAME $IP $BOOT_TIMEOUT
280
+}
281
+
282
+function check_vm {
283
+    local TENANT=$1
284
+    local NUM=$2
285
+    local VM_NAME="$TENANT-server$NUM"
286
+    local NET_NAME=$3
287
+    source $TOP_DIR/openrc $TENANT $TENANT
288
+    ping_ip $VM_NAME $NET_NAME
289
+    # TODO (nati) test ssh connection
290
+    # TODO (nati) test inter connection between vm
291
+    # TODO (nati) test dhcp host routes
292
+    # TODO (nati) test multi-nic
293
+}
294
+
295
+function check_vms {
296
+    foreach_tenant_vm 'check_vm ${%TENANT%_NAME} %NUM% ${%TENANT%_VM%NUM%_NET}'
297
+}
298
+
299
+function shutdown_vm {
300
+    local TENANT=$1
301
+    local NUM=$2
302
+    source $TOP_DIR/openrc $TENANT $TENANT
303
+    VM_NAME=${TENANT}-server$NUM
304
+    nova delete $VM_NAME
305
+}
306
+
307
+function shutdown_vms {
308
+    foreach_tenant_vm 'shutdown_vm ${%TENANT%_NAME} %NUM%'
309
+    if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q ACTIVE; do sleep 1; done"; then
310
+        die $LINENO "Some VMs failed to shutdown"
311
+    fi
312
+}
313
+
314
+function delete_network {
315
+    local TENANT=$1
316
+    local NUM=$2
317
+    local NET_NAME="${TENANT}-net$NUM"
318
+    source $TOP_DIR/openrc admin admin
319
+    local TENANT_ID=$(get_tenant_id $TENANT)
320
+    #TODO(nati) comment out until l3-agent merged
321
+    #for res in port subnet net router;do
322
+    for net_id in `neutron net-list -c id -c name | grep $NET_NAME | awk '{print $2}'`;do
323
+        delete_probe $net_id
324
+        neutron subnet-list | grep $net_id | awk '{print $2}' | xargs -I% neutron subnet-delete %
325
+        neutron net-delete $net_id
326
+    done
327
+    source $TOP_DIR/openrc demo demo
328
+}
329
+
330
+function delete_networks {
331
+   foreach_tenant_net 'delete_network ${%TENANT%_NAME} %NUM%'
332
+   #TODO(nati) add secuirty group check after it is implemented
333
+   # source $TOP_DIR/openrc demo1 demo1
334
+   # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
335
+   # source $TOP_DIR/openrc demo2 demo2
336
+   # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
337
+}
338
+
339
+function create_all {
340
+    create_tenants
341
+    create_networks
342
+    create_vms
343
+}
344
+
345
+function delete_all {
346
+    shutdown_vms
347
+    delete_networks
348
+    delete_tenants_and_users
349
+}
350
+
351
+function all {
352
+    create_all
353
+    check_vms
354
+    delete_all
355
+}
356
+
357
+# Test functions
358
+# --------------
359
+
360
+function test_functions {
361
+    IMAGE=$(get_image_id)
362
+    echo $IMAGE
363
+
364
+    TENANT_ID=$(get_tenant_id demo)
365
+    echo $TENANT_ID
366
+
367
+    FLAVOR_ID=$(get_flavor_id m1.tiny)
368
+    echo $FLAVOR_ID
369
+
370
+    NETWORK_ID=$(get_network_id admin)
371
+    echo $NETWORK_ID
372
+}
373
+
374
+# Usage and main
375
+# --------------
376
+
377
+usage() {
378
+    echo "$0: [-h]"
379
+    echo "  -h, --help              Display help message"
380
+    echo "  -t, --tenant            Create tenants"
381
+    echo "  -n, --net               Create networks"
382
+    echo "  -v, --vm                Create vms"
383
+    echo "  -c, --check             Check connection"
384
+    echo "  -x, --delete-tenants    Delete tenants"
385
+    echo "  -y, --delete-nets       Delete networks"
386
+    echo "  -z, --delete-vms        Delete vms"
387
+    echo "  -T, --test              Test functions"
388
+}
389
+
390
+main() {
391
+
392
+    echo Description
393
+    echo
394
+    echo Copyright 2012, Cisco Systems
395
+    echo Copyright 2012, Nicira Networks, Inc.
396
+    echo Copyright 2012, NTT MCL, Inc.
397
+    echo
398
+    echo Please direct any questions to dedutta@cisco.com, dan@nicira.com, nachi@nttmcl.com
399
+    echo
400
+
401
+
402
+    if [ $# -eq 0 ] ; then
403
+        # if no args are provided, run all tests
404
+        all
405
+    else
406
+
407
+        while [ "$1" != "" ]; do
408
+            case $1 in
409
+                -h | --help )   usage
410
+                                exit
411
+                                ;;
412
+                -n | --net )    create_networks
413
+                                exit
414
+                                ;;
415
+                -v | --vm )     create_vms
416
+                                exit
417
+                                ;;
418
+                -t | --tenant ) create_tenants
419
+                                exit
420
+                                ;;
421
+                -c | --check )   check_vms
422
+                                exit
423
+                                ;;
424
+                -T | --test )   test_functions
425
+                                exit
426
+                                ;;
427
+                -x | --delete-tenants ) delete_tenants_and_users
428
+                                exit
429
+                                ;;
430
+                -y | --delete-nets ) delete_networks
431
+                                exit
432
+                                ;;
433
+                -z | --delete-vms ) shutdown_vms
434
+                                exit
435
+                                ;;
436
+                -a | --all )    all
437
+                                exit
438
+                                ;;
439
+                * )             usage
440
+                                exit 1
441
+            esac
442
+            shift
443
+        done
444
+    fi
445
+}
446
+
447
+# Kick off script
448
+# ---------------
449
+
450
+echo $*
451
+main $*
452
+
453
+set +o xtrace
454
+echo "*********************************************************************"
455
+echo "SUCCESS: End DevStack Exercise: $0"
456
+echo "*********************************************************************"
0 457
deleted file mode 100755
... ...
@@ -1,457 +0,0 @@
1
-#!/usr/bin/env bash
2
-#
3
-
4
-# **neutron-adv-test.sh**
5
-
6
-# Perform integration testing of Nova and other components with Neutron.
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 occurred.
14
-
15
-set -o errtrace
16
-
17
-trap failed ERR
18
-failed() {
19
-    local r=$?
20
-    set +o errtrace
21
-    set +o xtrace
22
-    echo "Failed to execute"
23
-    echo "Starting cleanup..."
24
-    delete_all
25
-    echo "Finished cleanup"
26
-    exit $r
27
-}
28
-
29
-# Print the commands being run so that we can see the command that triggers
30
-# an error.  It is also useful for following allowing as the install occurs.
31
-set -o xtrace
32
-
33
-# Environment
34
-# -----------
35
-
36
-# Keep track of the current directory
37
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
38
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
39
-
40
-# Import common functions
41
-source $TOP_DIR/functions
42
-
43
-# Import configuration
44
-source $TOP_DIR/openrc
45
-
46
-# Import neutron functions
47
-source $TOP_DIR/lib/neutron
48
-
49
-# If neutron is not enabled we exit with exitcode 55, which means exercise is skipped.
50
-neutron_plugin_check_adv_test_requirements || exit 55
51
-
52
-# Import exercise configuration
53
-source $TOP_DIR/exerciserc
54
-
55
-# Neutron Settings
56
-# ----------------
57
-
58
-TENANTS="DEMO1"
59
-# TODO (nati)_Test public network
60
-#TENANTS="DEMO1,DEMO2"
61
-
62
-PUBLIC_NAME="admin"
63
-DEMO1_NAME="demo1"
64
-DEMO2_NAME="demo2"
65
-
66
-PUBLIC_NUM_NET=1
67
-DEMO1_NUM_NET=1
68
-DEMO2_NUM_NET=2
69
-
70
-PUBLIC_NET1_CIDR="200.0.0.0/24"
71
-DEMO1_NET1_CIDR="10.10.0.0/24"
72
-DEMO2_NET1_CIDR="10.20.0.0/24"
73
-DEMO2_NET2_CIDR="10.20.1.0/24"
74
-
75
-PUBLIC_NET1_GATEWAY="200.0.0.1"
76
-DEMO1_NET1_GATEWAY="10.10.0.1"
77
-DEMO2_NET1_GATEWAY="10.20.0.1"
78
-DEMO2_NET2_GATEWAY="10.20.1.1"
79
-
80
-PUBLIC_NUM_VM=1
81
-DEMO1_NUM_VM=1
82
-DEMO2_NUM_VM=2
83
-
84
-PUBLIC_VM1_NET='admin-net1'
85
-DEMO1_VM1_NET='demo1-net1'
86
-# Multinic settings. But this is fail without nic setting in OS image
87
-DEMO2_VM1_NET='demo2-net1'
88
-DEMO2_VM2_NET='demo2-net2'
89
-
90
-PUBLIC_NUM_ROUTER=1
91
-DEMO1_NUM_ROUTER=1
92
-DEMO2_NUM_ROUTER=1
93
-
94
-PUBLIC_ROUTER1_NET="admin-net1"
95
-DEMO1_ROUTER1_NET="demo1-net1"
96
-DEMO2_ROUTER1_NET="demo2-net1"
97
-
98
-KEYSTONE="keystone"
99
-
100
-# Manually create a token by querying keystone (sending JSON data).  Keystone
101
-# returns a token and catalog of endpoints.  We use python to parse the token
102
-# and save it.
103
-
104
-TOKEN=`keystone token-get | grep ' id ' | awk '{print $4}'`
105
-
106
-# Various functions
107
-# -----------------
108
-
109
-function foreach_tenant {
110
-    COMMAND=$1
111
-    for TENANT in ${TENANTS//,/ };do
112
-        eval ${COMMAND//%TENANT%/$TENANT}
113
-    done
114
-}
115
-
116
-function foreach_tenant_resource {
117
-    COMMAND=$1
118
-    RESOURCE=$2
119
-    for TENANT in ${TENANTS//,/ };do
120
-        eval 'NUM=$'"${TENANT}_NUM_$RESOURCE"
121
-        for i in `seq $NUM`;do
122
-            local COMMAND_LOCAL=${COMMAND//%TENANT%/$TENANT}
123
-            COMMAND_LOCAL=${COMMAND_LOCAL//%NUM%/$i}
124
-            eval $COMMAND_LOCAL
125
-        done
126
-    done
127
-}
128
-
129
-function foreach_tenant_vm {
130
-    COMMAND=$1
131
-    foreach_tenant_resource "$COMMAND" 'VM'
132
-}
133
-
134
-function foreach_tenant_net {
135
-    COMMAND=$1
136
-    foreach_tenant_resource "$COMMAND" 'NET'
137
-}
138
-
139
-function get_image_id {
140
-    local IMAGE_ID=$(glance image-list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
141
-    echo "$IMAGE_ID"
142
-}
143
-
144
-function get_tenant_id {
145
-    local TENANT_NAME=$1
146
-    local TENANT_ID=`keystone tenant-list | grep " $TENANT_NAME " | head -n 1 | get_field 1`
147
-    echo "$TENANT_ID"
148
-}
149
-
150
-function get_user_id {
151
-    local USER_NAME=$1
152
-    local USER_ID=`keystone user-list | grep $USER_NAME | awk '{print $2}'`
153
-    echo "$USER_ID"
154
-}
155
-
156
-function get_role_id {
157
-    local ROLE_NAME=$1
158
-    local ROLE_ID=`keystone role-list | grep $ROLE_NAME | awk '{print $2}'`
159
-    echo "$ROLE_ID"
160
-}
161
-
162
-function get_network_id {
163
-    local NETWORK_NAME="$1"
164
-    local NETWORK_ID=`neutron net-list -F id  -- --name=$NETWORK_NAME | awk "NR==4" | awk '{print $2}'`
165
-    echo $NETWORK_ID
166
-}
167
-
168
-function get_flavor_id {
169
-    local INSTANCE_TYPE=$1
170
-    local FLAVOR_ID=`nova flavor-list | grep $INSTANCE_TYPE | awk '{print $2}'`
171
-    echo "$FLAVOR_ID"
172
-}
173
-
174
-function confirm_server_active {
175
-    local VM_UUID=$1
176
-    if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then
177
-        echo "server '$VM_UUID' did not become active!"
178
-        false
179
-    fi
180
-}
181
-
182
-function add_tenant {
183
-    local TENANT=$1
184
-    local USER=$2
185
-
186
-    $KEYSTONE tenant-create --name=$TENANT
187
-    $KEYSTONE user-create --name=$USER --pass=${ADMIN_PASSWORD}
188
-
189
-    local USER_ID=$(get_user_id $USER)
190
-    local TENANT_ID=$(get_tenant_id $TENANT)
191
-
192
-    $KEYSTONE user-role-add --user-id $USER_ID --role-id $(get_role_id Member) --tenant-id $TENANT_ID
193
-}
194
-
195
-function remove_tenant {
196
-    local TENANT=$1
197
-    local TENANT_ID=$(get_tenant_id $TENANT)
198
-    $KEYSTONE tenant-delete $TENANT_ID
199
-}
200
-
201
-function remove_user {
202
-    local USER=$1
203
-    local USER_ID=$(get_user_id $USER)
204
-    $KEYSTONE user-delete $USER_ID
205
-}
206
-
207
-function create_tenants {
208
-    source $TOP_DIR/openrc admin admin
209
-    add_tenant demo1 demo1 demo1
210
-    add_tenant demo2 demo2 demo2
211
-    source $TOP_DIR/openrc demo demo
212
-}
213
-
214
-function delete_tenants_and_users {
215
-    source $TOP_DIR/openrc admin admin
216
-    remove_user demo1
217
-    remove_tenant demo1
218
-    remove_user demo2
219
-    remove_tenant demo2
220
-    echo "removed all tenants"
221
-    source $TOP_DIR/openrc demo demo
222
-}
223
-
224
-function create_network {
225
-    local TENANT=$1
226
-    local GATEWAY=$2
227
-    local CIDR=$3
228
-    local NUM=$4
229
-    local EXTRA=$5
230
-    local NET_NAME="${TENANT}-net$NUM"
231
-    local ROUTER_NAME="${TENANT}-router${NUM}"
232
-    source $TOP_DIR/openrc admin admin
233
-    local TENANT_ID=$(get_tenant_id $TENANT)
234
-    source $TOP_DIR/openrc $TENANT $TENANT
235
-    local NET_ID=$(neutron net-create --tenant_id $TENANT_ID $NET_NAME $EXTRA| grep ' id ' | awk '{print $4}' )
236
-    neutron subnet-create --ip_version 4 --tenant_id $TENANT_ID --gateway $GATEWAY $NET_ID $CIDR
237
-    neutron-debug probe-create --device-owner compute $NET_ID
238
-    source $TOP_DIR/openrc demo demo
239
-}
240
-
241
-function create_networks {
242
-    foreach_tenant_net 'create_network ${%TENANT%_NAME} ${%TENANT%_NET%NUM%_GATEWAY} ${%TENANT%_NET%NUM%_CIDR} %NUM% ${%TENANT%_NET%NUM%_EXTRA}'
243
-    #TODO(nati) test security group function
244
-    # allow ICMP for both tenant's security groups
245
-    #source $TOP_DIR/openrc demo1 demo1
246
-    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
247
-    #source $TOP_DIR/openrc demo2 demo2
248
-    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
249
-}
250
-
251
-function create_vm {
252
-    local TENANT=$1
253
-    local NUM=$2
254
-    local NET_NAMES=$3
255
-    source $TOP_DIR/openrc $TENANT $TENANT
256
-    local NIC=""
257
-    for NET_NAME in ${NET_NAMES//,/ };do
258
-        NIC="$NIC --nic net-id="`get_network_id $NET_NAME`
259
-    done
260
-    #TODO (nati) Add multi-nic test
261
-    #TODO (nati) Add public-net test
262
-    local VM_UUID=`nova boot --flavor $(get_flavor_id m1.tiny) \
263
-        --image $(get_image_id) \
264
-        $NIC \
265
-        $TENANT-server$NUM | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
266
-    die_if_not_set $LINENO VM_UUID "Failure launching $TENANT-server$NUM"
267
-    confirm_server_active $VM_UUID
268
-}
269
-
270
-function create_vms {
271
-    foreach_tenant_vm 'create_vm ${%TENANT%_NAME} %NUM% ${%TENANT%_VM%NUM%_NET}'
272
-}
273
-
274
-function ping_ip {
275
-   # Test agent connection.  Assumes namespaces are disabled, and
276
-   # that DHCP is in use, but not L3
277
-   local VM_NAME=$1
278
-   local NET_NAME=$2
279
-   IP=`nova show $VM_NAME | grep 'network' | awk '{print $5}'`
280
-   ping_check $NET_NAME $IP $BOOT_TIMEOUT
281
-}
282
-
283
-function check_vm {
284
-    local TENANT=$1
285
-    local NUM=$2
286
-    local VM_NAME="$TENANT-server$NUM"
287
-    local NET_NAME=$3
288
-    source $TOP_DIR/openrc $TENANT $TENANT
289
-    ping_ip $VM_NAME $NET_NAME
290
-    # TODO (nati) test ssh connection
291
-    # TODO (nati) test inter connection between vm
292
-    # TODO (nati) test dhcp host routes
293
-    # TODO (nati) test multi-nic
294
-}
295
-
296
-function check_vms {
297
-    foreach_tenant_vm 'check_vm ${%TENANT%_NAME} %NUM% ${%TENANT%_VM%NUM%_NET}'
298
-}
299
-
300
-function shutdown_vm {
301
-    local TENANT=$1
302
-    local NUM=$2
303
-    source $TOP_DIR/openrc $TENANT $TENANT
304
-    VM_NAME=${TENANT}-server$NUM
305
-    nova delete $VM_NAME
306
-}
307
-
308
-function shutdown_vms {
309
-    foreach_tenant_vm 'shutdown_vm ${%TENANT%_NAME} %NUM%'
310
-    if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q ACTIVE; do sleep 1; done"; then
311
-        die $LINENO "Some VMs failed to shutdown"
312
-    fi
313
-}
314
-
315
-function delete_network {
316
-    local TENANT=$1
317
-    local NUM=$2
318
-    local NET_NAME="${TENANT}-net$NUM"
319
-    source $TOP_DIR/openrc admin admin
320
-    local TENANT_ID=$(get_tenant_id $TENANT)
321
-    #TODO(nati) comment out until l3-agent merged
322
-    #for res in port subnet net router;do
323
-    for net_id in `neutron net-list -c id -c name | grep $NET_NAME | awk '{print $2}'`;do
324
-        delete_probe $net_id
325
-        neutron subnet-list | grep $net_id | awk '{print $2}' | xargs -I% neutron subnet-delete %
326
-        neutron net-delete $net_id
327
-    done
328
-    source $TOP_DIR/openrc demo demo
329
-}
330
-
331
-function delete_networks {
332
-   foreach_tenant_net 'delete_network ${%TENANT%_NAME} %NUM%'
333
-   #TODO(nati) add secuirty group check after it is implemented
334
-   # source $TOP_DIR/openrc demo1 demo1
335
-   # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
336
-   # source $TOP_DIR/openrc demo2 demo2
337
-   # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
338
-}
339
-
340
-function create_all {
341
-    create_tenants
342
-    create_networks
343
-    create_vms
344
-}
345
-
346
-function delete_all {
347
-    shutdown_vms
348
-    delete_networks
349
-    delete_tenants_and_users
350
-}
351
-
352
-function all {
353
-    create_all
354
-    check_vms
355
-    delete_all
356
-}
357
-
358
-# Test functions
359
-# --------------
360
-
361
-function test_functions {
362
-    IMAGE=$(get_image_id)
363
-    echo $IMAGE
364
-
365
-    TENANT_ID=$(get_tenant_id demo)
366
-    echo $TENANT_ID
367
-
368
-    FLAVOR_ID=$(get_flavor_id m1.tiny)
369
-    echo $FLAVOR_ID
370
-
371
-    NETWORK_ID=$(get_network_id admin)
372
-    echo $NETWORK_ID
373
-}
374
-
375
-# Usage and main
376
-# --------------
377
-
378
-usage() {
379
-    echo "$0: [-h]"
380
-    echo "  -h, --help              Display help message"
381
-    echo "  -t, --tenant            Create tenants"
382
-    echo "  -n, --net               Create networks"
383
-    echo "  -v, --vm                Create vms"
384
-    echo "  -c, --check             Check connection"
385
-    echo "  -x, --delete-tenants    Delete tenants"
386
-    echo "  -y, --delete-nets       Delete networks"
387
-    echo "  -z, --delete-vms        Delete vms"
388
-    echo "  -T, --test              Test functions"
389
-}
390
-
391
-main() {
392
-
393
-    echo Description
394
-    echo
395
-    echo Copyright 2012, Cisco Systems
396
-    echo Copyright 2012, Nicira Networks, Inc.
397
-    echo Copyright 2012, NTT MCL, Inc.
398
-    echo
399
-    echo Please direct any questions to dedutta@cisco.com, dan@nicira.com, nachi@nttmcl.com
400
-    echo
401
-
402
-
403
-    if [ $# -eq 0 ] ; then
404
-        # if no args are provided, run all tests
405
-        all
406
-    else
407
-
408
-        while [ "$1" != "" ]; do
409
-            case $1 in
410
-                -h | --help )   usage
411
-                                exit
412
-                                ;;
413
-                -n | --net )    create_networks
414
-                                exit
415
-                                ;;
416
-                -v | --vm )     create_vms
417
-                                exit
418
-                                ;;
419
-                -t | --tenant ) create_tenants
420
-                                exit
421
-                                ;;
422
-                -c | --check )   check_vms
423
-                                exit
424
-                                ;;
425
-                -T | --test )   test_functions
426
-                                exit
427
-                                ;;
428
-                -x | --delete-tenants ) delete_tenants_and_users
429
-                                exit
430
-                                ;;
431
-                -y | --delete-nets ) delete_networks
432
-                                exit
433
-                                ;;
434
-                -z | --delete-vms ) shutdown_vms
435
-                                exit
436
-                                ;;
437
-                -a | --all )    all
438
-                                exit
439
-                                ;;
440
-                * )             usage
441
-                                exit 1
442
-            esac
443
-            shift
444
-        done
445
-    fi
446
-}
447
-
448
-# Kick off script
449
-# ---------------
450
-
451
-echo $*
452
-main $*
453
-
454
-set +o xtrace
455
-echo "*********************************************************************"
456
-echo "SUCCESS: End DevStack Exercise: $0"
457
-echo "*********************************************************************"
458 1
new file mode 100644
... ...
@@ -0,0 +1,26 @@
0
+ebtables
1
+iptables
2
+iputils-ping
3
+iputils-arping
4
+mysql-server #NOPRIME
5
+sudo
6
+python-boto
7
+python-iso8601
8
+python-paste
9
+python-routes
10
+python-suds
11
+python-netaddr
12
+python-pastedeploy
13
+python-greenlet
14
+python-kombu
15
+python-eventlet
16
+python-sqlalchemy
17
+python-mysqldb
18
+python-pyudev
19
+python-qpid # dist:precise
20
+dnsmasq-base
21
+dnsmasq-utils # for dhcp_release only available in dist:oneiric,precise,quantal
22
+rabbitmq-server # NOPRIME
23
+qpid # NOPRIME
24
+sqlite3
25
+vlan
0 26
deleted file mode 100644
... ...
@@ -1,26 +0,0 @@
1
-ebtables
2
-iptables
3
-iputils-ping
4
-iputils-arping
5
-mysql-server #NOPRIME
6
-sudo
7
-python-boto
8
-python-iso8601
9
-python-paste
10
-python-routes
11
-python-suds
12
-python-netaddr
13
-python-pastedeploy
14
-python-greenlet
15
-python-kombu
16
-python-eventlet
17
-python-sqlalchemy
18
-python-mysqldb
19
-python-pyudev
20
-python-qpid # dist:precise
21
-dnsmasq-base
22
-dnsmasq-utils # for dhcp_release only available in dist:oneiric,precise,quantal
23
-rabbitmq-server # NOPRIME
24
-qpid # NOPRIME
25
-sqlite3
26
-vlan
27 1
new file mode 100644
... ...
@@ -0,0 +1,27 @@
0
+dnsmasq
1
+dnsmasq-utils # dist:opensuse-12.3
2
+ebtables
3
+iptables
4
+iputils
5
+mysql-community-server # NOPRIME
6
+python-boto
7
+python-eventlet
8
+python-greenlet
9
+python-iso8601
10
+python-kombu
11
+python-mysql
12
+python-netaddr
13
+python-Paste
14
+python-PasteDeploy
15
+python-pyudev
16
+python-Routes
17
+python-SQLAlchemy
18
+python-suds
19
+rabbitmq-server # NOPRIME
20
+sqlite3
21
+sudo
22
+vlan
23
+
24
+# FIXME: qpid is not part of openSUSE, those names are tentative
25
+python-qpid # NOPRIME
26
+qpidd # NOPRIME
0 27
deleted file mode 100644
... ...
@@ -1,27 +0,0 @@
1
-dnsmasq
2
-dnsmasq-utils # dist:opensuse-12.3
3
-ebtables
4
-iptables
5
-iputils
6
-mysql-community-server # NOPRIME
7
-python-boto
8
-python-eventlet
9
-python-greenlet
10
-python-iso8601
11
-python-kombu
12
-python-mysql
13
-python-netaddr
14
-python-Paste
15
-python-PasteDeploy
16
-python-pyudev
17
-python-Routes
18
-python-SQLAlchemy
19
-python-suds
20
-rabbitmq-server # NOPRIME
21
-sqlite3
22
-sudo
23
-vlan
24
-
25
-# FIXME: qpid is not part of openSUSE, those names are tentative
26
-python-qpid # NOPRIME
27
-qpidd # NOPRIME
28 1
new file mode 100644
... ...
@@ -0,0 +1,25 @@
0
+MySQL-python
1
+dnsmasq-utils # for dhcp_release
2
+ebtables
3
+iptables
4
+iputils
5
+mysql-server # NOPRIME
6
+openvswitch # NOPRIME
7
+python-boto
8
+python-eventlet
9
+python-greenlet
10
+python-iso8601
11
+python-kombu
12
+python-netaddr
13
+#rhel6 gets via pip
14
+python-paste        # dist:f16,f17,f18,f19
15
+python-paste-deploy # dist:f16,f17,f18,f19
16
+python-qpid
17
+python-routes
18
+python-sqlalchemy
19
+python-suds
20
+rabbitmq-server # NOPRIME
21
+qpid-cpp-server        # NOPRIME
22
+sqlite
23
+sudo
24
+vconfig
0 25
deleted file mode 100644
... ...
@@ -1,25 +0,0 @@
1
-MySQL-python
2
-dnsmasq-utils # for dhcp_release
3
-ebtables
4
-iptables
5
-iputils
6
-mysql-server # NOPRIME
7
-openvswitch # NOPRIME
8
-python-boto
9
-python-eventlet
10
-python-greenlet
11
-python-iso8601
12
-python-kombu
13
-python-netaddr
14
-#rhel6 gets via pip
15
-python-paste        # dist:f16,f17,f18,f19
16
-python-paste-deploy # dist:f16,f17,f18,f19
17
-python-qpid
18
-python-routes
19
-python-sqlalchemy
20
-python-suds
21
-rabbitmq-server # NOPRIME
22
-qpid-cpp-server        # NOPRIME
23
-sqlite
24
-sudo
25
-vconfig