diff --git a/lower-constraints.txt b/lower-constraints.txt
index b44bc8296..edcb18681 100644
--- a/lower-constraints.txt
+++ b/lower-constraints.txt
@@ -41,7 +41,6 @@ netaddr==0.7.18
 netifaces==0.10.4
 openstackdocstheme==1.18.1
 os-client-config==1.29.0
-os-testr==1.0.0
 oslo.concurrency==3.26.0
 oslo.config==5.2.0
 oslo.context==2.20.0
@@ -78,7 +77,7 @@ requestsexceptions==1.4.0
 restructuredtext-lint==1.1.3
 rfc3986==1.1.0
 Routes==2.4.1
-rtslib-fb==2.1.43
+rtslib-fb==2.1.65
 simplegeneric==0.8.1
 six==1.10.0
 snowballstemmer==1.2.1
@@ -86,7 +85,7 @@ Sphinx==1.6.2
 sphinxcontrib-httpdomain==1.6.1
 sphinxcontrib-pecanwsme==0.8.0
 sphinxcontrib-websupport==1.0.1
-stestr==2.0.0
+stestr==1.0.0
 stevedore==1.20.0
 testrepository==0.0.20
 testtools==2.2.0
diff --git a/requirements.txt b/requirements.txt
index 431d1760e..f37c1b079 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -17,7 +17,7 @@ Pint>=0.5 # BSD
 psutil>=3.2.2 # BSD
 pyudev>=0.16.1 # LGPLv2.1+
 requests>=2.14.2 # Apache-2.0
-rtslib-fb!=2.1.60,!=2.1.61,!=2.1.64,>=2.1.43 # Apache-2.0
+rtslib-fb>=2.1.65 # Apache-2.0
 six>=1.10.0 # MIT
 stevedore>=1.20.0 # Apache-2.0
 WSME>=0.8.0 # MIT
diff --git a/test-requirements.txt b/test-requirements.txt
index f58de1822..b8ba6ddf1 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -6,7 +6,7 @@ coverage!=4.4,>=4.0 # Apache-2.0
 mock>=2.0.0 # BSD
 testtools>=2.2.0 # MIT
 oslotest>=3.2.0 # Apache-2.0
-os-testr>=1.0.0 # Apache-2.0
+stestr>=1.0.0 # Apache-2.0
 bashate>=0.5.1 # Apache-2.0
 flake8-import-order>=0.13 # LGPLv3
 
diff --git a/tox.ini b/tox.ini
index 3742f4729..46611ae3b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -13,7 +13,7 @@ setenv =
   LANGUAGE=en_US
   LC_ALL=en_US.utf-8
 deps = -r{toxinidir}/test-requirements.txt
-commands = ostestr {posargs}
+commands = stestr run {posargs}
 
 [testenv:functional]
 basepython = python3
@@ -26,7 +26,7 @@ setenv =
   OS_TEST_PATH=./ironic_python_agent/tests/functional
   TEST_PORT=9999
   IPA_WAIT_TRIES=100
-commands = ostestr {posargs}
+commands = stestr run {posargs}
 
 [testenv:pep8]
 basepython = python3
@@ -44,7 +44,7 @@ setenv = VIRTUAL_ENV={envdir}
          PYTHON=coverage run --source ironic_python_agent --omit='*tests*' --parallel-mode
 commands =
   coverage erase
-  ostestr {posargs}
+  stestr run {posargs}
   coverage combine
   coverage report --omit='*tests*'
   coverage html -d ./cover --omit='*tests*'