]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: lvm activate: infer bluestore or filestore
authorSage Weil <sage@newdream.net>
Thu, 5 Aug 2021 16:02:22 +0000 (12:02 -0400)
committerAdam King <adking@redhat.com>
Tue, 17 May 2022 14:25:58 +0000 (10:25 -0400)
No need to require --filestore and/or --bluestore args since we can tell
from the LV tags which one it is.

We can't drop the arguments without breaking existing users, though, so
redefine them to mean *force* bluesetore or filestore activation (even
though this will error out if the tags don't match).

Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit 451feec4b269e2a5816687136adc74082ec8f2f3)

src/ceph-volume/ceph_volume/devices/lvm/activate.py
src/ceph-volume/ceph_volume/tests/devices/lvm/test_activate.py

index cdd60ed62000c1089ebf0e20a14f96a63fc9effb..82988853a144c5d2c919a7141231c62790c2e82a 100644 (file)
@@ -297,9 +297,15 @@ class Activate(object):
                         'assuming bluestore')
 
             return activate_bluestore(lvs, args.no_systemd)
-        if args.bluestore:
+
+        # explicit filestore/bluestore flags take precedence
+        if getattr(args, 'bluestore', False):
+            activate_bluestore(lvs, args.no_systemd)
+        elif getattr(args, 'filestore', False):
+            activate_filestore(lvs, args.no_systemd)
+        elif any('ceph.block_device' in lv.tags for lv in lvs):
             activate_bluestore(lvs, args.no_systemd)
-        elif args.filestore:
+        elif any('ceph.data_device' in lv.tags for lv in lvs):
             activate_filestore(lvs, args.no_systemd)
 
     def main(self):
@@ -344,12 +350,12 @@ class Activate(object):
         parser.add_argument(
             '--bluestore',
             action='store_true',
-            help='bluestore objectstore (default)',
+            help='force bluestore objectstore activation',
         )
         parser.add_argument(
             '--filestore',
             action='store_true',
-            help='filestore objectstore',
+            help='force filestore objectstore activation',
         )
         parser.add_argument(
             '--all',
@@ -367,10 +373,6 @@ class Activate(object):
             print(sub_command_help)
             return
         args = parser.parse_args(self.argv)
-        # Default to bluestore here since defaulting it in add_argument may
-        # cause both to be True
-        if not args.bluestore and not args.filestore:
-            args.bluestore = True
         if args.activate_all:
             self.activate_all(args)
         else:
index 2f1bb9396c21e393db8c2e7fedebe6f3d25e576a..2237f259eb200ab73bd6723823931cd7820024c8 100644 (file)
@@ -319,7 +319,7 @@ class TestActivateFlags(object):
         activation.main()
         parsed_args = capture.calls[0]['args'][0]
         assert parsed_args.filestore is False
-        assert parsed_args.bluestore is True
+        assert parsed_args.bluestore is False
 
     def test_uses_filestore(self, capture):
         args = ['--filestore', '0', 'asdf-ljh-asdf']