From 08d59ebcd4fa39085d069125fffc5af75e4d735b Mon Sep 17 00:00:00 2001 From: Joe Yang Date: Tue, 2 Apr 2019 15:43:16 +0800 Subject: [PATCH] Change partition name from string to integer Object-replicator let user to input target partition numbers and run the replicator job, and partition input will be stored as integer list. But in build_replication_jobs method, it use os.listdir method to retreve partitions in string list, so it is failed to compare with target partition numbers. Change-Id: I85dcaf65b9f19ac4659fa5937f9b0b0e804fc54e Closes-Bug: #1822731 --- swift/obj/replicator.py | 4 ++-- test/unit/obj/test_replicator.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/swift/obj/replicator.py b/swift/obj/replicator.py index 81cb531e63..c4df49deba 100644 --- a/swift/obj/replicator.py +++ b/swift/obj/replicator.py @@ -817,8 +817,8 @@ class ObjectReplicator(Daemon): self.logger.exception('ERROR creating %s' % obj_path) continue for partition in os.listdir(obj_path): - if (override_partitions is not None - and partition not in override_partitions): + if (override_partitions is not None and partition.isdigit() + and int(partition) not in override_partitions): continue if (partition.startswith('auditor_status_') and diff --git a/test/unit/obj/test_replicator.py b/test/unit/obj/test_replicator.py index 781a3de177..60d18b9b66 100644 --- a/test/unit/obj/test_replicator.py +++ b/test/unit/obj/test_replicator.py @@ -1401,10 +1401,10 @@ class TestObjectReplicator(unittest.TestCase): self.assertTrue(os.access(part_path, os.F_OK)) self.replicator.replicate(override_devices=['sdb']) self.assertTrue(os.access(part_path, os.F_OK)) - self.replicator.replicate(override_partitions=['9']) + self.replicator.replicate(override_partitions=[9]) self.assertTrue(os.access(part_path, os.F_OK)) self.replicator.replicate(override_devices=['sda'], - override_partitions=['1']) + override_partitions=[1]) self.assertFalse(os.access(part_path, os.F_OK)) def test_delete_policy_override_params(self):