diff --git a/playbooks/legacy/vitrage-dsvm-api-py27/post.yaml b/playbooks/legacy/vitrage-dsvm-api-py27/post.yaml
deleted file mode 100644
index dac87534..00000000
--- a/playbooks/legacy/vitrage-dsvm-api-py27/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 }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/vitrage-dsvm-api-py27/run.yaml b/playbooks/legacy/vitrage-dsvm-api-py27/run.yaml
deleted file mode 100644
index 245cd291..00000000
--- a/playbooks/legacy/vitrage-dsvm-api-py27/run.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-vitrage-dsvm-api-py27 from old job gate-vitrage-dsvm-api-py27-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-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 vitrage git://git.openstack.org/openstack/vitrage
-
-          # swift is not ready for python3 yet
-          disable_service s-account
-          disable_service s-container
-          disable_service s-object
-          disable_service s-proxy
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export PROJECTS="openstack/python-vitrageclient $PROJECTS"
-          export PROJECTS="openstack/vitrage $PROJECTS"
-          export PROJECTS="openstack/vitrage-dashboard $PROJECTS"
-          export PROJECTS="openstack/aodh $PROJECTS"
-          export PROJECTS="openstack/mistral $PROJECTS"
-          export ENABLED_SERVICES=tempest
-
-          if [ "py27" == "py35" ] ; then
-             export DEVSTACK_GATE_USE_PYTHON3=True
-          else
-             export DEVSTACK_GATE_USE_PYTHON3=False
-          fi
-
-          function pre_test_hook {
-              source $BASE/new/vitrage/devstack/pre_test_hook.sh
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              source $BASE/new/vitrage/devstack/gate_hook.sh
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              source $BASE/new/vitrage/devstack/post_test_hook.sh 'api'
-          }
-          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/vitrage-dsvm-api-py35/post.yaml b/playbooks/legacy/vitrage-dsvm-api-py35/post.yaml
deleted file mode 100644
index dac87534..00000000
--- a/playbooks/legacy/vitrage-dsvm-api-py35/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 }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/vitrage-dsvm-api-py35/run.yaml b/playbooks/legacy/vitrage-dsvm-api-py35/run.yaml
deleted file mode 100644
index e370b8e1..00000000
--- a/playbooks/legacy/vitrage-dsvm-api-py35/run.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-vitrage-dsvm-api-py35 from old job gate-vitrage-dsvm-api-py35-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
-          cat << 'EOF' >>"/tmp/dg-local.conf"
-          [[local|localrc]]
-          enable_plugin vitrage git://git.openstack.org/openstack/vitrage
-
-          # swift is not ready for python3 yet
-          disable_service s-account
-          disable_service s-container
-          disable_service s-object
-          disable_service s-proxy
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export PROJECTS="openstack/python-vitrageclient $PROJECTS"
-          export PROJECTS="openstack/vitrage $PROJECTS"
-          export PROJECTS="openstack/vitrage-dashboard $PROJECTS"
-          export PROJECTS="openstack/aodh $PROJECTS"
-          export PROJECTS="openstack/mistral $PROJECTS"
-          export ENABLED_SERVICES=tempest
-
-          if [ "py35" == "py35" ] ; then
-             export DEVSTACK_GATE_USE_PYTHON3=True
-          else
-             export DEVSTACK_GATE_USE_PYTHON3=False
-          fi
-
-          function pre_test_hook {
-              source $BASE/new/vitrage/devstack/pre_test_hook.sh
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              source $BASE/new/vitrage/devstack/gate_hook.sh
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              source $BASE/new/vitrage/devstack/post_test_hook.sh 'api'
-          }
-          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/vitrage-dsvm-datasources-py27/post.yaml b/playbooks/legacy/vitrage-dsvm-datasources-py27/post.yaml
deleted file mode 100644
index dac87534..00000000
--- a/playbooks/legacy/vitrage-dsvm-datasources-py27/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 }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/vitrage-dsvm-datasources-py27/run.yaml b/playbooks/legacy/vitrage-dsvm-datasources-py27/run.yaml
deleted file mode 100644
index 925f40f2..00000000
--- a/playbooks/legacy/vitrage-dsvm-datasources-py27/run.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-vitrage-dsvm-datasources-py27 from old job gate-vitrage-dsvm-datasources-py27-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-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 vitrage git://git.openstack.org/openstack/vitrage
-
-          # swift is not ready for python3 yet
-          disable_service s-account
-          disable_service s-container
-          disable_service s-object
-          disable_service s-proxy
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export PROJECTS="openstack/python-vitrageclient $PROJECTS"
-          export PROJECTS="openstack/vitrage $PROJECTS"
-          export PROJECTS="openstack/vitrage-dashboard $PROJECTS"
-          export PROJECTS="openstack/aodh $PROJECTS"
-          export PROJECTS="openstack/mistral $PROJECTS"
-          export ENABLED_SERVICES=tempest
-
-          if [ "py27" == "py35" ] ; then
-             export DEVSTACK_GATE_USE_PYTHON3=True
-          else
-             export DEVSTACK_GATE_USE_PYTHON3=False
-          fi
-
-          function pre_test_hook {
-              source $BASE/new/vitrage/devstack/pre_test_hook.sh
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              source $BASE/new/vitrage/devstack/gate_hook.sh
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              source $BASE/new/vitrage/devstack/post_test_hook.sh 'datasources'
-          }
-          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/vitrage-dsvm-datasources-py35/post.yaml b/playbooks/legacy/vitrage-dsvm-datasources-py35/post.yaml
deleted file mode 100644
index dac87534..00000000
--- a/playbooks/legacy/vitrage-dsvm-datasources-py35/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 }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/vitrage-dsvm-datasources-py35/run.yaml b/playbooks/legacy/vitrage-dsvm-datasources-py35/run.yaml
deleted file mode 100644
index c625abc3..00000000
--- a/playbooks/legacy/vitrage-dsvm-datasources-py35/run.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-vitrage-dsvm-datasources-py35 from old job gate-vitrage-dsvm-datasources-py35-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
-          cat << 'EOF' >>"/tmp/dg-local.conf"
-          [[local|localrc]]
-          enable_plugin vitrage git://git.openstack.org/openstack/vitrage
-
-          # swift is not ready for python3 yet
-          disable_service s-account
-          disable_service s-container
-          disable_service s-object
-          disable_service s-proxy
-
-          EOF
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          export PYTHONUNBUFFERED=true
-          export PROJECTS="openstack/python-vitrageclient $PROJECTS"
-          export PROJECTS="openstack/vitrage $PROJECTS"
-          export PROJECTS="openstack/vitrage-dashboard $PROJECTS"
-          export PROJECTS="openstack/aodh $PROJECTS"
-          export PROJECTS="openstack/mistral $PROJECTS"
-          export ENABLED_SERVICES=tempest
-
-          if [ "py35" == "py35" ] ; then
-             export DEVSTACK_GATE_USE_PYTHON3=True
-          else
-             export DEVSTACK_GATE_USE_PYTHON3=False
-          fi
-
-          function pre_test_hook {
-              source $BASE/new/vitrage/devstack/pre_test_hook.sh
-          }
-          export -f pre_test_hook
-
-          function gate_hook {
-              source $BASE/new/vitrage/devstack/gate_hook.sh
-          }
-          export -f gate_hook
-
-          function post_test_hook {
-              source $BASE/new/vitrage/devstack/post_test_hook.sh 'datasources'
-          }
-          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/zuul.d/zuul-legacy-jobs.yaml b/zuul.d/zuul-legacy-jobs.yaml
index 419640de..0eae5932 100644
--- a/zuul.d/zuul-legacy-jobs.yaml
+++ b/zuul.d/zuul-legacy-jobs.yaml
@@ -14340,62 +14340,6 @@
     post-run: playbooks/legacy/vinz-webclient-js-release-master/post
     timeout: 1800
 
-- job:
-    name: legacy-vitrage-dsvm-api-py27
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/vitrage-dsvm-api-py27/run
-    post-run: playbooks/legacy/vitrage-dsvm-api-py27/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/aodh
-      - openstack/mistral
-      - openstack/python-vitrageclient
-      - openstack/vitrage
-      - openstack/vitrage-dashboard
-
-- job:
-    name: legacy-vitrage-dsvm-api-py35
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/vitrage-dsvm-api-py35/run
-    post-run: playbooks/legacy/vitrage-dsvm-api-py35/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/aodh
-      - openstack/mistral
-      - openstack/python-vitrageclient
-      - openstack/vitrage
-      - openstack/vitrage-dashboard
-
-- job:
-    name: legacy-vitrage-dsvm-datasources-py27
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/vitrage-dsvm-datasources-py27/run
-    post-run: playbooks/legacy/vitrage-dsvm-datasources-py27/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/aodh
-      - openstack/mistral
-      - openstack/python-vitrageclient
-      - openstack/vitrage
-      - openstack/vitrage-dashboard
-
-- job:
-    name: legacy-vitrage-dsvm-datasources-py35
-    parent: legacy-dsvm-base
-    run: playbooks/legacy/vitrage-dsvm-datasources-py35/run
-    post-run: playbooks/legacy/vitrage-dsvm-datasources-py35/post
-    timeout: 7800
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/aodh
-      - openstack/mistral
-      - openstack/python-vitrageclient
-      - openstack/vitrage
-      - openstack/vitrage-dashboard
-
 - job:
     name: legacy-zaqar-tox-integration
     parent: legacy-base