customize_advanced_image(){ # Here we customize an advanced image to make it suitable for the plugin tests. # Note: the advanced image was downloaded and set by neutron_tempest_plugin. # However we can't rely on neutron_tempest_plugin capabilities for customizing # the image since it expects a debian/ubuntu based image which does not fit well # to this plugin tests. # This code modifies the downloaded image by adding packages required by this # plugin, uploads the image to glance and if all passed successfully it updates # tempest.conf with the new image reference instead of the original one. install_package guestfs-tools for image_url in ${IMAGE_URLS//,/ }; do if [[ $image_url =~ $ADVANCED_IMAGE_NAME ]]; then image_file=$(basename $image_url) break fi done if [ -n "$image_file" ] && [ -s "$TOP_DIR/files/$image_file" ]; then cp -f $TOP_DIR/files/$image_file /tmp image_file_custom=/tmp/$image_file timeout 150 sudo virt-customize -a $image_file_custom --install nmap,keepalived,iperf3 --selinux-relabel if [ "$?" == "0" ]; then source $TOP_DIR/openrc admin old_image_id=$(openstack image show $ADVANCED_IMAGE_NAME -c id -f value) new_image_id=$(openstack image create --disk-format qcow2 --container-format bare --public $ADVANCED_IMAGE_NAME --file $image_file_custom -c id -f value) if [ -n "$new_image_id" ]; then iniset $TEMPEST_CONFIG neutron_plugin_options advanced_image_ref $new_image_id openstack image delete $old_image_id fi fi fi } customize_public_network_and_subnet(){ if [[ $Q_AGENT == "ovn" ]]; then # Make external network shared with dhcp enabled to allow tests with VMs # on external network to run. Note, we still keep these settings disabled # for OVS jobs since they can require additional settings, like ensuring # that only a single DHCP server is available on the external network. openstack network set --share $PUBLIC_NETWORK_NAME openstack subnet set --dhcp $PUBLIC_SUBNET_NAME # Decrease external network MTU to allow tests from test_mtu.py to run # (rsafrono) tests from test_mtu.py can not be run due to # https://bugs.launchpad.net/neutron/+bug/2060828 # The line should be uncommented once the issue is fixed # openstack network set --mtu 1330 $PUBLIC_NETWORK_NAME fi } if [[ "$1" == "stack" ]]; then case "$2" in install) if [[ "$INSTALL_TEMPEST" == "True" ]]; then echo "tempest ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/99_tempest fi ;; test-config) customize_advanced_image customize_public_network_and_subnet ;; esac fi