diff --git a/playbooks/legacy/grenade-dsvm-networking-ovn/post.yaml b/playbooks/legacy/grenade-dsvm-networking-ovn/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/grenade-dsvm-networking-ovn/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/grenade-dsvm-networking-ovn/run.yaml b/playbooks/legacy/grenade-dsvm-networking-ovn/run.yaml
deleted file mode 100644
index c2facced..00000000
--- a/playbooks/legacy/grenade-dsvm-networking-ovn/run.yaml
+++ /dev/null
@@ -1,62 +0,0 @@
-- 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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/devstack-gate
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PROJECTS="openstack-dev/grenade openstack/networking-ovn $PROJECTS"
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_TEMPEST=1
-          export DEVSTACK_GATE_GRENADE=pullup
-          export GRENADE_PLUGINRC="enable_grenade_plugin networking-ovn https://git.openstack.org/openstack/networking-ovn"
-          export DEVSTACK_GATE_NEUTRON=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/legacy/install-dsvm-networking-ovn-kuryr/post.yaml b/playbooks/legacy/install-dsvm-networking-ovn-kuryr/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/install-dsvm-networking-ovn-kuryr/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/install-dsvm-networking-ovn-kuryr/run.yaml b/playbooks/legacy/install-dsvm-networking-ovn-kuryr/run.yaml
deleted file mode 100644
index 0ef7bb7f..00000000
--- a/playbooks/legacy/install-dsvm-networking-ovn-kuryr/run.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-install-dsvm-networking-ovn-kuryr from old job gate-install-dsvm-networking-ovn-kuryr
-  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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/devstack-gate
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_NEUTRON=1
-
-          export DEVSTACK_GATE_TEMPEST=0
-
-          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/devstackgatekuryrrc
-
-          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/legacy/networking-ovn-dsvm-functional-py35/post.yaml b/playbooks/legacy/networking-ovn-dsvm-functional-py35/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/networking-ovn-dsvm-functional-py35/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/networking-ovn-dsvm-functional-py35/run.yaml b/playbooks/legacy/networking-ovn-dsvm-functional-py35/run.yaml
deleted file mode 100644
index 14ece1e4..00000000
--- a/playbooks/legacy/networking-ovn-dsvm-functional-py35/run.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-networking-ovn-dsvm-functional-py35 from old job
-    gate-networking-ovn-dsvm-functional-py35
-  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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/devstack-gate
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_UNSTACK=1
-          export DEVSTACK_GATE_TEMPEST=0
-          export DEVSTACK_GATE_EXERCISES=0
-          export DEVSTACK_GATE_NEUTRON=1
-          export DEVSTACK_GATE_INSTALL_TESTONLY=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-
-          # 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 $PROJECTS"
-
-          function gate_hook {
-              bash -xe $BASE/new/networking-ovn/networking_ovn/tests/contrib/gate_hook.sh dsvm-functional-py35
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-             bash -xe $BASE/new/networking-ovn/networking_ovn/tests/contrib/post_test_hook.sh dsvm-functional-py35
-          }
-          export -f post_test_hook
-
-          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/legacy/networking-ovn-dsvm-functional/post.yaml b/playbooks/legacy/networking-ovn-dsvm-functional/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/networking-ovn-dsvm-functional/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/networking-ovn-dsvm-functional/run.yaml b/playbooks/legacy/networking-ovn-dsvm-functional/run.yaml
deleted file mode 100644
index aea3e483..00000000
--- a/playbooks/legacy/networking-ovn-dsvm-functional/run.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-networking-ovn-dsvm-functional from old job gate-networking-ovn-dsvm-functional
-  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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/devstack-gate
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_UNSTACK=1
-          export DEVSTACK_GATE_TEMPEST=0
-          export DEVSTACK_GATE_EXERCISES=0
-          export DEVSTACK_GATE_NEUTRON=1
-          export DEVSTACK_GATE_INSTALL_TESTONLY=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-
-          # 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 $PROJECTS"
-
-          function gate_hook {
-              bash -xe $BASE/new/networking-ovn/networking_ovn/tests/contrib/gate_hook.sh dsvm-functional
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-             bash -xe $BASE/new/networking-ovn/networking_ovn/tests/contrib/post_test_hook.sh dsvm-functional
-          }
-          export -f post_test_hook
-
-          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/legacy/rally-dsvm-networking-ovn/post.yaml b/playbooks/legacy/rally-dsvm-networking-ovn/post.yaml
deleted file mode 100644
index 46ded306..00000000
--- a/playbooks/legacy/rally-dsvm-networking-ovn/post.yaml
+++ /dev/null
@@ -1,106 +0,0 @@
-- 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=**/*nose_results.html
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - 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=**/*testr_results.html.gz
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - 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=/.testrepository/tmp*
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - 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=**/*testrepository.subunit.gz
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}/tox'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/.tox/*/log/*
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - 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
-
-    - 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=/rally-plot/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - 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=/rally-plot/extra/index.html
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/rally-dsvm-networking-ovn/run.yaml b/playbooks/legacy/rally-dsvm-networking-ovn/run.yaml
deleted file mode 100644
index b5765b17..00000000
--- a/playbooks/legacy/rally-dsvm-networking-ovn/run.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-rally-dsvm-networking-ovn from old job gate-rally-dsvm-networking-ovn
-  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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/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 networking-ovn git://git.openstack.org/openstack/networking-ovn
-          enable_plugin rally git://git.openstack.org/openstack/rally
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_NEUTRON=1
-          export RALLY_SCENARIO=ovn
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-          export PROJECTS="openstack/networking-ovn $PROJECTS"
-          export PROJECTS="openstack/rally $PROJECTS"
-
-          export DEVSTACK_GATE_SETTINGS=/opt/stack/new/networking-ovn/devstack/devstackgaterc
-
-          function post_test_hook {
-              $BASE/new/rally/tests/ci/rally-gate.sh
-          }
-          export -f post_test_hook
-
-          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/legacy/tempest-dsvm-networking-ovn-multinode/post.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-multinode/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-multinode/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/tempest-dsvm-networking-ovn-multinode/run.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-multinode/run.yaml
deleted file mode 100644
index d3ebcfa9..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-multinode/run.yaml
+++ /dev/null
@@ -1,81 +0,0 @@
-- hosts: primary
-  name: Autoconverted job legacy-tempest-dsvm-networking-ovn-multinode from old job
-    gate-tempest-dsvm-networking-ovn-multinode-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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/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 networking-ovn git://git.openstack.org/openstack/networking-ovn
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_NEUTRON=1
-          export DEVSTACK_GATE_TEMPEST=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-          export DEVSTACK_GATE_TOPOLOGY="multinode"
-
-          # 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 $PROJECTS"
-
-          # 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/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/post.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/tempest-dsvm-networking-ovn-neutron-api-ovs-release/run.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/run.yaml
deleted file mode 100644
index 93ac9d98..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/run.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-tempest-dsvm-networking-ovn-neutron-api-ovs-release
-    from old job gate-tempest-dsvm-networking-ovn-neutron-api-ovs-release-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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/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 networking-ovn git://git.openstack.org/openstack/networking-ovn
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_NEUTRON=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-          # 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 $PROJECTS"
-
-          # 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 latest-release neutron-api-tests"
-
-          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/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/post.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/tempest-dsvm-networking-ovn-ovs-master-python3/run.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/run.yaml
deleted file mode 100644
index b9039a5b..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/run.yaml
+++ /dev/null
@@ -1,81 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-tempest-dsvm-networking-ovn-ovs-master-python3 from
-    old job gate-tempest-dsvm-networking-ovn-ovs-master-python3-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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/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 networking-ovn git://git.openstack.org/openstack/networking-ovn
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          # Enable PYTHON 3
-          export DEVSTACK_GATE_USE_PYTHON3=True
-          export DEVSTACK_GATE_NEUTRON=1
-          export DEVSTACK_GATE_TEMPEST=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-          # 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 $PROJECTS"
-
-          # 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 master"
-
-          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/legacy/tempest-dsvm-networking-ovn-ovs-master/post.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/tempest-dsvm-networking-ovn-ovs-master/run.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master/run.yaml
deleted file mode 100644
index 9e473f2e..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master/run.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-tempest-dsvm-networking-ovn-ovs-master from old job
-    gate-tempest-dsvm-networking-ovn-ovs-master-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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/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 networking-ovn git://git.openstack.org/openstack/networking-ovn
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_NEUTRON=1
-          export DEVSTACK_GATE_TEMPEST=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-          # 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 $PROJECTS"
-
-          # 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 master"
-
-          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/legacy/tempest-dsvm-networking-ovn-ovs-release/post.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- 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/tempest-dsvm-networking-ovn-ovs-release/run.yaml b/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release/run.yaml
deleted file mode 100644
index b6a8c1a4..00000000
--- a/playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release/run.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-tempest-dsvm-networking-ovn-ovs-release from old
-    job gate-tempest-dsvm-networking-ovn-ovs-release
-  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-infra/devstack-gate
-              dest: devstack-gate
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              git://git.openstack.org \
-              openstack-infra/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 networking-ovn git://git.openstack.org/openstack/networking-ovn
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export DEVSTACK_GATE_NEUTRON=1
-          export DEVSTACK_GATE_TEMPEST=1
-          export BRANCH_OVERRIDE=default
-          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
-              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
-          fi
-          # 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 $PROJECTS"
-
-          # 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 latest-release"
-
-          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/zuul.d/zuul-legacy-jobs.yaml b/zuul.d/zuul-legacy-jobs.yaml
index 08eaf370..992f9b41 100644
--- a/zuul.d/zuul-legacy-jobs.yaml
+++ b/zuul.d/zuul-legacy-jobs.yaml
@@ -2280,17 +2280,6 @@
       - openstack-infra/devstack-gate
       - openstack/networking-midonet
 
-- job:
-    name: legacy-grenade-dsvm-networking-ovn
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/grenade-dsvm-networking-ovn/run
-    post-run: playbooks/legacy/grenade-dsvm-networking-ovn/post
-    timeout: 9000
-    required-projects:
-      - openstack-dev/grenade
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-
 - job:
     name: legacy-grenade-dsvm-neutron
     parent: legacy-dsvm-base
@@ -2973,17 +2962,6 @@
       - openstack/kuryr
       - openstack/kuryr-kubernetes
 
-- job:
-    name: legacy-install-dsvm-networking-ovn-kuryr
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/install-dsvm-networking-ovn-kuryr/run
-    post-run: playbooks/legacy/install-dsvm-networking-ovn-kuryr/post
-    timeout: 7500
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/kuryr
-      - openstack/networking-ovn
-
 - job:
     name: legacy-install-guide
     parent: legacy-base
@@ -4573,26 +4551,6 @@
       - openstack/networking-midonet
       - openstack/rally
 
-- job:
-    name: legacy-networking-ovn-dsvm-functional
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/networking-ovn-dsvm-functional/run
-    post-run: playbooks/legacy/networking-ovn-dsvm-functional/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-
-- job:
-    name: legacy-networking-ovn-dsvm-functional-py35
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/networking-ovn-dsvm-functional-py35/run
-    post-run: playbooks/legacy/networking-ovn-dsvm-functional-py35/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-
 - job:
     name: legacy-networking-sfc-functional-dsvm
     parent: legacy-dsvm-base
@@ -8790,17 +8748,6 @@
       - openstack/python-muranoclient
       - openstack/rally
 
-- job:
-    name: legacy-rally-dsvm-networking-ovn
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/rally-dsvm-networking-ovn/run
-    post-run: playbooks/legacy/rally-dsvm-networking-ovn/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-      - openstack/rally
-
 - job:
     name: legacy-rally-dsvm-neutron-existing-users-rally
     parent: legacy-dsvm-base
@@ -11928,63 +11875,6 @@
       - openstack/networking-onos
       - openstack/tempest
 
-- job:
-    name: legacy-tempest-dsvm-networking-ovn-multinode
-    parent: legacy-dsvm-base-multinode
-    run: playbooks/legacy/tempest-dsvm-networking-ovn-multinode/run
-    post-run: playbooks/legacy/tempest-dsvm-networking-ovn-multinode/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-      - openstack/tempest
-    nodeset: legacy-ubuntu-xenial-2-node
-
-- job:
-    name: legacy-tempest-dsvm-networking-ovn-neutron-api-ovs-release
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/run
-    post-run: playbooks/legacy/tempest-dsvm-networking-ovn-neutron-api-ovs-release/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-      - openstack/neutron
-      - openstack/tempest
-
-- job:
-    name: legacy-tempest-dsvm-networking-ovn-ovs-master
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master/run
-    post-run: playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-      - openstack/tempest
-
-- job:
-    name: legacy-tempest-dsvm-networking-ovn-ovs-master-python3
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/run
-    post-run: playbooks/legacy/tempest-dsvm-networking-ovn-ovs-master-python3/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-      - openstack/tempest
-
-- job:
-    name: legacy-tempest-dsvm-networking-ovn-ovs-release
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release/run
-    post-run: playbooks/legacy/tempest-dsvm-networking-ovn-ovs-release/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/networking-ovn
-      - openstack/tempest
-
 - job:
     name: legacy-tempest-dsvm-networking-ovn-ovs-release-ovsdbapp-src
     parent: legacy-dsvm-base