From ee1090cbe75effb93af0748e68daa5aff18193c9 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 5 May 2015 15:36:39 -0700 Subject: [PATCH] sync-tool: can show state of full sync and restart full sync Signed-off-by: Yehuda Sadeh --- radosgw_agent/sync_tool.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/radosgw_agent/sync_tool.py b/radosgw_agent/sync_tool.py index 6471b4f..09af7cf 100644 --- a/radosgw_agent/sync_tool.py +++ b/radosgw_agent/sync_tool.py @@ -793,6 +793,9 @@ class BucketsIterator(object): self.fs_state_manager = ZoneFullSyncState(sync, zone) self.fs_state = self.fs_state_manager.get_full_sync_status() + def get_full_sync_state(self): + return self.fs_state + def build_full_sync_work(self): log.info('building full data sync work') for bucket_name in client.get_bucket_list(self.sync.src_conn): @@ -851,9 +854,13 @@ class Zone(object): for bs in bi.iterate_dirty_buckets(): yield bs - def sync_data(self, bi): + def sync_data(self, bi, restart): gens = {} + if restart: + self.fs_state_manager.set_state('init') + + objs_per_bucket = 10 concurrent_buckets = 2 @@ -1001,25 +1008,27 @@ The commands are: description='Get sync status of bucket or object', usage='radosgw-sync status / []') parser.add_argument('--shard-id', type=int, default=-1) - parser.add_argument('source') + parser.add_argument('source', nargs='?') args = parser.parse_args(self.remaining[1:]) - target = args.source.split('/', 1) - - assert len(target) > 0 - - bucket = target[0] - - - b = Bucket(bucket, args.shard_id, self.sync) + target = '' + if args.source is not None: + target = args.source.split('/', 1) - if len(target) == 1: + if len(target) == 0: + bi = BucketsIterator(self.sync, self.zone, None) + print dump_json({'full-sync-state': bi.get_full_sync_state()}) + elif len(target) == 1: + bucket = target[0] + b = Bucket(bucket, args.shard_id, self.sync) log.info('status bucket={b}'.format(b=bucket)) bounds = b.get_bucket_bounds() markers = b.get_source_markers() print dump_json({'source': markers, 'dest': bounds}) else: + bucket = target[0] + b = Bucket(bucket, args.shard_id, self.sync) obj_name = target[1] obj = Object(bucket, obj_name, self.sync) log.info('sync bucket={b} object={o}'.format(b=bucket, o=obj_name)) @@ -1031,6 +1040,7 @@ The commands are: description='Sync bucket / object', usage='radosgw-sync data_sync / []') parser.add_argument('source', nargs='?') + parser.add_argument('--restart', action='store_true') args = parser.parse_args(self.remaining[1:]) if args.source: @@ -1039,7 +1049,7 @@ The commands are: target = '' if len(target) == 0: - self.zone.sync_data(BucketsIterator(self.sync, self.zone, None)) # client.get_bucket_list(self.src_conn)) + self.zone.sync_data(BucketsIterator(self.sync, self.zone, None), args.restart) # client.get_bucket_list(self.src_conn)) elif len(target) == 1: bucket = target[0] self.zone.sync_data([bucket]) -- 2.47.3