From b7bec20c8fc9cf7f229df8c0fb2bc34bf65ad9c5 Mon Sep 17 00:00:00 2001 From: Pere Diaz Bou Date: Thu, 5 May 2022 16:34:36 +0200 Subject: [PATCH] mgr/dashboard: iops optimized option enabled Signed-off-by: Pere Diaz Bou (cherry picked from commit 86cb558a7772df587c8eca7bdfecc95928dc7730) --- src/pybind/mgr/dashboard/controllers/osd.py | 22 ++++++++++++++++----- src/pybind/mgr/dashboard/tests/test_osd.py | 1 + 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/pybind/mgr/dashboard/controllers/osd.py b/src/pybind/mgr/dashboard/controllers/osd.py index 59d520809a14a..e4918da845218 100644 --- a/src/pybind/mgr/dashboard/controllers/osd.py +++ b/src/pybind/mgr/dashboard/controllers/osd.py @@ -101,7 +101,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 + }, } @@ -490,24 +500,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 1404ceedac2b3..0740f580c9a44 100644 --- a/src/pybind/mgr/dashboard/tests/test_osd.py +++ b/src/pybind/mgr/dashboard/tests/test_osd.py @@ -393,4 +393,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 -- 2.39.5