]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: fix type annotation in `objectore`
authorGuillaume Abrioux <gabrioux@ibm.com>
Wed, 8 Jan 2025 13:40:54 +0000 (13:40 +0000)
committerGuillaume Abrioux <gabrioux@ibm.com>
Mon, 24 Feb 2025 11:53:33 +0000 (11:53 +0000)
This commit addresses some python type annotations errors
in `objectstore` code.

Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit 79acee1347fb26bbe03ddcf8b8dac2f286520b1b)

src/ceph-volume/ceph_volume/api/lvm.py
src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py
src/ceph-volume/ceph_volume/objectstore/bluestore.py
src/ceph-volume/ceph_volume/objectstore/lvmbluestore.py
src/ceph-volume/ceph_volume/objectstore/rawbluestore.py

index 8a38c536aa0f21b29e747181cb040bfd14db75a9..e1c0f68ff7cccef35d4a9fbd5501b0457f6f5729 100644 (file)
@@ -835,6 +835,7 @@ class Volume:
         self.lv_name: str = ''
         self.lv_uuid: str = ''
         self.vg_name: str = ''
+        self.lv_tags: Dict[str, Any] = {}
         for k, v in kw.items():
             setattr(self, k, v)
         self.lv_api = kw
index 6ac4cbd9f2b785e666d67121240f55fd567a8f4d..cb55aae7d81491b3291aec7934f7124da483dc98 100644 (file)
@@ -64,7 +64,7 @@ class BaseObjectStore:
                             osd_uuid: str) -> Optional["Volume"]:
         raise NotImplementedError()
 
-    def safe_prepare(self, args: "argparse.Namespace") -> None:
+    def safe_prepare(self, args: Optional["argparse.Namespace"] = None) -> None:
         raise NotImplementedError()
 
     def add_objectstore_opts(self) -> None:
index 535551b516d436ee1e08a5b1aaf0bb9ca237d602..9039b29651ec778e87ca8b897e3652ec67dba7dd 100644 (file)
@@ -101,6 +101,9 @@ class BlueStore(BaseObjectStore):
                 if self.method == 'raw':
                     path = self.args.__dict__.get(dev_type, None)
                 else:
-                    path = self.block_lv.tags.get(dev_type, None)
+                    if self.block_lv is not None:
+                        path = self.block_lv.tags.get(dev_type, None)
+                    else:
+                        raise RuntimeError('Unexpected error while running bluestore mkfs.')
                 if path is not None:
                     CephLuks2(path).config_luks2({'subsystem': f'ceph_fsid={self.osd_fsid}'})
index aa11d5537230f9596f520164583437d430264191..1662ae3f1bce831b03c93fc7b7a38e3996d12588 100644 (file)
@@ -121,10 +121,11 @@ class LvmBlueStore(BlueStore):
         except ValueError:
             lv = None
 
-        if api.is_ceph_device(lv):
-            logger.info("device {} is already used".format(self.args.data))
-            raise RuntimeError("skipping {}, it is already prepared".format(
-                self.args.data))
+        if lv is not None:
+            if api.is_ceph_device(lv):
+                logger.info("device {} is already used".format(self.args.data))
+                raise RuntimeError("skipping {}, it is already prepared".format(
+                    self.args.data))
         try:
             self.prepare()
         except Exception:
@@ -253,23 +254,26 @@ class LvmBlueStore(BlueStore):
             lv_type = "osd-{}".format(device_type)
             name_uuid = system.generate_uuid()
             kwargs = {
+                'name_prefix': lv_type,
+                'uuid': name_uuid,
+                'vg': None,
                 'device': device_name,
+                'slots': slots,
+                'extents': None,
+                'size': None,
                 'tags': tags,
-                'slots': slots
             }
             # TODO use get_block_db_size and co here to get configured size in
             # conf file
             if size != 0:
                 kwargs['size'] = size
-            lv = api.create_lv(
-                lv_type,
-                name_uuid,
-                **kwargs)
-            path = lv.lv_path
-            tags['ceph.{}_device'.format(device_type)] = path
-            tags['ceph.{}_uuid'.format(device_type)] = lv.lv_uuid
-            lv_uuid = lv.lv_uuid
-            lv.set_tags(tags)
+            lv = api.create_lv(**kwargs)
+            if lv is not None:
+                path = lv.lv_path
+                lv_uuid = lv.lv_uuid
+                tags['ceph.{}_device'.format(device_type)] = path
+                tags['ceph.{}_uuid'.format(device_type)] = lv_uuid
+                lv.set_tags(tags)
         else:
             # otherwise assume this is a regular disk partition
             name_uuid = self.get_ptuuid(device_name)
@@ -282,8 +286,7 @@ class LvmBlueStore(BlueStore):
     def get_osd_device_path(self,
                             osd_lvs: List["Volume"],
                             device_type: str,
-                            dmcrypt_secret: Optional[str] =
-                            None) -> Optional[str]:
+                            dmcrypt_secret: str = '') -> Optional[str]:
         """
         ``device_type`` can be one of ``db``, ``wal`` or ``block`` so that we
         can query LVs on system and fallback to querying the uuid if that is
@@ -303,7 +306,7 @@ class LvmBlueStore(BlueStore):
             logger.debug('Found block device (%s) with encryption: %s',
                          osd_block_lv.name, is_encrypted)
             uuid_tag = 'ceph.%s_uuid' % device_type
-            device_uuid = osd_block_lv.tags.get(uuid_tag)
+            device_uuid = osd_block_lv.tags.get(uuid_tag, '')
             if not device_uuid:
                 return None
 
index 2a4b8261ece18cd823ff3cc38d2f834e14c607cb..16775042597102a9b782b038f50a685ecff1e4d0 100644 (file)
@@ -22,7 +22,7 @@ class RawBlueStore(BlueStore):
         super().__init__(args)
         self.method = 'raw'
         self.devices: List[str] = getattr(args, 'devices', [])
-        self.osd_id = getattr(self.args, 'osd_id', None)
+        self.osd_id = getattr(self.args, 'osd_id', '')
         self.osd_fsid = getattr(self.args, 'osd_fsid', '')
         self.block_device_path = getattr(self.args, 'data', '')
         self.db_device_path = getattr(self.args, 'block_db', '')
@@ -164,7 +164,7 @@ class RawBlueStore(BlueStore):
         activated_any: bool = False
 
         for d in disk.lsblk_all(abspath=True):
-            device: str = d.get('NAME')
+            device: str = d.get('NAME', '')
             luks2 = encryption_utils.CephLuks2(device)
             if luks2.is_ceph_encrypted:
                 if luks2.is_tpm2_enrolled and self.osd_fsid == luks2.osd_fsid: