Fix stable/mitaka gate failures
This change is squashed from backports of0b6a3fbdfa
andb68c0e27e3
. These two bugfixes form a circular depencency and can't be merged without each other. The other way to solve this deadlock is to revert https://review.openstack.org/322811 and https://review.openstack.org/320998, merge https://review.openstack.org/321563 and then start anew. Here are the commit messages of both changes: Neutron-LBaaS: Fix network_resources path * upstream tempest changed the namespace for network_resources, this change updates that path * fixed changed deprecated config parameters * replaced network_cilent passed into DeletableSubnet with subnets_client and routers_client Refactor gate hooks The aim of this change is to make gate_hook and post_test_hook more generic and prepare base for adding a new functional job and tests. The patch also includes a number cosmetic changes which should make the hooks' code easier to read. - Moved all argument parsing to decode_args.sh. - gate_hook: Extracted code related to configuring Octavia into a separate function. - post_test_hook: Filling test_subset is not required if the aim is to run all set (api-* job). - post_test_hook: Don't set OS_TEST_PATH and OS_TESTR_CONCURRENCY as it's also done in tox.ini. - Style fixes. Change-Id: I32eaa12fb27a4cfbd09bd20e9821ebd310c32e44 Closes-Bug: #1581660 Closes-Bug: #1592564 Related-Bug: #1585116
This commit is contained in:
parent
5bcc99dd69
commit
c502db8400
@ -2,13 +2,15 @@
|
||||
|
||||
# This file is meant to be sourced by the other hooks
|
||||
|
||||
# Legacy values for $1 and $2:
|
||||
# $1 - lbaasv2, lbaasv1 (lbaasversion)
|
||||
# $2 - scenario, minimal, api, healthmonitor, listener, loadbalancer, member, pool (lbaastest)
|
||||
# Legacy values for $1, $2 and $3:
|
||||
# $1 - dsvm-functional, tempest (testtype)
|
||||
# $2 - lbaasv2, lbaasv1 (lbaasversion)
|
||||
# $3 - scenario, minimal, api, healthmonitor, listener, loadbalancer, member, pool (lbaastest)
|
||||
|
||||
# Args being phased in:
|
||||
# $1 - same
|
||||
# $2 - test-driver, with any missing -driver being "octavia"
|
||||
# $2 - same
|
||||
# $3 - test-driver, with any missing -driver being "octavia"
|
||||
# scenario-octavia
|
||||
# minimal-octavia
|
||||
# api-namespace
|
||||
@ -21,8 +23,10 @@
|
||||
|
||||
|
||||
|
||||
lbaasversion="$1"
|
||||
lbaastest="$2"
|
||||
|
||||
testtype="$1"
|
||||
lbaasversion="$2"
|
||||
lbaastest="$3"
|
||||
lbaasenv=$(echo "$lbaastest" | perl -ne '/^(.*)-([^-]+)$/ && print "$1";')
|
||||
if [ -z "$lbaasenv" ]; then
|
||||
lbaasenv=$lbaastest
|
||||
@ -32,4 +36,23 @@ if [ -z "$lbaasdriver" ]; then
|
||||
lbaasdriver='octavia'
|
||||
fi
|
||||
|
||||
testenv=${lbaastest:-"apiv2"}
|
||||
|
||||
if [ "$lbaasversion" = "lbaasv1" ]; then
|
||||
testenv="apiv1"
|
||||
elif [ "$lbaasversion" = "lbaasv2" ]; then
|
||||
case "$lbaasenv" in
|
||||
"api"|"healthmonitor"|"listener"|"loadbalancer"|"member"|"minimal"|"pool")
|
||||
testenv="apiv2"
|
||||
;;
|
||||
"scenario")
|
||||
testenv="scenario"
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognized env $lbaasenv".
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
|
@ -5,64 +5,24 @@ set -ex
|
||||
GATE_DEST=$BASE/new
|
||||
DEVSTACK_PATH=$GATE_DEST/devstack
|
||||
|
||||
# Sort out our gate args
|
||||
. `dirname "$0"`/decode_args.sh
|
||||
|
||||
testenv=${lbaastest:-"apiv2"}
|
||||
|
||||
if [ "$lbaasversion" = "lbaasv1" ]; then
|
||||
testenv="apiv1"
|
||||
elif [ "$lbaasversion" = "lbaasv2" ]; then
|
||||
if [ "$lbaasenv" = "healthmonitor" ] || [ "$lbaasenv" = "listener" ] || [ "$lbaasenv" = "loadbalancer" ] || [ "$lbaasenv" = "member" ] || [ "$lbaasenv" = "minimal" ] || [ "$lbaasenv" = "pool" ]; then
|
||||
testenv="apiv2"
|
||||
elif [ "$lbaasenv" = "scenario" ]; then
|
||||
testenv="scenario"
|
||||
fi
|
||||
fi
|
||||
|
||||
export DEVSTACK_LOCAL_CONFIG+="
|
||||
enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas
|
||||
enable_plugin barbican https://git.openstack.org/openstack/barbican
|
||||
"
|
||||
if [ "$lbaasdriver" = "octavia" ]; then
|
||||
|
||||
# Sort out our gate args
|
||||
. $(dirname "$0")/decode_args.sh
|
||||
|
||||
|
||||
function _setup_octavia {
|
||||
export DEVSTACK_LOCAL_CONFIG+="
|
||||
enable_plugin octavia https://git.openstack.org/openstack/octavia
|
||||
"
|
||||
fi
|
||||
|
||||
if [ "$testenv" != "scenario" ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+="
|
||||
DISABLE_AMP_IMAGE_BUILD=True
|
||||
"
|
||||
# Not needed for API tests
|
||||
ENABLED_SERVICES+="-horizon,-ceilometer-acentral,-ceilometer-acompute,"
|
||||
ENABLED_SERVICES+="-ceilometer-alarm-evaluator,-ceilometer-alarm-notifier,"
|
||||
ENABLED_SERVICES+="-ceilometer-anotification,-ceilometer-api,"
|
||||
ENABLED_SERVICES+="-ceilometer-collector,"
|
||||
fi
|
||||
|
||||
# These are not needed with either v1 or v2
|
||||
ENABLED_SERVICES+="-c-api,-c-bak,-c-sch,-c-vol,-cinder"
|
||||
ENABLED_SERVICES+=",-s-account,-s-container,-s-object,-s-proxy"
|
||||
|
||||
if [ "$testenv" != "apiv1" ]; then
|
||||
# Override enabled services, so we can turn on lbaasv2.
|
||||
# While we're at it, disable cinder and swift, since we don't need them.
|
||||
ENABLED_SERVICES+=",q-lbaasv2,-q-lbaas"
|
||||
if [ "$lbaasdriver" = "octavia" ]; then
|
||||
ENABLED_SERVICES+=",octavia,o-cw,o-hk,o-hm,o-api"
|
||||
fi
|
||||
|
||||
if [ "$lbaasdriver" = "namespace" ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+="
|
||||
NEUTRON_LBAAS_SERVICE_PROVIDERV2=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
|
||||
"
|
||||
fi
|
||||
fi
|
||||
export ENABLED_SERVICES
|
||||
|
||||
if [ "$lbaasdriver" = "octavia" -a "$testenv" = "apiv2" ]; then
|
||||
cat > $DEVSTACK_PATH/local.conf <<EOF
|
||||
enable_plugin octavia https://git.openstack.org/openstack/octavia
|
||||
"
|
||||
if [ "$testenv" != "apiv1" ]; then
|
||||
ENABLED_SERVICES+="octavia,o-cw,o-hk,o-hm,o-api,"
|
||||
fi
|
||||
if [ "$testenv" = "apiv2" ]; then
|
||||
cat > "$DEVSTACK_PATH/local.conf" <<EOF
|
||||
[[post-config|/etc/octavia/octavia.conf]]
|
||||
[DEFAULT]
|
||||
debug = True
|
||||
@ -74,16 +34,62 @@ network_driver = network_noop_driver
|
||||
|
||||
EOF
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$lbaasdriver" = "octavia" -a "$testenv" = "scenario" ]; then
|
||||
cat > $DEVSTACK_PATH/local.conf <<EOF
|
||||
if [ "$testenv" = "scenario" ]; then
|
||||
cat > "$DEVSTACK_PATH/local.conf" <<EOF
|
||||
[[post-config|/etc/octavia/octavia.conf]]
|
||||
[DEFAULT]
|
||||
debug = True
|
||||
|
||||
EOF
|
||||
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
$GATE_DEST/devstack-gate/devstack-vm-gate.sh
|
||||
|
||||
case "$testtype" in
|
||||
|
||||
"tempest")
|
||||
# These are not needed with either v1 or v2
|
||||
ENABLED_SERVICES+="-c-api,-c-bak,-c-sch,-c-vol,-cinder,"
|
||||
ENABLED_SERVICES+="-s-account,-s-container,-s-object,-s-proxy,"
|
||||
|
||||
if [ "$testenv" != "scenario" ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+="
|
||||
DISABLE_AMP_IMAGE_BUILD=True
|
||||
"
|
||||
# Not needed for API tests
|
||||
ENABLED_SERVICES+="-horizon,-ceilometer-acentral,-ceilometer-acompute,"
|
||||
ENABLED_SERVICES+="-ceilometer-alarm-evaluator,-ceilometer-alarm-notifier,"
|
||||
ENABLED_SERVICES+="-ceilometer-anotification,-ceilometer-api,"
|
||||
ENABLED_SERVICES+="-ceilometer-collector,"
|
||||
fi
|
||||
|
||||
if [ "$testenv" != "apiv1" ]; then
|
||||
# Override enabled services, so we can turn on lbaasv2.
|
||||
# While we're at it, disable cinder and swift, since we don't need them.
|
||||
ENABLED_SERVICES+="q-lbaasv2,-q-lbaas,"
|
||||
|
||||
if [ "$lbaasdriver" = "namespace" ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+="
|
||||
NEUTRON_LBAAS_SERVICE_PROVIDERV2=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
|
||||
"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$lbaasdriver" = "octavia" ]; then
|
||||
_setup_octavia
|
||||
fi
|
||||
|
||||
export ENABLED_SERVICES
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unrecognized test type $testtype".
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
"$GATE_DEST"/devstack-gate/devstack-vm-gate.sh
|
||||
|
@ -8,28 +8,10 @@ SCRIPTS_DIR="/usr/os-testr-env/bin"
|
||||
OCTAVIA_DIR="$BASE/new/octavia"
|
||||
|
||||
# Sort out our gate args
|
||||
. `dirname "$0"`/decode_args.sh
|
||||
. $(dirname "$0")/decode_args.sh
|
||||
|
||||
LBAAS_VERSION=$lbaasversion
|
||||
LBAAS_TEST=$lbaasenv
|
||||
LBAAS_DRIVER=$lbaasdriver
|
||||
|
||||
if [ "$LBAAS_VERSION" = "lbaasv1" ]; then
|
||||
testenv="apiv1"
|
||||
else
|
||||
testenv="apiv2"
|
||||
case "$LBAAS_TEST" in
|
||||
api)
|
||||
if [ "$LBAAS_DRIVER" = "namespace" ]; then
|
||||
test_subset="load_balancers "
|
||||
test_subset+="listeners "
|
||||
test_subset+="pools "
|
||||
test_subset+="members "
|
||||
test_subset+="health_monitor"
|
||||
else
|
||||
testenv=${LBAAS_TEST:-"apiv2"}
|
||||
fi
|
||||
;;
|
||||
if [ "$testenv" = "apiv2" ]; then
|
||||
case "$lbaasenv" in
|
||||
minimal)
|
||||
# Temporarily just do the happy path
|
||||
test_subset="neutron_lbaas.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_create_load_balancer(?!_) "
|
||||
@ -58,16 +40,13 @@ else
|
||||
scenario)
|
||||
testenv="scenario"
|
||||
;;
|
||||
*)
|
||||
testenv=${LBAAS_TEST:-"apiv2"}
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
function generate_testr_results {
|
||||
# Give job user rights to access tox logs
|
||||
sudo -H -u $owner chmod o+rw .
|
||||
sudo -H -u $owner chmod o+rw -R .testrepository
|
||||
sudo -H -u "$owner" chmod o+rw .
|
||||
sudo -H -u "$owner" chmod o+rw -R .testrepository
|
||||
if [ -f ".testrepository/0" ] ; then
|
||||
subunit-1to2 < .testrepository/0 > ./testrepository.subunit
|
||||
$SCRIPTS_DIR/subunit2html ./testrepository.subunit testr_results.html
|
||||
@ -78,28 +57,14 @@ function generate_testr_results {
|
||||
}
|
||||
|
||||
owner=tempest
|
||||
# Configure the api and scenario tests to use the tempest.conf set by devstack
|
||||
sudo_env="TEMPEST_CONFIG_DIR=$TEMPEST_CONFIG_DIR"
|
||||
|
||||
# Set owner permissions according to job's requirements.
|
||||
cd $NEUTRON_LBAAS_DIR
|
||||
sudo chown -R $owner:stack $NEUTRON_LBAAS_DIR
|
||||
cd "$NEUTRON_LBAAS_DIR"
|
||||
sudo chown -R $owner:stack "$NEUTRON_LBAAS_DIR"
|
||||
if [ "$lbaasdriver" = "octavia" ]; then
|
||||
sudo chown -R $owner:stack $OCTAVIA_DIR
|
||||
fi
|
||||
|
||||
sudo_env=" OS_TESTR_CONCURRENCY=1"
|
||||
|
||||
# Configure the api and scenario tests to use the tempest.conf set by devstack
|
||||
sudo_env+=" TEMPEST_CONFIG_DIR=$TEMPEST_CONFIG_DIR"
|
||||
|
||||
if [ "$testenv" = "apiv2" ]; then
|
||||
sudo_env+=" OS_TEST_PATH=$NEUTRON_LBAAS_DIR/neutron_lbaas/tests/tempest/v2/api"
|
||||
elif [ "$testenv" = "apiv1" ]; then
|
||||
sudo_env+=" OS_TEST_PATH=$NEUTRON_LBAAS_DIR/neutron_lbaas/tests/tempest/v1/api"
|
||||
elif [ "$testenv" = "scenario" ]; then
|
||||
sudo_env+=" OS_TEST_PATH=$NEUTRON_LBAAS_DIR/neutron_lbaas/tests/tempest/v2/scenario"
|
||||
else
|
||||
echo "ERROR: unsupported testenv: $testenv"
|
||||
exit 1
|
||||
sudo chown -R $owner:stack "$OCTAVIA_DIR"
|
||||
fi
|
||||
|
||||
# Run tests
|
||||
@ -107,8 +72,6 @@ echo "Running neutron lbaas $testenv test suite"
|
||||
set +e
|
||||
|
||||
sudo -H -u $owner $sudo_env tox -e $testenv -- $test_subset
|
||||
# sudo -H -u $owner $sudo_env testr init
|
||||
# sudo -H -u $owner $sudo_env testr run
|
||||
|
||||
testr_exit_code=$?
|
||||
set -e
|
||||
|
@ -236,12 +236,13 @@ class BaseNetworkTest(test.BaseTestCase):
|
||||
ip_version = ip_version if ip_version is not None else cls._ip_version
|
||||
gateway_not_set = gateway == ''
|
||||
if ip_version == 4:
|
||||
cidr = cidr or netaddr.IPNetwork(CONF.network.tenant_network_cidr)
|
||||
mask_bits = mask_bits or CONF.network.tenant_network_mask_bits
|
||||
cidr = cidr or netaddr.IPNetwork(CONF.network.project_network_cidr)
|
||||
mask_bits = mask_bits or CONF.network.project_network_mask_bits
|
||||
elif ip_version == 6:
|
||||
cidr = (
|
||||
cidr or netaddr.IPNetwork(CONF.network.tenant_network_v6_cidr))
|
||||
mask_bits = mask_bits or CONF.network.tenant_network_v6_mask_bits
|
||||
cidr or netaddr.IPNetwork(
|
||||
CONF.network.project_network_v6_cidr))
|
||||
mask_bits = mask_bits or CONF.network.project_network_v6_mask_bits
|
||||
# Find a cidr that is not in use yet and create a subnet with it
|
||||
for subnet_cidr in cidr.subnet(mask_bits):
|
||||
if gateway_not_set:
|
||||
|
@ -30,7 +30,7 @@ from tempest import config
|
||||
from tempest import exceptions
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest.scenario import manager
|
||||
from tempest.services.network import resources as net_resources
|
||||
from tempest.scenario import network_resources as net_resources
|
||||
from tempest import test
|
||||
|
||||
from neutron_lbaas._i18n import _
|
||||
@ -106,7 +106,7 @@ class BaseTestCase(manager.NetworkScenarioTest):
|
||||
if not test.is_extension_enabled('lbaasv2', 'network'):
|
||||
msg = 'LBaaS Extension is not enabled'
|
||||
raise cls.skipException(msg)
|
||||
if not (cfg.tenant_networks_reachable or cfg.public_network_id):
|
||||
if not (cfg.project_networks_reachable or cfg.public_network_id):
|
||||
msg = ('Either tenant_networks_reachable must be "true", or '
|
||||
'public_network_id must be defined.')
|
||||
raise cls.skipException(msg)
|
||||
@ -126,7 +126,8 @@ class BaseTestCase(manager.NetworkScenarioTest):
|
||||
if tenant_net:
|
||||
tenant_subnet = self._list_subnets(tenant_id=self.tenant_id)[0]
|
||||
self.subnet = net_resources.DeletableSubnet(
|
||||
client=self.network_client,
|
||||
subnets_client=self.subnets_client,
|
||||
routers_client=self.routers_client,
|
||||
**tenant_subnet)
|
||||
self.network = tenant_net
|
||||
else:
|
||||
@ -187,7 +188,7 @@ class BaseTestCase(manager.NetworkScenarioTest):
|
||||
server = server['server']
|
||||
self.servers_keypairs[server['id']] = keypair
|
||||
if (config.network.public_network_id and not
|
||||
config.network.tenant_networks_reachable):
|
||||
config.network.project_networks_reachable):
|
||||
public_network_id = config.network.public_network_id
|
||||
floating_ip = self.create_floating_ip(
|
||||
server, public_network_id)
|
||||
@ -408,7 +409,7 @@ class BaseTestCase(manager.NetworkScenarioTest):
|
||||
# tempest.conf file
|
||||
if ip_version == 4:
|
||||
if (config.network.public_network_id and not
|
||||
config.network.tenant_networks_reachable):
|
||||
config.network.project_networks_reachable):
|
||||
load_balancer = net_resources.AttributeDict(self.load_balancer)
|
||||
self._assign_floating_ip_to_lb_vip(load_balancer)
|
||||
self.vip_ip = self.floating_ips[
|
||||
@ -418,7 +419,6 @@ class BaseTestCase(manager.NetworkScenarioTest):
|
||||
# vip port - see https://bugs.launchpad.net/neutron/+bug/1163569
|
||||
# However the linuxbridge-agent does, and it is necessary to add a
|
||||
# security group with a rule that allows tcp port 80 to the vip port.
|
||||
# self.network_client.update_port(
|
||||
self.ports_client.update_port(
|
||||
self.load_balancer.get('vip_port_id'),
|
||||
security_groups=[self.security_group.id])
|
||||
|
Loading…
Reference in New Issue
Block a user