pyocf: function to register internal volume type id in ctx

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
Adam Rutkowski 2022-06-09 11:01:17 +02:00
parent 6b9719907a
commit 59d1905139

View File

@ -66,7 +66,18 @@ class OcfCtx:
return cls.default() return cls.default()
def register_internal_volume_type_id(self, volume_type, volume_type_id):
if volume_type_id in self.volume_types:
raise RuntimeError(f"volume type id {volume_type_id} already used")
self.volume_types[volume_type_id] = volume_type
volume_type.internal = True
def register_volume_type(self, volume_type): def register_volume_type(self, volume_type):
if self.volume_types_count in self.volume_types:
raise RuntimeError(
f"volume type id slot already used by internal volume "
f"{self.volume_types[self.volume_types_count]}"
)
self.volume_types[self.volume_types_count] = volume_type self.volume_types[self.volume_types_count] = volume_type
volume_type.type_id = self.volume_types_count volume_type.type_id = self.volume_types_count
@ -79,10 +90,11 @@ class OcfCtx:
raise OcfError("Volume type registration failed", result) raise OcfError("Volume type registration failed", result)
self.ocf_volume_type[volume_type] = self.lib.ocf_ctx_get_volume_type( self.ocf_volume_type[volume_type] = self.lib.ocf_ctx_get_volume_type(
self.ctx_handle, self.ctx_handle, volume_type.type_id
volume_type.type_id
) )
volume_type.internal = False
self.volume_types_count += 1 self.volume_types_count += 1
def unregister_volume_type(self, vol_type): def unregister_volume_type(self, vol_type):
@ -96,7 +108,7 @@ class OcfCtx:
def cleanup_volume_types(self): def cleanup_volume_types(self):
for k, vol_type in list(self.volume_types.items()): for k, vol_type in list(self.volume_types.items()):
if vol_type: if vol_type and not vol_type.internal:
self.unregister_volume_type(vol_type) self.unregister_volume_type(vol_type)
def stop_caches(self): def stop_caches(self):