MCPcopy Create free account
hub / github.com/ceph/ceph / load

Method load

src/pybind/mgr/cephadm/inventory.py:293–348  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

291 return {k: v for k, v in self._specs.items() if k not in self.spec_deleted}
292
293 def load(self):
294 # type: () -> None
295 for k, v in self.mgr.get_store_prefix(SPEC_STORE_PREFIX).items():
296 service_name = k[len(SPEC_STORE_PREFIX):]
297 try:
298 j = cast(Dict[str, dict], json.loads(v))
299 if (
300 (self.mgr.migration_current or 0) < 3
301 and j['spec'].get('service_type') == 'nfs'
302 ):
303 self.mgr.log.debug(f'found legacy nfs spec {j}')
304 queue_migrate_nfs_spec(self.mgr, j)
305
306 if (
307 (self.mgr.migration_current or 0) < 6
308 and j['spec'].get('service_type') == 'rgw'
309 ):
310 queue_migrate_rgw_spec(self.mgr, j)
311
312 spec = ServiceSpec.from_json(j['spec'])
313 created = str_to_datetime(cast(str, j['created']))
314 self._specs[service_name] = spec
315 self.spec_created[service_name] = created
316
317 if 'deleted' in j:
318 deleted = str_to_datetime(cast(str, j['deleted']))
319 self.spec_deleted[service_name] = deleted
320
321 if 'needs_configuration' in j:
322 self._needs_configuration[service_name] = cast(bool, j['needs_configuration'])
323
324 if 'rank_map' in j and isinstance(j['rank_map'], dict):
325 self._rank_maps[service_name] = {}
326 for rank_str, m in j['rank_map'].items():
327 try:
328 rank = int(rank_str)
329 except ValueError:
330 logger.exception(f"failed to parse rank in {j['rank_map']}")
331 continue
332 if isinstance(m, dict):
333 self._rank_maps[service_name][rank] = {}
334 for gen_str, name in m.items():
335 try:
336 gen = int(gen_str)
337 except ValueError:
338 logger.exception(f"failed to parse gen in {j['rank_map']}")
339 continue
340 if isinstance(name, str) or m is None:
341 self._rank_maps[service_name][rank][gen] = name
342
343 self.mgr.log.debug('SpecStore: loaded spec for %s' % (
344 service_name))
345 except Exception as e:
346 self.mgr.log.warning('unable to load spec for %s: %s' % (
347 service_name, e))
348 pass
349
350 def save(

Callers

nothing calls this directly

Calls 10

str_to_datetimeFunction · 0.90
queue_migrate_nfs_specFunction · 0.85
queue_migrate_rgw_specFunction · 0.85
itemsMethod · 0.45
get_store_prefixMethod · 0.45
getMethod · 0.45
debugMethod · 0.45
from_jsonMethod · 0.45
exceptionMethod · 0.45
warningMethod · 0.45

Tested by

no test coverage detected