diff --git a/playbooks/legacy/dsvm-nodepool-py35-src/post.yaml b/playbooks/legacy/dsvm-nodepool-py35-src/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/dsvm-nodepool-py35-src/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/dsvm-nodepool-py35-src/run.yaml b/playbooks/legacy/dsvm-nodepool-py35-src/run.yaml
deleted file mode 100644
index 812532ee..00000000
--- a/playbooks/legacy/dsvm-nodepool-py35-src/run.yaml
+++ /dev/null
@@ -1,121 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-dsvm-nodepool-py35-src from old job gate-dsvm-nodepool-py35-src-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 PYTHONUNBUFFERED=true
-          # Disable tempest as nodepool is talking to the cloud not tempest.
-          export DEVSTACK_GATE_TEMPEST=0
-          # Use neutron as the public clouds in use are neutron based.
-          export DEVSTACK_GATE_NEUTRON=1
-          # The nodepool process needs sudo rights in order to
-          # perform dib image builds
-          export DEVSTACK_GATE_REMOVE_STACK_SUDO=0
-          # Disable services we do not need for nodepool
-          export DEVSTACK_LOCAL_CONFIG="disable_service horizon"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acentral"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acompute"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-evaluator"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-notifier"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-anotification"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-collector"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service cinder"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-bak"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-sch"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-vol"
-
-          if [ "-py35" == "-py35" ]; then
-              export DEVSTACK_GATE_USE_PYTHON3=True
-
-              # swift is not ready for python3 yet
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
-          fi
-
-          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 the
-          # our project repository. This makes zuul do the right
-          # reference magic for testing changes.
-          export PROJECTS="openstack-infra/nodepool $PROJECTS"
-          # note the actual url here is somewhat irrelevant because it
-          # caches in nodepool, however make it a valid url for
-          # documentation purposes.
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin nodepool git://git.openstack.org/openstack-infra/nodepool"
-          export DEVSTACK_PROJECT_FROM_GIT="diskimage-builder"
-          export DEVSTACK_PROJECT_FROM_GIT+=",glean"
-          export DEVSTACK_PROJECT_FROM_GIT+=",shade"
-
-          # Start with all images disabled.
-          export NODEPOOL_PAUSE_CENTOS_7_DIB=true
-          export NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB=true
-          export NODEPOOL_PAUSE_FEDORA_26_DIB=true
-          export NODEPOOL_PAUSE_OPENSUSE_423_DIB=true
-          export NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=true
-          export NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB=true
-
-          if [ "" == "" ] ; then
-              # dsvm-nodepool-src
-              export NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=false
-          elif [ "" == "-debian" ] ; then
-              # dsvm-nodepool-debian-src
-              export NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB=false
-          elif [ "" == "-opensuse" ] ; then
-              # dsvm-nodepool-opensuse-src
-              export NODEPOOL_PAUSE_OPENSUSE_423_DIB=false
-          elif [ "" == "-redhat" ] ; then
-              # dsvm-nodepool-redhat-src
-              export NODEPOOL_PAUSE_CENTOS_7_DIB=false
-              export NODEPOOL_PAUSE_FEDORA_26_DIB=false
-          elif [ "" == "-ubuntu" ] ; then
-              # dsvm-nodepool-ubuntu-src
-              export NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=false
-              export NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB=false
-          fi
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_CENTOS_7_DIB=$NODEPOOL_PAUSE_CENTOS_7_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB=$NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_FEDORA_26_DIB=$NODEPOOL_PAUSE_FEDORA_26_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_OPENSUSE_423_DIB=$NODEPOOL_PAUSE_OPENSUSE_423_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=$NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB=$NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB"
-
-          function post_test_hook {
-              /opt/stack/new/nodepool/tools/check_devstack_plugin.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/dsvm-nodepool-py35/post.yaml b/playbooks/legacy/dsvm-nodepool-py35/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/dsvm-nodepool-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/dsvm-nodepool-py35/run.yaml b/playbooks/legacy/dsvm-nodepool-py35/run.yaml
deleted file mode 100644
index d6247016..00000000
--- a/playbooks/legacy/dsvm-nodepool-py35/run.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-dsvm-nodepool-py35 from old job gate-dsvm-nodepool-py35-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 PYTHONUNBUFFERED=true
-          # Disable tempest as nodepool is talking to the cloud not tempest.
-          export DEVSTACK_GATE_TEMPEST=0
-          # Use neutron as the public clouds in use are neutron based.
-          export DEVSTACK_GATE_NEUTRON=1
-          # The nodepool process needs sudo rights in order to
-          # perform dib image builds
-          export DEVSTACK_GATE_REMOVE_STACK_SUDO=0
-          # Disable services we do not need for nodepool
-          export DEVSTACK_LOCAL_CONFIG="disable_service horizon"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acentral"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acompute"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-evaluator"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-notifier"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-anotification"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-collector"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service cinder"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-bak"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-sch"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-vol"
-
-          if [ "-py35" == "-py35" ]; then
-              export DEVSTACK_GATE_USE_PYTHON3=True
-
-              # swift is not ready for python3 yet
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
-          fi
-
-          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 the
-          # our project repository. This makes zuul do the right
-          # reference magic for testing changes.
-          export PROJECTS="openstack-infra/nodepool $PROJECTS"
-          # note the actual url here is somewhat irrelevant because it
-          # caches in nodepool, however make it a valid url for
-          # documentation purposes.
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin nodepool git://git.openstack.org/openstack-infra/nodepool"
-
-          function post_test_hook {
-              /opt/stack/new/nodepool/tools/check_devstack_plugin.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/dsvm-nodepool-src/post.yaml b/playbooks/legacy/dsvm-nodepool-src/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/dsvm-nodepool-src/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/dsvm-nodepool-src/run.yaml b/playbooks/legacy/dsvm-nodepool-src/run.yaml
deleted file mode 100644
index 5a17394c..00000000
--- a/playbooks/legacy/dsvm-nodepool-src/run.yaml
+++ /dev/null
@@ -1,121 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-dsvm-nodepool-src from old job gate-dsvm-nodepool-src-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 PYTHONUNBUFFERED=true
-          # Disable tempest as nodepool is talking to the cloud not tempest.
-          export DEVSTACK_GATE_TEMPEST=0
-          # Use neutron as the public clouds in use are neutron based.
-          export DEVSTACK_GATE_NEUTRON=1
-          # The nodepool process needs sudo rights in order to
-          # perform dib image builds
-          export DEVSTACK_GATE_REMOVE_STACK_SUDO=0
-          # Disable services we do not need for nodepool
-          export DEVSTACK_LOCAL_CONFIG="disable_service horizon"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acentral"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acompute"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-evaluator"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-notifier"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-anotification"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-collector"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service cinder"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-bak"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-sch"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-vol"
-
-          if [ "" == "-py35" ]; then
-              export DEVSTACK_GATE_USE_PYTHON3=True
-
-              # swift is not ready for python3 yet
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
-          fi
-
-          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 the
-          # our project repository. This makes zuul do the right
-          # reference magic for testing changes.
-          export PROJECTS="openstack-infra/nodepool $PROJECTS"
-          # note the actual url here is somewhat irrelevant because it
-          # caches in nodepool, however make it a valid url for
-          # documentation purposes.
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin nodepool git://git.openstack.org/openstack-infra/nodepool"
-          export DEVSTACK_PROJECT_FROM_GIT="diskimage-builder"
-          export DEVSTACK_PROJECT_FROM_GIT+=",glean"
-          export DEVSTACK_PROJECT_FROM_GIT+=",shade"
-
-          # Start with all images disabled.
-          export NODEPOOL_PAUSE_CENTOS_7_DIB=true
-          export NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB=true
-          export NODEPOOL_PAUSE_FEDORA_26_DIB=true
-          export NODEPOOL_PAUSE_OPENSUSE_423_DIB=true
-          export NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=true
-          export NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB=true
-
-          if [ "" == "" ] ; then
-              # dsvm-nodepool-src
-              export NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=false
-          elif [ "" == "-debian" ] ; then
-              # dsvm-nodepool-debian-src
-              export NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB=false
-          elif [ "" == "-opensuse" ] ; then
-              # dsvm-nodepool-opensuse-src
-              export NODEPOOL_PAUSE_OPENSUSE_423_DIB=false
-          elif [ "" == "-redhat" ] ; then
-              # dsvm-nodepool-redhat-src
-              export NODEPOOL_PAUSE_CENTOS_7_DIB=false
-              export NODEPOOL_PAUSE_FEDORA_26_DIB=false
-          elif [ "" == "-ubuntu" ] ; then
-              # dsvm-nodepool-ubuntu-src
-              export NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=false
-              export NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB=false
-          fi
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_CENTOS_7_DIB=$NODEPOOL_PAUSE_CENTOS_7_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB=$NODEPOOL_PAUSE_DEBIAN_JESSIE_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_FEDORA_26_DIB=$NODEPOOL_PAUSE_FEDORA_26_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_OPENSUSE_423_DIB=$NODEPOOL_PAUSE_OPENSUSE_423_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB=$NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB=$NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB"
-
-          function post_test_hook {
-              /opt/stack/new/nodepool/tools/check_devstack_plugin.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/dsvm-nodepool/post.yaml b/playbooks/legacy/dsvm-nodepool/post.yaml
deleted file mode 100644
index e07f5510..00000000
--- a/playbooks/legacy/dsvm-nodepool/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/dsvm-nodepool/run.yaml b/playbooks/legacy/dsvm-nodepool/run.yaml
deleted file mode 100644
index f33b55d6..00000000
--- a/playbooks/legacy/dsvm-nodepool/run.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-dsvm-nodepool from old job gate-dsvm-nodepool-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 PYTHONUNBUFFERED=true
-          # Disable tempest as nodepool is talking to the cloud not tempest.
-          export DEVSTACK_GATE_TEMPEST=0
-          # Use neutron as the public clouds in use are neutron based.
-          export DEVSTACK_GATE_NEUTRON=1
-          # The nodepool process needs sudo rights in order to
-          # perform dib image builds
-          export DEVSTACK_GATE_REMOVE_STACK_SUDO=0
-          # Disable services we do not need for nodepool
-          export DEVSTACK_LOCAL_CONFIG="disable_service horizon"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acentral"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-acompute"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-evaluator"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-alarm-notifier"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-anotification"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service ceilometer-collector"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service cinder"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-bak"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-sch"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-api"
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service c-vol"
-
-          if [ "" == "-py35" ]; then
-              export DEVSTACK_GATE_USE_PYTHON3=True
-
-              # swift is not ready for python3 yet
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
-              export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
-          fi
-
-          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 the
-          # our project repository. This makes zuul do the right
-          # reference magic for testing changes.
-          export PROJECTS="openstack-infra/nodepool $PROJECTS"
-          # note the actual url here is somewhat irrelevant because it
-          # caches in nodepool, however make it a valid url for
-          # documentation purposes.
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin nodepool git://git.openstack.org/openstack-infra/nodepool"
-
-          function post_test_hook {
-              /opt/stack/new/nodepool/tools/check_devstack_plugin.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/zuul-nodepool/post.yaml b/playbooks/legacy/zuul-nodepool/post.yaml
deleted file mode 100644
index b495a60a..00000000
--- a/playbooks/legacy/zuul-nodepool/post.yaml
+++ /dev/null
@@ -1,80 +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 }}/logs'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/zuul-nodepool/run.yaml b/playbooks/legacy/zuul-nodepool/run.yaml
deleted file mode 100644
index 201ad98b..00000000
--- a/playbooks/legacy/zuul-nodepool/run.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-zuul-nodepool from old job gate-zuul-nodepool
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelyhood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: openstack-infra/zuul
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org openstack-infra/zuul
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: tools/nodepool-integration-setup.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-tox.sh nodepool
-        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 be636542..e80a7522 100644
--- a/zuul.d/zuul-legacy-jobs.yaml
+++ b/zuul.d/zuul-legacy-jobs.yaml
@@ -1286,16 +1286,6 @@
       - openstack/python-muranoclient
       - openstack/refstack
 
-- job:
-    name: legacy-dsvm-nodepool
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/dsvm-nodepool/run
-    post-run: playbooks/legacy/dsvm-nodepool/post
-    timeout: 5400
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack-infra/nodepool
-
 - job:
     name: legacy-dsvm-nodepool-debian-src
     parent: legacy-dsvm-base
@@ -1322,29 +1312,6 @@
       - openstack-infra/shade
       - openstack/diskimage-builder
 
-- job:
-    name: legacy-dsvm-nodepool-py35
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/dsvm-nodepool-py35/run
-    post-run: playbooks/legacy/dsvm-nodepool-py35/post
-    timeout: 5400
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack-infra/nodepool
-
-- job:
-    name: legacy-dsvm-nodepool-py35-src
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/dsvm-nodepool-py35-src/run
-    post-run: playbooks/legacy/dsvm-nodepool-py35-src/post
-    timeout: 5400
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack-infra/glean
-      - openstack-infra/nodepool
-      - openstack-infra/shade
-      - openstack/diskimage-builder
-
 - job:
     name: legacy-dsvm-nodepool-redhat-src
     parent: legacy-dsvm-base
@@ -1358,19 +1325,6 @@
       - openstack-infra/shade
       - openstack/diskimage-builder
 
-- job:
-    name: legacy-dsvm-nodepool-src
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/dsvm-nodepool-src/run
-    post-run: playbooks/legacy/dsvm-nodepool-src/post
-    timeout: 5400
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack-infra/glean
-      - openstack-infra/nodepool
-      - openstack-infra/shade
-      - openstack/diskimage-builder
-
 - job:
     name: legacy-dsvm-nodepool-ubuntu-src
     parent: legacy-dsvm-base
@@ -10865,13 +10819,3 @@
     run: playbooks/legacy/zun-ui-nodejs4-npm-run-test/run
     post-run: playbooks/legacy/zun-ui-nodejs4-npm-run-test/post
     timeout: 2400
-
-- job:
-    name: legacy-zuul-nodepool
-    parent: legacy-base
-    run: playbooks/legacy/zuul-nodepool/run
-    post-run: playbooks/legacy/zuul-nodepool/post
-    timeout: 1800
-    required-projects:
-      - openstack-infra/nodepool
-      - openstack-infra/zuul