From: Kefu Chai Date: Mon, 28 Jun 2021 04:28:17 +0000 (+0800) Subject: pybind/mgr/pg_autoscaler: extract CrushSubtreeResourceStatus out X-Git-Tag: v17.1.0~1522^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9bb55e84809e17e0aa1cb1aa4ae712a3ea4fffed;p=ceph.git pybind/mgr/pg_autoscaler: extract CrushSubtreeResourceStatus out as it also serves as part of interface of get_subtree_resource_status(), not only its internals. to ease adding the type annotations, this class is promoted out of the class. Signed-off-by: Kefu Chai --- diff --git a/src/pybind/mgr/pg_autoscaler/module.py b/src/pybind/mgr/pg_autoscaler/module.py index 6c07377c2a38..c1cc1393aa70 100644 --- a/src/pybind/mgr/pg_autoscaler/module.py +++ b/src/pybind/mgr/pg_autoscaler/module.py @@ -79,6 +79,23 @@ class PgAdjustmentProgress(object): refs=[("pool", self.pool_id)]) +class CrushSubtreeResourceStatus: + def __init__(self): + self.root_ids = [] + self.osds = set() + self.osd_count = None # Number of OSDs + self.pg_target = None # Ideal full-capacity PG count? + self.pg_current = 0 # How many PGs already? + self.pg_left = 0 + self.capacity = None # Total capacity of OSDs in subtree + self.pool_ids = [] + self.pool_names = [] + self.pool_count = None + self.pool_used = 0 + self.total_target_ratio = 0.0 + self.total_target_bytes = 0 # including replication / EC overhead + + class PgAutoscaler(MgrModule): """ PG autoscaler. @@ -248,22 +265,6 @@ class PgAutoscaler(MgrModule): pool_root = {} roots = [] - class CrushSubtreeResourceStatus(object): - def __init__(self): - self.root_ids = [] - self.osds = set() - self.osd_count = None # Number of OSDs - self.pg_target = None # Ideal full-capacity PG count? - self.pg_current = 0 # How many PGs already? - self.pg_left = 0 - self.capacity = None # Total capacity of OSDs in subtree - self.pool_ids = [] - self.pool_names = [] - self.pool_count = None - self.pool_used = 0 - self.total_target_ratio = 0.0 - self.total_target_bytes = 0 # including replication / EC overhead - # identify subtrees (note that they may overlap!) for pool_id, pool in osdmap.get_pools().items(): cr_name = crush.get_rule_by_id(pool['crush_rule'])['rule_name']