From 9c6d3e073ecba61a89a222b7495f8625c775f13b Mon Sep 17 00:00:00 2001 From: Slawek Kaplonski Date: Tue, 26 Nov 2019 15:11:27 +0100 Subject: [PATCH] Rehome networking-ovn CI jobs to neutron repository As networking-ovn driver is going to be in neutron tree now, lets move also networking-ovn jobs definitions to the neutron repo. Change-Id: Ie1c66c773ee2d217b25bd915189e56254744a3d4 Related-Blueprint: neutron-ovn-merge --- .zuul.yaml | 399 +++++++++++++++++- .../contributor/testing/ci_scenario_jobs.rst | 8 + .../legacy/neutron-ovn-grenade/post.yaml | 15 + playbooks/legacy/neutron-ovn-grenade/run.yaml | 84 ++++ playbooks/multinode-setup.yaml | 4 + 5 files changed, 508 insertions(+), 2 deletions(-) create mode 100644 playbooks/legacy/neutron-ovn-grenade/post.yaml create mode 100644 playbooks/legacy/neutron-ovn-grenade/run.yaml create mode 100644 playbooks/multinode-setup.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 43d2d9bd34c..1efab1e5a72 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -35,6 +35,8 @@ - ^setup.cfg$ - ^tools/.*$ - ^tox.ini$ + - ^vagrant/.*$ + - ^migration/.*$ - neutron-tempest-dvr-ha-multinode-full - neutron-tempest-iptables_hybrid - ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa: @@ -42,8 +44,7 @@ irrelevant-files: *tempest-irrelevant-files - tempest-slow-py3: irrelevant-files: *tempest-irrelevant-files - - networking-ovn-tempest-dsvm-ovs-release: - irrelevant-files: *tempest-irrelevant-files + - neutron-ovn-tempest-ovs-release - networking-midonet-tempest-aio-ml2-centos-7: voting: false irrelevant-files: *tempest-irrelevant-files @@ -60,6 +61,19 @@ - neutron-tempest-with-uwsgi: voting: false - neutron-centos-7-tripleo-standalone + - neutron-ovn-rally-task + # TripleO jobs that deploy OVN. + # Note we don't use a project-template here, so it's easier + # to disable voting on one specific job if things go wrong. + # In Stein and beyond, fs010 will run using + # networking-ovn-tripleo-ci-centos-7-containers-multinode. + # If you need any support to debug these jobs in case of + # failures, please reach us on #tripleo IRC channel. + - neutron-ovn-tripleo-ci-centos-7-containers-multinode + - neutron-ovn-tempest-slow: + voting: false + - neutron-ovn-tempest-full-multinode-ovs-master: + voting: false gate: jobs: - neutron-functional @@ -75,11 +89,21 @@ irrelevant-files: *tempest-irrelevant-files - tempest-ipv6-only: irrelevant-files: *tempest-irrelevant-files + - neutron-ovn-tempest-ovs-release + - neutron-ovn-rally-task + - neutron-ovn-tripleo-ci-centos-7-containers-multinode + + experimental: + jobs: + - neutron-ovn-tempest-ovs-master + - neutron-ovn-grenade + periodic: jobs: - neutron-functional - neutron-tempest-postgres-full - neutron-tempest-with-os-ken-master + - neutron-ovn-tempest-ovs-master-fedora - job: name: neutron-functional @@ -162,6 +186,52 @@ - ^tools/.*$ - ^tox.ini$ +- job: + name: neutron-ovn-rally-task + parent: rally-task-at-devstack + required-projects: + - name: openstack/devstack + - name: openstack/devstack-gate + - name: openstack/rally + - name: openstack/rally-openstack + - name: openstack/networking-ovn + irrelevant-files: *tempest-irrelevant-files + vars: + devstack_plugins: + rally-openstack: https://opendev.org/openstack/rally-openstack + networking-ovn: https://opendev.org/openstack/networking-ovn + zuul_copy_output: + '{{ devstack_base_dir }}/data/ovs': 'logs' + extensions_to_txt: + db: true + devstack_services: + ovn-northd: true + ovn-controller: true + ovs-vswitchd: true + ovsdb-server: true + networking-ovn-metadata-agent: true + br-ex-tcpdump: true + br-int-flows: true + q-dhcp: false + q-l3: false + q-agt: false + q-meta: false + q-metering: false + devstack_localrc: + USE_PYTHON3: true + PHYSICAL_NETWORK: public + Q_USE_PROVIDERNET_FOR_PUBLIC: true + ENABLE_CHASSIS_AS_GW: true + OVN_L3_CREATE_PUBLIC_NETWORK: true + OVN_BRANCH: master + devstack_local_conf: + post-config: + "${RALLY_CONF_DIR}/${RALLY_CONF_FILE}": + openstack: + neutron_bind_l2_agent_types: "OVN Controller Gateway agent" + rally_task: rally-jobs/task-neutron.yaml + timeout: 7800 + - job: name: neutron-tempest-dvr parent: tempest-integrated-networking @@ -224,6 +294,20 @@ - openstack/neutron irrelevant-files: *tempest-irrelevant-files +- job: + name: neutron-ovn-grenade + parent: legacy-dsvm-base + run: playbooks/legacy/neutron-ovn-grenade/run.yaml + post-run: playbooks/legacy/neutron-ovn-grenade/post.yaml + timeout: 9000 + irrelevant-files: *tempest-irrelevant-files + required-projects: + - openstack/grenade + - openstack/devstack-gate + - openstack/neutron-tempest-plugin + - openstack/tempest + - openstack/networking-ovn + - job: name: neutron-tempest-dvr-ha-multinode-full parent: tempest-multinode-full-py3 @@ -429,3 +513,314 @@ tempest_test_whitelist: - 'tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops' irrelevant-files: *tempest-irrelevant-files + +- job: + name: neutron-ovn-tripleo-ci-centos-7-containers-multinode + parent: tripleo-ci-base-multinode + vars: + nodes: 1ctlr + featureset: '010' + irrelevant-files: *tempest-irrelevant-files + +- job: + name: neutron-ovn-grenade + parent: legacy-dsvm-base + run: playbooks/legacy/grenade-dsvm-networking-ovn/run.yaml + post-run: playbooks/legacy/grenade-dsvm-networking-ovn/post.yaml + timeout: 9000 + irrelevant-files: *tempest-irrelevant-files + required-projects: + - openstack/grenade + - openstack/devstack-gate + - openstack/neutron-tempest-plugin + - openstack/tempest + - openstack/networking-ovn + +- job: + name: neutron-ovn-base + description: Base job for devstack/tempest to test Neutron with ovn driver. + # TODO(slaweq): consider changing parent to be tempest-integrated-networking + # job instead of devstack-tempest + parent: devstack-tempest + timeout: 10800 + required-projects: + - openstack/devstack-gate + - openstack/networking-ovn + - openstack/neutron + - openstack/neutron-tempest-plugin + - openstack/octavia + - openstack/tempest + irrelevant-files: *tempest-irrelevant-files + vars: + tox_envlist: all-plugin + 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.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port)|\ + (?: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))).*$" + tempest_concurrency: 2 + devstack_localrc: + 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 + USE_PYTHON3: True + DOWNLOAD_DEFAULT_IMAGES: false + IMAGE_URLS: "http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img,https://cloud-images.ubuntu.com/releases/xenial/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img" + DEFAULT_IMAGE_NAME: cirros-0.4.0-x86_64-disk + DEFAULT_IMAGE_FILE_NAME: cirros-0.4.0-x86_64-disk.img + ADVANCED_IMAGE_NAME: ubuntu-16.04-server-cloudimg-amd64-disk1 + ADVANCED_INSTANCE_TYPE: ds512M + ADVANCED_INSTANCE_USER: ubuntu + BUILD_TIMEOUT: 784 + devstack_plugins: + networking-ovn: https://opendev.org/openstack/networking-ovn + neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin + octavia: https://opendev.org/openstack/octavia + zuul_copy_output: + '{{ devstack_base_dir }}/data/ovs': 'logs' + extensions_to_txt: + db: true + devstack_services: + br-ex-tcpdump: true + br-int-flows: true + c-api: true + c-sch: true + c-vol: true + dstat: true + g-api: true + g-reg: true + keystone: true + n-api-meta: true + n-api: true + n-cauth: true + n-cond-cell1: true + n-cpu: true + n-novnc-cell1: true + n-sch: true + n-super-cond: true + networking-ovn-metadata-agent: true + o-api: true + o-hk: true + ovn-controller: true + ovn-northd: true + ovn-octavia: true + ovs-vswitchd: true + ovsdb-server: true + placement-api: true + q-svc: true + q-dns: true + c-bak: false + etcd: false + peakmem_tracker: false + q-agt: false + q-dhcp: false + q-l3: false + q-meta: false + q-metering: false + s-account: false + s-container-sync: false + s-container: false + s-object: false + s-proxy: false + +- job: + name: neutron-ovn-tempest-ovs-master + description: Job testing for devstack/tempest testing Neutron with ovn driver and OVN master branch + parent: neutron-ovn-base + vars: + devstack_localrc: + OVN_BRANCH: master + +- job: + name: neutron-ovn-tempest-ovs-release + description: Job testing for devstack/tempest testing Neutron with ovn driver and latest released OVN branch + parent: neutron-ovn-base + vars: + devstack_localrc: + OVN_BRANCH: branch-2.12 + +- job: + name: neutron-ovn-tempest-ovs-master-fedora + description: Job testing for devstack/tempest testing Neutron with ovn driver and OVN master branch and Fedora + parent: neutron-ovn-tempest-ovs-master + nodeset: devstack-single-node-fedora-latest + +- 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/devstack-gate + - openstack/networking-ovn + - openstack/neutron + - openstack/neutron-tempest-plugin + - openstack/octavia + - openstack/tempest + irrelevant-files: *tempest-irrelevant-files + roles: + - zuul: zuul/zuul-jobs + - zuul: openstack/neutron-tempest-plugin + pre-run: playbooks/multinode-setup.yaml + vars: + devstack_localrc: + 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 + DOWNLOAD_DEFAULT_IMAGES: false + IMAGE_URLS: "http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img,https://cloud-images.ubuntu.com/releases/xenial/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img" + DEFAULT_IMAGE_NAME: cirros-0.4.0-x86_64-disk + DEFAULT_IMAGE_FILE_NAME: cirros-0.4.0-x86_64-disk.img + ADVANCED_IMAGE_NAME: ubuntu-16.04-server-cloudimg-amd64-disk1 + ADVANCED_INSTANCE_TYPE: ds512M + ADVANCED_INSTANCE_USER: ubuntu + BUILD_TIMEOUT: 784 + devstack_plugins: + networking-ovn: https://opendev.org/openstack/networking-ovn + neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin + octavia: https://opendev.org/openstack/octavia + zuul_copy_output: + '{{ devstack_base_dir }}/data/ovs': 'logs' + extensions_to_txt: + db: true + devstack_services: + c-bak: false + etcd: false + br-ex-tcpdump: true + br-int-flows: true + networking-ovn-metadata-agent: true + o-api: true + o-hk: true + ovn-controller: true + ovn-northd: true + ovn-octavia: true + ovs-vswitchd: true + ovsdb-server: true + placement-api: true + peakmem_tracker: false + q-svc: true + q-agt: false + q-dhcp: false + q-l3: false + q-meta: false + q-metering: false + # When running python3 Swift should be disabled for now + s-account: false + s-container: false + s-object: false + s-proxy: false + group-vars: + subnode: + devstack_services: + ovn-controller: true + ovn-northd: false + ovn-octavia: 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 + networking-ovn-metadata-agent: true + devstack_localrc: + Q_USE_PROVIDERNET_FOR_PUBLIC: true + PHYSICAL_NETWORK: public + ENABLE_CHASSIS_AS_GW: false + OVN_DBS_LOG_LEVEL: dbg + USE_PYTHON3: True + + +- job: + name: neutron-ovn-tempest-slow + parent: neutron-ovn-multinode-base + vars: + tox_envlist: slow-serial + tempest_test_regex: "" + # TODO(slaweq): remove test_port_security_macspoofing_port test from + # blacklist when bug https://bugs.launchpad.net/tempest/+bug/1728886 + # will be fixed + tempest_black_regex: "(?:tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port)" + +- 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-plugin + 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.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port)|\ + (?: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))).*$" + # TODO(slaweq): live_migration related test from the blacklist when bug + # https://bugzilla.redhat.com/show_bug.cgi?id=1716335 will be fixed + tempest_black_regex: "\ + (^tempest.api.compute.admin.test_live_migration.LiveAutoBlockMigrationV225Test)|\ + (^tempest.api.compute.admin.test_live_migration.LiveMigrationTest)" + devstack_localrc: + OVN_BRANCH: master + group-vars: + subnode: + devstack_localrc: + OVN_BRANCH: master diff --git a/doc/source/contributor/testing/ci_scenario_jobs.rst b/doc/source/contributor/testing/ci_scenario_jobs.rst index fcad15d2889..d6bb160259b 100644 --- a/doc/source/contributor/testing/ci_scenario_jobs.rst +++ b/doc/source/contributor/testing/ci_scenario_jobs.rst @@ -88,6 +88,14 @@ Below is a summary of those jobs. +----------------------------------------------+----------------------------------+---------+-------+-------------+-----------------+----------+-------+--------+------------+-------------+ |tempest-ipv6-only |tempest smoke + IPv6 tests | 3.6 | 1 | openvswitch | openvswitch | legacy | False | False | True | Yes | +----------------------------------------------+----------------------------------+---------+-------+-------------+-----------------+----------+-------+--------+------------+-------------+ + |neutron-ovn-tempest-ovs-release |Various tempest api, scenario | 3.6 | 1 | ovn | ovn | --- | False | False | True | Yes | + | |and neutron_tempest_plugi tests | | | | | | | | | | + +----------------------------------------------+----------------------------------+---------+-------+-------------+-----------------+----------+-------+--------+------------+-------------+ + |neutron-ovn-tempest-slow |tempest slow tests | 3.6 | 2 | ovn | ovn | --- | False | False | True | No | + +----------------------------------------------+----------------------------------+---------+-------+-------------+-----------------+----------+-------+--------+------------+-------------+ + |neutron-ovn-tempest-multinode-ovs-master |Various tempest api, scenario | 3.6 | 2 | ovn | ovn | --- | False | False | True | No | + | |and neutron_tempest_plugi tests | | | | | | | | | | + +----------------------------------------------+----------------------------------+---------+-------+-------------+-----------------+----------+-------+--------+------------+-------------+ Grenade jobs running in Neutron CI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/playbooks/legacy/neutron-ovn-grenade/post.yaml b/playbooks/legacy/neutron-ovn-grenade/post.yaml new file mode 100644 index 00000000000..e07f5510ae7 --- /dev/null +++ b/playbooks/legacy/neutron-ovn-grenade/post.yaml @@ -0,0 +1,15 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/logs/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff --git a/playbooks/legacy/neutron-ovn-grenade/run.yaml b/playbooks/legacy/neutron-ovn-grenade/run.yaml new file mode 100644 index 00000000000..8d6bd294956 --- /dev/null +++ b/playbooks/legacy/neutron-ovn-grenade/run.yaml @@ -0,0 +1,84 @@ +- hosts: all + name: Autoconverted job legacy-grenade-dsvm-networking-ovn from old job gate-grenade-dsvm-networking-ovn-ubuntu-xenial-nv + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + cat > clonemap.yaml << EOF + clonemap: + - name: openstack/devstack-gate + dest: devstack-gate + EOF + /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ + https://opendev.org \ + openstack/devstack-gate + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + cat << 'EOF' >>"/tmp/dg-local.conf" + [[local|localrc]] + enable_plugin neutron-tempest-plugin https://opendev.org/openstack/neutron-tempest-plugin + + EOF + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PYTHONUNBUFFERED=true + # Because we are testing a non standard project, add + # our project repository. This makes zuul do the right + # reference magic for testing changes. + export PROJECTS="openstack/networking-ovn openstack/neutron-tempest-plugin openstack/grenade $PROJECTS" + + # TODO(slaweq): this should be probably moved to the grenade repo or + # to the neutron devstack plugin + export GRENADE_PLUGINRC="enable_grenade_plugin networking-ovn https://opendev.org/openstack/networking-ovn" + export DEVSTACK_GATE_GRENADE=pullup + + export DEVSTACK_GATE_NEUTRON=1 + export DEVSTACK_GATE_TEMPEST=1 + export DEVSTACK_GATE_TEMPEST_ALL_PLUGINS=1 + + export BRANCH_OVERRIDE=default + if [ "$BRANCH_OVERRIDE" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + # Keep localrc to be able to set some vars in pre_test_hook + export KEEP_LOCALRC=1 + + function pre_test_hook { + if [ -f $BASE/new/networking-ovn/devstack/pre_test_hook.sh ] ; then + . $BASE/new/networking-ovn/devstack/pre_test_hook.sh + fi + } + export -f pre_test_hook + + function post_test_hook { + if [ -f $BASE/new/networking-ovn/devstack/post_test_hook.sh ] ; then + . $BASE/new/networking-ovn/devstack/post_test_hook.sh + fi + } + export -f post_test_hook + + export DEVSTACK_GATE_SETTINGS=/opt/stack/new/networking-ovn/devstack/devstackgaterc + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' diff --git a/playbooks/multinode-setup.yaml b/playbooks/multinode-setup.yaml new file mode 100644 index 00000000000..a653a6cdba6 --- /dev/null +++ b/playbooks/multinode-setup.yaml @@ -0,0 +1,4 @@ +- hosts: all + roles: + - multi-node-bridge + - multi-node-setup