diff --git a/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-functional/post.yaml b/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-functional/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/networking-bgpvpn-bagpipe-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-bgpvpn-bagpipe-dsvm-functional/run.yaml b/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-functional/run.yaml
deleted file mode 100644
index 7854c9a2..00000000
--- a/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-functional/run.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-networking-bgpvpn-bagpipe-dsvm-functional from old
-    job gate-networking-bgpvpn-bagpipe-dsvm-functional-ubuntu-xenial
-  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 networking-bgpvpn https://opendev.org/openstack/networking-bgpvpn
-
-          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-bgpvpn $PROJECTS"
-          export PROJECTS="openstack/networking-bagpipe $PROJECTS"
-
-          # Keep localrc to be able to set some vars in pre_test_hook
-          export KEEP_LOCALRC=1
-
-          function pre_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/pre_test_hook.sh dsvm-bagpipe-functional
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              . $BASE/new/networking-bgpvpn/devstack/gate_hook.sh dsvm-bagpipe-functional
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/post_test_hook.sh dsvm-bagpipe-functional
-          }
-          export -f post_test_hook
-
-          export DEVSTACK_GATE_SETTINGS=/opt/stack/new/networking-bgpvpn/devstack/devstack-gate-bagpipe-rc
-
-          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-bgpvpn-bagpipe-dsvm-install/post.yaml b/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-install/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-install/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-bgpvpn-bagpipe-dsvm-install/run.yaml b/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-install/run.yaml
deleted file mode 100644
index ab24c430..00000000
--- a/playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-install/run.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-networking-bgpvpn-bagpipe-dsvm-install from old job
-    gate-networking-bgpvpn-bagpipe-dsvm-install-ubuntu-xenial
-  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 networking-bgpvpn https://opendev.org/openstack/networking-bgpvpn
-
-          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-bgpvpn $PROJECTS"
-          export PROJECTS="openstack/networking-bagpipe $PROJECTS"
-
-          # Keep localrc to be able to set some vars in pre_test_hook
-          export KEEP_LOCALRC=1
-
-          function pre_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/pre_test_hook.sh dsvm-bagpipe-install
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              . $BASE/new/networking-bgpvpn/devstack/gate_hook.sh dsvm-bagpipe-install
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/post_test_hook.sh dsvm-bagpipe-install
-          }
-          export -f post_test_hook
-
-          export DEVSTACK_GATE_SETTINGS=/opt/stack/new/networking-bgpvpn/devstack/devstack-gate-bagpipe-rc
-
-          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-bgpvpn-dsvm-functional/post.yaml b/playbooks/legacy/networking-bgpvpn-dsvm-functional/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/networking-bgpvpn-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-bgpvpn-dsvm-functional/run.yaml b/playbooks/legacy/networking-bgpvpn-dsvm-functional/run.yaml
deleted file mode 100644
index 0270b371..00000000
--- a/playbooks/legacy/networking-bgpvpn-dsvm-functional/run.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-networking-bgpvpn-dsvm-functional from old job gate-networking-bgpvpn-dsvm-functional-ubuntu-xenial
-  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 networking-bgpvpn https://opendev.org/openstack/networking-bgpvpn
-
-          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-bgpvpn $PROJECTS"
-
-          # Keep localrc to be able to set some vars in pre_test_hook
-          export KEEP_LOCALRC=1
-
-          function pre_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/pre_test_hook.sh dsvm-functional
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              . $BASE/new/networking-bgpvpn/devstack/gate_hook.sh dsvm-functional
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/post_test_hook.sh dsvm-functional
-          }
-          export -f post_test_hook
-
-          export DEVSTACK_GATE_SETTINGS=/opt/stack/new/networking-bgpvpn/devstack/devstack-gate-rc
-
-          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-bgpvpn-dsvm-install/post.yaml b/playbooks/legacy/networking-bgpvpn-dsvm-install/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/networking-bgpvpn-dsvm-install/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-bgpvpn-dsvm-install/run.yaml b/playbooks/legacy/networking-bgpvpn-dsvm-install/run.yaml
deleted file mode 100644
index 90ee1dc5..00000000
--- a/playbooks/legacy/networking-bgpvpn-dsvm-install/run.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-networking-bgpvpn-dsvm-install from old job gate-networking-bgpvpn-dsvm-install-ubuntu-xenial
-  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 networking-bgpvpn https://opendev.org/openstack/networking-bgpvpn
-
-          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-bgpvpn $PROJECTS"
-
-          # Keep localrc to be able to set some vars in pre_test_hook
-          export KEEP_LOCALRC=1
-
-          function pre_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/pre_test_hook.sh dsvm-install
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              . $BASE/new/networking-bgpvpn/devstack/gate_hook.sh dsvm-install
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              . $BASE/new/networking-bgpvpn/devstack/post_test_hook.sh dsvm-install
-          }
-          export -f post_test_hook
-
-          export DEVSTACK_GATE_SETTINGS=/opt/stack/new/networking-bgpvpn/devstack/devstack-gate-rc
-
-          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 9a9d7601..e984b54a 100644
--- a/zuul.d/zuul-legacy-jobs.yaml
+++ b/zuul.d/zuul-legacy-jobs.yaml
@@ -376,52 +376,6 @@
       - openstack/networking-bgpvpn
       - openstack/networking-sfc
 
-- job:
-    name: legacy-networking-bgpvpn-bagpipe-dsvm-functional
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-functional/run.yaml
-    post-run: playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-functional/post.yaml
-    timeout: 7800
-    required-projects:
-      - openstack/devstack-gate
-      - openstack/networking-bagpipe
-      - openstack/networking-bgpvpn
-
-- job:
-    name: legacy-networking-bgpvpn-bagpipe-dsvm-install
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-install/run.yaml
-    post-run: playbooks/legacy/networking-bgpvpn-bagpipe-dsvm-install/post.yaml
-    timeout: 7800
-    required-projects:
-      - openstack/devstack-gate
-      - openstack/networking-bagpipe
-      - openstack/networking-bgpvpn
-
-- job:
-    name: legacy-networking-bgpvpn-dsvm-functional
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/networking-bgpvpn-dsvm-functional/run.yaml
-    post-run: playbooks/legacy/networking-bgpvpn-dsvm-functional/post.yaml
-    timeout: 7800
-    required-projects:
-      - openstack/devstack-gate
-      - openstack/networking-bgpvpn
-      - openstack/neutron
-      - openstack/networking-bagpipe
-      - openstack/networking-odl
-      - openstack/horizon
-
-- job:
-    name: legacy-networking-bgpvpn-dsvm-install
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/networking-bgpvpn-dsvm-install/run.yaml
-    post-run: playbooks/legacy/networking-bgpvpn-dsvm-install/post.yaml
-    timeout: 7800
-    required-projects:
-      - openstack/devstack-gate
-      - openstack/networking-bgpvpn
-
 - job:
     name: legacy-neutron-dsvm-api
     parent: legacy-dsvm-base