From: Pere Diaz Bou Date: Thu, 5 May 2022 14:34:36 +0000 (+0200) Subject: mgr/dashboard: iops optimized option enabled X-Git-Tag: v17.2.4~228^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6fd7b91d3795c93a0e520ea9adc6ed34d2d91a89;p=ceph.git mgr/dashboard: iops optimized option enabled Signed-off-by: Pere Diaz Bou --- diff --git a/src/pybind/mgr/dashboard/controllers/osd.py b/src/pybind/mgr/dashboard/controllers/osd.py index dfae52da3369..df3eb2f88a13 100644 --- a/src/pybind/mgr/dashboard/controllers/osd.py +++ b/src/pybind/mgr/dashboard/controllers/osd.py @@ -100,7 +100,17 @@ predefined_drive_groups = { }, 'encrypted': False }, - OsdDeploymentOptions.IOPS: {}, + OsdDeploymentOptions.IOPS: { + 'service_type': 'osd', + 'service_id': 'iops_optimized', + 'placement': { + 'host_pattern': '*' + }, + 'data_devices': { + 'rotational': 0 + }, + 'encrypted': False + }, } @@ -489,24 +499,26 @@ class OsdUi(Osd): ssds = 0 nvmes = 0 res = DeploymentOptions() - devices = {} for inventory_host in orch.inventory.list(hosts=None, refresh=True): for device in inventory_host.devices.devices: if device.available: - devices[device.path] = device if device.human_readable_type == 'hdd': hdds += 1 - elif device.human_readable_type == 'ssd': + else: ssds += 1 - elif device.human_readable_type == 'nvme': + # we still don't know how to infer nvmes + # Tracker: https://tracker.ceph.com/issues/55728 nvmes += 1 + if hdds: res.options[OsdDeploymentOptions.COST_CAPACITY].available = True res.recommended_option = OsdDeploymentOptions.COST_CAPACITY if ssds: res.options[OsdDeploymentOptions.THROUGHPUT].available = True res.recommended_option = OsdDeploymentOptions.THROUGHPUT + if nvmes: + res.options[OsdDeploymentOptions.IOPS].available = True return res.as_dict() diff --git a/src/pybind/mgr/dashboard/tests/test_osd.py b/src/pybind/mgr/dashboard/tests/test_osd.py index 4fc1de4bf72a..9f83fa74b37c 100644 --- a/src/pybind/mgr/dashboard/tests/test_osd.py +++ b/src/pybind/mgr/dashboard/tests/test_osd.py @@ -451,4 +451,5 @@ class OsdTest(ControllerTestCase): res = self._get_deployment_options(fake_client, devices_data) self.assertTrue(res['options'][OsdDeploymentOptions.COST_CAPACITY]['available']) self.assertTrue(res['options'][OsdDeploymentOptions.THROUGHPUT]['available']) + self.assertTrue(res['options'][OsdDeploymentOptions.IOPS]['available']) assert res['recommended_option'] == OsdDeploymentOptions.THROUGHPUT