Browse Source

python-cephclient: populate items list for all nodes except osd

cephclient wrapper is converting a flat list of dictionaries returned
by Ceph Mimic's osd_crush_tree() to nested dictionaries (actual tree)
as expected sysinv. While doing this it looks at the "children"
attribute and if there's none then it skips populating current
node "items".

For storage nodes that don't have any attached OSDs the corresponding
tree entry will not have an "items" attribute. When sysinv tries to
get OSD's by storage it tries to access it and crashes.

Fix by creating empty "items" attribute unless node type is "osd".

Closes-Bug: 1834539
Change-Id: Icc5988407c9773d10d2cd1078e08ae213075f793
Signed-off-by: Daniel Badea <daniel.badea@windriver.com>
changes/20/680920/1
Daniel Badea 2 years ago
parent
commit
4026b5a23f
1 changed files with 1 additions and 1 deletions
  1. +1
    -1
      ceph/python-cephclient/python-cephclient/cephclient/wrapper.py

+ 1
- 1
ceph/python-cephclient/python-cephclient/cephclient/wrapper.py View File

@ -101,7 +101,7 @@ class CephWrapper(CephClient):
def _osd_crush_tree_populate_tree(self, node, node_map):
children = node.get('children')
node = self._osd_crush_tree_convert_node(node)
if children:
if node['type'] != 'osd':
node['items'] = []
for _id in children:
node['items'].append(


Loading…
Cancel
Save