diff --git a/os_brick/initiator/connectors/rbd.py b/os_brick/initiator/connectors/rbd.py index f62c06b3f..5135dd8c8 100644 --- a/os_brick/initiator/connectors/rbd.py +++ b/os_brick/initiator/connectors/rbd.py @@ -97,7 +97,12 @@ class RBDConnector(base.BaseLinuxConnector): try: fd, ceph_conf_path = tempfile.mkstemp(prefix="brickrbd_") with os.fdopen(fd, 'w') as conf_file: - conf_file.writelines([mon_hosts, "\n", keyring, "\n"]) + # Bug #1865754 - '[global]' has been the appropriate + # place for this stuff since at least Hammer, but in + # Octopus (15.2.0+), Ceph began enforcing this. + conf_file.writelines(["[global]", "\n", + mon_hosts, "\n", + keyring, "\n"]) return ceph_conf_path except IOError: msg = (_("Failed to write data to %s.") % (ceph_conf_path)) diff --git a/os_brick/tests/initiator/connectors/test_rbd.py b/os_brick/tests/initiator/connectors/test_rbd.py index b8ce8b9a8..d00176505 100644 --- a/os_brick/tests/initiator/connectors/test_rbd.py +++ b/os_brick/tests/initiator/connectors/test_rbd.py @@ -171,6 +171,10 @@ class RBDConnectorTestCase(test_connector.ConnectorTestCase): self.keyring) self.assertEqual(conf_path, tmpfile) mock_mkstemp.assert_called_once_with(prefix='brickrbd_') + # Bug #1865754 - make sure generated config file has a '[global]' + # section + _, args, _ = mockopen().writelines.mock_calls[0] + self.assertIn('[global]', args[0]) @mock.patch.object(priv_rootwrap, 'execute', return_value=None) def test_connect_local_volume(self, mock_execute): diff --git a/releasenotes/notes/bug-1865754-ceph-octopus-compatibility-0aa9b8bc1b028301.yaml b/releasenotes/notes/bug-1865754-ceph-octopus-compatibility-0aa9b8bc1b028301.yaml new file mode 100644 index 000000000..bdd5986e3 --- /dev/null +++ b/releasenotes/notes/bug-1865754-ceph-octopus-compatibility-0aa9b8bc1b028301.yaml @@ -0,0 +1,12 @@ +--- +fixes: + - | + `Bug #1865754 `_: + the ``RBDConnector`` class generates a temporary configuration file + to connect to Ceph. Previously, os-brick did not include a + ``[global]`` section to contain the options it sets, but with the + Octopus release (15.2.0+), Ceph has begun enforcing the presence + of this section marker, which dates back at least to the Hammer + release of Ceph. With this release, os-brick includes the + ``[global]`` section in the generated configuration file, which + should be backward-compatible at least to Ceph Hammer.