diff --git a/.gitignore b/.gitignore
index 660b48a2bec273c09cca623edd4e5ae0674564b1..c3fd0b6342ca0576b8f9c514fad695bbe6fbd5e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
 .project
 .tox
 .testrepository
+.stestr
 bin
 *.sw[nop]
 *.pyc
diff --git a/hooks/ceph_hooks.py b/hooks/ceph_hooks.py
index b4ad3e267d160c44f77190b4262e608de98c5960..8253d8b886ae3a36a1a1830dd38f868c707d7aaa 100755
--- a/hooks/ceph_hooks.py
+++ b/hooks/ceph_hooks.py
@@ -82,8 +82,8 @@ STORAGE_MOUNT_PATH = '/var/lib/ceph'
 
 
 def check_for_upgrade():
-    if not ceph.is_bootstrapped():
-        log("Ceph is not bootstrapped, skipping upgrade checks.")
+    if not os.path.exists(ceph._upgrade_keyring):
+        log("Ceph upgrade keyring not detected, skipping upgrade checks.")
         return
 
     c = hookenv.config()
diff --git a/unit_tests/test_upgrade.py b/unit_tests/test_upgrade.py
index 383519c8a1f5115d545a2c594d5b7799654906c1..ad8762146b84dcafe934892033dd7141b556b69b 100644
--- a/unit_tests/test_upgrade.py
+++ b/unit_tests/test_upgrade.py
@@ -19,16 +19,16 @@ def config_side_effect(*args):
 class UpgradeRollingTestCase(unittest.TestCase):
 
     @patch('ceph_hooks.ceph.dirs_need_ownership_update')
-    @patch('ceph_hooks.ceph.is_bootstrapped')
+    @patch('ceph_hooks.os.path.exists')
     @patch('ceph_hooks.ceph.resolve_ceph_version')
     @patch('ceph_hooks.emit_cephconf')
     @patch('ceph_hooks.hookenv')
     @patch('ceph_hooks.ceph.roll_osd_cluster')
     def test_check_for_upgrade(self, roll_osd_cluster, hookenv,
-                               emit_cephconf, version, is_bootstrapped,
+                               emit_cephconf, version, exists,
                                dirs_need_ownership_update):
         dirs_need_ownership_update.return_value = False
-        is_bootstrapped.return_value = True
+        exists.return_value = True
         version.side_effect = ['firefly', 'hammer']
         previous_mock = MagicMock().return_value
         previous_mock.previous.return_value = "cloud:trusty-juno"
@@ -40,19 +40,21 @@ class UpgradeRollingTestCase(unittest.TestCase):
                                             upgrade_key='osd-upgrade')
         emit_cephconf.assert_has_calls([call(upgrading=True),
                                         call(upgrading=False)])
+        exists.assert_called_with(
+            "/var/lib/ceph/osd/ceph.client.osd-upgrade.keyring")
 
     @patch('ceph_hooks.ceph.dirs_need_ownership_update')
-    @patch('ceph_hooks.ceph.is_bootstrapped')
+    @patch('ceph_hooks.os.path.exists')
     @patch('ceph_hooks.ceph.resolve_ceph_version')
     @patch('ceph_hooks.emit_cephconf')
     @patch('ceph_hooks.hookenv')
     @patch('ceph_hooks.ceph.roll_osd_cluster')
     def test_resume_failed_upgrade(self, roll_osd_cluster,
                                    hookenv, emit_cephconf, version,
-                                   is_bootstrapped,
+                                   exists,
                                    dirs_need_ownership_update):
         dirs_need_ownership_update.return_value = True
-        is_bootstrapped.return_value = True
+        exists.return_value = True
         version.side_effect = ['jewel', 'jewel']
 
         check_for_upgrade()
@@ -61,15 +63,17 @@ class UpgradeRollingTestCase(unittest.TestCase):
                                             upgrade_key='osd-upgrade')
         emit_cephconf.assert_has_calls([call(upgrading=True),
                                         call(upgrading=False)])
+        exists.assert_called_with(
+            "/var/lib/ceph/osd/ceph.client.osd-upgrade.keyring")
 
-    @patch('ceph_hooks.ceph.is_bootstrapped')
+    @patch('ceph_hooks.os.path.exists')
     @patch('ceph_hooks.ceph.resolve_ceph_version')
     @patch('ceph_hooks.hookenv')
     @patch('ceph_hooks.ceph.roll_monitor_cluster')
     def test_check_for_upgrade_not_bootstrapped(self, roll_monitor_cluster,
                                                 hookenv,
-                                                version, is_bootstrapped):
-        is_bootstrapped.return_value = False
+                                                version, exists):
+        exists.return_value = False
         version.side_effect = ['firefly', 'hammer']
         previous_mock = MagicMock().return_value
         previous_mock.previous.return_value = "cloud:trusty-juno"
@@ -78,3 +82,5 @@ class UpgradeRollingTestCase(unittest.TestCase):
         check_for_upgrade()
 
         roll_monitor_cluster.assert_not_called()
+        exists.assert_called_with(
+            "/var/lib/ceph/osd/ceph.client.osd-upgrade.keyring")