diff --git a/doc/source/gerrit.rst b/doc/source/gerrit.rst
index ba52482906..404da5d0d7 100644
--- a/doc/source/gerrit.rst
+++ b/doc/source/gerrit.rst
@@ -724,7 +724,7 @@ A minimum config::
       name: PROJECT
       github-org: openstack
       node: precise
-      tarball-publisher-site: nova.openstack.org
+      tarball-site: tarballs.openstack.org
       doc-publisher-site: docs.openstack.org
 
       jobs:
@@ -736,7 +736,7 @@ Full example config for nova::
       name: nova
       github-org: openstack
       node: precise
-      tarball-publisher-site: nova.openstack.org
+      tarball-site: tarballs.openstack.org
       doc-publisher-site: docs.openstack.org
 
       jobs:
@@ -779,9 +779,11 @@ Full example config for nova::
         - gate-tempest-devstack-vm
         - gate-tempest-devstack-vm-cinder
       post:
-        - nova-tarball
+        - nova-branch-tarball
         - nova-coverage
         - nova-docs
+      pre-release:
+        - nova-tarball
       publish:
         - nova-tarball
         - nova-docs
diff --git a/doc/source/puppet_modules.rst b/doc/source/puppet_modules.rst
index a396c6747b..3f3ca4d0e1 100644
--- a/doc/source/puppet_modules.rst
+++ b/doc/source/puppet_modules.rst
@@ -9,23 +9,6 @@ puppet.
 The OpenStack Infrastructure team manages a number of custom puppet modules
 outlined in this document.
 
-Doc Server
-----------
-
-The doc_server module configures apache to serve the documentation for
-several specified OpenStack projects.  At the moment to add a site to this
-you need to edit ``modules/doc_server/manifests/init.pp`` and add a line as
-follows:
-
-.. code-block:: ruby
-   :linenos:
-
-   doc_server::site { "swift": }
-
-In this example nginx will be configured to serve ``swift.openstack.org``
-from ``/srv/docs/swift`` and ``swift.openstack.org/tarballs/`` from
-``/srv/tarballs/swift``
-
 Lodgeit
 -------
 
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml b/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml
index 17fd765a0d..b19fabae2d 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml
@@ -26,7 +26,7 @@
 
     publishers:
       - war:
-          site: 'nova.openstack.org'
+          site: 'tarballs.openstack.org'
           warfile: 'gerrit-war/target/gerrit*.war'
           target: 'tarballs/ci/test/'
       - console-log
@@ -89,7 +89,7 @@
 
     publishers:
       - war:
-          site: 'nova.openstack.org'
+          site: 'tarballs.openstack.org'
           warfile: 'gerrit-war/target/gerrit*.war'
           target: 'tarballs/ci/'
       - console-log-post
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml
index 359ec4c865..d48a118ffd 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml
@@ -19,72 +19,7 @@
       - console-log-post
 
 
-- job-template:
-    name: '{name}-tarball'
-    node: precise
-
-    triggers:
-      - zuul-post
-
-    builders:
-      - gerrit-git-prep
-      - tarball:
-          project: '{name}'
-
-    publishers:
-      - tarball:
-          project: '{name}'
-          site: '{tarball-publisher-site}'
-      - console-log-post
-
-
-- job-template:
-    name: '{name}-branch-tarball'
-    concurrent: false
-    node: precise
-
-    triggers:
-      - zuul-post
-
-    builders:
-      - gerrit-git-prep
-      - shell: |
-          #!/bin/bash -xe
-          BRANCH=$ZUUL_REFNAME
-          BRANCH_PATH=`echo $BRANCH | tr / -`
-
-          tox -v -evenv python setup.py sdist
-          mv dist/* dist/{name}-$BRANCH_PATH.tar.gz
-
-    publishers:
-      - tarball:
-          project: '{name}'
-          site: '{tarball-publisher-site}'
-      - console-log-post
-
-
-- job-template:
-    name: '{name}-tarball-upload'
-    node: precise
-
-    triggers:
-      - zuul-post
-
-    builders:
-      - gerrit-git-prep
-      - shell: tox -v -evenv python setup.py sdist
-
-    publishers:
-      - tarball:
-          project: '{name}'
-          site: '{tarball-publisher-site}'
-      - console-log-post
-
-
 - job-group:
     name: openstack-publish-jobs
     jobs:
       - '{name}-docs'
-      - '{name}-tarball'
-      - '{name}-branch-tarball'
-      - '{name}-tarball-upload'
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
index fdd7d10dc3..4bd32476f1 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
@@ -2,7 +2,7 @@
     name: ceilometer
     github-org: openstack
     node: oneiric
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -14,7 +14,7 @@
     name: cinder
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -26,7 +26,7 @@
     name: compute-api
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -39,14 +39,12 @@
     github-org: openstack-infra
     node: precise
     doc-publisher-site: ci.openstack.org
-    tarball-publisher-site: 173.203.107.207
+    tarball-site: tarballs.openstack.org
 
     jobs:
       - gate-{name}-pep8
       - gate-{name}-pyflakes
-      - '{name}-sdist-tarball'
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
@@ -54,13 +52,12 @@
     github-org: openstack-infra
     node: precise
     doc-publisher-site: ci.openstack.org
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
 
     jobs:
       - gate-{name}-pep8
       - gate-{name}-pyflakes
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
@@ -68,13 +65,12 @@
     github-org: openstack-infra
     node: precise
     doc-publisher-site: ci.openstack.org
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
 
     jobs:
       - gate-{name}-pep8
       - gate-{name}-pyflakes
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
@@ -89,7 +85,7 @@
     name: glance
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -104,7 +100,7 @@
     name: heat
     github-org: openstack
     node: oneiric
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -116,11 +112,12 @@
     name: python-heatclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -128,7 +125,7 @@
     name: horizon
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -143,7 +140,7 @@
     name: identity-api
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -155,7 +152,7 @@
     name: image-api
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -167,21 +164,19 @@
     name: jenkins-job-builder
     github-org: openstack-infra
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
 
     jobs:
       - gate-{name}-pep8
       - gate-{name}-pyflakes
-      - '{name}-sdist-tarball'
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
       - gate-{name}-docs
+      - pypi-jobs
 
 - project:
     name: keystone
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -197,7 +192,7 @@
     name: netconn-api
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -209,7 +204,7 @@
     name: netconn-api-v20
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -221,19 +216,17 @@
     github-org: openstack-infra
     node: precise
     doc-publisher-site: ci.openstack.org
-    tarball-publisher-site: 173.203.107.207
+    tarball-site: tarballs.openstack.org
 
     jobs:
-      - '{name}-sdist-tarball'
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
     name: nova
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -250,7 +243,7 @@
     name: object-api
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -262,7 +255,7 @@
     name: oslo-incubator
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -271,27 +264,16 @@
       - gate-{name}-pyflakes
 
 
-- project:
-    name: pbr
-    github-org: openstack-dev
-    node: precise
-    tarball-publisher-site: nova.openstack.org
-    doc-publisher-site: docs.openstack.org
-
-    jobs:
-      - python-jobs
-      - pypi-jobs
-
-
 - project:
     name: python-ceilometerclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -299,11 +281,12 @@
     name: python-cinderclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -311,11 +294,12 @@
     name: python-glanceclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -323,11 +307,12 @@
     name: python-keystoneclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -335,11 +320,12 @@
     name: python-novaclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -347,11 +333,12 @@
     name: python-openstackclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -359,11 +346,12 @@
     name: python-quantumclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -371,11 +359,12 @@
     name: python-swiftclient
     github-org: openstack
     node: precise
-    tarball-publisher-site: swift.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
       - python-jobs
+      - openstack-publish-jobs
       - pypi-jobs
 
 
@@ -383,7 +372,7 @@
     name: quantum
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -394,6 +383,7 @@
 - project:
     name: reddwarf
     github-org: stackforge
+    tarball-site: tarballs.openstack.org
     node: precise
 
     jobs:
@@ -403,6 +393,7 @@
 - project:
     name: python-reddwarfclient
     github-org: stackforge
+    tarball-site: tarballs.openstack.org
     node: precise
 
     jobs:
@@ -412,6 +403,7 @@
 - project:
     name: libra
     github-org: stackforge
+    tarball-site: tarballs.openstack.org
     node: precise
 
     jobs:
@@ -428,6 +420,7 @@
 - project:
     name: healthnmon
     github-org: stackforge
+    tarball-site: tarballs.openstack.org
     node: precise
 
     jobs:
@@ -437,6 +430,7 @@
 - project:
     name: marconi
     github-org: stackforge
+    tarball-site: tarballs.openstack.org
     node: precise
 
     jobs:
@@ -447,36 +441,35 @@
     name: moniker
     github-org: stackforge
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     rtfd-id: 5190
 
     jobs:
       - python-jobs
       - hook-{name}-rtfd
       - gate-{name}-pyflakes
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
     name: python-monikerclient
     github-org: stackforge
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     rtfd-id: 5366
 
     jobs:
       - python-jobs
       - hook-{name}-rtfd
       - gate-{name}-pyflakes
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
     name: bufunfa
     github-org: stackforge
     node: precise
+    tarball-site: tarballs.openstack.org
     rtfd-id: 5216
 
     jobs:
@@ -488,7 +481,7 @@
     name: swift
     github-org: openstack
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
     doc-publisher-site: docs.openstack.org
 
     jobs:
@@ -510,14 +503,12 @@
     name: zuul
     github-org: openstack-infra
     node: precise
-    tarball-publisher-site: nova.openstack.org
+    tarball-site: tarballs.openstack.org
 
     jobs:
       - python-jobs
       - gate-{name}-pyflakes
-      - '{name}-sdist-tarball'
-      - '{name}-pypi-sdist'
-      - '{name}-pypi-upload'
+      - pypi-jobs
 
 
 - project:
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml
index b404df70e3..389e60c548 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml
@@ -1,44 +1,17 @@
-- job-template:
-    name: '{name}-pypi-sdist'
-    concurrent: false
-    block-downstream: true
-    node: precise
-
-    triggers:
-      - zuul-post
-
-    builders:
-      - gerrit-git-prep
-      - shell: tox -v -evenv python setup.py sdist
-
-    publishers:
-      - archive:
-          artifacts: 'dist/{name}*.tar.gz'
-          latest_only: true
-      - tarball:
-          project: '{name}'
-          site: '{tarball-publisher-site}'
-      - trigger:
-          project: '{name}-pypi-upload'
-      - console-log-post
-
-
 - job-template:
     name: '{name}-pypi-upload'
-    concurrent: false
     node: pypi
 
     builders:
       - shell: |
-          if [ -e dist ]
-          then
-              rm -rf dist
-          fi
-      - copyartifact:
-          project: '{name}-pypi-sdist'
-          filter: 'dist/{name}*.tar.gz'
+          #!bin/bash -xe
+          TAG=`echo $ZUUL_REF | sed 's/^refs.tags.//'`
+          FILENAME="{name}-$TAG.tar.gz"
+
+          rm -rf *tar.gz
+          curl -o $FILENAME http://{tarball-site}/{name}/$FILENAME
+
       - shell: |
-          cd dist
           /usr/local/jenkins/slave_scripts/pypi-upload.sh {name}
 
     publishers:
@@ -48,6 +21,4 @@
 - job-group:
     name: pypi-jobs
     jobs:
-      - '{name}-docs'
-      - '{name}-pypi-sdist'
       - '{name}-pypi-upload'
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml
index 0ab48ee541..d7546c9e7c 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml
@@ -214,6 +214,50 @@
       - console-log
 
 
+- job-template:
+    name: '{name}-tarball'
+    node: precise
+
+    triggers:
+      - zuul-post
+
+    builders:
+      - gerrit-git-prep
+      - tarball:
+          project: '{name}'
+
+    publishers:
+      - tarball:
+          project: '{name}'
+          site: '{tarball-site}'
+      - console-log-post
+
+
+- job-template:
+    name: '{name}-branch-tarball'
+    concurrent: false
+    node: precise
+
+    triggers:
+      - zuul-post
+
+    builders:
+      - gerrit-git-prep
+      - shell: |
+          #!/bin/bash -xe
+          BRANCH=$ZUUL_REFNAME
+          BRANCH_PATH=`echo $BRANCH | tr / -`
+
+          tox -v -evenv python setup.py sdist
+          mv dist/* dist/{name}-$BRANCH_PATH.tar.gz
+
+    publishers:
+      - tarball:
+          project: '{name}'
+          site: '{tarball-site}'
+      - console-log-post
+
+
 - job-group:
     name: python-jobs
     jobs:
@@ -222,6 +266,8 @@
       - 'gate-{name}-python26'
       - 'gate-{name}-python27'
       - 'gate-{name}-docs'
+      - '{name}-tarball'
+      - '{name}-branch-tarball'
       # pyflakes isn't standard
       # pylint isn't standard
 
diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml
index a9853a8740..d3a8a0e8c8 100644
--- a/modules/openstack_project/files/zuul/layout.yaml
+++ b/modules/openstack_project/files/zuul/layout.yaml
@@ -123,10 +123,11 @@ projects:
       - zuul-docs
     pre-release:
       - zuul-docs
-      - zuul-tarball-upload
+      - zuul-tarball
     publish:
       - zuul-docs
-      - zuul-pypi-sdist
+      - zuul-tarball:
+        - zuul-pypi-upload
 
   - name: openstack-infra/nose-html-output
     check:
@@ -136,9 +137,10 @@ projects:
     post:
       - nose-html-output-branch-tarball
     pre-release:
-      - nose-html-output-tarball-upload
+      - nose-html-output-tarball
     publish:
-      - nose-html-output-pypi-sdist
+      - nose-html-output-tarball:
+        - nose-html-output-pypi-upload
 
   - name: openstack-infra/gerrit
     check:
@@ -158,9 +160,10 @@ projects:
     post:
       - gerritbot-branch-tarball
     pre-release:
-      - gerritbot-tarball-upload
+      - gerritbot-tarball
     publish:
-      - gerritbot-pypi-sdist
+      - gerritbot-tarball:
+        - gerritbot-pypi-upload
 
   - name: openstack-infra/gerritlib
     check:
@@ -170,9 +173,10 @@ projects:
       - gate-gerritlib-pep8
       - gate-gerritlib-pyflakes
     pre-release:
-      - gerritlib-tarball-upload
+      - gerritlib-tarball
     publish:
-      - gerritlib-pypi-sdist
+      - gerritlib-tarball:
+        - gerritlib-pypi-upload
 
   - name: openstack-infra/jeepyb
     check:
@@ -182,9 +186,10 @@ projects:
       - gate-jeepyb-pep8
       - gate-jeepyb-pyflakes
     pre-release:
-      - jeepyb-tarball-upload
+      - jeepyb-tarball
     publish:
-      - jeepyb-pypi-sdist
+      - jeepyb-tarball:
+        - jeepyb-pypi-upload
 
   - name: openstack-infra/jenkins-job-builder
     check:
@@ -200,9 +205,10 @@ projects:
       - jenkins-job-builder-branch-tarball
       - jenkins-job-builder-docs
     pre-release:
-      - jenkins-job-builder-tarball-upload
+      - jenkins-job-builder-tarball
     publish:
-      - jenkins-job-builder-pypi-sdist
+      - jenkins-job-builder-tarball:
+        - jenkins-job-builder-pypi-upload
 
   - name: openstack-infra/lodgeit
     check:
@@ -264,10 +270,13 @@ projects:
       - gate-tempest-devstack-vm-cinder
       - gate-devstack-vm-quantum
     post:
-      - cinder-tarball
+      - cinder-branch-tarball
       - cinder-coverage
       - cinder-docs
+    pre-release:
+      - cinder-tarball
     publish:
+      - cinder-tarball
       - cinder-docs
 
   - name: openstack/glance
@@ -288,10 +297,13 @@ projects:
       - gate-tempest-devstack-vm-cinder
       - gate-devstack-vm-quantum
     post:
-      - glance-tarball
+      - glance-branch-tarball
       - glance-coverage
       - glance-docs
+    pre-release:
+      - glance-tarball
     publish:
+      - glance-tarball
       - glance-docs
 
   - name: openstack/horizon
@@ -314,10 +326,13 @@ projects:
       - gate-tempest-devstack-vm-cinder
       - gate-devstack-vm-quantum
     post:
-      - horizon-tarball
+      - horizon-branch-tarball
       - horizon-coverage
       - horizon-docs
+    pre-release:
+      - horizon-tarball
     publish:
+      - horizon-tarball
       - horizon-docs
 
   - name: openstack/keystone
@@ -338,10 +353,16 @@ projects:
       - gate-tempest-devstack-vm-cinder
       - gate-devstack-vm-quantum
     post:
-      - keystone-tarball
+      - keystone-branch-tarball
       - keystone-coverage
       - keystone-docs
       - keystone-upstream-translation-update
+    pre-release:
+      - keystone-tarball
+    publish:
+      - keystone-tarball
+      - keystone-docs
+
 
   - name: openstack/nova
     check:
@@ -362,11 +383,14 @@ projects:
       - gate-tempest-devstack-vm-cinder
       - gate-devstack-vm-quantum
     post:
-      - nova-tarball
+      - nova-branch-tarball
       - nova-coverage
       - nova-docs
       - nova-upstream-translation-update
+    pre-release:
+      - nova-tarball
     publish:
+      - nova-tarball
       - nova-docs
 
   - name: openstack/oslo-incubator
@@ -402,10 +426,13 @@ projects:
       - gate-tempest-devstack-vm-quantum
       - gate-devstack-vm-quantum
     post:
-      - quantum-tarball
+      - quantum-branch-tarball
       - quantum-coverage
       - quantum-docs
+    pre-release:
+      - quantum-tarball
     publish:
+      - quantum-tarball
       - quantum-docs
 
   - name: openstack/swift
@@ -426,10 +453,13 @@ projects:
       - gate-tempest-devstack-vm-cinder
       - gate-devstack-vm-quantum
     post:
-      - swift-tarball
+      - swift-branch-tarball
       - swift-coverage
       - swift-docs
+    pre-release:
+      - swift-tarball
     publish:
+      - swift-tarball
       - swift-docs
 
   - name: openstack/python-ceilometerclient
@@ -447,9 +477,10 @@ projects:
       - python-ceilometerclient-branch-tarball
       - python-ceilometerclient-coverage
     pre-release:
-      - python-ceilometerclient-tarball-upload
+      - python-ceilometerclient-tarball
     publish:
-      - python-ceilometerclient-pypi-sdist
+      - python-ceilometerclient-tarball:
+        - python-ceilometerclient-pypi-upload
       - python-ceilometerclient-docs
 
   - name: openstack/python-cinderclient
@@ -473,9 +504,10 @@ projects:
       - python-cinderclient-branch-tarball
       - python-cinderclient-coverage
     pre-release:
-      - python-cinderclient-tarball-upload
+      - python-cinderclient-tarball
     publish:
-      - python-cinderclient-pypi-sdist
+      - python-cinderclient-tarball:
+        - python-cinderclient-pypi-upload
       - python-cinderclient-docs
 
   - name: openstack/python-glanceclient
@@ -499,9 +531,10 @@ projects:
       - python-glanceclient-branch-tarball
       - python-glanceclient-coverage
     pre-release:
-      - python-glanceclient-tarball-upload
+      - python-glanceclient-tarball
     publish:
-      - python-glanceclient-pypi-sdist
+      - python-glanceclient-tarball:
+        - python-glanceclient-pypi-upload
       - python-glanceclient-docs
 
   - name: openstack/python-keystoneclient
@@ -525,9 +558,10 @@ projects:
       - python-keystoneclient-branch-tarball
       - python-keystoneclient-coverage
     pre-release:
-      - python-keystoneclient-tarball-upload
+      - python-keystoneclient-tarball
     publish:
-      - python-keystoneclient-pypi-sdist
+      - python-keystoneclient-tarball:
+        - python-keystoneclient-pypi-upload
       - python-keystoneclient-docs
 
   - name: openstack/python-novaclient
@@ -551,9 +585,10 @@ projects:
       - python-novaclient-branch-tarball
       - python-novaclient-coverage
     pre-release:
-      - python-novaclient-tarball-upload
+      - python-novaclient-tarball
     publish:
-      - python-novaclient-pypi-sdist
+      - python-novaclient-tarball:
+        - python-novaclient-pypi-upload
       - python-novaclient-docs
 
   - name: openstack/python-openstackclient
@@ -571,9 +606,10 @@ projects:
       - python-openstackclient-branch-tarball
       - python-openstackclient-coverage
     pre-release:
-      - python-openstackclient-tarball-upload
+      - python-openstackclient-tarball
     publish:
-      - python-openstackclient-pypi-sdist
+      - python-openstackclient-tarball:
+        - python-openstackclient-pypi-upload
       - python-openstackclient-docs
 
   - name: openstack/python-quantumclient
@@ -597,9 +633,10 @@ projects:
       - python-quantumclient-branch-tarball
       - python-quantumclient-coverage
     pre-release:
-      - python-quantumclient-tarball-upload
+      - python-quantumclient-tarball
     publish:
-      - python-quantumclient-pypi-sdist
+      - python-quantumclient-tarball:
+        - python-quantumclient-pypi-upload
       - python-quantumclient-docs
 
   - name: openstack/python-swiftclient
@@ -617,9 +654,10 @@ projects:
       - python-swiftclient-branch-tarball
       - python-swiftclient-coverage
     pre-release:
-      - python-swiftclient-tarball-upload
+      - python-swiftclient-tarball
     publish:
-      - python-swiftclient-pypi-sdist
+      - python-swiftclient-tarball:
+        - python-swiftclient-pypi-upload
       - python-swiftclient-docs
 
   - name: openstack/requirements
@@ -688,11 +726,14 @@ projects:
       - gate-ceilometer-python26-folsom
       - gate-ceilometer-python27-folsom
     post:
-      - ceilometer-tarball
+      - ceilometer-branch-tarball
       - ceilometer-coverage
       - ceilometer-docs
+    pre-release:
+      - ceilometer-tarball
     publish:
       - ceilometer-docs
+      - ceilometer-tarball
 
   - name: stackforge/MRaaS
     check:
@@ -739,7 +780,10 @@ projects:
       - heat-tarball
       - heat-coverage
       - heat-docs
+    pre-release:
+      - heat-tarball
     publish:
+      - heat-tarball
       - heat-docs
 
   - name: openstack/python-heatclient
@@ -753,10 +797,13 @@ projects:
       - gate-python-heatclient-python26
       - gate-python-heatclient-python27
     post:
-      - python-heatclient-sdist-tarball
+      - python-heatclient-branch-tarball
       - python-heatclient-coverage
+    pre-release:
+      - python-heatclient-tarball
     publish:
-      - python-heatclient-pypi-sdist
+      - python-heatclient-tarball:
+        - python-heatclient-pypi-upload
       - python-heatclient-docs
 
   - name: stackforge/reddwarf
@@ -808,10 +855,13 @@ projects:
       - gate-moniker-python27
     post:
       - hook-moniker-rtfd
+      - moniker-coverage
+      - moniker-branch-tarball
     pre-release:
-      - moniker-tarball-upload
+      - moniker-tarball
     publish:
-      - moniker-pypi-sdist
+      - moniker-tarball:
+        - moniker-pypi-upload
 
   - name: stackforge/python-monikerclient
     check:
@@ -826,10 +876,13 @@ projects:
       - gate-python-monikerclient-python27
     post:
       - hook-python-monikerclient-rtfd
+      - python-monikerclient-coverage
+      - python-monikerclient-branch-tarball
     pre-release:
-      - python-monikerclient-tarball-upload
+      - python-monikerclient-tarball
     publish:
-      - python-monikerclient-pypi-sdist
+      - python-monikerclient-tarball:
+        - python-monikerclient-pypi-upload
 
   - name: stackforge/bufunfa
     check: