]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cephdm: add support for raw crimson OSD deployment wip-shraddhaag-crimson-cephadm-raw
authorShraddha Agrawal <shraddha.agrawal000@gmail.com>
Tue, 17 Feb 2026 14:41:11 +0000 (20:11 +0530)
committerShraddha Agrawal <shraddha.agrawal000@gmail.com>
Wed, 18 Feb 2026 06:39:54 +0000 (12:09 +0530)
This commit adds support for deploying crimson OSDs using
cephadm with the method raw.

Support for lvm crimson OSD was added previously in:
https://github.com/ceph/ceph/pull/66811.

Fixes: https://tracker.ceph.com/issues/74960
Signed-off-by: Shraddha Agrawal <shraddha.agrawal000@gmail.com>
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/python-common/ceph/deployment/translate.py
src/python-common/ceph/tests/test_drive_group.py

index d69d53d3bd2987090e71cb1885c7c30afaca13d1..1e6fa3d6e70cf7e2a0cf5b94c5ffcbad9d13c06b 100644 (file)
@@ -1315,15 +1315,15 @@ class TestCephadm(object):
         "devices, preview, exp_commands",
         [
             # one data device, no preview
-            (['/dev/sda'], False, ["raw prepare --bluestore --data /dev/sda"]),
+            (['/dev/sda'], False, ["raw prepare --bluestore --data /dev/sda --osd-type classic"]),
             # multiple data devices, no preview
             (['/dev/sda', '/dev/sdb'], False,
-             ["raw prepare --bluestore --data /dev/sda", "raw prepare --bluestore --data /dev/sdb"]),
+             ["raw prepare --bluestore --data /dev/sda --osd-type classic", "raw prepare --bluestore --data /dev/sdb --osd-type classic"]),
             # one data device, preview
-            (['/dev/sda'], True, ["raw prepare --bluestore --data /dev/sda --report --format json"]),
+            (['/dev/sda'], True, ["raw prepare --bluestore --data /dev/sda --osd-type classic --report --format json"]),
             # multiple data devices, preview
             (['/dev/sda', '/dev/sdb'], True,
-             ["raw prepare --bluestore --data /dev/sda --report --format json", "raw prepare --bluestore --data /dev/sdb --report --format json"]),
+             ["raw prepare --bluestore --data /dev/sda --osd-type classic --report --format json", "raw prepare --bluestore --data /dev/sdb --osd-type classic --report --format json"]),
         ]
     )
     @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
index 634fb0e1f5173fddc5ac04cd3dcbd45fd988839f..7b28efbf63149dd2975c846d696c1c1004cbf0e7 100644 (file)
@@ -135,13 +135,13 @@ class to_ceph_volume(object):
 
                 cmd += " --objectstore {}".format(self.spec.objectstore)
 
-                if self.spec.osd_type:
-                    osd_type_str = getattr(self.spec.osd_type, 'value', self.spec.osd_type)
-                    cmd += " --osd-type {}".format(osd_type_str)
-
                 cmds.append(cmd)
 
         for i in range(len(cmds)):
+            if self.spec.osd_type:
+                osd_type_str = getattr(self.spec.osd_type, 'value', self.spec.osd_type)
+                cmds[i] += " --osd-type {}".format(osd_type_str)
+
             if self.spec.encrypted:
                 cmds[i] += " --dmcrypt"
 
index a26bf2150709b1d234288459019ba48bbb8b65cf..9bcc07be93a273ff91f7a899f73606e3475c17cf 100644 (file)
@@ -475,7 +475,7 @@ def test_raw_ceph_volume_command_0():
                               _mk_device(rotational=False) +  # db
                               _mk_device(rotational=False)  # db
                               )
-    exp_cmds = ['raw prepare --bluestore --data /dev/sda --block.db /dev/sdc', 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sdd']
+    exp_cmds = ['raw prepare --bluestore --data /dev/sda --block.db /dev/sdc --osd-type classic', 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sdd --osd-type classic']
     sel = drive_selection.DriveSelection(spec, inventory)
     cmds = translate.to_ceph_volume(sel, []).run()
     assert all(cmd in exp_cmds for cmd in cmds), f'Expected {exp_cmds} to match {cmds}'
@@ -528,9 +528,9 @@ def test_raw_ceph_volume_command_2(test_input5):
     drive = drive_selection.DriveSelection(spec, spec.data_devices.paths)
     cmds = translate.to_ceph_volume(drive, []).run()
 
-    assert cmds[0] == 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdd --crush-device-class hdd'
-    assert cmds[1] == 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sde --crush-device-class hdd'
-    assert cmds[2] == 'raw prepare --bluestore --data /dev/sdc --block.db /dev/sdf --crush-device-class hdd'
+    assert cmds[0] == 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdd --crush-device-class hdd --osd-type classic'
+    assert cmds[1] == 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sde --crush-device-class hdd --osd-type classic'
+    assert cmds[2] == 'raw prepare --bluestore --data /dev/sdc --block.db /dev/sdf --crush-device-class hdd --osd-type classic'
 
 
 @pytest.mark.parametrize("test_input6",
@@ -565,9 +565,9 @@ def test_raw_ceph_volume_command_3(test_input6):
     drive = drive_selection.DriveSelection(spec, spec.data_devices.paths)
     cmds = translate.to_ceph_volume(drive, []).run()
 
-    assert cmds[0] == 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdd --crush-device-class hdd'
-    assert cmds[1] == 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sde --crush-device-class hdd'
-    assert cmds[2] == 'raw prepare --bluestore --data /dev/sdc --block.db /dev/sdf --crush-device-class ssd'
+    assert cmds[0] == 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdd --crush-device-class hdd --osd-type classic'
+    assert cmds[1] == 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sde --crush-device-class hdd --osd-type classic'
+    assert cmds[2] == 'raw prepare --bluestore --data /dev/sdc --block.db /dev/sdf --crush-device-class ssd --osd-type classic'
 
 
 @pytest.mark.parametrize("test_input7",
@@ -607,9 +607,9 @@ def test_raw_ceph_volume_command_4(test_input7):
     drive = drive_selection.DriveSelection(spec, spec.data_devices.paths)
     cmds = translate.to_ceph_volume(drive, []).run()
 
-    assert cmds[0] == 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdd --block.wal /dev/sdg --crush-device-class hdd'
-    assert cmds[1] == 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sdf --block.wal /dev/sdi --crush-device-class nvme'
-    assert cmds[2] == 'raw prepare --bluestore --data /dev/sdc --block.db /dev/sde --block.wal /dev/sdh --crush-device-class ssd'
+    assert cmds[0] == 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdd --block.wal /dev/sdg --crush-device-class hdd --osd-type classic'
+    assert cmds[1] == 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sdf --block.wal /dev/sdi --crush-device-class nvme --osd-type classic'
+    assert cmds[2] == 'raw prepare --bluestore --data /dev/sdc --block.db /dev/sde --block.wal /dev/sdh --crush-device-class ssd --osd-type classic'
 
 
 def test_drive_group_osd_type_invalid():