def ceph_pg_parser(stat_dic):
_str = ""
pg_stat = stat_dic.get('ceph_facts')
pool_pgs = pg_stat.get('update_pg_state',[]).get('pools',[])
osd_pgs = pg_stat.get('update_pg_state',[]).get('osds',[])
if len(pool_pgs) < 0 and len(osd_pgs) < 0: return
_str += "pool%-3s" % ":"
for pg in sorted(pool_pgs,key=int):
_str += "%5s" % pg
_str += "|%5s" % "SUM\n"
_str += "--------" + "-----" * len(pool_pgs) + "-----\n"
for osdid in sorted(osd_pgs,key=int):
_str += "osd.%-4s" % osdid
for pg in sorted(pool_pgs,key=int):
if pool_pgs[pg].has_key(osdid):
_str += "%5s" % pool_pgs[pg][osdid]['pgsize']
else:
_str += "%5s" % 0
_str += "|%5s\n" % osd_pgs[osdid]['pgsum']
_str += "--------" + "-----" * len(pool_pgs) + "-----\n"
_str += "SUM: "
for pg in sorted(pool_pgs,key=int):
_str += "%5s" % pool_pgs[pg]['pgsum']
_str += "\n"
_str += "MAX: "
for pg in sorted(pool_pgs,key=int):
_str += "%5s" % pool_pgs[pg]['max']
_str += "\n"
_str += "MAX osd:"
for pg in sorted(pool_pgs,key=int):
_str += "%5s" % ("." + str(pool_pgs[pg]['max_osd_id']))
_str += "\n"
_str += "OSD Sum:"
for pg in sorted(pool_pgs,key=int):
_str += "%5d" % (len(pool_pgs[pg])-int(5))
_str += "\n"
_str += "MIN osd:"
for pg in sorted(pool_pgs,key=int):
_str += "%5s" % ("." + str(pool_pgs[pg]['min_osd_id']))
_str += "\n"
return _str