diff --git a/requirements-py3.txt b/requirements-py3.txt
index 9b6d07acf..4ec18c6e3 100644
--- a/requirements-py3.txt
+++ b/requirements-py3.txt
@@ -2,12 +2,12 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-oslo.config>=1.9.0  # Apache-2.0
-oslo.context>=0.2.0                     # Apache-2.0
-oslo.serialization>=1.2.0               # Apache-2.0
-oslo.utils>=1.2.0                       # Apache-2.0
-oslo.i18n>=1.3.0  # Apache-2.0
-stevedore>=1.1.0  # Apache-2.0
+oslo.config>=1.9.3,<1.10.0  # Apache-2.0
+oslo.context>=0.2.0,<0.3.0                     # Apache-2.0
+oslo.serialization>=1.4.0,<1.5.0               # Apache-2.0
+oslo.utils>=1.4.0,<1.5.0                       # Apache-2.0
+oslo.i18n>=1.5.0,<1.6.0  # Apache-2.0
+stevedore>=1.3.0,<1.4.0  # Apache-2.0
 
 # for jsonutils
 six>=1.9.0
@@ -19,4 +19,4 @@ PyYAML>=3.1.0
 kombu>=2.5.0
 
 # middleware
-oslo.middleware>=0.3.0                  # Apache-2.0
+oslo.middleware>=1.0.0,<1.1.0                  # Apache-2.0
diff --git a/requirements.txt b/requirements.txt
index 5f0e49d33..ec5fef6aa 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,12 +4,12 @@
 
 pbr>=0.6,!=0.7,<1.0
 
-oslo.config>=1.9.0  # Apache-2.0
-oslo.context>=0.2.0                     # Apache-2.0
-oslo.utils>=1.2.0                       # Apache-2.0
-oslo.serialization>=1.2.0               # Apache-2.0
-oslo.i18n>=1.3.0  # Apache-2.0
-stevedore>=1.1.0  # Apache-2.0
+oslo.config>=1.9.3,<1.10.0  # Apache-2.0
+oslo.context>=0.2.0,<0.3.0                     # Apache-2.0
+oslo.utils>=1.4.0,<1.5.0                       # Apache-2.0
+oslo.serialization>=1.4.0,<1.5.0               # Apache-2.0
+oslo.i18n>=1.5.0,<1.6.0  # Apache-2.0
+stevedore>=1.3.0,<1.4.0  # Apache-2.0
 
 # for jsonutils
 six>=1.9.0
@@ -17,7 +17,7 @@ six>=1.9.0
 # FIXME(markmc): remove this when the drivers no longer
 # import eventlet
 
-eventlet>=0.16.1
+eventlet>=0.16.1,!=0.17.0
 
 # for the routing notifier
 PyYAML>=3.1.0
@@ -26,7 +26,7 @@ PyYAML>=3.1.0
 kombu>=2.5.0
 
 # middleware
-oslo.middleware>=0.3.0                  # Apache-2.0
+oslo.middleware>=1.0.0,<1.1.0                  # Apache-2.0
 
 # for the futures based executor
 futures>=2.1.6
diff --git a/test-requirements-py3.txt b/test-requirements-py3.txt
index 937c9f2eb..f1371952c 100644
--- a/test-requirements-py3.txt
+++ b/test-requirements-py3.txt
@@ -13,7 +13,7 @@ python-subunit>=0.0.18
 testrepository>=0.0.18
 testscenarios>=0.4
 testtools>=0.9.36,!=1.2.0
-oslotest>=1.2.0  # Apache-2.0
+oslotest>=1.5.1,<1.6.0  # Apache-2.0
 
 # when we can require tox>= 1.4, this can go into tox.ini:
 #  [testenv:cover]
@@ -22,4 +22,4 @@ coverage>=3.6
 
 # this is required for the docs build jobs
 sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
-oslosphinx>=2.2.0  # Apache-2.0
+oslosphinx>=2.5.0,<2.6.0  # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index 0b2a58327..5afaa74bf 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -13,7 +13,7 @@ python-subunit>=0.0.18
 testrepository>=0.0.18
 testscenarios>=0.4
 testtools>=0.9.36,!=1.2.0
-oslotest>=1.2.0  # Apache-2.0
+oslotest>=1.5.1,<1.6.0  # Apache-2.0
 
 # for test_qpid
 qpid-python
@@ -31,4 +31,4 @@ coverage>=3.6
 
 # this is required for the docs build jobs
 sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
-oslosphinx>=2.2.0  # Apache-2.0
+oslosphinx>=2.5.0,<2.6.0  # Apache-2.0