]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/balancer/module.py
update sources to 12.2.8
[ceph.git] / ceph / src / pybind / mgr / balancer / module.py
index b9a318b90ad361688076aab4c5a5d0fdf61a0077..2fb59aaf36fa57fe560f42aa0a74714b15a2f687 100644 (file)
@@ -8,6 +8,7 @@ import errno
 import json
 import math
 import random
+import six
 import time
 from mgr_module import MgrModule, CommandResult
 from threading import Event
@@ -38,13 +39,13 @@ class MappingState:
         self.pg_up_by_poolid = {}
         for poolid in self.poolids:
             self.pg_up_by_poolid[poolid] = osdmap.map_pool_pgs_up(poolid)
-            for a,b in self.pg_up_by_poolid[poolid].iteritems():
+            for a,b in six.iteritems(self.pg_up_by_poolid[poolid]):
                 self.pg_up[a] = b
 
     def calc_misplaced_from(self, other_ms):
         num = len(other_ms.pg_up)
         misplaced = 0
-        for pgid, before in other_ms.pg_up.iteritems():
+        for pgid, before in six.iteritems(other_ms.pg_up):
             if before != self.pg_up.get(pgid, []):
                 misplaced += 1
         if num > 0:
@@ -81,10 +82,10 @@ class Plan:
         if len(self.compat_ws) and \
            '-1' not in self.initial.crush_dump.get('choose_args', {}):
             ls.append('ceph osd crush weight-set create-compat')
-        for osd, weight in self.compat_ws.iteritems():
+        for osd, weight in six.iteritems(self.compat_ws):
             ls.append('ceph osd crush weight-set reweight-compat %s %f' %
                       (osd, weight))
-        for osd, weight in self.osd_weights.iteritems():
+        for osd, weight in six.iteritems(self.osd_weights):
             ls.append('ceph osd reweight osd.%d %f' % (osd, weight))
         incdump = self.inc.dump()
         for pgid in incdump.get('old_pg_upmap_items', []):
@@ -160,7 +161,7 @@ class Eval:
             score = 0.0
             sum_weight = 0.0
 
-            for k, v in count[t].iteritems():
+            for k, v in six.iteritems(count[t]):
                 # adjust/normalize by weight
                 if target[k]:
                     adjusted = float(v) / target[k] / float(num)
@@ -460,12 +461,12 @@ class Module(MgrModule):
             weight_map = ms.crush.get_take_weight_osd_map(rootid)
             adjusted_map = {
                 osd: cw * osd_weight[osd]
-                for osd,cw in weight_map.iteritems() if osd in osd_weight and cw > 0
+                for osd,cw in six.iteritems(weight_map) if osd in osd_weight and cw > 0
             }
             sum_w = sum(adjusted_map.values())
             assert len(adjusted_map) == 0 or sum_w > 0
             pe.target_by_root[root] = { osd: w / sum_w
-                                        for osd,w in adjusted_map.iteritems() }
+                                        for osd,w in six.iteritems(adjusted_map) }
             actual_by_root[root] = {
                 'pgs': {},
                 'objects': {},
@@ -485,7 +486,7 @@ class Module(MgrModule):
         self.log.debug('target_by_root %s' % pe.target_by_root)
 
         # pool and root actual
-        for pool, pi in pool_info.iteritems():
+        for pool, pi in six.iteritems(pool_info):
             poolid = pi['pool']
             pm = ms.pg_up_by_poolid[poolid]
             pgs = 0
@@ -499,7 +500,7 @@ class Module(MgrModule):
                     pgs_by_osd[osd] = 0
                     objects_by_osd[osd] = 0
                     bytes_by_osd[osd] = 0
-            for pgid, up in pm.iteritems():
+            for pgid, up in six.iteritems(pm):
                 for osd in [int(osd) for osd in up]:
                     if osd == CRUSHMap.ITEM_NONE:
                         continue
@@ -525,29 +526,29 @@ class Module(MgrModule):
             pe.count_by_pool[pool] = {
                 'pgs': {
                     k: v
-                    for k, v in pgs_by_osd.iteritems()
+                    for k, v in six.iteritems(pgs_by_osd)
                 },
                 'objects': {
                     k: v
-                    for k, v in objects_by_osd.iteritems()
+                    for k, v in six.iteritems(objects_by_osd)
                 },
                 'bytes': {
                     k: v
-                    for k, v in bytes_by_osd.iteritems()
+                    for k, v in six.iteritems(bytes_by_osd)
                 },
             }
             pe.actual_by_pool[pool] = {
                 'pgs': {
                     k: float(v) / float(max(pgs, 1))
-                    for k, v in pgs_by_osd.iteritems()
+                    for k, v in six.iteritems(pgs_by_osd)
                 },
                 'objects': {
                     k: float(v) / float(max(objects, 1))
-                    for k, v in objects_by_osd.iteritems()
+                    for k, v in six.iteritems(objects_by_osd)
                 },
                 'bytes': {
                     k: float(v) / float(max(bytes, 1))
-                    for k, v in bytes_by_osd.iteritems()
+                    for k, v in six.iteritems(bytes_by_osd)
                 },
             }
             pe.total_by_pool[pool] = {
@@ -559,29 +560,29 @@ class Module(MgrModule):
             pe.count_by_root[root] = {
                 'pgs': {
                     k: float(v)
-                    for k, v in actual_by_root[root]['pgs'].iteritems()
+                    for k, v in six.iteritems(actual_by_root[root]['pgs'])
                 },
                 'objects': {
                     k: float(v)
-                    for k, v in actual_by_root[root]['objects'].iteritems()
+                    for k, v in six.iteritems(actual_by_root[root]['objects'])
                 },
                 'bytes': {
                     k: float(v)
-                    for k, v in actual_by_root[root]['bytes'].iteritems()
+                    for k, v in six.iteritems(actual_by_root[root]['bytes'])
                 },
             }
             pe.actual_by_root[root] = {
                 'pgs': {
                     k: float(v) / float(max(pe.total_by_root[root]['pgs'], 1))
-                    for k, v in actual_by_root[root]['pgs'].iteritems()
+                    for k, v in six.iteritems(actual_by_root[root]['pgs'])
                 },
                 'objects': {
                     k: float(v) / float(max(pe.total_by_root[root]['objects'], 1))
-                    for k, v in actual_by_root[root]['objects'].iteritems()
+                    for k, v in six.iteritems(actual_by_root[root]['objects'])
                 },
                 'bytes': {
                     k: float(v) / float(max(pe.total_by_root[root]['bytes'], 1))
-                    for k, v in actual_by_root[root]['bytes'].iteritems()
+                    for k, v in six.iteritems(actual_by_root[root]['bytes'])
                 },
             }
         self.log.debug('actual_by_pool %s' % pe.actual_by_pool)
@@ -593,7 +594,7 @@ class Module(MgrModule):
                 b,
                 pe.target_by_root[a],
                 pe.total_by_root[a]
-            ) for a, b in pe.count_by_root.iteritems()
+            ) for a, b in six.iteritems(pe.count_by_root)
         }
         self.log.debug('stats_by_root %s' % pe.stats_by_root)
 
@@ -609,8 +610,8 @@ class Module(MgrModule):
 
         # total score is just average of normalized stddevs
         pe.score = 0.0
-        for r, vs in pe.score_by_root.iteritems():
-            for k, v in vs.iteritems():
+        for r, vs in six.iteritems(pe.score_by_root):
+            for k, v in six.iteritems(vs):
                 pe.score += v
         pe.score /= 3 * len(roots)
         return pe
@@ -728,14 +729,14 @@ class Module(MgrModule):
         # get current osd reweights
         orig_osd_weight = { a['osd']: a['weight']
                             for a in ms.osdmap_dump.get('osds',[]) }
-        reweighted_osds = [ a for a,b in orig_osd_weight.iteritems()
+        reweighted_osds = [ a for a,b in six.iteritems(orig_osd_weight)
                             if b < 1.0 and b > 0.0 ]
 
         # get current compat weight-set weights
         orig_ws = self.get_compat_weight_set_weights(ms)
         if not orig_ws:
             return -errno.EAGAIN, 'compat weight-set not available'
-        orig_ws = { a: b for a, b in orig_ws.iteritems() if a >= 0 }
+        orig_ws = { a: b for a, b in six.iteritems(orig_ws) if a >= 0 }
 
         # Make sure roots don't overlap their devices.  If so, we
         # can't proceed.
@@ -744,7 +745,7 @@ class Module(MgrModule):
         visited = {}
         overlap = {}
         root_ids = {}
-        for root, wm in pe.target_by_root.iteritems():
+        for root, wm in six.iteritems(pe.target_by_root):
             for osd in wm.iterkeys():
                 if osd in visited:
                     overlap[osd] = 1
@@ -814,7 +815,7 @@ class Module(MgrModule):
 
                 # normalize weights under this root
                 root_weight = crush.get_item_weight(pe.root_ids[root])
-                root_sum = sum(b for a,b in next_ws.iteritems()
+                root_sum = sum(b for a,b in six.iteritems(next_ws)
                                if a in target.keys())
                 if root_sum > 0 and root_weight > 0:
                     factor = root_sum / root_weight
@@ -871,7 +872,7 @@ class Module(MgrModule):
         if best_pe.score < pe.score + fudge:
             self.log.info('Success, score %f -> %f', pe.score, best_pe.score)
             plan.compat_ws = best_ws
-            for osd, w in best_ow.iteritems():
+            for osd, w in six.iteritems(best_ow):
                 if w != orig_osd_weight[osd]:
                     self.log.debug('osd.%d reweight %f', osd, w)
                     plan.osd_weights[osd] = w
@@ -958,7 +959,7 @@ class Module(MgrModule):
                 self.log.error('Error creating compat weight-set')
                 return r, outs
 
-        for osd, weight in plan.compat_ws.iteritems():
+        for osd, weight in six.iteritems(plan.compat_ws):
             self.log.info('ceph osd crush weight-set reweight-compat osd.%d %f',
                           osd, weight)
             result = CommandResult('')
@@ -972,7 +973,7 @@ class Module(MgrModule):
 
         # new_weight
         reweightn = {}
-        for osd, weight in plan.osd_weights.iteritems():
+        for osd, weight in six.iteritems(plan.osd_weights):
             reweightn[str(osd)] = str(int(weight * float(0x10000)))
         if len(reweightn):
             self.log.info('ceph osd reweightn %s', reweightn)