since we are modifying read-only python object, we need to copy it first
Fixes: https://tracker.ceph.com/issues/72447
Signed-off-by: Nitzan Mordechai <nmordec@ibm.com>
class HealthEncoder(json.JSONEncoder):
def default(self, obj):
- if isinstance(obj, set):
+ if obj.__class__.__name__ == 'mappingproxy':
+ return dict(obj)
+ elif isinstance(obj, set):
return list(obj)
return json.JSONEncoder.default(self, obj)
report["config"] = config
health_check_details.extend(health_details)
- osd_map = self.get("osd_map")
- del osd_map['pg_temp']
+ osd_map = self.get("osd_map", mutable=True)
+ osd_map.pop("pg_temp", None)
self._apply_osd_stats(osd_map)
report["osd_dump"] = osd_map