From 3f4f3e584fb354362aca90c05ca795ae29e6de4d Mon Sep 17 00:00:00 2001 From: Maor Blaustein Date: Wed, 27 Dec 2023 19:34:41 +0200 Subject: [PATCH] Neutron HA nodeset of 3 controllers and 2 computes The neutron tempest migrated plugin has tests that soft/hard shutdown services/nodes and expect HA setup to handle it. Therefore this change adds a devstack OVS HA gate job to notice such tests work properly, and any HA checks related code isn't broken. Change-Id: Ifa574542d6d4b59c63335e95052922b494cad5e2 --- playbooks/multinode-devstack-ovs-tempest.yaml | 7 ++ zuul.d/base-nested-switch.yaml | 50 ++++++++++++- zuul.d/master_jobs.yaml | 72 +++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 playbooks/multinode-devstack-ovs-tempest.yaml diff --git a/playbooks/multinode-devstack-ovs-tempest.yaml b/playbooks/multinode-devstack-ovs-tempest.yaml new file mode 100644 index 0000000..d399eb3 --- /dev/null +++ b/playbooks/multinode-devstack-ovs-tempest.yaml @@ -0,0 +1,7 @@ +- hosts: all + vars: + install_ovs: false + roles: + # For ovs from source jobs we need to reconfigure bridges after devstack setup + - multi-node-bridge + - multi-node-setup diff --git a/zuul.d/base-nested-switch.yaml b/zuul.d/base-nested-switch.yaml index 16d270f..011ca14 100644 --- a/zuul.d/base-nested-switch.yaml +++ b/zuul.d/base-nested-switch.yaml @@ -1,4 +1,52 @@ # Base nested switch job for 2023.1 and later +- nodeset: + name: whitebox-neutron-five-node-centos-9-stream + nodes: + - name: controller + label: nested-virt-centos-9-stream + - name: controller2 + label: nested-virt-centos-9-stream + - name: controller3 + label: nested-virt-centos-9-stream + - name: compute1 + label: nested-virt-centos-9-stream + - name: compute2 + label: nested-virt-centos-9-stream + groups: + # Node where tests are executed and test results collected + - name: tempest + nodes: + - controller + # Nodes running the controller service + - name: controller + nodes: + - controller + - controller2 + - controller3 + # Nodes running the compute service + - name: compute + nodes: + - compute1 + - compute2 + # Nodes that are not controller + - name: subnode + nodes: + - compute1 + - compute2 + - controller2 + - controller3 + # Switch node for multinode networking setup + - name: switch + nodes: + - controller + # Peer nodes for multinode networking setup + - name: peers + nodes: + - controller2 + - controller3 + - compute1 + - compute2 + - job: name: whitebox-neutron-tempest-plugin-base-nested-switch parent: whitebox-neutron-tempest-plugin-base @@ -7,7 +55,7 @@ regex: ^(unmaintained|stable/(victoria|wallaby|xena|yoga|zed)).*$ negate: true # Comment nodeset and vars to switch back to non nested nodes - nodeset: devstack-single-node-centos-9-stream + nodeset: whitebox-neutron-five-node-centos-9-stream vars: &nested_virt_vars devstack_localrc: LIBVIRT_TYPE: kvm diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml index 8825458..a8a838c 100644 --- a/zuul.d/master_jobs.yaml +++ b/zuul.d/master_jobs.yaml @@ -6,6 +6,7 @@ Perform setup common to all Neutron tempest tests roles: - zuul: openstack/devstack + - zuul: openstack/neutron-tempest-plugin required-projects: - openstack/neutron - openstack/neutron-tempest-plugin @@ -195,6 +196,22 @@ image_is_advanced: true available_type_drivers: flat,geneve,vlan,gre,local,vxlan provider_net_base_segm_id: 1 + group-vars: + subnode: + devstack_plugins: + neutron: https://opendev.org/openstack/neutron.git + devstack_services: + # 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 irrelevant-files: - ^\.pylintrc$ - ^(test-|)requirements.txt$ @@ -225,6 +242,8 @@ name: whitebox-neutron-tempest-plugin-ovn parent: whitebox-neutron-tempest-plugin-base-nested-switch timeout: 10800 + # TODO(mblue): Remove line when changing ovn job to be HA job as well. + nodeset: devstack-single-node-centos-9-stream vars: network_api_extensions_ovn: - vlan-transparent @@ -298,6 +317,34 @@ '/var/log/ovn': 'logs' '/var/log/openvswitch': 'logs' '/var/lib/ovn': 'logs' + 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 + 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 + 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 + ENABLE_TLS: True irrelevant-files: - ^\.pylintrc$ - ^(test-|)requirements.txt$ @@ -348,6 +395,7 @@ - job: name: whitebox-neutron-tempest-plugin-openvswitch parent: whitebox-neutron-tempest-plugin-base-nested-switch + pre-run: playbooks/multinode-devstack-ovs-tempest.yaml timeout: 10000 vars: configure_swap_size: 2048 @@ -367,6 +415,17 @@ q-l3: true q-meta: true q-metering: true + # 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 network_api_extensions_openvswitch: - dhcp_agent_scheduler - local_ip @@ -398,6 +457,19 @@ neutron_plugin_options: available_type_drivers: flat,vlan,local,vxlan firewall_driver: openvswitch + 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 irrelevant-files: - ^\.pylintrc$ - ^(test-|)requirements.txt$