| # Generic use functions |
| |
| # ensure we don't re-source this in the same environment |
| [[ -z "$_NEUTRON_TEMPEST_PLUGIN_FUNCTIONS" ]] || return 0 |
| declare -r -g _NEUTRON_TEMPEST_PLUGIN_FUNCTIONS=1 |
| |
| # Create a function copying the code from an existing one |
| function save_function { |
| local old_name=$1 |
| local new_name=$2 |
| |
| # Saving the same function again after redefining it could produce a |
| # recorsive function in case for example this plugin is sourced twice |
| if type -t "${new_name}"; then |
| # Prevent copying the same function twice |
| return 0 |
| fi |
| |
| # Save xtrace setting |
| _XTRACE_FUNCTIONS=$(set +o | grep xtrace) |
| set +o xtrace |
| |
| # Get code of the original function |
| local old_code=$(declare -f ${old_name}) |
| # Produce code for the new function |
| local new_code="${new_name}${old_code#${old_name}}" |
| # Define the new function |
| eval "${new_code}" |
| |
| # Restore xtrace |
| $_XTRACE_FUNCTIONS |
| } |
| |
| #Add advanced image config to tempest.conf |
| function configure_advanced_image { |
| local advanced_image_uuid |
| |
| if ! is_service_enabled glance; then |
| # if glance is not enabled, there is no image for to configure |
| return 0 |
| fi |
| |
| if [[ -z "$ADVANCED_IMAGE_NAME" ]]; then |
| # if name of advanced image is not provided, there is no image to |
| # configure |
| return 0 |
| fi |
| |
| while read -r IMAGE_NAME IMAGE_UUID; do |
| if [ "$IMAGE_NAME" = "$ADVANCED_IMAGE_NAME" ]; then |
| advanced_image_uuid="$IMAGE_UUID" |
| break |
| fi |
| done < <(openstack image list --property status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }') |
| |
| if [[ -z "$advanced_image_uuid" ]]; then |
| echo "No image with name $ADVANCED_IMAGE_NAME found." |
| return 1 |
| fi |
| |
| iniset $TEMPEST_CONFIG neutron_plugin_options advanced_image_ref $advanced_image_uuid |
| iniset $TEMPEST_CONFIG neutron_plugin_options advanced_image_ssh_user $ADVANCED_INSTANCE_USER |
| } |
| |
| |
| function configure_flavor_for_advanced_image { |
| local flavor_ref |
| |
| if ! is_service_enabled nova; then |
| # if nova is not enabled, there is no flavor to configure |
| return 0 |
| fi |
| |
| if [[ -z "$ADVANCED_INSTANCE_TYPE" ]]; then |
| # if name of flavor for advanced image is not provided, there is no |
| # flavor to configure |
| return 0 |
| fi |
| |
| flavor_ref=$(openstack flavor show $ADVANCED_INSTANCE_TYPE -f value -c id) |
| if [[ -z "$flavor_ref" ]]; then |
| echo "Found no valid flavors to use for $ADVANCED_IMAGE_NAME !" |
| echo "Fallback to use $DEFAULT_INSTANCE_TYPE" |
| flavor_ref=$(iniget $TEMPEST_CONFIG compute flavor_ref) |
| fi |
| iniset $TEMPEST_CONFIG neutron_plugin_options advanced_image_flavor_ref $flavor_ref |
| } |
| |
| |
| function create_flavor_for_advance_image { |
| local name=$1 |
| local ram=$2 |
| local disk=$3 |
| local vcpus=$4 |
| |
| if [[ -z $(openstack flavor list | grep $name) ]]; then |
| openstack flavor create --ram $ram --disk $disk --vcpus $vcpus $name |
| fi |
| } |