r[str(osd_id)] = o.get('uuid', '')
return r
+ def get_osd_by_id(self, osd_id: int) -> Optional[Dict[str, Any]]:
+ osd = [x for x in self.get('osd_map')['osds']
+ if x['osd'] == osd_id]
+
+ if len(osd) != 1:
+ return None
+
+ return osd[0]
+
def _trigger_preview_refresh(self,
specs: Optional[List[DriveGroupSpec]] = None,
service_name: Optional[str] = None,
for dd in self.mgr.cache.get_daemons_by_type('osd'):
assert dd.daemon_id
all_osds[int(dd.daemon_id)].append(dd)
- for dds in all_osds.values():
+ for osd_id, dds in all_osds.items():
if len(dds) <= 1:
continue
running = [dd for dd in dds if dd.status == DaemonDescriptionStatus.running]
logger.info(msg)
if len(running) != 1:
continue
+ osd = self.mgr.get_osd_by_id(osd_id)
+ if not osd or not osd['up']:
+ continue
for e in error:
assert e.hostname
try:
{
'osd': 1,
'up_from': 0,
+ 'up': True,
'uuid': 'uuid'
}
]