Allow installing tempest only with keystone
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
diff --git a/lib/tempest b/lib/tempest
index 66f1a78..3996cd1 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -110,34 +110,36 @@
# ... Also ensure we only take active images, so we don't get snapshots in process
declare -a images
- while read -r IMAGE_NAME IMAGE_UUID; do
- if [ "$IMAGE_NAME" = "$DEFAULT_IMAGE_NAME" ]; then
- image_uuid="$IMAGE_UUID"
- image_uuid_alt="$IMAGE_UUID"
- fi
- images+=($IMAGE_UUID)
- # TODO(stevemar): update this command to use openstackclient's `openstack image list`
- # when it supports listing by status.
- done < <(glance image-list --status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }')
+ if is_service_enabled glance; then
+ while read -r IMAGE_NAME IMAGE_UUID; do
+ if [ "$IMAGE_NAME" = "$DEFAULT_IMAGE_NAME" ]; then
+ image_uuid="$IMAGE_UUID"
+ image_uuid_alt="$IMAGE_UUID"
+ fi
+ images+=($IMAGE_UUID)
+ # TODO(stevemar): update this command to use openstackclient's `openstack image list`
+ # when it supports listing by status.
+ done < <(glance image-list --status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }')
- case "${#images[*]}" in
- 0)
- echo "Found no valid images to use!"
- exit 1
- ;;
- 1)
- if [ -z "$image_uuid" ]; then
- image_uuid=${images[0]}
- image_uuid_alt=${images[0]}
- fi
- ;;
- *)
- if [ -z "$image_uuid" ]; then
- image_uuid=${images[0]}
- image_uuid_alt=${images[1]}
- fi
- ;;
- esac
+ case "${#images[*]}" in
+ 0)
+ echo "Found no valid images to use!"
+ exit 1
+ ;;
+ 1)
+ if [ -z "$image_uuid" ]; then
+ image_uuid=${images[0]}
+ image_uuid_alt=${images[0]}
+ fi
+ ;;
+ *)
+ if [ -z "$image_uuid" ]; then
+ image_uuid=${images[0]}
+ image_uuid_alt=${images[1]}
+ fi
+ ;;
+ esac
+ fi
# Create tempest.conf from tempest.conf.sample
# copy every time, because the image UUIDS are going to change
@@ -161,63 +163,65 @@
ALT_TENANT_NAME=${ALT_TENANT_NAME:-alt_demo}
ADMIN_TENANT_ID=$(openstack project list | awk "/ admin / { print \$2 }")
- # If the ``DEFAULT_INSTANCE_TYPE`` not declared, use the new behavior
- # Tempest creates instane types for himself
- if [[ -z "$DEFAULT_INSTANCE_TYPE" ]]; then
- available_flavors=$(nova flavor-list)
- if [[ ! ( $available_flavors =~ 'm1.nano' ) ]]; then
- if is_arch "ppc64"; then
- # qemu needs at least 128MB of memory to boot on ppc64
- nova flavor-create m1.nano 42 128 0 1
- else
- nova flavor-create m1.nano 42 64 0 1
+ if is_service_enabled nova; then
+ # If the ``DEFAULT_INSTANCE_TYPE`` not declared, use the new behavior
+ # Tempest creates instane types for himself
+ if [[ -z "$DEFAULT_INSTANCE_TYPE" ]]; then
+ available_flavors=$(nova flavor-list)
+ if [[ ! ( $available_flavors =~ 'm1.nano' ) ]]; then
+ if is_arch "ppc64"; then
+ # qemu needs at least 128MB of memory to boot on ppc64
+ nova flavor-create m1.nano 42 128 0 1
+ else
+ nova flavor-create m1.nano 42 64 0 1
+ fi
fi
- fi
- flavor_ref=42
- boto_instance_type=m1.nano
- if [[ ! ( $available_flavors =~ 'm1.micro' ) ]]; then
- if is_arch "ppc64"; then
- nova flavor-create m1.micro 84 256 0 1
- else
- nova flavor-create m1.micro 84 128 0 1
+ flavor_ref=42
+ boto_instance_type=m1.nano
+ if [[ ! ( $available_flavors =~ 'm1.micro' ) ]]; then
+ if is_arch "ppc64"; then
+ nova flavor-create m1.micro 84 256 0 1
+ else
+ nova flavor-create m1.micro 84 128 0 1
+ fi
fi
- fi
- flavor_ref_alt=84
- else
- # Check Nova for existing flavors and, if set, look for the
- # ``DEFAULT_INSTANCE_TYPE`` and use that.
- boto_instance_type=$DEFAULT_INSTANCE_TYPE
- flavor_lines=`nova flavor-list`
- IFS=$'\r\n'
- flavors=""
- for line in $flavor_lines; do
- f=$(echo $line | awk "/ $DEFAULT_INSTANCE_TYPE / { print \$2 }")
- flavors="$flavors $f"
- done
+ flavor_ref_alt=84
+ else
+ # Check Nova for existing flavors and, if set, look for the
+ # ``DEFAULT_INSTANCE_TYPE`` and use that.
+ boto_instance_type=$DEFAULT_INSTANCE_TYPE
+ flavor_lines=`nova flavor-list`
+ IFS=$'\r\n'
+ flavors=""
+ for line in $flavor_lines; do
+ f=$(echo $line | awk "/ $DEFAULT_INSTANCE_TYPE / { print \$2 }")
+ flavors="$flavors $f"
+ done
- for line in $flavor_lines; do
- flavors="$flavors `echo $line | grep -v "^\(|\s*ID\|+--\)" | cut -d' ' -f2`"
- done
+ for line in $flavor_lines; do
+ flavors="$flavors `echo $line | grep -v "^\(|\s*ID\|+--\)" | cut -d' ' -f2`"
+ done
- IFS=" "
- flavors=($flavors)
- num_flavors=${#flavors[*]}
- echo "Found $num_flavors flavors"
- if [[ $num_flavors -eq 0 ]]; then
- echo "Found no valid flavors to use!"
- exit 1
- fi
- flavor_ref=${flavors[0]}
- flavor_ref_alt=$flavor_ref
-
- # ensure flavor_ref and flavor_ref_alt have different values
- # some resize instance in tempest tests depends on this.
- for f in ${flavors[@]:1}; do
- if [[ $f -ne $flavor_ref ]]; then
- flavor_ref_alt=$f
- break
+ IFS=" "
+ flavors=($flavors)
+ num_flavors=${#flavors[*]}
+ echo "Found $num_flavors flavors"
+ if [[ $num_flavors -eq 0 ]]; then
+ echo "Found no valid flavors to use!"
+ exit 1
fi
- done
+ flavor_ref=${flavors[0]}
+ flavor_ref_alt=$flavor_ref
+
+ # ensure flavor_ref and flavor_ref_alt have different values
+ # some resize instance in tempest tests depends on this.
+ for f in ${flavors[@]:1}; do
+ if [[ $f -ne $flavor_ref ]]; then
+ flavor_ref_alt=$f
+ break
+ fi
+ done
+ fi
fi
if [ "$Q_USE_NAMESPACE" != "False" ]; then
@@ -460,20 +464,22 @@
local kernel="$image_dir/${base_image_name}-vmlinuz"
local ramdisk="$image_dir/${base_image_name}-initrd"
local disk_image="$image_dir/${base_image_name}-blank.img"
- # if the cirros uec downloaded and the system is uec capable
- if [ -f "$kernel" -a -f "$ramdisk" -a -f "$disk_image" -a "$VIRT_DRIVER" != "openvz" \
- -a \( "$LIBVIRT_TYPE" != "lxc" -o "$VIRT_DRIVER" != "libvirt" \) ]; then
- echo "Prepare aki/ari/ami Images"
- mkdir -p $BOTO_MATERIALS_PATH
- ( #new namespace
- # tenant:demo ; user: demo
- source $TOP_DIR/accrc/demo/demo
- euca-bundle-image -r ${CIRROS_ARCH} -i "$kernel" --kernel true -d "$BOTO_MATERIALS_PATH"
- euca-bundle-image -r ${CIRROS_ARCH} -i "$ramdisk" --ramdisk true -d "$BOTO_MATERIALS_PATH"
- euca-bundle-image -r ${CIRROS_ARCH} -i "$disk_image" -d "$BOTO_MATERIALS_PATH"
- ) 2>&1 </dev/null | cat
- else
- echo "Boto materials are not prepared"
+ if is_service_enabled nova; then
+ # if the cirros uec downloaded and the system is uec capable
+ if [ -f "$kernel" -a -f "$ramdisk" -a -f "$disk_image" -a "$VIRT_DRIVER" != "openvz" \
+ -a \( "$LIBVIRT_TYPE" != "lxc" -o "$VIRT_DRIVER" != "libvirt" \) ]; then
+ echo "Prepare aki/ari/ami Images"
+ mkdir -p $BOTO_MATERIALS_PATH
+ ( #new namespace
+ # tenant:demo ; user: demo
+ source $TOP_DIR/accrc/demo/demo
+ euca-bundle-image -r ${CIRROS_ARCH} -i "$kernel" --kernel true -d "$BOTO_MATERIALS_PATH"
+ euca-bundle-image -r ${CIRROS_ARCH} -i "$ramdisk" --ramdisk true -d "$BOTO_MATERIALS_PATH"
+ euca-bundle-image -r ${CIRROS_ARCH} -i "$disk_image" -d "$BOTO_MATERIALS_PATH"
+ ) 2>&1 </dev/null | cat
+ else
+ echo "Boto materials are not prepared"
+ fi
fi
}