diff --git a/charms_openstack/plugins/classes.py b/charms_openstack/plugins/classes.py index fc983b6..21239d4 100644 --- a/charms_openstack/plugins/classes.py +++ b/charms_openstack/plugins/classes.py @@ -262,11 +262,19 @@ class BaseOpenStackCephCharm(object): ] return states_to_check - def create_pool(self, ceph_interface): + def create_pool(self, ceph_interface, pool_name=None): """Request pool for service. + The pool created will be a replicated pool and will adopt standard + BlueStore compression options that are configured for the charm. + Charms that do not have provide BlueStore compression options will + create pools using the Ceph storage configured defaults. + :param ceph_interface: Ceph interface instance :type ceph_interface: CephRequires + :param pool_name: (Optional) name of the pool to create. + Defaults to the name of the application deployed. + :type pool_name: str """ try: bluestore_compression = self._get_bluestore_compression() @@ -280,7 +288,7 @@ class BaseOpenStackCephCharm(object): .format(str(e))) return kwargs = { - 'name': self.name, + 'name': pool_name or self.application_name, } if bluestore_compression: kwargs.update(bluestore_compression) diff --git a/unit_tests/charms_openstack/plugins/test_classes.py b/unit_tests/charms_openstack/plugins/test_classes.py index 1bde0a4..3f1a37e 100644 --- a/unit_tests/charms_openstack/plugins/test_classes.py +++ b/unit_tests/charms_openstack/plugins/test_classes.py @@ -166,11 +166,19 @@ class TestOpenStackCephConsumingCharm(BaseOpenStackCharmTest): self._get_bluestore_compression.side_effect = ValueError self.target.create_pool(ceph_interface) self.assertFalse(ceph_interface.create_replicated_pool.called) + + self.patch_object(cpl.ch_core.hookenv, 'application_name', + return_value='svc1') self._get_bluestore_compression.side_effect = None self._get_bluestore_compression.return_value = {'fake': 'value'} self.target.create_pool(ceph_interface) ceph_interface.create_replicated_pool.assert_called_once_with( - name='charmname', fake='value') + name='svc1', fake='value') + + ceph_interface.create_replicated_pool.reset_mock() + self.target.create_pool(ceph_interface, pool_name='custom_pool') + ceph_interface.create_replicated_pool.assert_called_once_with( + name='custom_pool', fake='value') class TestCephCharm(BaseOpenStackCharmTest):