From 978e561782105db0cf47c1076434f0739dd3855d Mon Sep 17 00:00:00 2001 From: Chris MacNaughton Date: Thu, 26 Apr 2018 13:11:43 +0200 Subject: [PATCH] Add broker support for passing app_name In Ceph >= Luminous, application name needs to be set on a per-pool level to avoid health warnings. This change adds support for sending the application name over the broker channel from consuming charms. When a name is not sent from the other side of the relation, the application name will be set to "unknown" in Luminous and greater Change-Id: I99ae47b6802f50ea019751ffa328f11567cca567 Closes-Bug: #1753640 --- ceph/broker.py | 7 ++++++- unit_tests/test_utils.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ceph/broker.py b/ceph/broker.py index 8ba2e7a..0b6d3e2 100644 --- a/ceph/broker.py +++ b/ceph/broker.py @@ -370,6 +370,8 @@ def handle_erasure_pool(request, service): if erasure_profile is None: erasure_profile = "default-canonical" + app_name = request.get('app-name') + # Check for missing params if pool_name is None: msg = "Missing parameter. name is required for the pool" @@ -393,7 +395,7 @@ def handle_erasure_pool(request, service): pool = ErasurePool(service=service, name=pool_name, erasure_code_profile=erasure_profile, - percent_data=weight) + percent_data=weight, app_name=app_name) # Ok make the erasure pool if not pool_exists(service=service, name=pool_name): log("Creating pool '{}' (erasure_profile={})" @@ -426,6 +428,7 @@ def handle_replicated_pool(request, service): if osds: pg_num = min(pg_num, (len(osds) * 100 // replicas)) + app_name = request.get('app-name') # Check for missing params if pool_name is None or replicas is None: msg = "Missing parameter. name and replicas are required" @@ -446,6 +449,8 @@ def handle_replicated_pool(request, service): kwargs['percent_data'] = weight if replicas: kwargs['replicas'] = replicas + if app_name: + kwargs['app_name'] = app_name pool = ReplicatedPool(service=service, name=pool_name, **kwargs) diff --git a/unit_tests/test_utils.py b/unit_tests/test_utils.py index 2d71613..82d0ee2 100644 --- a/unit_tests/test_utils.py +++ b/unit_tests/test_utils.py @@ -134,9 +134,9 @@ class CephTestCase(unittest.TestCase): """Ensure that previously processed disks are skipped""" db = MagicMock() _kv.return_value = db + db.get.return_value = ['/dev/sdb'] utils.osdize('/dev/sdb', osd_format='xfs', osd_journal=None, reformat_osd=True, bluestore=False) - db.get.return_value = ['/dev/sdb'] db.get.assert_called_with('osd-devices', []) db.set.assert_not_called()