diff --git a/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yaml b/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yaml
index ca8b875541..3cb7e61f5b 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yaml
@@ -96,6 +96,49 @@
               DEVSTACK_NODE_NAME=${NODE_NAME}
 
 
+- job:
+    name: periodic-tempest-devstack-vm-cinder
+    node: devstack-precise
+
+    wrappers:
+      - timeout:
+          timeout: 90
+          fail: true
+      - timestamps
+
+    triggers:
+      - timed: '@daily'
+
+    builders:
+      - trigger-builds:
+          - project: devstack-update-inprogress
+            predefined-parameters:
+              DEVSTACK_NODE_NAME=${NODE_NAME}
+      - devstack-checkout
+      - shell: |
+          #!/bin/bash -xe
+          export PYTHONUNBUFFERED=true
+          export DEVSTACK_GATE_TEMPEST=1
+          export DEVSTACK_GATE_CINDER=1
+          cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
+          ./safe-devstack-vm-gate-wrap.sh
+
+    publishers:
+      - scp:
+          site: 'static.openstack.org'
+          files:
+            - target: 'logs/periodic/$JOB_NAME/$BUILD_NUMBER'
+              source: 'logs/*'
+              keep-hierarchy: true
+              copy-after-failure: true
+      - console-log-periodic
+      - trigger-parameterized-builds:
+          - project: devstack-update-complete
+            when: complete
+            predefined-parameters:
+              DEVSTACK_NODE_NAME=${NODE_NAME}
+
+
 - job:
     name: periodic-tempest-devstack-vm-stable-diablo
     node: devstack-oneiric
@@ -202,26 +245,7 @@
           - project: devstack-update-inprogress
             predefined-parameters:
               DEVSTACK_NODE_NAME=${NODE_NAME}
-      - shell: |
-          #!/bin/bash -xe
-          #
-          # This job also gates devstack-gate, but in case a previous run fails,
-          # we need to always make sure that we're starting with the latest copy
-          # from master, before we start applying changes to it.  If a previous run
-          # leaves a bad copy of the gate script, we may get stuck.
-          #
-          if [[ ! -e devstack-gate ]]; then
-              git clone https://review.openstack.org/p/openstack-ci/devstack-gate
-          else
-              cd devstack-gate
-              git remote update
-              git reset --hard
-              git clean -x -f
-              git checkout master
-              git reset --hard remotes/origin/master
-              git clean -x -f
-              cd ..
-          fi
+      - devstack-checkout
       - shell: |
           #!/bin/bash -xe
           export PYTHONUNBUFFERED=true
@@ -265,26 +289,7 @@
           - project: devstack-update-inprogress
             predefined-parameters:
               DEVSTACK_NODE_NAME=${NODE_NAME}
-      - shell: |
-          #!/bin/bash -xe
-          #
-          # This job also gates devstack-gate, but in case a previous run fails,
-          # we need to always make sure that we're starting with the latest copy
-          # from master, before we start applying changes to it.  If a previous run
-          # leaves a bad copy of the gate script, we may get stuck.
-          #
-          if [[ ! -e devstack-gate ]]; then
-              git clone https://review.openstack.org/p/openstack-ci/devstack-gate
-          else
-              cd devstack-gate
-              git remote update
-              git reset --hard
-              git clean -x -f
-              git checkout master
-              git reset --hard remotes/origin/master
-              git clean -x -f
-              cd ..
-          fi
+      - devstack-checkout
       - shell: |
           #!/bin/bash -xe
           export PYTHONUNBUFFERED=true