Browse code

Merge "Remove devstack exercises"

Zuul authored on 2018/08/27 23:35:53
Showing 15 changed files
... ...
@@ -49,10 +49,6 @@ level.
49 49
 ``doc`` - Contains the Sphinx source for the documentation.
50 50
 A complete doc build can be run with ``tox -edocs``.
51 51
 
52
-``exercises`` - Contains the test scripts used to sanity-check and
53
-demonstrate some OpenStack functions. These scripts know how to exit
54
-early or skip services that are not enabled.
55
-
56 52
 ``extras.d`` - Contains the dispatch scripts called by the hooks in
57 53
 ``stack.sh``, ``unstack.sh`` and ``clean.sh``. See :doc:`the plugins
58 54
 docs <plugins>` for more information.
... ...
@@ -182,88 +178,6 @@ The complete docs build is also handled with <code>tox -edocs</code> per the
182 182
 OpenStack project standard.
183 183
 
184 184
 
185
-Exercises
186
-
187
-The scripts in the exercises directory are meant to 1) perform basic operational
188
-checks on certain aspects of OpenStack; and b) document the use of the
189
-OpenStack command-line clients.
190
-
191
-In addition to the guidelines above, exercise scripts MUST follow the structure
192
-outlined here.  ``swift.sh`` is perhaps the clearest example of these guidelines.
193
-These scripts are executed serially by ``exercise.sh`` in testing situations.
194
-
195
-* Begin and end with a banner that stands out in a sea of script logs to aid
196
-  in debugging failures, particularly in automated testing situations.  If the
197
-  end banner is not displayed, the script ended prematurely and can be assumed
198
-  to have failed.
199
-
200
-  ::
201
-
202
-    echo "**************************************************"
203
-    echo "Begin DevStack Exercise: $0"
204
-    echo "**************************************************"
205
-    ...
206
-    set +o xtrace
207
-    echo "**************************************************"
208
-    echo "End DevStack Exercise: $0"
209
-    echo "**************************************************"
210
-
211
-* The scripts will generally have the shell ``xtrace`` attribute set to display
212
-  the actual commands being executed, and the ``errexit`` attribute set to exit
213
-  the script on non-zero exit codes::
214
-
215
-    # This script exits on an error so that errors don't compound and you see
216
-    # only the first error that occurred.
217
-    set -o errexit
218
-
219
-    # Print the commands being run so that we can see the command that triggers
220
-    # an error.  It is also useful for following as the install occurs.
221
-    set -o xtrace
222
-
223
-* Settings and configuration are stored in ``exerciserc``, which must be
224
-  sourced after ``openrc`` or ``stackrc``::
225
-
226
-    # Import exercise configuration
227
-    source $TOP_DIR/exerciserc
228
-
229
-* There are a couple of helper functions in the common ``functions`` sub-script
230
-  that will check for non-zero exit codes and unset environment variables and
231
-  print a message and exit the script.  These should be called after most client
232
-  commands that are not otherwise checked to short-circuit long timeouts
233
-  (instance boot failure, for example)::
234
-
235
-    swift post $CONTAINER
236
-    die_if_error "Failure creating container $CONTAINER"
237
-
238
-    FLOATING_IP=`euca-allocate-address | cut -f2`
239
-    die_if_not_set FLOATING_IP "Failure allocating floating IP"
240
-
241
-* If you want an exercise to be skipped when for example a service wasn't
242
-  enabled for the exercise to be run, you can exit your exercise with the
243
-  special exitcode 55 and it will be detected as skipped.
244
-
245
-* The exercise scripts should only use the various OpenStack client binaries to
246
-  interact with OpenStack.  This specifically excludes any ``*-manage`` tools
247
-  as those assume direct access to configuration and databases, as well as direct
248
-  database access from the exercise itself.
249
-
250
-* If specific configuration needs to be present for the exercise to complete,
251
-  it should be staged in ``stack.sh``, or called from ``stack.sh``.
252
-
253
-* The ``OS_*`` environment variables should be the only ones used for all
254
-  authentication to OpenStack clients as documented in the CLIAuth_ wiki page.
255
-
256
-.. _CLIAuth: https://wiki.openstack.org/CLIAuth
257
-
258
-* The exercise MUST clean up after itself if successful.  If it is not successful,
259
-  it is assumed that state will be left behind; this allows a chance for developers
260
-  to look around and attempt to debug the problem.  The exercise SHOULD clean up
261
-  or graciously handle possible artifacts left over from previous runs if executed
262
-  again.  It is acceptable to require a reboot or even a re-install of DevStack
263
-  to restore a clean test environment.
264
-
265
-
266 185
 Bash Style Guidelines
267 186
 ~~~~~~~~~~~~~~~~~~~~~
268 187
 DevStack defines a bash set of best practices for maintaining large
... ...
@@ -665,8 +665,7 @@ following to your ``localrc`` section:
665 665
     enable_service n-cell
666 666
 
667 667
 Be aware that there are some features currently missing in cells, one
668
-notable one being security groups.  The exercises have been patched to
669
-disable functionality not supported by cells.
668
+notable one being security groups.
670 669
 
671 670
 Cinder
672 671
 ~~~~~~
... ...
@@ -729,44 +728,6 @@ use the v3 API. It is possible to setup keystone without v2 API, by doing:
729 729
 
730 730
     ENABLE_IDENTITY_V2=False
731 731
 
732
-Exercises
733
-~~~~~~~~~
734
-
735
-``exerciserc`` is used to configure settings for the exercise scripts.
736
-The values shown below are the default values. These can all be
737
-overridden by setting them in the ``localrc`` section.
738
-
739
-* Max time to wait while vm goes from build to active state
740
-
741
-    ::
742
-
743
-        ACTIVE_TIMEOUT==30
744
-
745
-* Max time to wait for proper IP association and dis-association.
746
-
747
-    ::
748
-
749
-        ASSOCIATE_TIMEOUT=15
750
-
751
-* Max time till the vm is bootable
752
-
753
-    ::
754
-
755
-        BOOT_TIMEOUT=30
756
-
757
-* Max time from run instance command until it is running
758
-
759
-    ::
760
-
761
-        RUNNING_TIMEOUT=$(($BOOT_TIMEOUT + $ACTIVE_TIMEOUT))
762
-
763
-* Max time to wait for a vm to terminate
764
-
765
-    ::
766
-
767
-        TERMINATE_TIMEOUT=30
768
-
769
-
770 732
 .. _arch-configuration:
771 733
 
772 734
 Architectures
... ...
@@ -127,7 +127,3 @@ computers on the local network. In this example that would be
127 127
 http://192.168.1.201/ for the dashboard (aka Horizon). Launch VMs and if
128 128
 you give them floating IPs and security group access those VMs will be
129 129
 accessible from other machines on your network.
130
-
131
-Some examples of using the OpenStack command-line clients ``nova`` and
132
-``glance`` are in the shakedown scripts in ``devstack/exercises``.
133
-``exercise.sh`` will run all of those scripts and report on the results.
... ...
@@ -75,11 +75,3 @@ Node Configurations
75 75
 
76 76
 -  single node
77 77
 -  multi-node configurations as are tested by the gate
78
-
79
-Exercises
80
-
81
-The DevStack exercise scripts are no longer used as integration and gate
82
-testing as that job has transitioned to Tempest. They are still
83
-maintained as a demonstrations of using OpenStack from the command line
84
-and for quick operational testing.
85 78
deleted file mode 100755
... ...
@@ -1,74 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **exercise.sh**
4
-
5
-# Keep track of the current DevStack directory.
6
-TOP_DIR=$(cd $(dirname "$0") && pwd)
7
-
8
-# Import common functions
9
-source $TOP_DIR/functions
10
-
11
-# Load local configuration
12
-source $TOP_DIR/stackrc
13
-
14
-# Run everything in the exercises/ directory that isn't explicitly disabled
15
-
16
-# comma separated list of script basenames to skip
17
-# to refrain from exercising foo.sh use ``SKIP_EXERCISES=foo``
18
-SKIP_EXERCISES=${SKIP_EXERCISES:-""}
19
-
20
-# comma separated list of script basenames to run
21
-# to run only foo.sh use ``RUN_EXERCISES=foo``
22
-basenames=${RUN_EXERCISES:-""}
23
-
24
-EXERCISE_DIR=$TOP_DIR/exercises
25
-
26
-if [[ -z "${basenames}" ]]; then
27
-    # Locate the scripts we should run
28
-    basenames=$(for b in `ls $EXERCISE_DIR/*.sh`; do basename $b .sh; done)
29
-else
30
-    # If ``RUN_EXERCISES`` was specified, ignore ``SKIP_EXERCISES``.
31
-    SKIP_EXERCISES=
32
-fi
33
-
34
-# Track the state of each script
35
-passes=""
36
-failures=""
37
-skips=""
38
-
39
-# Loop over each possible script (by basename)
40
-for script in $basenames; do
41
-    if [[ ,$SKIP_EXERCISES, =~ ,$script, ]]; then
42
-        skips="$skips $script"
43
-    else
44
-        echo "====================================================================="
45
-        echo Running $script
46
-        echo "====================================================================="
47
-        $EXERCISE_DIR/$script.sh
48
-        exitcode=$?
49
-        if [[ $exitcode == 55 ]]; then
50
-            skips="$skips $script"
51
-        elif [[ $exitcode -ne 0 ]]; then
52
-            failures="$failures $script"
53
-        else
54
-            passes="$passes $script"
55
-        fi
56
-    fi
57
-done
58
-
59
-# Output status of exercise run
60
-echo "====================================================================="
61
-for script in $skips; do
62
-    echo SKIP $script
63
-done
64
-for script in $passes; do
65
-    echo PASS $script
66
-done
67
-for script in $failures; do
68
-    echo FAILED $script
69
-done
70
-echo "====================================================================="
71
-
72
-if [[ -n "$failures" ]]; then
73
-    exit 1
74
-fi
75 1
deleted file mode 100644
... ...
@@ -1,26 +0,0 @@
1
-#!/usr/bin/env bash
2
-#
3
-# source exerciserc
4
-#
5
-# Configure the DevStack exercise scripts
6
-# For best results, source this _after_ stackrc/localrc as it will set
7
-# values only if they are not already set.
8
-
9
-# Max time to wait while vm goes from build to active state
10
-export ACTIVE_TIMEOUT=${ACTIVE_TIMEOUT:-30}
11
-
12
-# Max time to wait for proper IP association and dis-association.
13
-export ASSOCIATE_TIMEOUT=${ASSOCIATE_TIMEOUT:-15}
14
-
15
-# Max time till the vm is bootable
16
-export BOOT_TIMEOUT=${BOOT_TIMEOUT:-30}
17
-
18
-# Max time from run instance command until it is running
19
-export RUNNING_TIMEOUT=${RUNNING_TIMEOUT:-$(($BOOT_TIMEOUT + $ACTIVE_TIMEOUT))}
20
-
21
-# Max time to wait for a vm to terminate
22
-export TERMINATE_TIMEOUT=${TERMINATE_TIMEOUT:-30}
23
-
24
-# The size of the volume we want to boot from; some storage back-ends
25
-# do not allow a disk resize, so it's important that this can be tuned
26
-export DEFAULT_VOLUME_SIZE=${DEFAULT_VOLUME_SIZE:-1}
27 1
deleted file mode 100755
... ...
@@ -1,150 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **aggregates.sh**
4
-
5
-# This script demonstrates how to use host aggregates:
6
-#
7
-# *  Create an Aggregate
8
-# *  Updating Aggregate details
9
-# *  Testing Aggregate metadata
10
-# *  Testing Aggregate delete
11
-# *  Testing General Aggregates (https://blueprints.launchpad.net/nova/+spec/general-host-aggregates)
12
-# *  Testing add/remove hosts (with one host)
13
-
14
-echo "**************************************************"
15
-echo "Begin DevStack Exercise: $0"
16
-echo "**************************************************"
17
-
18
-# This script exits on an error so that errors don't compound and you see
19
-# only the first error that occurred.
20
-set -o errexit
21
-
22
-# Print the commands being run so that we can see the command that triggers
23
-# an error.  It is also useful for following as the install occurs.
24
-set -o xtrace
25
-
26
-
27
-# Settings
28
-# ========
29
-
30
-# Keep track of the current directory
31
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
32
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
33
-
34
-# Test as the admin user
35
-# note this imports stackrc/functions, etc
36
-. $TOP_DIR/openrc admin admin
37
-
38
-# Import exercise configuration
39
-source $TOP_DIR/exerciserc
40
-
41
-# If nova api is not enabled we exit with exitcode 55 so that
42
-# the exercise is skipped
43
-is_service_enabled n-api || exit 55
44
-
45
-# Cells does not support aggregates.
46
-is_service_enabled n-cell && exit 55
47
-
48
-# Create an aggregate
49
-# ===================
50
-
51
-AGGREGATE_NAME=test_aggregate_$RANDOM
52
-AGGREGATE2_NAME=test_aggregate_$RANDOM
53
-AGGREGATE_A_ZONE=nova
54
-
55
-function exit_if_aggregate_present {
56
-    aggregate_name=$1
57
-
58
-    if [ $(nova aggregate-list | grep -c " $aggregate_name ") == 0 ]; then
59
-        echo "SUCCESS $aggregate_name not present"
60
-    else
61
-        die $LINENO "found aggregate: $aggregate_name"
62
-        exit -1
63
-    fi
64
-}
65
-
66
-exit_if_aggregate_present $AGGREGATE_NAME
67
-
68
-AGGREGATE_ID=$(nova aggregate-create $AGGREGATE_NAME $AGGREGATE_A_ZONE | grep " $AGGREGATE_NAME " | get_field 1)
69
-die_if_not_set $LINENO AGGREGATE_ID "Failure creating AGGREGATE_ID for $AGGREGATE_NAME $AGGREGATE_A_ZONE"
70
-
71
-AGGREGATE2_ID=$(nova aggregate-create $AGGREGATE2_NAME $AGGREGATE_A_ZONE | grep " $AGGREGATE2_NAME " | get_field 1)
72
-die_if_not_set $LINENO AGGREGATE2_ID "Fail creating AGGREGATE2_ID for $AGGREGATE2_NAME $AGGREGATE_A_ZONE"
73
-
74
-# check aggregate created
75
-nova aggregate-list | grep -q " $AGGREGATE_NAME " || die $LINENO "Aggregate $AGGREGATE_NAME not created"
76
-
77
-
78
-# Ensure creating a duplicate fails
79
-# =================================
80
-
81
-if nova aggregate-create $AGGREGATE_NAME $AGGREGATE_A_ZONE; then
82
-    die $LINENO "could create duplicate aggregate"
83
-fi
84
-
85
-
86
-# Test aggregate-update (and aggregate-details)
87
-# =============================================
88
-AGGREGATE_NEW_NAME=test_aggregate_$RANDOM
89
-
90
-nova aggregate-update $AGGREGATE_ID $AGGREGATE_NEW_NAME
91
-nova aggregate-details $AGGREGATE_ID | grep $AGGREGATE_NEW_NAME
92
-nova aggregate-details $AGGREGATE_ID | grep $AGGREGATE_A_ZONE
93
-
94
-nova aggregate-update $AGGREGATE_ID $AGGREGATE_NAME $AGGREGATE_A_ZONE
95
-nova aggregate-details $AGGREGATE_ID | grep $AGGREGATE_NAME
96
-nova aggregate-details $AGGREGATE_ID | grep $AGGREGATE_A_ZONE
97
-
98
-
99
-# Test aggregate-set-metadata
100
-# ===========================
101
-META_DATA_1_KEY=asdf
102
-META_DATA_2_KEY=foo
103
-META_DATA_3_KEY=bar
104
-
105
-#ensure no additional metadata is set
106
-nova aggregate-details $AGGREGATE_ID | egrep "\|[{u ]*'availability_zone.+$AGGREGATE_A_ZONE'[ }]*\|"
107
-
108
-nova aggregate-set-metadata $AGGREGATE_ID ${META_DATA_1_KEY}=123
109
-nova aggregate-details $AGGREGATE_ID | grep $META_DATA_1_KEY
110
-nova aggregate-details $AGGREGATE_ID | grep 123
111
-
112
-nova aggregate-set-metadata $AGGREGATE_ID ${META_DATA_2_KEY}=456
113
-nova aggregate-details $AGGREGATE_ID | grep $META_DATA_1_KEY
114
-nova aggregate-details $AGGREGATE_ID | grep $META_DATA_2_KEY
115
-
116
-nova aggregate-set-metadata $AGGREGATE_ID $META_DATA_2_KEY ${META_DATA_3_KEY}=789
117
-nova aggregate-details $AGGREGATE_ID | grep $META_DATA_1_KEY
118
-nova aggregate-details $AGGREGATE_ID | grep $META_DATA_3_KEY
119
-
120
-nova aggregate-details $AGGREGATE_ID | grep $META_DATA_2_KEY && die $LINENO "ERROR metadata was not cleared"
121
-
122
-nova aggregate-set-metadata $AGGREGATE_ID $META_DATA_3_KEY $META_DATA_1_KEY
123
-nova aggregate-details $AGGREGATE_ID | egrep "\|[{u ]*'availability_zone.+$AGGREGATE_A_ZONE'[ }]*\|"
124
-
125
-
126
-# Test aggregate-add/remove-host
127
-# ==============================
128
-if [ "$VIRT_DRIVER" == "xenserver" ]; then
129
-    echo "TODO(johngarbutt) add tests for add/remove host from pool aggregate"
130
-fi
131
-FIRST_HOST=$(nova host-list | grep compute | get_field 1 | head -1)
132
-# Make sure can add two aggregates to same host
133
-nova aggregate-add-host $AGGREGATE_ID $FIRST_HOST
134
-nova aggregate-add-host $AGGREGATE2_ID $FIRST_HOST
135
-if nova aggregate-add-host $AGGREGATE2_ID $FIRST_HOST; then
136
-    die $LINENO "could add duplicate host to single aggregate"
137
-fi
138
-nova aggregate-remove-host $AGGREGATE2_ID $FIRST_HOST
139
-nova aggregate-remove-host $AGGREGATE_ID $FIRST_HOST
140
-
141
-# Test aggregate-delete
142
-# =====================
143
-nova aggregate-delete $AGGREGATE_ID
144
-nova aggregate-delete $AGGREGATE2_ID
145
-exit_if_aggregate_present $AGGREGATE_NAME
146
-
147
-set +o xtrace
148
-echo "**************************************************"
149
-echo "End DevStack Exercise: $0"
150
-echo "**************************************************"
151 1
deleted file mode 100755
... ...
@@ -1,224 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **boot_from_volume.sh**
4
-
5
-# This script demonstrates how to boot from a volume.  It does the following:
6
-#
7
-# *  Create a bootable volume
8
-# *  Boot a volume-backed instance
9
-
10
-echo "*********************************************************************"
11
-echo "Begin DevStack Exercise: $0"
12
-echo "*********************************************************************"
13
-
14
-# This script exits on an error so that errors don't compound and you see
15
-# only the first error that occurred.
16
-set -o errexit
17
-
18
-# Print the commands being run so that we can see the command that triggers
19
-# an error.  It is also useful for following as the install occurs.
20
-set -o xtrace
21
-
22
-
23
-# Settings
24
-# ========
25
-
26
-# Keep track of the current directory
27
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
28
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
29
-
30
-# Import common functions
31
-source $TOP_DIR/functions
32
-
33
-# Import project functions
34
-source $TOP_DIR/lib/cinder
35
-source $TOP_DIR/lib/neutron
36
-source $TOP_DIR/lib/neutron-legacy
37
-
38
-# Import configuration
39
-source $TOP_DIR/openrc
40
-
41
-# Import exercise configuration
42
-source $TOP_DIR/exerciserc
43
-
44
-# If cinder is not enabled we exit with exitcode 55 so that
45
-# the exercise is skipped
46
-is_service_enabled cinder || exit 55
47
-
48
-# Ironic does not support boot from volume.
49
-[ "$VIRT_DRIVER" == "ironic" ] && exit 55
50
-
51
-# Instance type to create
52
-DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
53
-
54
-# Boot this image, use first AMI image if unset
55
-DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-ami}
56
-
57
-# Security group name
58
-SECGROUP=${SECGROUP:-boot_secgroup}
59
-
60
-# Instance and volume names
61
-VM_NAME=${VM_NAME:-ex-bfv-inst}
62
-VOL_NAME=${VOL_NAME:-ex-vol-bfv}
63
-
64
-
65
-# Launching a server
66
-# ==================
67
-
68
-# List servers for project:
69
-nova list
70
-
71
-# Images
72
-# ------
73
-
74
-# List the images available
75
-openstack image list
76
-
77
-# Grab the id of the image to launch
78
-IMAGE=$(openstack image list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
79
-die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
80
-
81
-# Security Groups
82
-# ---------------
83
-
84
-# List security groups
85
-nova secgroup-list
86
-
87
-if is_service_enabled n-cell; then
88
-    # Cells does not support security groups, so force the use of "default"
89
-    SECGROUP="default"
90
-    echo "Using the default security group because of Cells."
91
-else
92
-    # Create a secgroup
93
-    if ! nova secgroup-list | grep -q $SECGROUP; then
94
-        nova secgroup-create $SECGROUP "$SECGROUP description"
95
-        if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
96
-            echo "Security group not created"
97
-            exit 1
98
-        fi
99
-    fi
100
-fi
101
-
102
-# Configure Security Group Rules
103
-if ! nova secgroup-list-rules $SECGROUP | grep -q icmp; then
104
-    nova secgroup-add-rule $SECGROUP icmp -1 -1 0.0.0.0/0
105
-fi
106
-if ! nova secgroup-list-rules $SECGROUP | grep -q " tcp .* 22 "; then
107
-    nova secgroup-add-rule $SECGROUP tcp 22 22 0.0.0.0/0
108
-fi
109
-
110
-# List secgroup rules
111
-nova secgroup-list-rules $SECGROUP
112
-
113
-# Set up instance
114
-# ---------------
115
-
116
-# List flavors
117
-nova flavor-list
118
-
119
-# Select a flavor
120
-INSTANCE_TYPE=$(nova flavor-list | grep $DEFAULT_INSTANCE_TYPE | get_field 1)
121
-if [[ -z "$INSTANCE_TYPE" ]]; then
122
-    # grab the first flavor in the list to launch if default doesn't exist
123
-    INSTANCE_TYPE=$(nova flavor-list | head -n 4 | tail -n 1 | get_field 1)
124
-fi
125
-
126
-# Clean-up from previous runs
127
-nova delete $VM_NAME || true
128
-if ! timeout $ACTIVE_TIMEOUT sh -c "while nova show $VM_NAME; do sleep 1; done"; then
129
-    echo "server didn't terminate!"
130
-    exit 1
131
-fi
132
-
133
-# Setup Keypair
134
-KEY_NAME=test_key
135
-KEY_FILE=key.pem
136
-nova keypair-delete $KEY_NAME || true
137
-nova keypair-add $KEY_NAME > $KEY_FILE
138
-chmod 600 $KEY_FILE
139
-
140
-# Set up volume
141
-# -------------
142
-
143
-# Delete any old volume
144
-cinder delete $VOL_NAME || true
145
-if ! timeout $ACTIVE_TIMEOUT sh -c "while cinder list | grep $VOL_NAME; do sleep 1; done"; then
146
-    echo "Volume $VOL_NAME not deleted"
147
-    exit 1
148
-fi
149
-
150
-# Create the bootable volume
151
-start_time=$(date +%s)
152
-cinder create --image-id $IMAGE --display-name=$VOL_NAME --display-description "test bootable volume: $VOL_NAME" $DEFAULT_VOLUME_SIZE || \
153
-    die $LINENO "Failure creating volume $VOL_NAME"
154
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! cinder list | grep $VOL_NAME | grep available; do sleep 1; done"; then
155
-    echo "Volume $VOL_NAME not created"
156
-    exit 1
157
-fi
158
-end_time=$(date +%s)
159
-echo "Completed cinder create in $((end_time - start_time)) seconds"
160
-
161
-# Get volume ID
162
-VOL_ID=$(cinder list | grep $VOL_NAME  | get_field 1)
163
-die_if_not_set $LINENO VOL_ID "Failure retrieving volume ID for $VOL_NAME"
164
-
165
-# Boot instance
166
-# -------------
167
-
168
-# Boot using the --block-device-mapping param. The format of mapping is:
169
-# <dev_name>=<id>:<type>:<size(GB)>:<delete_on_terminate>
170
-# Leaving the middle two fields blank appears to do-the-right-thing
171
-VM_UUID=$(nova boot --flavor $INSTANCE_TYPE --image $IMAGE --block-device-mapping vda=$VOL_ID --security-groups=$SECGROUP --key-name $KEY_NAME $VM_NAME | grep ' id ' | get_field 2)
172
-die_if_not_set $LINENO VM_UUID "Failure launching $VM_NAME"
173
-
174
-# Check that the status is active within ACTIVE_TIMEOUT seconds
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 didn't become active!"
177
-    exit 1
178
-fi
179
-
180
-# Get the instance IP
181
-IP=$(get_instance_ip $VM_UUID $PRIVATE_NETWORK_NAME)
182
-
183
-die_if_not_set $LINENO IP "Failure retrieving IP address"
184
-
185
-# Private IPs can be pinged in single node deployments
186
-ping_check $IP $BOOT_TIMEOUT "$PRIVATE_NETWORK_NAME"
187
-
188
-# Clean up
189
-# --------
190
-
191
-# Delete volume backed instance
192
-nova delete $VM_UUID || die $LINENO "Failure deleting instance $VM_NAME"
193
-if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q $VM_UUID; do sleep 1; done"; then
194
-    echo "Server $VM_NAME not deleted"
195
-    exit 1
196
-fi
197
-
198
-# Wait for volume to be released
199
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! cinder list | grep $VOL_NAME | grep available; do sleep 1; done"; then
200
-    echo "Volume $VOL_NAME not released"
201
-    exit 1
202
-fi
203
-
204
-# Delete volume
205
-start_time=$(date +%s)
206
-cinder delete $VOL_ID || die $LINENO "Failure deleting volume $VOLUME_NAME"
207
-if ! timeout $ACTIVE_TIMEOUT sh -c "while cinder list | grep $VOL_NAME; do sleep 1; done"; then
208
-    echo "Volume $VOL_NAME not deleted"
209
-    exit 1
210
-fi
211
-end_time=$(date +%s)
212
-echo "Completed cinder delete in $((end_time - start_time)) seconds"
213
-
214
-if [[ $SECGROUP = "default" ]] ; then
215
-    echo "Skipping deleting default security group"
216
-else
217
-    # Delete secgroup
218
-    nova secgroup-delete $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
219
-fi
220
-
221
-set +o xtrace
222
-echo "*********************************************************************"
223
-echo "SUCCESS: End DevStack Exercise: $0"
224
-echo "*********************************************************************"
225 1
deleted file mode 100755
... ...
@@ -1,174 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **client-args.sh**
4
-
5
-# Test OpenStack client authentication arguments handling
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
-set -o errexit
14
-
15
-# Print the commands being run so that we can see the command that triggers
16
-# an error.  It is also useful for following as the install occurs.
17
-set -o xtrace
18
-
19
-
20
-# Settings
21
-# ========
22
-
23
-# Keep track of the current directory
24
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
25
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
26
-
27
-# Import common functions
28
-source $TOP_DIR/functions
29
-
30
-# Import configuration
31
-source $TOP_DIR/openrc
32
-
33
-# Import exercise configuration
34
-source $TOP_DIR/exerciserc
35
-
36
-# Unset all of the known NOVA_* vars
37
-unset NOVA_API_KEY
38
-unset NOVA_ENDPOINT_NAME
39
-unset NOVA_PASSWORD
40
-unset NOVA_PROJECT_ID
41
-unset NOVA_REGION_NAME
42
-unset NOVA_URL
43
-unset NOVA_USERNAME
44
-
45
-# Save the known variables for later
46
-export x_PROJECT_NAME=$OS_PROJECT_NAME
47
-export x_USERNAME=$OS_USERNAME
48
-export x_PASSWORD=$OS_PASSWORD
49
-export x_AUTH_URL=$OS_AUTH_URL
50
-
51
-# Unset the usual variables to force argument processing
52
-unset OS_PROJECT_NAME
53
-unset OS_USERNAME
54
-unset OS_PASSWORD
55
-unset OS_AUTH_URL
56
-
57
-# Common authentication args
58
-PROJECT_ARG="--os-project-name=$x_PROJECT_NAME"
59
-ARGS="--os-username=$x_USERNAME --os-password=$x_PASSWORD --os-auth-url=$x_AUTH_URL"
60
-
61
-# Set global return
62
-RETURN=0
63
-
64
-# Keystone client
65
-# ---------------
66
-if [[ "$ENABLED_SERVICES" =~ "key" ]]; then
67
-    if [[ "$SKIP_EXERCISES" =~ "key" ]]; then
68
-        STATUS_KEYSTONE="Skipped"
69
-    else
70
-        echo -e "\nTest Keystone"
71
-        if openstack $PROJECT_ARG $ARGS catalog show identity; then
72
-            STATUS_KEYSTONE="Succeeded"
73
-        else
74
-            STATUS_KEYSTONE="Failed"
75
-            RETURN=1
76
-        fi
77
-    fi
78
-fi
79
-
80
-# Nova client
81
-# -----------
82
-
83
-if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
84
-    if [[ "$SKIP_EXERCISES" =~ "n-api" ]]; then
85
-        STATUS_NOVA="Skipped"
86
-    else
87
-        # Test OSAPI
88
-        echo -e "\nTest Nova"
89
-        if nova $PROJECT_ARG $ARGS flavor-list; then
90
-            STATUS_NOVA="Succeeded"
91
-        else
92
-            STATUS_NOVA="Failed"
93
-            RETURN=1
94
-        fi
95
-    fi
96
-fi
97
-
98
-# Cinder client
99
-# -------------
100
-
101
-if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
102
-    if [[ "$SKIP_EXERCISES" =~ "c-api" ]]; then
103
-        STATUS_CINDER="Skipped"
104
-    else
105
-        echo -e "\nTest Cinder"
106
-        if cinder $PROJECT_ARG $ARGS list; then
107
-            STATUS_CINDER="Succeeded"
108
-        else
109
-            STATUS_CINDER="Failed"
110
-            RETURN=1
111
-        fi
112
-    fi
113
-fi
114
-
115
-# Glance client
116
-# -------------
117
-
118
-if [[ "$ENABLED_SERVICES" =~ "g-api" ]]; then
119
-    if [[ "$SKIP_EXERCISES" =~ "g-api" ]]; then
120
-        STATUS_GLANCE="Skipped"
121
-    else
122
-        echo -e "\nTest Glance"
123
-        if openstack $PROJECT_ARG $ARGS image list; then
124
-            STATUS_GLANCE="Succeeded"
125
-        else
126
-            STATUS_GLANCE="Failed"
127
-            RETURN=1
128
-        fi
129
-    fi
130
-fi
131
-
132
-# Swift client
133
-# ------------
134
-
135
-if [[ "$ENABLED_SERVICES" =~ "swift" || "$ENABLED_SERVICES" =~ "s-proxy" ]]; then
136
-    if [[ "$SKIP_EXERCISES" =~ "swift" ]]; then
137
-        STATUS_SWIFT="Skipped"
138
-    else
139
-        echo -e "\nTest Swift"
140
-        if swift $PROJECT_ARG $ARGS stat; then
141
-            STATUS_SWIFT="Succeeded"
142
-        else
143
-            STATUS_SWIFT="Failed"
144
-            RETURN=1
145
-        fi
146
-    fi
147
-fi
148
-
149
-set +o xtrace
150
-
151
-
152
-# Results
153
-# =======
154
-
155
-function report {
156
-    if [[ -n "$2" ]]; then
157
-        echo "$1: $2"
158
-    fi
159
-}
160
-
161
-echo -e "\n"
162
-report "Keystone" $STATUS_KEYSTONE
163
-report "Nova" $STATUS_NOVA
164
-report "Cinder" $STATUS_CINDER
165
-report "Glance" $STATUS_GLANCE
166
-report "Swift" $STATUS_SWIFT
167
-
168
-if (( $RETURN == 0 )); then
169
-    echo "*********************************************************************"
170
-    echo "SUCCESS: End DevStack Exercise: $0"
171
-    echo "*********************************************************************"
172
-fi
173
-
174
-exit $RETURN
175 1
deleted file mode 100755
... ...
@@ -1,171 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **client-env.sh**
4
-
5
-# Test OpenStack client environment variable handling
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
-set -o errexit
14
-
15
-# Print the commands being run so that we can see the command that triggers
16
-# an error.  It is also useful for following as the install occurs.
17
-set -o xtrace
18
-
19
-
20
-# Settings
21
-# ========
22
-
23
-# Keep track of the current directory
24
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
25
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
26
-
27
-# Import common functions
28
-source $TOP_DIR/functions
29
-
30
-# Import configuration
31
-source $TOP_DIR/openrc admin
32
-
33
-# Import exercise configuration
34
-source $TOP_DIR/exerciserc
35
-
36
-# Unset all of the known NOVA_* vars
37
-unset NOVA_API_KEY
38
-unset NOVA_ENDPOINT_NAME
39
-unset NOVA_PASSWORD
40
-unset NOVA_PROJECT_ID
41
-unset NOVA_REGION_NAME
42
-unset NOVA_URL
43
-unset NOVA_USERNAME
44
-
45
-for i in OS_TENANT_NAME OS_USERNAME OS_PASSWORD OS_AUTH_URL; do
46
-    is_set $i
47
-    if [[ $? -ne 0 ]]; then
48
-        echo "$i expected to be set"
49
-        ABORT=1
50
-    fi
51
-done
52
-if [[ -n "$ABORT" ]]; then
53
-    exit 1
54
-fi
55
-
56
-# Set global return
57
-RETURN=0
58
-
59
-# Keystone client
60
-# ---------------
61
-if [[ "$ENABLED_SERVICES" =~ "key" ]]; then
62
-    if [[ "$SKIP_EXERCISES" =~ "key" ]]; then
63
-        STATUS_KEYSTONE="Skipped"
64
-    else
65
-        echo -e "\nTest Keystone"
66
-        if openstack endpoint show identity; then
67
-            STATUS_KEYSTONE="Succeeded"
68
-        else
69
-            STATUS_KEYSTONE="Failed"
70
-            RETURN=1
71
-        fi
72
-    fi
73
-fi
74
-
75
-# Nova client
76
-# -----------
77
-
78
-if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
79
-    if [[ "$SKIP_EXERCISES" =~ "n-api" ]]; then
80
-        STATUS_NOVA="Skipped"
81
-    else
82
-        # Test OSAPI
83
-        echo -e "\nTest Nova"
84
-        if nova flavor-list; then
85
-            STATUS_NOVA="Succeeded"
86
-        else
87
-            STATUS_NOVA="Failed"
88
-            RETURN=1
89
-        fi
90
-
91
-    fi
92
-fi
93
-
94
-# Cinder client
95
-# -------------
96
-
97
-if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
98
-    if [[ "$SKIP_EXERCISES" =~ "c-api" ]]; then
99
-        STATUS_CINDER="Skipped"
100
-    else
101
-        echo -e "\nTest Cinder"
102
-        if cinder list; then
103
-            STATUS_CINDER="Succeeded"
104
-        else
105
-            STATUS_CINDER="Failed"
106
-            RETURN=1
107
-        fi
108
-    fi
109
-fi
110
-
111
-# Glance client
112
-# -------------
113
-
114
-if [[ "$ENABLED_SERVICES" =~ "g-api" ]]; then
115
-    if [[ "$SKIP_EXERCISES" =~ "g-api" ]]; then
116
-        STATUS_GLANCE="Skipped"
117
-    else
118
-        echo -e "\nTest Glance"
119
-        if openstack image list; then
120
-            STATUS_GLANCE="Succeeded"
121
-        else
122
-            STATUS_GLANCE="Failed"
123
-            RETURN=1
124
-        fi
125
-    fi
126
-fi
127
-
128
-# Swift client
129
-# ------------
130
-
131
-
132
-if [[ "$ENABLED_SERVICES" =~ "swift" || "$ENABLED_SERVICES" =~ "s-proxy" ]]; then
133
-    if [[ "$SKIP_EXERCISES" =~ "swift" ]]; then
134
-        STATUS_SWIFT="Skipped"
135
-    else
136
-        echo -e "\nTest Swift"
137
-        if swift stat; then
138
-            STATUS_SWIFT="Succeeded"
139
-        else
140
-            STATUS_SWIFT="Failed"
141
-            RETURN=1
142
-        fi
143
-    fi
144
-fi
145
-
146
-set +o xtrace
147
-
148
-
149
-# Results
150
-# =======
151
-
152
-function report {
153
-    if [[ -n "$2" ]]; then
154
-        echo "$1: $2"
155
-    fi
156
-}
157
-
158
-echo -e "\n"
159
-report "Keystone" $STATUS_KEYSTONE
160
-report "Nova" $STATUS_NOVA
161
-report "Cinder" $STATUS_CINDER
162
-report "Glance" $STATUS_GLANCE
163
-report "Swift" $STATUS_SWIFT
164
-
165
-if (( $RETURN == 0 )); then
166
-    echo "*********************************************************************"
167
-    echo "SUCCESS: End DevStack Exercise: $0"
168
-    echo "*********************************************************************"
169
-fi
170
-
171
-exit $RETURN
172 1
deleted file mode 100755
... ...
@@ -1,216 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **floating_ips.sh** - using the cloud can be fun
4
-
5
-# Test instance connectivity with the ``nova`` command from ``python-novaclient``
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
-set -o errexit
14
-
15
-# Print the commands being run so that we can see the command that triggers
16
-# an error.  It is also useful for following as the install occurs.
17
-set -o xtrace
18
-
19
-
20
-# Settings
21
-# ========
22
-
23
-# Keep track of the current directory
24
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
25
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
26
-
27
-# Import common functions
28
-source $TOP_DIR/functions
29
-
30
-# Import configuration
31
-source $TOP_DIR/openrc
32
-
33
-# Import project functions
34
-source $TOP_DIR/lib/neutron
35
-source $TOP_DIR/lib/neutron-legacy
36
-
37
-# Import exercise configuration
38
-source $TOP_DIR/exerciserc
39
-
40
-# If nova api is not enabled we exit with exitcode 55 so that
41
-# the exercise is skipped
42
-is_service_enabled n-api || exit 55
43
-
44
-# Instance type to create
45
-DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
46
-
47
-# Boot this image, use first AMI image if unset
48
-DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-ami}
49
-
50
-# Security group name
51
-SECGROUP=${SECGROUP:-test_secgroup}
52
-
53
-# Default floating IP pool name
54
-DEFAULT_FLOATING_POOL=${DEFAULT_FLOATING_POOL:-public}
55
-
56
-# Additional floating IP pool and range
57
-TEST_FLOATING_POOL=${TEST_FLOATING_POOL:-test}
58
-
59
-# Instance name
60
-VM_NAME="ex-float"
61
-
62
-# Cells does not support floating ips API calls
63
-is_service_enabled n-cell && exit 55
64
-
65
-# Launching a server
66
-# ==================
67
-
68
-# List servers for tenant:
69
-nova list
70
-
71
-# Images
72
-# ------
73
-
74
-# List the images available
75
-openstack image list
76
-
77
-# Grab the id of the image to launch
78
-IMAGE=$(openstack image list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
79
-die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
80
-
81
-# Security Groups
82
-# ---------------
83
-
84
-# List security groups
85
-nova secgroup-list
86
-
87
-# Create a secgroup
88
-if ! nova secgroup-list | grep -q $SECGROUP; then
89
-    nova secgroup-create $SECGROUP "$SECGROUP description"
90
-    if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
91
-        die $LINENO "Security group not created"
92
-    fi
93
-fi
94
-
95
-# Configure Security Group Rules
96
-if ! nova secgroup-list-rules $SECGROUP | grep -q icmp; then
97
-    nova secgroup-add-rule $SECGROUP icmp -1 -1 0.0.0.0/0
98
-fi
99
-if ! nova secgroup-list-rules $SECGROUP | grep -q " tcp .* 22 "; then
100
-    nova secgroup-add-rule $SECGROUP tcp 22 22 0.0.0.0/0
101
-fi
102
-
103
-# List secgroup rules
104
-nova secgroup-list-rules $SECGROUP
105
-
106
-# Set up instance
107
-# ---------------
108
-
109
-# List flavors
110
-nova flavor-list
111
-
112
-# Select a flavor
113
-INSTANCE_TYPE=$(nova flavor-list | grep $DEFAULT_INSTANCE_TYPE | get_field 1)
114
-if [[ -z "$INSTANCE_TYPE" ]]; then
115
-    # grab the first flavor in the list to launch if default doesn't exist
116
-    INSTANCE_TYPE=$(nova flavor-list | head -n 4 | tail -n 1 | get_field 1)
117
-    die_if_not_set $LINENO INSTANCE_TYPE "Failure retrieving INSTANCE_TYPE"
118
-fi
119
-
120
-# Clean-up from previous runs
121
-nova delete $VM_NAME || true
122
-if ! timeout $ACTIVE_TIMEOUT sh -c "while nova show $VM_NAME; do sleep 1; done"; then
123
-    die $LINENO "server didn't terminate!"
124
-    exit 1
125
-fi
126
-
127
-# Boot instance
128
-# -------------
129
-
130
-VM_UUID=$(nova boot --flavor $INSTANCE_TYPE --image $IMAGE --security-groups=$SECGROUP $VM_NAME | grep ' id ' | get_field 2)
131
-die_if_not_set $LINENO VM_UUID "Failure launching $VM_NAME"
132
-
133
-# Check that the status is active within ACTIVE_TIMEOUT seconds
134
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then
135
-    die $LINENO "server didn't become active!"
136
-fi
137
-
138
-# Get the instance IP
139
-IP=$(get_instance_ip $VM_UUID $PRIVATE_NETWORK_NAME)
140
-die_if_not_set $LINENO IP "Failure retrieving IP address"
141
-
142
-# Private IPs can be pinged in single node deployments
143
-ping_check $IP $BOOT_TIMEOUT "$PRIVATE_NETWORK_NAME"
144
-
145
-# Floating IPs
146
-# ------------
147
-
148
-# Allocate a floating IP from the default pool
149
-FLOATING_IP=$(nova floating-ip-create | grep $DEFAULT_FLOATING_POOL | get_field 1)
150
-die_if_not_set $LINENO FLOATING_IP "Failure creating floating IP from pool $DEFAULT_FLOATING_POOL"
151
-
152
-# List floating addresses
153
-if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova floating-ip-list | grep -q $FLOATING_IP; do sleep 1; done"; then
154
-    die $LINENO "Floating IP not allocated"
155
-fi
156
-
157
-# Add floating IP to our server
158
-nova add-floating-ip $VM_UUID $FLOATING_IP || \
159
-    die $LINENO "Failure adding floating IP $FLOATING_IP to $VM_NAME"
160
-
161
-# Test we can ping our floating IP within ASSOCIATE_TIMEOUT seconds
162
-ping_check $FLOATING_IP $ASSOCIATE_TIMEOUT "$PUBLIC_NETWORK_NAME"
163
-
164
-if ! is_service_enabled neutron; then
165
-    # Allocate an IP from second floating pool
166
-    TEST_FLOATING_IP=$(nova floating-ip-create $TEST_FLOATING_POOL | grep $TEST_FLOATING_POOL | get_field 1)
167
-    die_if_not_set $LINENO TEST_FLOATING_IP "Failure creating floating IP in $TEST_FLOATING_POOL"
168
-
169
-    # list floating addresses
170
-    if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova floating-ip-list | grep $TEST_FLOATING_POOL | grep -q $TEST_FLOATING_IP; do sleep 1; done"; then
171
-        die $LINENO "Floating IP not allocated"
172
-    fi
173
-fi
174
-
175
-# Dis-allow icmp traffic (ping)
176
-nova secgroup-delete-rule $SECGROUP icmp -1 -1 0.0.0.0/0 || \
177
-    die $LINENO "Failure deleting security group rule from $SECGROUP"
178
-
179
-if ! timeout $ASSOCIATE_TIMEOUT sh -c "while nova secgroup-list-rules $SECGROUP | grep -q icmp; do sleep 1; done"; then
180
-    die $LINENO "Security group rule not deleted from $SECGROUP"
181
-fi
182
-
183
-# FIXME (anthony): make xs support security groups
184
-if [ "$VIRT_DRIVER" != "ironic" -a "$VIRT_DRIVER" != "xenserver" -a "$VIRT_DRIVER" != "openvz" ]; then
185
-    # Test we can aren't able to ping our floating ip within ASSOCIATE_TIMEOUT seconds
186
-    ping_check $FLOATING_IP $ASSOCIATE_TIMEOUT "$PUBLIC_NETWORK_NAME" Fail
187
-fi
188
-
189
-# Clean up
190
-# --------
191
-
192
-if ! is_service_enabled neutron; then
193
-    # Delete second floating IP
194
-    nova floating-ip-delete $TEST_FLOATING_IP || \
195
-        die $LINENO "Failure deleting floating IP $TEST_FLOATING_IP"
196
-fi
197
-
198
-# Delete the floating ip
199
-nova floating-ip-delete $FLOATING_IP || \
200
-    die $LINENO "Failure deleting floating IP $FLOATING_IP"
201
-
202
-# Delete instance
203
-nova delete $VM_UUID || die $LINENO "Failure deleting instance $VM_NAME"
204
-# Wait for termination
205
-if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q $VM_UUID; do sleep 1; done"; then
206
-    die $LINENO "Server $VM_NAME not deleted"
207
-fi
208
-
209
-# Delete secgroup
210
-nova secgroup-delete $SECGROUP || \
211
-    die $LINENO "Failure deleting security group $SECGROUP"
212
-
213
-set +o xtrace
214
-echo "*********************************************************************"
215
-echo "SUCCESS: End DevStack Exercise: $0"
216
-echo "*********************************************************************"
217 1
deleted file mode 100755
... ...
@@ -1,466 +0,0 @@
1
-#!/usr/bin/env bash
2
-#
3
-# Copyright 2012, Cisco Systems
4
-# Copyright 2012, VMware, Inc.
5
-# Copyright 2012, NTT MCL, Inc.
6
-#
7
-# Please direct any questions to dedutta@cisco.com, dwendlandt@vmware.com, nachi@nttmcl.com
8
-#
9
-# **neutron-adv-test.sh**
10
-
11
-# Perform integration testing of Nova and other components with Neutron.
12
-
13
-echo "*********************************************************************"
14
-echo "Begin DevStack Exercise: $0"
15
-echo "*********************************************************************"
16
-
17
-# This script exits on an error so that errors don't compound and you see
18
-# only the first error that occurred.
19
-
20
-set -o errtrace
21
-
22
-# Print the commands being run so that we can see the command that triggers
23
-# an error.  It is also useful for following as the install occurs.
24
-set -o xtrace
25
-
26
-# Environment
27
-# -----------
28
-
29
-# Keep track of the current directory
30
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
31
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
32
-
33
-# Import common functions
34
-source $TOP_DIR/functions
35
-
36
-# Import configuration
37
-source $TOP_DIR/openrc
38
-
39
-# Import neutron functions
40
-source $TOP_DIR/lib/neutron
41
-source $TOP_DIR/lib/neutron-legacy
42
-
43
-# If neutron is not enabled we exit with exitcode 55, which means exercise is skipped.
44
-neutron_plugin_check_adv_test_requirements || exit 55
45
-
46
-# Import exercise configuration
47
-source $TOP_DIR/exerciserc
48
-
49
-# Neutron Settings
50
-# ----------------
51
-
52
-PROJECTS="DEMO1"
53
-# TODO (nati)_Test public network
54
-#PROJECTS="DEMO1,DEMO2"
55
-
56
-PUBLIC_NAME="admin"
57
-DEMO1_NAME="demo1"
58
-DEMO2_NAME="demo2"
59
-
60
-PUBLIC_NUM_NET=1
61
-DEMO1_NUM_NET=1
62
-DEMO2_NUM_NET=2
63
-
64
-PUBLIC_NET1_CIDR="200.0.0.0/24"
65
-DEMO1_NET1_CIDR="10.10.0.0/24"
66
-DEMO2_NET1_CIDR="10.20.0.0/24"
67
-DEMO2_NET2_CIDR="10.20.1.0/24"
68
-
69
-PUBLIC_NET1_GATEWAY="200.0.0.1"
70
-DEMO1_NET1_GATEWAY="10.10.0.1"
71
-DEMO2_NET1_GATEWAY="10.20.0.1"
72
-DEMO2_NET2_GATEWAY="10.20.1.1"
73
-
74
-PUBLIC_NUM_VM=1
75
-DEMO1_NUM_VM=1
76
-DEMO2_NUM_VM=2
77
-
78
-PUBLIC_VM1_NET='admin-net1'
79
-DEMO1_VM1_NET='demo1-net1'
80
-# Multinic settings. But this is fail without nic setting in OS image
81
-DEMO2_VM1_NET='demo2-net1'
82
-DEMO2_VM2_NET='demo2-net2'
83
-
84
-PUBLIC_NUM_ROUTER=1
85
-DEMO1_NUM_ROUTER=1
86
-DEMO2_NUM_ROUTER=1
87
-
88
-PUBLIC_ROUTER1_NET="admin-net1"
89
-DEMO1_ROUTER1_NET="demo1-net1"
90
-DEMO2_ROUTER1_NET="demo2-net1"
91
-
92
-# Various functions
93
-# -----------------
94
-
95
-function foreach_project {
96
-    COMMAND=$1
97
-    for PROJECT in ${PROJECTS//,/ };do
98
-        eval ${COMMAND//%PROJECT%/$PROJECT}
99
-    done
100
-}
101
-
102
-function foreach_project_resource {
103
-    COMMAND=$1
104
-    RESOURCE=$2
105
-    for PROJECT in ${PROJECTS//,/ };do
106
-        eval 'NUM=$'"${PROJECT}_NUM_$RESOURCE"
107
-        for i in `seq $NUM`;do
108
-            local COMMAND_LOCAL=${COMMAND//%PROJECT%/$PROJECT}
109
-            COMMAND_LOCAL=${COMMAND_LOCAL//%NUM%/$i}
110
-            eval $COMMAND_LOCAL
111
-        done
112
-    done
113
-}
114
-
115
-function foreach_project_vm {
116
-    COMMAND=$1
117
-    foreach_project_resource "$COMMAND" 'VM'
118
-}
119
-
120
-function foreach_project_net {
121
-    COMMAND=$1
122
-    foreach_project_resource "$COMMAND" 'NET'
123
-}
124
-
125
-function get_image_id {
126
-    local IMAGE_ID
127
-    IMAGE_ID=$(openstack image list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
128
-    die_if_not_set $LINENO IMAGE_ID "Failure retrieving IMAGE_ID"
129
-    echo "$IMAGE_ID"
130
-}
131
-
132
-function get_project_id {
133
-    local PROJECT_NAME=$1
134
-    local PROJECT_ID
135
-    PROJECT_ID=`openstack project list | grep " $PROJECT_NAME " | head -n 1 | get_field 1`
136
-    die_if_not_set $LINENO PROJECT_ID "Failure retrieving PROJECT_ID for $PROJECT_NAME"
137
-    echo "$PROJECT_ID"
138
-}
139
-
140
-function get_user_id {
141
-    local USER_NAME=$1
142
-    local USER_ID
143
-    USER_ID=`openstack user list | grep $USER_NAME | awk '{print $2}'`
144
-    die_if_not_set $LINENO USER_ID "Failure retrieving USER_ID for $USER_NAME"
145
-    echo "$USER_ID"
146
-}
147
-
148
-function get_role_id {
149
-    local ROLE_NAME=$1
150
-    local ROLE_ID
151
-    ROLE_ID=`openstack role assignment list | grep $ROLE_NAME | awk '{print $2}'`
152
-    die_if_not_set $LINENO ROLE_ID "Failure retrieving ROLE_ID for $ROLE_NAME"
153
-    echo "$ROLE_ID"
154
-}
155
-
156
-function get_network_id {
157
-    local NETWORK_NAME="$1"
158
-    local NETWORK_ID
159
-    NETWORK_ID=`openstack network show -f value -c id $NETWORK_NAME`
160
-    echo $NETWORK_ID
161
-}
162
-
163
-function get_flavor_id {
164
-    local INSTANCE_TYPE=$1
165
-    local FLAVOR_ID
166
-    FLAVOR_ID=`nova flavor-list | grep $INSTANCE_TYPE | awk '{print $2}'`
167
-    die_if_not_set $LINENO FLAVOR_ID "Failure retrieving FLAVOR_ID for $INSTANCE_TYPE"
168
-    echo "$FLAVOR_ID"
169
-}
170
-
171
-function confirm_server_active {
172
-    local VM_UUID=$1
173
-    if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then
174
-        echo "server '$VM_UUID' did not become active!"
175
-        false
176
-    fi
177
-}
178
-
179
-function neutron_debug_admin {
180
-    local os_username=$OS_USERNAME
181
-    local os_project_id=$OS_PROJECT_ID
182
-    source $TOP_DIR/openrc admin admin
183
-    neutron-debug $@
184
-    source $TOP_DIR/openrc $os_username $os_project_id
185
-}
186
-
187
-function add_project {
188
-    openstack project create $1
189
-    openstack user create $2 --password ${ADMIN_PASSWORD} --project $1
190
-    openstack role add Member --project $1 --user $2
191
-}
192
-
193
-function remove_project {
194
-    local PROJECT=$1
195
-    local PROJECT_ID
196
-    PROJECT_ID=$(get_project_id $PROJECT)
197
-    openstack project delete $PROJECT_ID
198
-}
199
-
200
-function remove_user {
201
-    local USER=$1
202
-    local USER_ID
203
-    USER_ID=$(get_user_id $USER)
204
-    openstack user delete $USER_ID
205
-}
206
-
207
-function create_projects {
208
-    source $TOP_DIR/openrc admin admin
209
-    add_project demo1 demo1 demo1
210
-    add_project demo2 demo2 demo2
211
-    source $TOP_DIR/openrc demo demo
212
-}
213
-
214
-function delete_projects_and_users {
215
-    source $TOP_DIR/openrc admin admin
216
-    remove_user demo1
217
-    remove_project demo1
218
-    remove_user demo2
219
-    remove_project demo2
220
-    echo "removed all projects"
221
-    source $TOP_DIR/openrc demo demo
222
-}
223
-
224
-function create_network {
225
-    local PROJECT=$1
226
-    local GATEWAY=$2
227
-    local CIDR=$3
228
-    local NUM=$4
229
-    local EXTRA=$5
230
-    local NET_NAME="${PROJECT}-net$NUM"
231
-    local ROUTER_NAME="${PROJECT}-router${NUM}"
232
-    source $TOP_DIR/openrc admin admin
233
-    local PROJECT_ID
234
-    PROJECT_ID=$(get_project_id $PROJECT)
235
-    source $TOP_DIR/openrc $PROJECT $PROJECT
236
-    local NET_ID
237
-    NET_ID=$(openstack network create --project $PROJECT_ID $NET_NAME $EXTRA| grep ' id ' | awk '{print $4}' )
238
-    die_if_not_set $LINENO NET_ID "Failure creating NET_ID for $PROJECT_ID $NET_NAME $EXTRA"
239
-    openstack subnet create --ip-version 4 --project $PROJECT_ID --gateway $GATEWAY --subnet-pool None --network $NET_ID --subnet-range $CIDR "${NET_NAME}_subnet"
240
-    neutron_debug_admin probe-create --device-owner compute $NET_ID
241
-    source $TOP_DIR/openrc demo demo
242
-}
243
-
244
-function create_networks {
245
-    foreach_project_net 'create_network ${%PROJECT%_NAME} ${%PROJECT%_NET%NUM%_GATEWAY} ${%PROJECT%_NET%NUM%_CIDR} %NUM% ${%PROJECT%_NET%NUM%_EXTRA}'
246
-    #TODO(nati) test security group function
247
-    # allow ICMP for both project's security groups
248
-    #source $TOP_DIR/openrc demo1 demo1
249
-    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
250
-    #source $TOP_DIR/openrc demo2 demo2
251
-    #$NOVA secgroup-add-rule default icmp -1 -1 0.0.0.0/0
252
-}
253
-
254
-function create_vm {
255
-    local PROJECT=$1
256
-    local NUM=$2
257
-    local NET_NAMES=$3
258
-    source $TOP_DIR/openrc $PROJECT $PROJECT
259
-    local NIC=""
260
-    for NET_NAME in ${NET_NAMES//,/ };do
261
-        NIC="$NIC --nic net-id="`get_network_id $NET_NAME`
262
-    done
263
-    #TODO (nati) Add multi-nic test
264
-    #TODO (nati) Add public-net test
265
-    local VM_UUID
266
-    VM_UUID=`nova boot --flavor $(get_flavor_id m1.tiny) \
267
-        --image $(get_image_id) \
268
-        $NIC \
269
-        $PROJECT-server$NUM | grep ' id ' | cut -d"|" -f3 | sed 's/ //g'`
270
-    die_if_not_set $LINENO VM_UUID "Failure launching $PROJECT-server$NUM"
271
-    confirm_server_active $VM_UUID
272
-}
273
-
274
-function create_vms {
275
-    foreach_project_vm 'create_vm ${%PROJECT%_NAME} %NUM% ${%PROJECT%_VM%NUM%_NET}'
276
-}
277
-
278
-function ping_ip {
279
-    # Test agent connection.  Assumes namespaces are disabled, and
280
-    # that DHCP is in use, but not L3
281
-    local VM_NAME=$1
282
-    local NET_NAME=$2
283
-    IP=$(get_instance_ip $VM_NAME $NET_NAME)
284
-    ping_check $IP $BOOT_TIMEOUT $NET_NAME
285
-}
286
-
287
-function check_vm {
288
-    local PROJECT=$1
289
-    local NUM=$2
290
-    local VM_NAME="$PROJECT-server$NUM"
291
-    local NET_NAME=$3
292
-    source $TOP_DIR/openrc $PROJECT $PROJECT
293
-    ping_ip $VM_NAME $NET_NAME
294
-    # TODO (nati) test ssh connection
295
-    # TODO (nati) test inter connection between vm
296
-    # TODO (nati) test dhcp host routes
297
-    # TODO (nati) test multi-nic
298
-}
299
-
300
-function check_vms {
301
-    foreach_project_vm 'check_vm ${%PROJECT%_NAME} %NUM% ${%PROJECT%_VM%NUM%_NET}'
302
-}
303
-
304
-function shutdown_vm {
305
-    local PROJECT=$1
306
-    local NUM=$2
307
-    source $TOP_DIR/openrc $PROJECT $PROJECT
308
-    VM_NAME=${PROJECT}-server$NUM
309
-    nova delete $VM_NAME
310
-}
311
-
312
-function shutdown_vms {
313
-    foreach_project_vm 'shutdown_vm ${%PROJECT%_NAME} %NUM%'
314
-    if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q ACTIVE; do sleep 1; done"; then
315
-        die $LINENO "Some VMs failed to shutdown"
316
-    fi
317
-}
318
-
319
-function delete_network {
320
-    local PROJECT=$1
321
-    local NUM=$2
322
-    local NET_NAME="${PROJECT}-net$NUM"
323
-    source $TOP_DIR/openrc admin admin
324
-    local PROJECT_ID
325
-    PROJECT_ID=$(get_project_id $PROJECT)
326
-    #TODO(nati) comment out until l3-agent merged
327
-    #for res in port subnet net router;do
328
-    for net_id in `openstack network list -c ID -c Name | grep $NET_NAME | awk '{print $2}'`;do
329
-        delete_probe $net_id
330
-        openstack subnet list | grep $net_id | awk '{print $2}' | xargs -I% openstack subnet delete %
331
-        openstack network delete $net_id
332
-    done
333
-    source $TOP_DIR/openrc demo demo
334
-}
335
-
336
-function delete_networks {
337
-    foreach_project_net 'delete_network ${%PROJECT%_NAME} %NUM%'
338
-    # TODO(nati) add secuirty group check after it is implemented
339
-    # source $TOP_DIR/openrc demo1 demo1
340
-    # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
341
-    # source $TOP_DIR/openrc demo2 demo2
342
-    # nova secgroup-delete-rule default icmp -1 -1 0.0.0.0/0
343
-}
344
-
345
-function create_all {
346
-    create_projects
347
-    create_networks
348
-    create_vms
349
-}
350
-
351
-function delete_all {
352
-    shutdown_vms
353
-    delete_networks
354
-    delete_projects_and_users
355
-}
356
-
357
-function all {
358
-    create_all
359
-    check_vms
360
-    delete_all
361
-}
362
-
363
-# Test functions
364
-# --------------
365
-
366
-function test_functions {
367
-    IMAGE=$(get_image_id)
368
-    echo $IMAGE
369
-
370
-    PROJECT_ID=$(get_project_id demo)
371
-    echo $PROJECT_ID
372
-
373
-    FLAVOR_ID=$(get_flavor_id m1.tiny)
374
-    echo $FLAVOR_ID
375
-
376
-    NETWORK_ID=$(get_network_id admin)
377
-    echo $NETWORK_ID
378
-}
379
-
380
-# Usage and main
381
-# --------------
382
-
383
-function usage {
384
-    echo "$0: [-h]"
385
-    echo "  -h, --help              Display help message"
386
-    echo "  -t, --project            Create projects"
387
-    echo "  -n, --net               Create networks"
388
-    echo "  -v, --vm                Create vms"
389
-    echo "  -c, --check             Check connection"
390
-    echo "  -x, --delete-projects    Delete projects"
391
-    echo "  -y, --delete-nets       Delete networks"
392
-    echo "  -z, --delete-vms        Delete vms"
393
-    echo "  -T, --test              Test functions"
394
-}
395
-
396
-function main {
397
-
398
-    echo Description
399
-
400
-    if [ $# -eq 0 ] ; then
401
-        # if no args are provided, run all tests
402
-        all
403
-    else
404
-
405
-        while [ "$1" != "" ]; do
406
-            case $1 in
407
-                -h | --help )   usage
408
-                                exit
409
-                                ;;
410
-                -n | --net )    create_networks
411
-                                exit
412
-                                ;;
413
-                -v | --vm )     create_vms
414
-                                exit
415
-                                ;;
416
-                -t | --project ) create_projects
417
-                                exit
418
-                                ;;
419
-                -c | --check )   check_vms
420
-                                exit
421
-                                ;;
422
-                -T | --test )   test_functions
423
-                                exit
424
-                                ;;
425
-                -x | --delete-projects ) delete_projects_and_users
426
-                                exit
427
-                                ;;
428
-                -y | --delete-nets ) delete_networks
429
-                                exit
430
-                                ;;
431
-                -z | --delete-vms ) shutdown_vms
432
-                                exit
433
-                                ;;
434
-                -a | --all )    all
435
-                                exit
436
-                                ;;
437
-                * )             usage
438
-                                exit 1
439
-            esac
440
-            shift
441
-        done
442
-    fi
443
-}
444
-
445
-trap failed ERR
446
-function failed {
447
-    local r=$?
448
-    set +o errtrace
449
-    set +o xtrace
450
-    echo "Failed to execute"
451
-    echo "Starting cleanup..."
452
-    delete_all
453
-    echo "Finished cleanup"
454
-    exit $r
455
-}
456
-
457
-# Kick off script
458
-# ---------------
459
-
460
-echo $*
461
-main $*
462
-
463
-set +o xtrace
464
-echo "*********************************************************************"
465
-echo "SUCCESS: End DevStack Exercise: $0"
466
-echo "*********************************************************************"
467 1
deleted file mode 100755
... ...
@@ -1,81 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **sec_groups.sh**
4
-
5
-# Test security groups via the command line
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
-set -o errexit
14
-
15
-# Print the commands being run so that we can see the command that triggers
16
-# an error.  It is also useful for following as the install occurs.
17
-set -o xtrace
18
-
19
-
20
-# Settings
21
-# ========
22
-
23
-# Keep track of the current directory
24
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
25
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
26
-
27
-# Import common functions
28
-source $TOP_DIR/functions
29
-
30
-# Import configuration
31
-source $TOP_DIR/openrc
32
-
33
-# Import exercise configuration
34
-source $TOP_DIR/exerciserc
35
-
36
-# If nova api is not enabled we exit with exitcode 55 so that
37
-# the exercise is skipped
38
-is_service_enabled n-api || exit 55
39
-
40
-
41
-# Testing Security Groups
42
-# =======================
43
-
44
-# List security groups
45
-nova secgroup-list
46
-
47
-# Create random name for new sec group and create secgroup of said name
48
-SEC_GROUP_NAME="ex-secgroup-$(openssl rand -hex 4)"
49
-nova secgroup-create $SEC_GROUP_NAME 'a test security group'
50
-
51
-# Add some rules to the secgroup
52
-RULES_TO_ADD=( 22 3389 5900 )
53
-
54
-for RULE in "${RULES_TO_ADD[@]}"; do
55
-    nova secgroup-add-rule $SEC_GROUP_NAME tcp $RULE $RULE 0.0.0.0/0
56
-done
57
-
58
-# Check to make sure rules were added
59
-SEC_GROUP_RULES=( $(nova secgroup-list-rules $SEC_GROUP_NAME | grep -v \- | grep -v 'Source Group' | cut -d '|' -f3 | tr -d ' ') )
60
-die_if_not_set $LINENO SEC_GROUP_RULES "Failure retrieving SEC_GROUP_RULES for $SEC_GROUP_NAME"
61
-for i in "${RULES_TO_ADD[@]}"; do
62
-    skip=
63
-    for j in "${SEC_GROUP_RULES[@]}"; do
64
-        [[ $i == $j ]] && { skip=1; break; }
65
-    done
66
-    [[ -n $skip ]] || exit 1
67
-done
68
-
69
-# Delete rules and secgroup
70
-for RULE in "${RULES_TO_ADD[@]}"; do
71
-    nova secgroup-delete-rule $SEC_GROUP_NAME tcp $RULE $RULE 0.0.0.0/0
72
-done
73
-
74
-# Delete secgroup
75
-nova secgroup-delete $SEC_GROUP_NAME || \
76
-    die $LINENO "Failure deleting security group $SEC_GROUP_NAME"
77
-
78
-set +o xtrace
79
-echo "*********************************************************************"
80
-echo "SUCCESS: End DevStack Exercise: $0"
81
-echo "*********************************************************************"
82 1
deleted file mode 100755
... ...
@@ -1,69 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **swift.sh**
4
-
5
-# Test swift via the ``python-openstackclient`` command line
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
-set -o errexit
14
-
15
-# Print the commands being run so that we can see the command that triggers
16
-# an error.  It is also useful for following as the install occurs.
17
-set -o xtrace
18
-
19
-
20
-# Settings
21
-# ========
22
-
23
-# Keep track of the current directory
24
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
25
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
26
-
27
-# Import common functions
28
-source $TOP_DIR/functions
29
-
30
-# Import configuration
31
-source $TOP_DIR/openrc
32
-
33
-# Import exercise configuration
34
-source $TOP_DIR/exerciserc
35
-
36
-# If swift is not enabled we exit with exitcode 55 which mean
37
-# exercise is skipped.
38
-is_service_enabled s-proxy || exit 55
39
-
40
-# Container name
41
-CONTAINER=ex-swift
42
-OBJECT=/etc/issue
43
-
44
-
45
-# Testing Swift
46
-# =============
47
-
48
-# Check if we have to swift via keystone
49
-openstack object store account show || die $LINENO "Failure getting account status"
50
-
51
-# We start by creating a test container
52
-openstack container create $CONTAINER || die $LINENO "Failure creating container $CONTAINER"
53
-
54
-# add a file into it.
55
-openstack object create $CONTAINER $OBJECT || die $LINENO "Failure uploading file to container $CONTAINER"
56
-
57
-# list the objects
58
-openstack object list $CONTAINER || die $LINENO "Failure listing contents of container $CONTAINER"
59
-
60
-# delete the object first
61
-openstack object delete $CONTAINER $OBJECT || die $LINENO "Failure deleting object $OBJECT in container $CONTAINER"
62
-
63
-# delete the container
64
-openstack container delete $CONTAINER || die $LINENO "Failure deleting container $CONTAINER"
65
-
66
-set +o xtrace
67
-echo "*********************************************************************"
68
-echo "SUCCESS: End DevStack Exercise: $0"
69
-echo "*********************************************************************"
70 1
deleted file mode 100755
... ...
@@ -1,225 +0,0 @@
1
-#!/usr/bin/env bash
2
-
3
-# **volumes.sh**
4
-
5
-# Test cinder volumes with the ``cinder`` command from ``python-cinderclient``
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
-set -o errexit
14
-
15
-# Print the commands being run so that we can see the command that triggers
16
-# an error.  It is also useful for following as the install occurs.
17
-set -o xtrace
18
-
19
-
20
-# Settings
21
-# ========
22
-
23
-# Keep track of the current directory
24
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
25
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
26
-
27
-# Import common functions
28
-source $TOP_DIR/functions
29
-
30
-# Import configuration
31
-source $TOP_DIR/openrc
32
-
33
-# Import project functions
34
-source $TOP_DIR/lib/cinder
35
-source $TOP_DIR/lib/neutron
36
-source $TOP_DIR/lib/neutron-legacy
37
-
38
-# Import exercise configuration
39
-source $TOP_DIR/exerciserc
40
-
41
-# If cinder is not enabled we exit with exitcode 55 which mean
42
-# exercise is skipped.
43
-is_service_enabled cinder || exit 55
44
-
45
-# Ironic does not currently support volume attachment.
46
-[ "$VIRT_DRIVER" == "ironic" ] && exit 55
47
-
48
-# Instance type to create
49
-DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
50
-
51
-# Boot this image, use first AMI image if unset
52
-DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-ami}
53
-
54
-# Security group name
55
-SECGROUP=${SECGROUP:-vol_secgroup}
56
-
57
-# Instance and volume names
58
-VM_NAME=${VM_NAME:-ex-vol-inst}
59
-VOL_NAME="ex-vol-$(openssl rand -hex 4)"
60
-
61
-
62
-# Launching a server
63
-# ==================
64
-
65
-# List servers for tenant:
66
-nova list
67
-
68
-# Images
69
-# ------
70
-
71
-# List the images available
72
-openstack image list
73
-
74
-# Grab the id of the image to launch
75
-IMAGE=$(openstack image list | egrep " $DEFAULT_IMAGE_NAME " | get_field 1)
76
-die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
77
-
78
-# Security Groups
79
-# ---------------
80
-
81
-# List security groups
82
-nova secgroup-list
83
-
84
-if is_service_enabled n-cell; then
85
-    # Cells does not support security groups, so force the use of "default"
86
-    SECGROUP="default"
87
-    echo "Using the default security group because of Cells."
88
-else
89
-    # Create a secgroup
90
-    if ! nova secgroup-list | grep -q $SECGROUP; then
91
-        nova secgroup-create $SECGROUP "$SECGROUP description"
92
-        if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
93
-            echo "Security group not created"
94
-            exit 1
95
-        fi
96
-    fi
97
-fi
98
-
99
-# Configure Security Group Rules
100
-if ! nova secgroup-list-rules $SECGROUP | grep -q icmp; then
101
-    nova secgroup-add-rule $SECGROUP icmp -1 -1 0.0.0.0/0
102
-fi
103
-if ! nova secgroup-list-rules $SECGROUP | grep -q " tcp .* 22 "; then
104
-    nova secgroup-add-rule $SECGROUP tcp 22 22 0.0.0.0/0
105
-fi
106
-
107
-# List secgroup rules
108
-nova secgroup-list-rules $SECGROUP
109
-
110
-# Set up instance
111
-# ---------------
112
-
113
-# List flavors
114
-nova flavor-list
115
-
116
-# Select a flavor
117
-INSTANCE_TYPE=$(nova flavor-list | grep $DEFAULT_INSTANCE_TYPE | get_field 1)
118
-if [[ -z "$INSTANCE_TYPE" ]]; then
119
-    # grab the first flavor in the list to launch if default doesn't exist
120
-    INSTANCE_TYPE=$(nova flavor-list | head -n 4 | tail -n 1 | get_field 1)
121
-    die_if_not_set $LINENO INSTANCE_TYPE "Failure retrieving INSTANCE_TYPE"
122
-fi
123
-
124
-# Clean-up from previous runs
125
-nova delete $VM_NAME || true
126
-if ! timeout $ACTIVE_TIMEOUT sh -c "while nova show $VM_NAME; do sleep 1; done"; then
127
-    die $LINENO "server didn't terminate!"
128
-fi
129
-
130
-# Boot instance
131
-# -------------
132
-
133
-VM_UUID=$(nova boot --flavor $INSTANCE_TYPE --image $IMAGE --security-groups=$SECGROUP $VM_NAME | grep ' id ' | get_field 2)
134
-die_if_not_set $LINENO VM_UUID "Failure launching $VM_NAME"
135
-
136
-# Check that the status is active within ACTIVE_TIMEOUT seconds
137
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! nova show $VM_UUID | grep status | grep -q ACTIVE; do sleep 1; done"; then
138
-    die $LINENO "server didn't become active!"
139
-fi
140
-
141
-# Get the instance IP
142
-IP=$(get_instance_ip $VM_UUID $PRIVATE_NETWORK_NAME)
143
-
144
-die_if_not_set $LINENO IP "Failure retrieving IP address"
145
-
146
-# Private IPs can be pinged in single node deployments
147
-ping_check $IP $BOOT_TIMEOUT "$PRIVATE_NETWORK_NAME"
148
-
149
-# Volumes
150
-# -------
151
-
152
-# Verify it doesn't exist
153
-if [[ -n $(cinder list | grep $VOL_NAME | head -1 | get_field 2) ]]; then
154
-    die $LINENO "Volume $VOL_NAME already exists"
155
-fi
156
-
157
-# Create a new volume
158
-start_time=$(date +%s)
159
-cinder create --display-name $VOL_NAME --display-description "test volume: $VOL_NAME" $DEFAULT_VOLUME_SIZE || \
160
-    die $LINENO "Failure creating volume $VOL_NAME"
161
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! cinder list | grep $VOL_NAME | grep available; do sleep 1; done"; then
162
-    die $LINENO "Volume $VOL_NAME not created"
163
-fi
164
-end_time=$(date +%s)
165
-echo "Completed cinder create in $((end_time - start_time)) seconds"
166
-
167
-# Get volume ID
168
-VOL_ID=$(cinder list | grep $VOL_NAME | head -1 | get_field 1)
169
-die_if_not_set $LINENO VOL_ID "Failure retrieving volume ID for $VOL_NAME"
170
-
171
-# Attach to server
172
-DEVICE=/dev/vdb
173
-start_time=$(date +%s)
174
-nova volume-attach $VM_UUID $VOL_ID $DEVICE || \
175
-    die $LINENO "Failure attaching volume $VOL_NAME to $VM_NAME"
176
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! cinder list | grep $VOL_NAME | grep in-use; do sleep 1; done"; then
177
-    die $LINENO "Volume $VOL_NAME not attached to $VM_NAME"
178
-fi
179
-end_time=$(date +%s)
180
-echo "Completed volume-attach in $((end_time - start_time)) seconds"
181
-
182
-VOL_ATTACH=$(cinder list | grep $VOL_NAME | head -1 | get_field -1)
183
-die_if_not_set $LINENO VOL_ATTACH "Failure retrieving $VOL_NAME status"
184
-if [[ "$VOL_ATTACH" != $VM_UUID ]]; then
185
-    die $LINENO "Volume not attached to correct instance"
186
-fi
187
-
188
-# Clean up
189
-# --------
190
-
191
-# Detach volume
192
-start_time=$(date +%s)
193
-nova volume-detach $VM_UUID $VOL_ID || die $LINENO "Failure detaching volume $VOL_NAME from $VM_NAME"
194
-if ! timeout $ACTIVE_TIMEOUT sh -c "while ! cinder list | grep $VOL_NAME | grep available; do sleep 1; done"; then
195
-    die $LINENO "Volume $VOL_NAME not detached from $VM_NAME"
196
-fi
197
-end_time=$(date +%s)
198
-echo "Completed volume-detach in $((end_time - start_time)) seconds"
199
-
200
-# Delete volume
201
-start_time=$(date +%s)
202
-cinder delete $VOL_ID || die $LINENO "Failure deleting volume $VOL_NAME"
203
-if ! timeout $ACTIVE_TIMEOUT sh -c "while cinder list | grep $VOL_NAME; do sleep 1; done"; then
204
-    die $LINENO "Volume $VOL_NAME not deleted"
205
-fi
206
-end_time=$(date +%s)
207
-echo "Completed cinder delete in $((end_time - start_time)) seconds"
208
-
209
-# Delete instance
210
-nova delete $VM_UUID || die $LINENO "Failure deleting instance $VM_NAME"
211
-if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q $VM_UUID; do sleep 1; done"; then
212
-    die $LINENO "Server $VM_NAME not deleted"
213
-fi
214
-
215
-if [[ $SECGROUP = "default" ]] ; then
216
-    echo "Skipping deleting default security group"
217
-else
218
-    # Delete secgroup
219
-    nova secgroup-delete $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
220
-fi
221
-
222
-set +o xtrace
223
-echo "*********************************************************************"
224
-echo "SUCCESS: End DevStack Exercise: $0"
225
-echo "*********************************************************************"