]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #14559 from liewegas/wip-pg-map
authorSage Weil <sage@newdream.net>
Fri, 21 Apr 2017 23:53:17 +0000 (18:53 -0500)
committerGitHub <noreply@github.com>
Fri, 21 Apr 2017 23:53:17 +0000 (18:53 -0500)
mon: move 'pg map' to OSDMonitor

Reviewed-by: Kefu Chai <kchai@redhat.com>
1  2 
qa/tasks/ceph_manager.py
src/mon/MonCommands.h
src/mon/Monitor.cc
src/mon/OSDMonitor.cc
src/mon/PGMap.cc

index db18383f0c6691244016a535696bde564ff4b2da,5b78b7f23e858554c36c99c160996c419184aede..b7762b866c9dcf97ed8d2f23c32d12b64c4641de
@@@ -1313,31 -1297,12 +1313,29 @@@ class CephManager
          """
          get replica for pool, pgnum (e.g. (data, 0)->0
          """
-         output = self.raw_cluster_cmd("pg", "dump", '--format=json')
-         j = json.loads('\n'.join(output.split('\n')[1:]))
          pg_str = self.get_pgid(pool, pgnum)
-         for pg in j['pg_stats']:
-             if pg['pgid'] == pg_str:
-                 return int(pg['acting'][-1])
+         output = self.raw_cluster_cmd("pg", "map", pg_str, '--format=json')
+         j = json.loads('\n'.join(output.split('\n')[1:]))
+         return int(j['acting'][-1])
          assert False
  
 +    def wait_for_pg_stats(func):
 +        # both osd_mon_report_interval_min and mgr_stats_period are 5 seconds
 +        # by default, and take the faulty injection in ms into consideration,
 +        # 12 seconds are more than enough
 +        delays = [1, 1, 2, 3, 5, 8, 13]
 +        @wraps(func)
 +        def wrapper(self, *args, **kwargs):
 +            exc = None
 +            for delay in delays:
 +                try:
 +                    return func(self, *args, **kwargs)
 +                except AssertionError as e:
 +                    time.sleep(delay)
 +                    exc = e
 +            raise exc
 +        return wrapper
 +
      def get_pg_primary(self, pool, pgnum):
          """
          get primary for pool, pgnum (e.g. (data, 0)->0
Simple merge
Simple merge
Simple merge
Simple merge