]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
restful: Query nodes_by_id for items
authorBoris Ranto <branto@redhat.com>
Thu, 24 Oct 2019 14:54:05 +0000 (16:54 +0200)
committerBrad Hubbard <bhubbard@redhat.com>
Thu, 31 Oct 2019 00:38:17 +0000 (10:38 +1000)
The node dict that is passed to the _gather_leaf_ids function from the
_gather_osds function does not have 'items' in it. We also can't use
buckets at this point since those only exist for leaf nodes, not all
nodes.

We need to query the nodes_by_id dict to get 'items' for a node inside
the _gather_leaf_ids function instead.

Signed-off-by: Boris Ranto <branto@redhat.com>
(cherry picked from commit 4f17cbc8651c4b96f006eeabd62373a6cd992865)

src/pybind/mgr/restful/common.py

index ab08fc41cf79b4585ff155ba829030c9fb4be82a..b5e03b66849d51a75638da5c0d1ea09762b0e2ef 100644 (file)
@@ -96,11 +96,8 @@ def crush_rule_osds(node_buckets, rule):
             return set([node['id']])
 
         result = set()
-        for item in node['items']:
-            if item['id'] >= 0:
-                result.add(item['id'])
-            else:
-                result |= _gather_leaf_ids(nodes_by_id[item['id']])
+        for item in nodes_by_id[node['id']]['items']:
+            result |= _gather_leaf_ids(item)
 
         return result