diff --git a/nova_powervm/conf/powervm.py b/nova_powervm/conf/powervm.py index 3d46f8d2..f76f0233 100644 --- a/nova_powervm/conf/powervm.py +++ b/nova_powervm/conf/powervm.py @@ -124,7 +124,11 @@ vol_adapter_opts = [ help="The iSCSI transport iface to use to connect to target in " "case offload support is desired. Do not confuse the " "iscsi_iface parameter to be provided here with the " - "actual transport name.") + "actual transport name."), + cfg.StrOpt('rbd_user', + default='', + help="Refer to this user when connecting and authenticating " + "with the Ceph RBD server.") ] # NPIV Options. Only applicable if the 'fc_attach_strategy' is set to 'npiv'. diff --git a/nova_powervm/tests/virt/powervm/volume/test_rbd.py b/nova_powervm/tests/virt/powervm/volume/test_rbd.py index b3264286..14e16e01 100644 --- a/nova_powervm/tests/virt/powervm/volume/test_rbd.py +++ b/nova_powervm/tests/virt/powervm/volume/test_rbd.py @@ -91,12 +91,13 @@ class TestRBDVolumeAdapter(test_vol.TestVolumeAdapter): mock_udid_to_map.return_value = mock.Mock() mock_add_map.return_value = None + # Set user + v_drv.CONF.powervm.rbd_user = 'tester' # Invoke self.vol_drv.connect_volume(mock_slot_mgr) - # Validate mock_rbd_bld_ref.assert_called_once_with( - self.adpt, 'pool/image', tag='a_vol_id') + self.adpt, 'pool/image', tag='a_vol_id', user='tester') self.assertEqual(1, mock_build_map.call_count) self.assertEqual(1, mock_udid_to_map.call_count) @@ -129,7 +130,7 @@ class TestRBDVolumeAdapter(test_vol.TestVolumeAdapter): # Validate mock_rbd_bld_ref.assert_called_once_with( - self.adpt, 'pool/image', tag='a_vol_id') + self.adpt, 'pool/image', tag='a_vol_id', user='') self.assertEqual(0, mock_build_map.call_count) @mock.patch('pypowervm.entities.Entry.uuid', diff --git a/nova_powervm/virt/powervm/volume/rbd.py b/nova_powervm/virt/powervm/volume/rbd.py index f7d64219..8d8eec42 100644 --- a/nova_powervm/virt/powervm/volume/rbd.py +++ b/nova_powervm/virt/powervm/volume/rbd.py @@ -88,7 +88,8 @@ class RBDVolumeAdapter(v_driver.PowerVMVolumeAdapter): def _connect_volume(self, slot_mgr): name = self.connection_info["data"]["name"] volid = self.connection_info["data"]["volume_id"] - rbd = pvm_stg.RBD.bld_ref(self.adapter, name, tag=volid) + user = CONF.powervm.rbd_user + rbd = pvm_stg.RBD.bld_ref(self.adapter, name, tag=volid, user=user) def add_func(vios_w): # If the vios doesn't match, just return