From b53e623b6371b164e9735551f0bf232730c451cd Mon Sep 17 00:00:00 2001 From: Maor Blaustein Date: Tue, 28 Nov 2023 11:29:21 +0200 Subject: [PATCH] Replacing TripleO with Devstack jobs TripleO jobs needed for testing whitebox neutron tempest plugin are deprecated and most reasonable option is to use Devstack jobs instead. Change-Id: I397562b1c8a6752474a7c5b8a22ae98c9662f8b5 --- .zuul.yaml | 36 --- zuul.d/base-nested-switch.yaml | 19 ++ zuul.d/master_jobs.yaml | 437 +++++++++++++++++++++++++++++++++ zuul.d/project.yaml | 22 ++ 4 files changed, 478 insertions(+), 36 deletions(-) delete mode 100644 .zuul.yaml create mode 100644 zuul.d/base-nested-switch.yaml create mode 100644 zuul.d/master_jobs.yaml create mode 100644 zuul.d/project.yaml diff --git a/.zuul.yaml b/.zuul.yaml deleted file mode 100644 index 48bf87d..0000000 --- a/.zuul.yaml +++ /dev/null @@ -1,36 +0,0 @@ -- job: - name: whitebox-neutron-tempest-plugin-ovn-tripleo-ci-centos-9-containers-multinode - parent: tripleo-ci-centos-9-containers-multinode - vars: - nodes: 1ctlr - release: wallaby - branch_override: 'stable/wallaby' - featureset: '010' - featureset_override: - tempest_run_concurrency: 2 - tempest_tempest_conf_overrides: - auth.use_dynamic_credentials: true - tempest_services: - - neutron - - whitebox_neutron - tempest_test_whitelist: - - 'whitebox_neutron_tempest_plugin.tests' - use_os_tempest: true - irrelevant-files: - - ^test-requirements.txt$ - - ^releasenotes/.*$ - - ^doc/.*$ - - ^setup.cfg$ - - ^.*\.conf\.sample$ - - ^.*\.rst$ - - ^tox.ini$ - -- project: - templates: - - tempest-plugin-jobs - check: - jobs: - - whitebox-neutron-tempest-plugin-ovn-tripleo-ci-centos-9-containers-multinode - gate: - jobs: - - whitebox-neutron-tempest-plugin-ovn-tripleo-ci-centos-9-containers-multinode diff --git a/zuul.d/base-nested-switch.yaml b/zuul.d/base-nested-switch.yaml new file mode 100644 index 0000000..a353356 --- /dev/null +++ b/zuul.d/base-nested-switch.yaml @@ -0,0 +1,19 @@ +# Base nested switch job for 2023.1 and later +- job: + name: whitebox-neutron-tempest-plugin-base-nested-switch + parent: whitebox-neutron-tempest-plugin-base + abstract: true + branches: + regex: ^(stable/(train|ussuri|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 + vars: &nested_virt_vars + devstack_localrc: + LIBVIRT_TYPE: kvm + # NOTE(ykarel): seeing issues with host-passthrough mode + # https://bugs.launchpad.net/neutron/+bug/2036603 + # LIBVIRT_CPU_MODE: host-passthrough + CIRROS_VERSION: 0.6.2 + DEFAULT_IMAGE_NAME: cirros-0.6.2-x86_64-disk + DEFAULT_IMAGE_FILE_NAME: cirros-0.6.2-x86_64-disk.img diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml new file mode 100644 index 0000000..016ffa3 --- /dev/null +++ b/zuul.d/master_jobs.yaml @@ -0,0 +1,437 @@ +- job: + name: whitebox-neutron-tempest-plugin-base + parent: devstack-tempest + abstract: true + description: | + Perform setup common to all Neutron tempest tests + roles: + - zuul: openstack/devstack + required-projects: + - openstack/neutron + - openstack/neutron-tempest-plugin + - x/whitebox-neutron-tempest-plugin + - openstack/tempest + vars: + tempest_concurrency: 4 # out of 4 + tox_envlist: all + # NOTE(slaweq): in case of some tests, which requires advanced image, + # default test timeout set to 1200 seconds may be not enough if job is + # run on slow node + tempest_test_timeout: 2400 + tempest_test_regex: "\ + (^whitebox_neutron_tempest_plugin.tests.scenario)" + devstack_localrc: + USE_PYTHON3: true + NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_tempest) | join(',') }}" + PHYSICAL_NETWORK: public + IMAGE_URLS: https://cloud-images.ubuntu.com/minimal/releases/focal/release/ubuntu-20.04-minimal-cloudimg-amd64.img + CIRROS_VERSION: 0.6.2 + DEFAULT_IMAGE_NAME: cirros-0.6.2-x86_64-uec + DEFAULT_IMAGE_FILE_NAME: cirros-0.6.2-x86_64-uec.tar.gz + ADVANCED_IMAGE_NAME: ubuntu-20.04-minimal-cloudimg-amd64 + ADVANCED_INSTANCE_TYPE: ntp_image_256M + ADVANCED_INSTANCE_USER: ubuntu + CUSTOMIZE_IMAGE: true + BUILD_TIMEOUT: 784 + # TODO(lucasagomes): Re-enable MOD_WSGI after + # https://bugs.launchpad.net/neutron/+bug/1912359 is implemented + NEUTRON_DEPLOY_MOD_WSGI: false + # TODO(ihrachys): remove OVN_BUILD_FROM_SOURCE once the OS packages + # include at least OVN v22.03.3. + OVN_BUILD_FROM_SOURCE: True + # TODO(ihrachys): switch back to a tagged version when it's released + # OVN_BRANCH: "v22.03.3" + OVN_BRANCH: "36e3ab9b47e93af0599a818e9d6b2930e49473f0" + OVS_BRANCH: "2410b95597fcec5f733caf77febdb46f4ffacd27" + devstack_plugins: + neutron: https://opendev.org/openstack/neutron.git + neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git + whitebox-neutron-tempest-plugin: https://opendev.org/x/whitebox-neutron-tempest-plugin.git + tempest_plugins: + - neutron-tempest-plugin + - whitebox-neutron-tempest-plugin + # TODO(slaweq): find a way to put this list of extensions in + # neutron repository and keep it different per branch, + # then it could be removed from here + network_api_extensions_common: &api_extensions + - address-group + - address-scope + - agent + - allowed-address-pairs + - auto-allocated-topology + - availability_zone + - binding + - default-subnetpools + - dns-domain-ports + - dns-integration + - dns-integration-domain-keywords + - empty-string-filtering + - expose-port-forwarding-in-fip + - expose-l3-conntrack-helper + - ext-gw-mode + - external-net + - extra_dhcp_opt + - extraroute + - extraroute-atomic + - filter-validation + - fip-port-details + - flavors + - floating-ip-port-forwarding + - floating-ip-port-forwarding-detail + - floatingip-pools + - ip-substring-filtering + - l3-conntrack-helper + - l3-ext-ndp-proxy + - l3-flavors + - l3-ha + - l3-ndp-proxy + - l3_agent_scheduler + - metering + - multi-provider + - net-mtu + - net-mtu-writable + - network-ip-availability + - network_availability_zone + - network-segment-range + - pagination + - port-device-profile + - port-resource-request + - port-resource-request-groups + - port-mac-address-regenerate + - port-security + - port-security-groups-filtering + - project-id + - provider + - qos + - qos-fip + - quotas + - quota_details + - rbac-address-group + - rbac-address-scope + - rbac-policies + - rbac-security-groups + - rbac-subnetpool + - router + - router_availability_zone + - security-group + - security-groups-remote-address-group + - segment + - service-type + - sorting + - standard-attr-description + - standard-attr-revisions + - standard-attr-segment + - standard-attr-tag + - standard-attr-timestamp + - stateful-security-group + - subnet_allocation + - subnet-dns-publish-fixed-ip + - subnet-service-types + - subnetpool-prefix-ops + - tag-ports-during-bulk-creation + - trunk + - trunk-details + - uplink-status-propagation + devstack_services: + tempest: true + neutron-dns: true + neutron-log: true + neutron-qos: true + neutron-segments: true + neutron-trunk: true + neutron-uplink-status-propagation: true + neutron-network-segment-range: true + neutron-port-forwarding: true + neutron-conntrack-helper: true + neutron-tag-ports-during-bulk-creation: true + neutron-ndp-proxy: true + br-ex-tcpdump: true + br-int-flows: true + # Cinder services + c-api: false + c-bak: false + c-sch: false + c-vol: false + cinder: false + # We don't need Swift to be run in the Neutron jobs + s-account: false + s-container: false + s-object: false + s-proxy: false + devstack_local_conf: + post-config: + $NEUTRON_CONF: + QUOTAS: + quota_router: 100 + quota_floatingip: 500 + quota_security_group: 150 + quota_security_group_rule: 1000 + /$NEUTRON_CORE_PLUGIN_CONF: + ml2: + type_drivers: flat,geneve,vlan,gre,local,vxlan + ml2_type_vlan: + network_vlan_ranges: foo:1:10 + ml2_type_vxlan: + vni_ranges: 1:2000 + ml2_type_gre: + tunnel_id_ranges: 1:1000 + network_log: + local_output_log_base: /tmp/test_log.log + $NEUTRON_L3_CONF: + agent: + availability_zone: nova + $NEUTRON_DHCP_CONF: + agent: + availability_zone: nova + test-config: + $TEMPEST_CONFIG: + neutron_plugin_options: + provider_vlans: foo, + agent_availability_zone: nova + image_is_advanced: true + available_type_drivers: flat,geneve,vlan,gre,local,vxlan + provider_net_base_segm_id: 1 + irrelevant-files: + - ^\.pylintrc$ + - ^(test-|)requirements.txt$ + - lower-constraints.txt + - ^releasenotes/.*$ + - ^doc/.*$ + - ^setup.cfg$ + - ^.*\.rst$ + - ^.*\.conf\.sample$ + - ^neutron/locale/.*$ + - ^neutron/tests/unit/.*$ + - ^neutron/tests/fullstack/.* + - ^neutron/tests/functional/.* + - ^tools/.*$ + - ^tox.ini$ + - ^plugin.spec$ + - ^neutron/agent/.*$ + - ^neutron/privileged/.*$ + - ^neutron_lib/tests/unit/.*$ + - ^neutron_tempest_plugin/scenario/.*$ + - ^rally-jobs/.*$ + - ^roles/.*functional.*$ + - ^playbooks/.*functional.*$ + - ^vagrant/.*$ + - ^zuul.d/(?!(project)).*\.yaml + +- job: + name: whitebox-neutron-tempest-plugin-ovn + parent: whitebox-neutron-tempest-plugin-base-nested-switch + timeout: 10800 + vars: + network_api_extensions_ovn: + - vlan-transparent + devstack_localrc: + Q_AGENT: ovn + NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_ovn) | join(',') }}" + Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger + Q_ML2_PLUGIN_TYPE_DRIVERS: local,flat,vlan,geneve + Q_ML2_TENANT_NETWORK_TYPE: geneve + Q_USE_PROVIDERNET_FOR_PUBLIC: true + ENABLE_CHASSIS_AS_GW: true + OVN_L3_CREATE_PUBLIC_NETWORK: true + OVN_DBS_LOG_LEVEL: dbg + ENABLE_TLS: True + OVN_IGMP_SNOOPING_ENABLE: True + # TODO(ihrachys): remove OVN_BUILD_FROM_SOURCE once the OS packages + # include at least OVN v22.03.3. + OVN_BUILD_FROM_SOURCE: True + # TODO(ihrachys): switch back to a tagged version when it's released + # OVN_BRANCH: "v22.03.3" + OVN_BRANCH: "36e3ab9b47e93af0599a818e9d6b2930e49473f0" + OVS_BRANCH: "2410b95597fcec5f733caf77febdb46f4ffacd27" + OVS_SYSCONFDIR: "/usr/local/etc/openvswitch" + devstack_services: + 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 + q-agt: false + q-dhcp: false + q-l3: false + q-meta: false + q-metering: false + q-qos: true + # Cinder services + c-api: false + c-bak: false + c-sch: false + c-vol: false + cinder: false + s-account: false + s-container-sync: false + s-container: false + s-object: false + s-proxy: false + devstack_local_conf: + post-config: + $NEUTRON_CONF: + DEFAULT: + enable_dvr: false + vlan_transparent: true + /$NEUTRON_CORE_PLUGIN_CONF: + ml2: + type_drivers: local,flat,vlan,geneve + test-config: + $TEMPEST_CONFIG: + network-feature-enabled: + available_features: "" + neutron_plugin_options: + available_type_drivers: local,flat,vlan,geneve + is_igmp_snooping_enabled: True + firewall_driver: ovn + 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' + '/var/log/ovn': 'logs' + '/var/log/openvswitch': 'logs' + '/var/lib/ovn': 'logs' + irrelevant-files: + - ^\.pylintrc$ + - ^(test-|)requirements.txt$ + - lower-constraints.txt + - ^releasenotes/.*$ + - ^doc/.*$ + - ^setup.cfg$ + - ^.*\.rst$ + - ^.*\.conf\.sample$ + - ^neutron/locale/.*$ + - ^neutron/tests/unit/.*$ + - ^neutron/tests/fullstack/.* + - ^neutron/tests/functional/.* + - ^tools/.*$ + - ^tox.ini$ + - ^plugin.spec$ + - ^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/services/qos/drivers/linuxbridge/.*$ + - ^neutron/services/qos/drivers/openvswitch/.*$ + - ^neutron/services/trunk/drivers/linuxbridge/.*$ + - ^neutron/services/trunk/drivers/openvswitch/.*$ + - ^neutron/scheduler/.*$ + - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$ + - ^neutron_tempest_plugin/services/bgp/.*$ + - ^rally-jobs/.*$ + - ^roles/.*functional.*$ + - ^playbooks/.*dvr-multinode.*$ + - ^playbooks/.*dynamic-routing.*$ + - ^playbooks/.*functional.*$ + - ^playbooks/.*linuxbridge.*$ + - ^vagrant/.*$ + - ^zuul.d/(?!(project)).*\.yaml + +- job: + name: whitebox-neutron-tempest-plugin-openvswitch + parent: whitebox-neutron-tempest-plugin-base-nested-switch + timeout: 10000 + vars: + configure_swap_size: 2048 + devstack_services: + # Disable OVN services + br-ex-tcpdump: false + br-int-flows: false + ovn-controller: false + ovn-northd: false + ovs-vswitchd: false + ovsdb-server: false + q-ovn-metadata-agent: false + # Neutron services + neutron-local-ip-static: true + q-agt: true + q-dhcp: true + q-l3: true + q-meta: true + q-metering: true + network_api_extensions_openvswitch: + - dhcp_agent_scheduler + - local_ip + - qos-bw-minimum-ingress + network_available_features: &available_features + - ipv6_metadata + devstack_localrc: + Q_AGENT: openvswitch + Q_ML2_TENANT_NETWORK_TYPE: vxlan + Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch + NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_openvswitch) | join(',') }}" + devstack_local_conf: + post-config: + $NEUTRON_CONF: + DEFAULT: + enable_dvr: false + l3_ha: true + /$NEUTRON_CORE_PLUGIN_CONF: + agent: + tunnel_types: vxlan,gre + ovs: + tunnel_bridge: br-tun + bridge_mappings: public:br-ex + openflow_processed_per_port: True + test-config: + $TEMPEST_CONFIG: + network-feature-enabled: + available_features: "{{ network_available_features | join(',') }}" + neutron_plugin_options: + available_type_drivers: flat,vlan,local,vxlan + firewall_driver: openvswitch + irrelevant-files: + - ^\.pylintrc$ + - ^(test-|)requirements.txt$ + - lower-constraints.txt + - ^releasenotes/.*$ + - ^doc/.*$ + - ^setup.cfg$ + - ^.*\.rst$ + - ^.*\.conf\.sample$ + - ^neutron/locale/.*$ + - ^neutron/tests/unit/.*$ + - ^neutron/tests/fullstack/.* + - ^neutron/tests/functional/.* + - ^tools/.*$ + - ^tox.ini$ + - ^plugin.spec$ + - ^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/.*$ + - ^neutron/services/ovn_l3/.*$ + - ^neutron/services/logapi/drivers/ovn/.*$ + - ^neutron/services/portforwarding/drivers/ovn/.*$ + - ^neutron/services/qos/drivers/linuxbridge/.*$ + - ^neutron/services/qos/drivers/ovn/.*$ + - ^neutron/services/trunk/drivers/linuxbridge/.*$ + - ^neutron/services/trunk/drivers/ovn/.*$ + - ^neutron/cmd/ovn/.*$ + - ^neutron/common/ovn/.*$ + - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$ + - ^neutron_tempest_plugin/services/bgp/.*$ + - ^rally-jobs/.*$ + - ^roles/.*functional.*$ + - ^playbooks/.*dvr-multinode.*$ + - ^playbooks/.*dynamic-routing.*$ + - ^playbooks/.*functional.*$ + - ^playbooks/.*linuxbridge.*$ + - ^vagrant/.*$ + - ^zuul.d/(?!(project)).*\.yaml diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml new file mode 100644 index 0000000..c37d2e7 --- /dev/null +++ b/zuul.d/project.yaml @@ -0,0 +1,22 @@ +- project-template: + name: whitebox-neutron-tempest-plugin-jobs + check: + jobs: + - whitebox-neutron-tempest-plugin-openvswitch + - whitebox-neutron-tempest-plugin-ovn + gate: + jobs: + - whitebox-neutron-tempest-plugin-openvswitch + - whitebox-neutron-tempest-plugin-ovn + +- project: + templates: + - whitebox-neutron-tempest-plugin-jobs + check: + jobs: + - whitebox-neutron-tempest-plugin-openvswitch + - whitebox-neutron-tempest-plugin-ovn + gate: + jobs: + - whitebox-neutron-tempest-plugin-openvswitch + - whitebox-neutron-tempest-plugin-ovn