diff --git a/requirements.txt b/requirements.txt
index 339e7f3..dcec2c7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,10 +4,11 @@
 
 pbr>=0.6,!=0.7,<1.0
 
-oslo.config>=1.4.0          # Apache-2.0
-oslo.i18n>=1.0.0            # Apache-2.0
-oslo.serialization>=1.0.0   # Apache-2.0
-oslo.utils>=1.1.0           # Apache-2.0
-python-keystoneclient
-python-heatclient
+oslo.config>=1.6.0  # Apache-2.0
+oslo.i18n>=1.3.0  # Apache-2.0
+oslo.serialization>=1.2.0               # Apache-2.0
+oslo.utils>=1.2.0                       # Apache-2.0
+python-keystoneclient>=1.0.0
+python-novaclient>=2.18.0
+python-heatclient>=0.2.9
 PyYAML>=3.1.0
diff --git a/setup.py b/setup.py
index c0a24ea..7363757 100644
--- a/setup.py
+++ b/setup.py
@@ -14,8 +14,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
 import setuptools
 
+# In python < 2.7.4, a lazy loading of package `pbr` will break
+# setuptools if some other modules registered functions in `atexit`.
+# solution from: http://bugs.python.org/issue15881#msg170215
+try:
+    import multiprocessing  # noqa
+except ImportError:
+    pass
+
 setuptools.setup(
     setup_requires=['pbr'],
     pbr=True)
diff --git a/test-requirements.txt b/test-requirements.txt
index 66542aa..c412981 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -5,6 +5,6 @@
 # Hacking already pins down pep8, pyflakes and flake8
 hacking>=0.8.0,<0.9
 mock>=1.0
-python-subunit
-testrepository>=0.0.17
-testtools>=0.9.32
+python-subunit>=0.0.18
+testrepository>=0.0.18
+testtools>=0.9.36,!=1.2.0