From a6dff156d70cd79e87c71bea53aa634311f22459 Mon Sep 17 00:00:00 2001 From: Rui Yuan Dou Date: Fri, 22 Feb 2019 16:53:28 +0800 Subject: [PATCH] Fix get keyring content failed when ceph auth disabled When ceph auth diasbled, both 'user' and 'keyring' will be 'None', and the method _check_or_get_keyring_contents must return strings for ceph conf file writelines() generation. Change-Id: Ieafd40ace4f50c1a966c9097c5de270c68b0666b Closes-Bug: #1817271 --- os_brick/initiator/connectors/rbd.py | 13 ++++++++----- os_brick/tests/initiator/connectors/test_rbd.py | 3 +++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/os_brick/initiator/connectors/rbd.py b/os_brick/initiator/connectors/rbd.py index dcf631aca..28961a351 100644 --- a/os_brick/initiator/connectors/rbd.py +++ b/os_brick/initiator/connectors/rbd.py @@ -71,11 +71,14 @@ class RBDConnector(base.BaseLinuxConnector): def _check_or_get_keyring_contents(self, keyring, cluster_name, user): try: - if keyring is None and user: - keyring_path = ("/etc/ceph/%s.client.%s.keyring" % - (cluster_name, user)) - with open(keyring_path, 'r') as keyring_file: - keyring = keyring_file.read() + if keyring is None: + if user: + keyring_path = ("/etc/ceph/%s.client.%s.keyring" % + (cluster_name, user)) + with open(keyring_path, 'r') as keyring_file: + keyring = keyring_file.read() + else: + keyring = '' return keyring except IOError: msg = (_("Keyring path %s is not readable.") % (keyring_path)) diff --git a/os_brick/tests/initiator/connectors/test_rbd.py b/os_brick/tests/initiator/connectors/test_rbd.py index 69b1b8f3f..ab24acebd 100644 --- a/os_brick/tests/initiator/connectors/test_rbd.py +++ b/os_brick/tests/initiator/connectors/test_rbd.py @@ -123,6 +123,9 @@ class RBDConnectorTestCase(test_connector.ConnectorTestCase): self.assertEqual( conn._check_or_get_keyring_contents(keyring, 'cluster', 'user'), keyring_data) + self.assertEqual( + conn._check_or_get_keyring_contents(keyring, 'cluster', + None), '') def test_keyring_raise_error(self): conn = rbd.RBDConnector(None)