Modify the lib/tempest to not fail
if no nova or glance available.
* This allows performance test of keystone and neutron with
tempest (or tempest stress runner) without having system
noise from another components.
* Depending on not required components for tempest is bad practice,
tempest service decorators expected to allow tempest,
to run in more minimal system out-of-the-box.
Change-Id: Ifc40b1eb5c4b79d96a5fae919b88afecca642ca0
(cherry picked from commit c411fcfc9224894db55d82b8ce4fa4a2b68de89d)
| ... | ... |
@@ -110,34 +110,36 @@ function configure_tempest {
|
| 110 | 110 |
# ... Also ensure we only take active images, so we don't get snapshots in process |
| 111 | 111 |
declare -a images |
| 112 | 112 |
|
| 113 |
- while read -r IMAGE_NAME IMAGE_UUID; do |
|
| 114 |
- if [ "$IMAGE_NAME" = "$DEFAULT_IMAGE_NAME" ]; then |
|
| 115 |
- image_uuid="$IMAGE_UUID" |
|
| 116 |
- image_uuid_alt="$IMAGE_UUID" |
|
| 117 |
- fi |
|
| 118 |
- images+=($IMAGE_UUID) |
|
| 119 |
- # TODO(stevemar): update this command to use openstackclient's `openstack image list` |
|
| 120 |
- # when it supports listing by status. |
|
| 121 |
- done < <(glance image-list --status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }')
|
|
| 122 |
- |
|
| 123 |
- case "${#images[*]}" in
|
|
| 124 |
- 0) |
|
| 125 |
- echo "Found no valid images to use!" |
|
| 126 |
- exit 1 |
|
| 127 |
- ;; |
|
| 128 |
- 1) |
|
| 129 |
- if [ -z "$image_uuid" ]; then |
|
| 130 |
- image_uuid=${images[0]}
|
|
| 131 |
- image_uuid_alt=${images[0]}
|
|
| 132 |
- fi |
|
| 133 |
- ;; |
|
| 134 |
- *) |
|
| 135 |
- if [ -z "$image_uuid" ]; then |
|
| 136 |
- image_uuid=${images[0]}
|
|
| 137 |
- image_uuid_alt=${images[1]}
|
|
| 113 |
+ if is_service_enabled glance; then |
|
| 114 |
+ while read -r IMAGE_NAME IMAGE_UUID; do |
|
| 115 |
+ if [ "$IMAGE_NAME" = "$DEFAULT_IMAGE_NAME" ]; then |
|
| 116 |
+ image_uuid="$IMAGE_UUID" |
|
| 117 |
+ image_uuid_alt="$IMAGE_UUID" |
|
| 138 | 118 |
fi |
| 139 |
- ;; |
|
| 140 |
- esac |
|
| 119 |
+ images+=($IMAGE_UUID) |
|
| 120 |
+ # TODO(stevemar): update this command to use openstackclient's `openstack image list` |
|
| 121 |
+ # when it supports listing by status. |
|
| 122 |
+ done < <(glance image-list --status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }')
|
|
| 123 |
+ |
|
| 124 |
+ case "${#images[*]}" in
|
|
| 125 |
+ 0) |
|
| 126 |
+ echo "Found no valid images to use!" |
|
| 127 |
+ exit 1 |
|
| 128 |
+ ;; |
|
| 129 |
+ 1) |
|
| 130 |
+ if [ -z "$image_uuid" ]; then |
|
| 131 |
+ image_uuid=${images[0]}
|
|
| 132 |
+ image_uuid_alt=${images[0]}
|
|
| 133 |
+ fi |
|
| 134 |
+ ;; |
|
| 135 |
+ *) |
|
| 136 |
+ if [ -z "$image_uuid" ]; then |
|
| 137 |
+ image_uuid=${images[0]}
|
|
| 138 |
+ image_uuid_alt=${images[1]}
|
|
| 139 |
+ fi |
|
| 140 |
+ ;; |
|
| 141 |
+ esac |
|
| 142 |
+ fi |
|
| 141 | 143 |
|
| 142 | 144 |
# Create tempest.conf from tempest.conf.sample |
| 143 | 145 |
# copy every time, because the image UUIDS are going to change |
| ... | ... |
@@ -161,63 +163,65 @@ function configure_tempest {
|
| 161 | 161 |
ALT_TENANT_NAME=${ALT_TENANT_NAME:-alt_demo}
|
| 162 | 162 |
ADMIN_TENANT_ID=$(openstack project list | awk "/ admin / { print \$2 }")
|
| 163 | 163 |
|
| 164 |
- # If the ``DEFAULT_INSTANCE_TYPE`` not declared, use the new behavior |
|
| 165 |
- # Tempest creates instane types for himself |
|
| 166 |
- if [[ -z "$DEFAULT_INSTANCE_TYPE" ]]; then |
|
| 167 |
- available_flavors=$(nova flavor-list) |
|
| 168 |
- if [[ ! ( $available_flavors =~ 'm1.nano' ) ]]; then |
|
| 169 |
- if is_arch "ppc64"; then |
|
| 170 |
- # qemu needs at least 128MB of memory to boot on ppc64 |
|
| 171 |
- nova flavor-create m1.nano 42 128 0 1 |
|
| 172 |
- else |
|
| 173 |
- nova flavor-create m1.nano 42 64 0 1 |
|
| 164 |
+ if is_service_enabled nova; then |
|
| 165 |
+ # If the ``DEFAULT_INSTANCE_TYPE`` not declared, use the new behavior |
|
| 166 |
+ # Tempest creates instane types for himself |
|
| 167 |
+ if [[ -z "$DEFAULT_INSTANCE_TYPE" ]]; then |
|
| 168 |
+ available_flavors=$(nova flavor-list) |
|
| 169 |
+ if [[ ! ( $available_flavors =~ 'm1.nano' ) ]]; then |
|
| 170 |
+ if is_arch "ppc64"; then |
|
| 171 |
+ # qemu needs at least 128MB of memory to boot on ppc64 |
|
| 172 |
+ nova flavor-create m1.nano 42 128 0 1 |
|
| 173 |
+ else |
|
| 174 |
+ nova flavor-create m1.nano 42 64 0 1 |
|
| 175 |
+ fi |
|
| 174 | 176 |
fi |
| 175 |
- fi |
|
| 176 |
- flavor_ref=42 |
|
| 177 |
- boto_instance_type=m1.nano |
|
| 178 |
- if [[ ! ( $available_flavors =~ 'm1.micro' ) ]]; then |
|
| 179 |
- if is_arch "ppc64"; then |
|
| 180 |
- nova flavor-create m1.micro 84 256 0 1 |
|
| 181 |
- else |
|
| 182 |
- nova flavor-create m1.micro 84 128 0 1 |
|
| 177 |
+ flavor_ref=42 |
|
| 178 |
+ boto_instance_type=m1.nano |
|
| 179 |
+ if [[ ! ( $available_flavors =~ 'm1.micro' ) ]]; then |
|
| 180 |
+ if is_arch "ppc64"; then |
|
| 181 |
+ nova flavor-create m1.micro 84 256 0 1 |
|
| 182 |
+ else |
|
| 183 |
+ nova flavor-create m1.micro 84 128 0 1 |
|
| 184 |
+ fi |
|
| 183 | 185 |
fi |
| 184 |
- fi |
|
| 185 |
- flavor_ref_alt=84 |
|
| 186 |
- else |
|
| 187 |
- # Check Nova for existing flavors and, if set, look for the |
|
| 188 |
- # ``DEFAULT_INSTANCE_TYPE`` and use that. |
|
| 189 |
- boto_instance_type=$DEFAULT_INSTANCE_TYPE |
|
| 190 |
- flavor_lines=`nova flavor-list` |
|
| 191 |
- IFS=$'\r\n' |
|
| 192 |
- flavors="" |
|
| 193 |
- for line in $flavor_lines; do |
|
| 194 |
- f=$(echo $line | awk "/ $DEFAULT_INSTANCE_TYPE / { print \$2 }")
|
|
| 195 |
- flavors="$flavors $f" |
|
| 196 |
- done |
|
| 197 |
- |
|
| 198 |
- for line in $flavor_lines; do |
|
| 199 |
- flavors="$flavors `echo $line | grep -v "^\(|\s*ID\|+--\)" | cut -d' ' -f2`" |
|
| 200 |
- done |
|
| 201 |
- |
|
| 202 |
- IFS=" " |
|
| 203 |
- flavors=($flavors) |
|
| 204 |
- num_flavors=${#flavors[*]}
|
|
| 205 |
- echo "Found $num_flavors flavors" |
|
| 206 |
- if [[ $num_flavors -eq 0 ]]; then |
|
| 207 |
- echo "Found no valid flavors to use!" |
|
| 208 |
- exit 1 |
|
| 209 |
- fi |
|
| 210 |
- flavor_ref=${flavors[0]}
|
|
| 211 |
- flavor_ref_alt=$flavor_ref |
|
| 212 |
- |
|
| 213 |
- # ensure flavor_ref and flavor_ref_alt have different values |
|
| 214 |
- # some resize instance in tempest tests depends on this. |
|
| 215 |
- for f in ${flavors[@]:1}; do
|
|
| 216 |
- if [[ $f -ne $flavor_ref ]]; then |
|
| 217 |
- flavor_ref_alt=$f |
|
| 218 |
- break |
|
| 186 |
+ flavor_ref_alt=84 |
|
| 187 |
+ else |
|
| 188 |
+ # Check Nova for existing flavors and, if set, look for the |
|
| 189 |
+ # ``DEFAULT_INSTANCE_TYPE`` and use that. |
|
| 190 |
+ boto_instance_type=$DEFAULT_INSTANCE_TYPE |
|
| 191 |
+ flavor_lines=`nova flavor-list` |
|
| 192 |
+ IFS=$'\r\n' |
|
| 193 |
+ flavors="" |
|
| 194 |
+ for line in $flavor_lines; do |
|
| 195 |
+ f=$(echo $line | awk "/ $DEFAULT_INSTANCE_TYPE / { print \$2 }")
|
|
| 196 |
+ flavors="$flavors $f" |
|
| 197 |
+ done |
|
| 198 |
+ |
|
| 199 |
+ for line in $flavor_lines; do |
|
| 200 |
+ flavors="$flavors `echo $line | grep -v "^\(|\s*ID\|+--\)" | cut -d' ' -f2`" |
|
| 201 |
+ done |
|
| 202 |
+ |
|
| 203 |
+ IFS=" " |
|
| 204 |
+ flavors=($flavors) |
|
| 205 |
+ num_flavors=${#flavors[*]}
|
|
| 206 |
+ echo "Found $num_flavors flavors" |
|
| 207 |
+ if [[ $num_flavors -eq 0 ]]; then |
|
| 208 |
+ echo "Found no valid flavors to use!" |
|
| 209 |
+ exit 1 |
|
| 219 | 210 |
fi |
| 220 |
- done |
|
| 211 |
+ flavor_ref=${flavors[0]}
|
|
| 212 |
+ flavor_ref_alt=$flavor_ref |
|
| 213 |
+ |
|
| 214 |
+ # ensure flavor_ref and flavor_ref_alt have different values |
|
| 215 |
+ # some resize instance in tempest tests depends on this. |
|
| 216 |
+ for f in ${flavors[@]:1}; do
|
|
| 217 |
+ if [[ $f -ne $flavor_ref ]]; then |
|
| 218 |
+ flavor_ref_alt=$f |
|
| 219 |
+ break |
|
| 220 |
+ fi |
|
| 221 |
+ done |
|
| 222 |
+ fi |
|
| 221 | 223 |
fi |
| 222 | 224 |
|
| 223 | 225 |
if [ "$Q_USE_NAMESPACE" != "False" ]; then |
| ... | ... |
@@ -502,20 +506,22 @@ function init_tempest {
|
| 502 | 502 |
local kernel="$image_dir/${base_image_name}-vmlinuz"
|
| 503 | 503 |
local ramdisk="$image_dir/${base_image_name}-initrd"
|
| 504 | 504 |
local disk_image="$image_dir/${base_image_name}-blank.img"
|
| 505 |
- # if the cirros uec downloaded and the system is uec capable |
|
| 506 |
- if [ -f "$kernel" -a -f "$ramdisk" -a -f "$disk_image" -a "$VIRT_DRIVER" != "openvz" \ |
|
| 507 |
- -a \( "$LIBVIRT_TYPE" != "lxc" -o "$VIRT_DRIVER" != "libvirt" \) ]; then |
|
| 508 |
- echo "Prepare aki/ari/ami Images" |
|
| 509 |
- mkdir -p $BOTO_MATERIALS_PATH |
|
| 510 |
- ( #new namespace |
|
| 511 |
- # tenant:demo ; user: demo |
|
| 512 |
- source $TOP_DIR/accrc/demo/demo |
|
| 513 |
- euca-bundle-image -r ${CIRROS_ARCH} -i "$kernel" --kernel true -d "$BOTO_MATERIALS_PATH"
|
|
| 514 |
- euca-bundle-image -r ${CIRROS_ARCH} -i "$ramdisk" --ramdisk true -d "$BOTO_MATERIALS_PATH"
|
|
| 515 |
- euca-bundle-image -r ${CIRROS_ARCH} -i "$disk_image" -d "$BOTO_MATERIALS_PATH"
|
|
| 516 |
- ) 2>&1 </dev/null | cat |
|
| 517 |
- else |
|
| 518 |
- echo "Boto materials are not prepared" |
|
| 505 |
+ if is_service_enabled nova; then |
|
| 506 |
+ # if the cirros uec downloaded and the system is uec capable |
|
| 507 |
+ if [ -f "$kernel" -a -f "$ramdisk" -a -f "$disk_image" -a "$VIRT_DRIVER" != "openvz" \ |
|
| 508 |
+ -a \( "$LIBVIRT_TYPE" != "lxc" -o "$VIRT_DRIVER" != "libvirt" \) ]; then |
|
| 509 |
+ echo "Prepare aki/ari/ami Images" |
|
| 510 |
+ mkdir -p $BOTO_MATERIALS_PATH |
|
| 511 |
+ ( #new namespace |
|
| 512 |
+ # tenant:demo ; user: demo |
|
| 513 |
+ source $TOP_DIR/accrc/demo/demo |
|
| 514 |
+ euca-bundle-image -r ${CIRROS_ARCH} -i "$kernel" --kernel true -d "$BOTO_MATERIALS_PATH"
|
|
| 515 |
+ euca-bundle-image -r ${CIRROS_ARCH} -i "$ramdisk" --ramdisk true -d "$BOTO_MATERIALS_PATH"
|
|
| 516 |
+ euca-bundle-image -r ${CIRROS_ARCH} -i "$disk_image" -d "$BOTO_MATERIALS_PATH"
|
|
| 517 |
+ ) 2>&1 </dev/null | cat |
|
| 518 |
+ else |
|
| 519 |
+ echo "Boto materials are not prepared" |
|
| 520 |
+ fi |
|
| 519 | 521 |
fi |
| 520 | 522 |
} |
| 521 | 523 |
|