neutron/zuul.d/tempest-multinode.yaml

501 lines
16 KiB
YAML
Raw Normal View History

- job:
name: neutron-ovs-tempest-dvr-ha-multinode-full
parent: tempest-multinode-full-py3
timeout: 10800
roles:
- zuul: openstack/neutron-tempest-plugin
required-projects:
- openstack/neutron
- openstack/tempest
pre-run: playbooks/dvr-multinode-scenario-pre-run.yaml
irrelevant-files: &openvswitch-irrelevant-files
- ^(test-|)requirements.txt$
- ^releasenotes/.*$
- ^doc/.*$
- ^setup.cfg$
- ^.*\.rst$
- ^neutron/locale/.*$
- ^neutron/tests/unit/.*$
- ^tools/.*$
- ^tox.ini$
- ^neutron/agent/ovn/.*$
- ^neutron/agent/windows/.*$
- ^neutron/plugins/ml2/drivers/linuxbridge/.*$
- ^neutron/plugins/ml2/drivers/macvtap/.*$
- ^neutron/plugins/ml2/drivers/mech_sriov/.*$
- ^neutron/plugins/ml2/drivers/ovn/.*$
voting: false
vars:
tox_envlist: integrated-network
devstack_localrc:
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
Q_AGENT: openvswitch
devstack_services:
br-ex-tcpdump: true
br-int-flows: true
# Neutron services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
q-svc: true
# OVN services
ovn-controller: false
ovn-northd: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Cinder services
c-api: false
c-bak: false
c-sch: false
c-vol: false
cinder: false
# Swift services
s-account: false
s-container: false
s-object: false
s-proxy: false
devstack_plugins:
neutron: https://opendev.org/openstack/neutron.git
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
router_distributed: True
l3_ha: True
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
"/$NEUTRON_CORE_PLUGIN_CONF":
ml2:
mechanism_drivers: openvswitch,l2population
agent:
enable_distributed_routing: True
l2_population: True
tunnel_types: vxlan
arp_responder: True
ovs:
tunnel_bridge: br-tun
bridge_mappings: public:br-ex
$NEUTRON_L3_CONF:
DEFAULT:
agent_mode: dvr_snat
agent:
availability_zone: nova
debug_iptables_rules: True
$NEUTRON_DHCP_CONF:
agent:
availability_zone: nova
group-vars:
subnode:
devstack_plugins:
neutron: https://opendev.org/openstack/neutron.git
devstack_localrc:
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
Q_AGENT: openvswitch
devstack_services:
q-agt: true
q-l3: true
q-meta: true
br-ex-tcpdump: true
br-int-flows: true
# OVN services
ovn-controller: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Cinder services
c-api: false
c-bak: false
c-sch: false
c-vol: false
cinder: false
# Swift services
s-account: false
s-container: false
s-object: false
s-proxy: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
router_distributed: True
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
"/$NEUTRON_CORE_PLUGIN_CONF":
agent:
enable_distributed_routing: True
l2_population: True
tunnel_types: vxlan
arp_responder: True
ovs:
tunnel_bridge: br-tun
bridge_mappings: public:br-ex
resource_provider_bandwidths: br-ex:1000000:1000000
$NEUTRON_L3_CONF:
DEFAULT:
agent_mode: dvr_snat
agent:
availability_zone: nova
debug_iptables_rules: True
# TODO(ralonsoh): remove this duplicated definition when "devstack",
# "tempest" and "nova" adopt the new name.
- job:
name: neutron-tempest-dvr-ha-multinode-full
parent: neutron-ovs-tempest-dvr-ha-multinode-full
- job:
name: neutron-ovs-tempest-multinode-full
parent: tempest-multinode-full-py3
timeout: 10800
irrelevant-files: *openvswitch-irrelevant-files
vars:
tox_envlist: integrated-network
devstack_localrc:
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
Q_AGENT: openvswitch
devstack_plugins:
neutron: https://opendev.org/openstack/neutron.git
devstack_services:
br-ex-tcpdump: true
br-int-flows: true
# Neutron services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
q-svc: true
# OVN services
ovn-controller: false
ovn-northd: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Cinder services
c-api: false
c-bak: false
c-sch: false
c-vol: false
cinder: false
# Swift services
s-account: false
s-container: false
s-object: false
s-proxy: false
[OVS] Fix live-migration connection disruption The goal of this patch is to avoid the connection disruption during the live-migration using OVS. Since [1], when a port is migrated, both the source and the destination hosts are added to the profile binding information. Initially, the source host binding is activated and the destination is deactivated. When the port is created in the destination host (created by Nova), the port was not configured because the binding was not activated. The binding (that means, all the OpenFlow rules) was done when Nova sent the port activation. That happend when the VM was already running in the destination host. If the OVS agent was loaded, the port was bound seconds later to the port activation. Instead, this patch enables the OpenFlow rule creation in the destination host when the port is created. Another problem are the "neutron-vif-plugged" events sent by Neutron to Nova to inform about the port binding. Nova is expecting one single event informing about the destination port binding. At this moment, Nova considers the port is bound and ready to transmit data. Several triggers were firing expectedly this event: - When the port binding was updated, the port is set to down and then up again, forcing this event. - When the port binding was updated, first the binding is deleted and then updated with the new information. That triggers in the source host to set the port down and the up again, sending the event. This patch removes those events, sending the "neutron-vif-plugged" event only when the port is bound to the destination host (and as commented before, this is happening now regardless of the binding activation status). This feature depends on [2]. If this Nova patch is not in place, Nova will never plug the port in the destination host and Neutron won't be able to send the vif-plugged event to Nova to finish the live-migration process. Because from Neutron cannot query Nova to know if this patch is in place, a new temporary configuration option has been created to enable this feature. The default value will be "False"; that means Neutron will behave as before. [1]https://bugs.launchpad.net/neutron/+bug/1580880 [2]https://review.opendev.org/c/openstack/nova/+/767368 Closes-Bug: #1901707 Change-Id: Iee323943ac66e566e5a5e92de1861832e86fc7fc
2020-12-03 11:58:35 +00:00
devstack_local_conf:
post-config:
$NEUTRON_CONF:
nova:
live_migration_events: True
$NEUTRON_L3_CONF:
agent:
debug_iptables_rules: True
group-vars:
subnode:
devstack_localrc:
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
Q_AGENT: openvswitch
devstack_services:
q-agt: true
# OVN services
ovn-controller: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Cinder services
c-bak: false
c-vol: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
nova:
live_migration_events: True
$NEUTRON_L3_CONF:
agent:
debug_iptables_rules: True
- job:
name: neutron-ovs-tempest-slow
parent: tempest-slow-py3
timeout: 10800
irrelevant-files: *openvswitch-irrelevant-files
vars:
devstack_plugins:
neutron: https://opendev.org/openstack/neutron.git
devstack_localrc:
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
Q_AGENT: openvswitch
devstack_services:
br-ex-tcpdump: true
br-int-flows: true
# Neutron services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
q-svc: true
# OVN services
ovn-controller: false
ovn-northd: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Cinder services
c-api: false
c-bak: false
c-sch: false
c-vol: false
cinder: false
# Swift services
s-account: false
s-container: false
s-object: false
s-proxy: false
devstack_local_conf:
post-config:
$NEUTRON_L3_CONF:
agent:
debug_iptables_rules: True
group-vars:
subnode:
devstack_localrc:
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
Q_AGENT: openvswitch
devstack_services:
q-agt: true
# OVN services
ovn-controller: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Cinder services
c-bak: false
c-vol: false
devstack_local_conf:
post-config:
$NEUTRON_L3_CONF:
agent:
debug_iptables_rules: True
- job:
name: neutron-ovn-multinode-base
description: Base multinode job for devstack/tempest to test Neutron with ovn driver.
abstract: true
parent: tempest-multinode-full-py3
timeout: 10800
required-projects:
- openstack/neutron
- openstack/neutron-tempest-plugin
- openstack/tempest
irrelevant-files:
- ^(test-|)requirements.txt$
- ^releasenotes/.*$
- ^doc/.*$
- ^setup.cfg$
- ^.*\.rst$
- ^neutron/locale/.*$
- ^neutron/tests/unit/.*$
- ^tools/.*$
- ^tox.ini$
- ^neutron/agent/dhcp/.*$
- ^neutron/agent/l2/.*$
- ^neutron/agent/l3/.*$
- ^neutron/agent/metadata/.*$
- ^neutron/agent/windows/.*$
- ^neutron/agent/dhcp_agent.py
- ^neutron/agent/l3_agent.py
- ^neutron/agent/metadata_agent.py
- ^neutron/agent/resource_cache.py
- ^neutron/agent/rpc.py
- ^neutron/agent/securitygroup_rpc.py
- ^neutron/plugins/ml2/drivers/linuxbridge/.*$
- ^neutron/plugins/ml2/drivers/openvswitch/.*$
- ^neutron/plugins/ml2/drivers/macvtap/.*$
- ^neutron/plugins/ml2/drivers/mech_sriov/.*$
- ^neutron/scheduler/.*$
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/neutron-tempest-plugin
pre-run: playbooks/prepare-ovn-multinode.yaml
vars:
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
neutron_plugin_options:
is_igmp_snooping_enabled: True
post-config:
"/$NEUTRON_CORE_PLUGIN_CONF":
ovn:
enable_distributed_floating_ip: True
devstack_localrc:
Q_AGENT: ovn
ML2_L3_PLUGIN: ovn-router,trunk
Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger
Q_ML2_TENANT_NETWORK_TYPE: geneve
Q_USE_PROVIDERNET_FOR_PUBLIC: true
PHYSICAL_NETWORK: public
ENABLE_CHASSIS_AS_GW: true
OVN_L3_CREATE_PUBLIC_NETWORK: true
OVN_DBS_LOG_LEVEL: dbg
BUILD_TIMEOUT: 784
ENABLE_TLS: True
OVN_IGMP_SNOOPING_ENABLE: True
devstack_plugins:
neutron: https://opendev.org/openstack/neutron
neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin
zuul_copy_output:
'/var/log/ovn': 'logs'
'/var/log/openvswitch': 'logs'
'/var/lib/ovn': 'logs'
extensions_to_txt:
db: true
devstack_services:
etcd: false
br-ex-tcpdump: true
br-int-flows: true
q-ovn-metadata-agent: true
ovn-controller: true
ovn-northd: true
ovs-vswitchd: true
ovsdb-server: true
placement-api: true
q-svc: true
q-agt: false
q-dhcp: false
q-l3: false
q-meta: false
q-metering: false
q-dns: true
# Cinder services
c-api: false
c-bak: false
c-sch: false
c-vol: false
cinder: false
# When running python3 Swift should be disabled for now
s-account: false
s-container: false
s-object: false
s-proxy: false
tls-proxy: true
q-qos: true
neutron-segments: True
q-port-forwarding: true
dstat: true
group-vars:
subnode:
devstack_services:
br-ex-tcpdump: true
br-int-flows: true
ovn-controller: true
ovn-northd: false
ovs-vswitchd: true
ovsdb-server: true
# NOTE(slaweq): it's just to check if this will force devstack to
# configure neutron and ML2 plugin on subnodes
q-fake: true
q-svc: false
q-agt: false
q-dhcp: false
q-l3: false
q-meta: false
q-metering: false
q-ovn-metadata-agent: true
tls-proxy: true
dstat: true
# Cinder services
c-bak: false
c-vol: false
devstack_localrc:
Q_AGENT: ovn
Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger
Q_ML2_TENANT_NETWORK_TYPE: geneve
Q_USE_PROVIDERNET_FOR_PUBLIC: true
PHYSICAL_NETWORK: public
ENABLE_CHASSIS_AS_GW: false
OVN_DBS_LOG_LEVEL: dbg
USE_PYTHON3: True
ENABLE_TLS: True
- job:
name: neutron-ovn-tempest-slow
parent: neutron-ovn-multinode-base
vars:
tox_envlist: slow-serial
tempest_test_regex: ""
# TODO(slaweq): remove tests from
# tempest.scenario.test_network_v6.TestGettingAddress module from
# prohibit list when bug https://bugs.launchpad.net/neutron/+bug/1863577
# will be fixed
# TODO(ralonsoh): "test_update_router_admin_state" excluded until bug
# https://bugs.launchpad.net/neutron/+bug/1890445 is fixed.
tempest_exclude_regex: "\
(^tempest.scenario.test_network_v6.TestGettingAddress)|\
(^tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_router_admin_state)"
- job:
# TODO(slaweq): propose job with ovs-release and move -master one to
# experimental queue
name: neutron-ovn-tempest-full-multinode-ovs-master
parent: neutron-ovn-multinode-base
vars:
tox_envlist: all
tempest_test_regex: "^(?!.*\
(?:.*\\[.*slow.*\\])|\
(?:tempest.api.network.admin.test_quotas.QuotasTest.test_lbaas_quotas.*)|\
(?:tempest.api.network.test_load_balancer.*)|\
(?:tempest.scenario.test_load_balancer.*)|\
(?:tempest.api.network.admin.test_load_balancer.*)|\
(?:tempest.api.network.admin.test_lbaas.*)|\
(?:tempest.api.network.test_fwaas_extensions.*)|\
(?:tempest.api.network.test_metering_extensions.*)|\
(?:tempest.thirdparty.boto.test_s3.*)|\
(?:tempest.api.identity*)|\
(?:tempest.api.image*)|\
(?:tempest.api.volume*)|\
(?:tempest.api.compute.images*)|\
(?:tempest.api.compute.keypairs*)|\
(?:tempest.api.compute.certificates*)|\
(?:tempest.api.compute.flavors*)|\
(?:tempest.api.compute.test_quotas*)|\
(?:tempest.api.compute.test_versions*)|\
(?:tempest.api.compute.volumes*)|\
(?:tempest.api.compute.admin.test_flavor*)|\
(?:tempest.api.compute.admin.test_volume*)|\
(?:tempest.api.compute.admin.test_hypervisor*)|\
(?:tempest.api.compute.admin.test_aggregate*)|\
(?:tempest.api.compute.admin.test_quota*)|\
(?:tempest.scenario.test_volume*))\
((^neutron_tempest_plugin.api)|\
(^neutron_tempest_plugin.scenario)|\
(tempest.(api|scenario|thirdparty))).*$"
zuul_copy_output:
'{{ devstack_base_dir }}/data/ovs': 'logs'
'{{ devstack_base_dir }}/data/ovn': 'logs'
'{{ devstack_log_dir }}/ovsdb-server-nb.log': 'logs'
'{{ devstack_log_dir }}/ovsdb-server-sb.log': 'logs'
devstack_localrc:
OVN_BUILD_FROM_SOURCE: True
OVN_BRANCH: master
OVS_BRANCH: master
group-vars:
subnode:
devstack_localrc:
OVN_BUILD_FROM_SOURCE: True
OVN_BRANCH: master
OVS_BRANCH: master