)]}'
{"id":"openstack%2Fswift~539466","triplet_id":"openstack%2Fswift~master~I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2","project":"openstack/swift","branch":"master","topic":"part_diff_tool","hashtags":[],"change_id":"I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2","subject":"Add a basic partition diffing tool","status":"NEW","created":"2018-01-31 09:04:21.000000000","updated":"2026-02-02 07:36:45.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":36,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"3dc527d3228ebb1d7ef9270ed92d0f7e8bad0b57","_number":539466,"virtual_id_number":539466,"owner":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-02-02 07:36:45.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2018-01-31 12:45:07.000000000","updated_by":{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2018-02-15 02:01:52.000000000","updated_by":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"reviewer":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"state":"REVIEWER"},{"updated":"2019-03-13 19:08:04.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"REVIEWER"},{"updated":"2019-04-15 07:07:17.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"ea6f8f807e2b53b99c64b48476d03af16679df8c","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-01-31 09:04:21.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"1c3411451664c9f9922e9409776ca1cd16e313e1","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-01-31 09:12:07.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"3ccb45d70f68f41ac859c8c56421a1102b50ef93","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2018-01-31 11:00:45.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-sphinx-docs http://logs.openstack.org/66/539466/2/check/build-openstack-sphinx-docs/4c19c6c/html/ : SUCCESS in 5m 36s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/2/check/openstack-tox-pep8/061f1f6/ : SUCCESS in 4m 17s\n- legacy-swift-dsvm-functional http://logs.openstack.org/66/539466/2/check/legacy-swift-dsvm-functional/5bc5356/ : SUCCESS in 26m 52s\n- legacy-swift-dsvm-functional-identity-v3-only http://logs.openstack.org/66/539466/2/check/legacy-swift-dsvm-functional-identity-v3-only/6bfa318/ : SUCCESS in 27m 17s (non-voting)\n- legacy-tempest-dsvm-neutron-full http://logs.openstack.org/66/539466/2/check/legacy-tempest-dsvm-neutron-full/2bc7af3/ : SUCCESS in 1h 24m 44s\n- neutron-grenade http://logs.openstack.org/66/539466/2/check/neutron-grenade/564ebcc/ : SUCCESS in 51m 02s\n- swift-tox-py27 http://logs.openstack.org/66/539466/2/check/swift-tox-py27/fcf97cc/ : SUCCESS in 7m 07s\n- swift-tox-py35 http://logs.openstack.org/66/539466/2/check/swift-tox-py35/f9a15d2/ : SUCCESS in 4m 46s\n- swift-tox-func http://logs.openstack.org/66/539466/2/check/swift-tox-func/f39ca9a/ : SUCCESS in 7m 22s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/2/check/swift-tox-func-encryption/6f5466d/ : SUCCESS in 7m 21s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/2/check/swift-tox-func-ec/0008589/ : SUCCESS in 9m 21s","accounts_in_message":[],"_revision_number":2},{"id":"47ab66353cc011946f715cc540d22b13a019d14c","author":{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},"date":"2018-01-31 11:53:55.000000000","message":"Patch Set 1:\n\nBuild Failed \n\n* cluster-swift-tox-func https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/539466/9850/ : FAILURE\n\n* cluster-swift-tox-func-ec https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/539466/7870/ : SUCCESS\n\n* vm-saio-probe https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/539466/8248/probetests/ : SUCCESS","accounts_in_message":[],"_revision_number":1},{"id":"a4d66584f11576237baf2e2527e63e29ad7f3f3e","author":{"_account_id":13052,"name":"SwiftStack Cluster CI","email":"openstack-ci@swiftstack.com","username":"swiftstack-cluster-ci","tags":["SERVICE_USER"]},"date":"2018-01-31 12:45:07.000000000","message":"Patch Set 2:\n\nBuild Failed \n\n* cluster-swift-tox-func https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/539466/9851/ : FAILURE\n\n* cluster-swift-tox-func-ec https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/539466/7871/ : SUCCESS\n\n* vm-saio-probe https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/539466/8249/probetests/ : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"ba5f614de6538bd00a307aea9b3f080b7a80686a","author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"date":"2018-02-08 05:03:40.000000000","message":"Patch Set 2: Code-Review-1\n\n(14 comments)\n\nI did a quick review.\nI feel this tool is very useful to estimate how many replicas move in rebalance.\n\nI added -1 now, because I think some points need to be fixed. Please check my comments.","accounts_in_message":[],"_revision_number":2},{"id":"dd04467384f5e366885d5c7c43a3f0360b75e4ab","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-08 09:00:21.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"74f693caa810e023cf22e62ee8f03a4cf8d0d85b","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-08 10:17:40.000000000","message":"Patch Set 2:\n\n(5 comments)\n\nnew patch coming","accounts_in_message":[],"_revision_number":2},{"id":"287276a44926f0a78f6620bb44b608a15a952df1","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-08 10:20:29.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"0ac500adb2ceae5f6533329f787b1fcb40af5535","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2018-02-08 11:47:34.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- build-openstack-sphinx-docs http://logs.openstack.org/66/539466/3/check/build-openstack-sphinx-docs/661a5c2/html/ : SUCCESS in 4m 23s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/3/check/openstack-tox-pep8/1cfd8c6/ : SUCCESS in 4m 03s\n- legacy-swift-dsvm-functional http://logs.openstack.org/66/539466/3/check/legacy-swift-dsvm-functional/00e77e8/ : SUCCESS in 24m 21s\n- legacy-swift-dsvm-functional-identity-v3-only http://logs.openstack.org/66/539466/3/check/legacy-swift-dsvm-functional-identity-v3-only/29058d5/ : SUCCESS in 20m 28s (non-voting)\n- legacy-tempest-dsvm-neutron-full http://logs.openstack.org/66/539466/3/check/legacy-tempest-dsvm-neutron-full/ad12143/ : SUCCESS in 1h 22m 55s\n- neutron-grenade http://logs.openstack.org/66/539466/3/check/neutron-grenade/ddc63f7/ : SUCCESS in 43m 27s\n- swift-tox-py27 http://logs.openstack.org/66/539466/3/check/swift-tox-py27/a70cb2b/ : FAILURE in 6m 39s\n- swift-tox-py35 http://logs.openstack.org/66/539466/3/check/swift-tox-py35/1125f58/ : SUCCESS in 2m 49s\n- swift-tox-func http://logs.openstack.org/66/539466/3/check/swift-tox-func/c7253d9/ : SUCCESS in 7m 16s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/3/check/swift-tox-func-encryption/4191bc3/ : SUCCESS in 7m 15s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/3/check/swift-tox-func-ec/0ec92da/ : SUCCESS in 7m 43s","accounts_in_message":[],"_revision_number":3},{"id":"9eb0cc7768479094d64df3d652e317956ad7736c","author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"date":"2018-02-09 05:51:48.000000000","message":"Patch Set 3: Code-Review-1\n\n(5 comments)\n\nMatthew, thank you for your update.\n\nI think we need more unit tests:\n    1. test different replicas in part_diff.PartDiff.main\n    2. test different parts in part_diff.PartDiff.main\n    3. test options in part_diff.main","accounts_in_message":[],"_revision_number":3},{"id":"ecae6930cf177e898bd4365c7b3580d75ca59a68","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-14 03:27:24.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"ee2567d2e3dc8ce8e90de6f56f23098231b58415","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-14 03:28:02.000000000","message":"Patch Set 3:\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"11d28523f311ed9449f07847aa3f1bf8929af88f","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2018-02-14 05:02:37.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-sphinx-docs http://logs.openstack.org/66/539466/4/check/build-openstack-sphinx-docs/f89b9d6/html/ : SUCCESS in 4m 34s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/4/check/openstack-tox-pep8/d898c02/ : SUCCESS in 3m 27s\n- legacy-swift-dsvm-functional http://logs.openstack.org/66/539466/4/check/legacy-swift-dsvm-functional/4fb9964/ : SUCCESS in 23m 31s\n- legacy-swift-dsvm-functional-identity-v3-only http://logs.openstack.org/66/539466/4/check/legacy-swift-dsvm-functional-identity-v3-only/4e24bdb/ : SUCCESS in 23m 10s (non-voting)\n- legacy-tempest-dsvm-neutron-full http://logs.openstack.org/66/539466/4/check/legacy-tempest-dsvm-neutron-full/3eab975/ : SUCCESS in 1h 30m 03s\n- neutron-grenade http://logs.openstack.org/66/539466/4/check/neutron-grenade/ab12130/ : SUCCESS in 47m 45s\n- swift-tox-py27 http://logs.openstack.org/66/539466/4/check/swift-tox-py27/4116a43/ : SUCCESS in 6m 50s\n- swift-tox-py35 http://logs.openstack.org/66/539466/4/check/swift-tox-py35/00e60e2/ : SUCCESS in 2m 50s\n- swift-tox-func http://logs.openstack.org/66/539466/4/check/swift-tox-func/8cbbd33/ : SUCCESS in 8m 32s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/4/check/swift-tox-func-encryption/94f3e62/ : SUCCESS in 8m 35s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/4/check/swift-tox-func-ec/e6224da/ : SUCCESS in 7m 35s","accounts_in_message":[],"_revision_number":4},{"id":"bb563ead76680df4080d96523a376add25036730","author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"date":"2018-02-14 07:24:15.000000000","message":"Patch Set 4: Code-Review-1\n\n(3 comments)\n\nI think there are a few points to be fixed, please check my comments.\nOther than that, it looks good to me!","accounts_in_message":[],"_revision_number":4},{"id":"a0aac0ada4d1ca3cb0e19f3cd51ef6a01e8f5407","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-14 23:51:18.000000000","message":"Patch Set 4:\n\n(3 comments)","accounts_in_message":[],"_revision_number":4},{"id":"9cc3a29f361f3522101f2330b2eb60820aa94fad","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-14 23:52:03.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"3e9431265392903c3fb27e705a393f9b5cd1e622","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2018-02-14 23:57:13.000000000","message":"Patch Set 6: Commit message was updated.","accounts_in_message":[],"_revision_number":6},{"id":"646ad77304bd2e259425a00f497ef899a59d524e","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2018-02-15 01:53:27.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-sphinx-docs http://logs.openstack.org/66/539466/6/check/build-openstack-sphinx-docs/a31985f/html/ : SUCCESS in 5m 21s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/6/check/openstack-tox-pep8/f5130f7/ : SUCCESS in 3m 58s\n- legacy-swift-dsvm-functional http://logs.openstack.org/66/539466/6/check/legacy-swift-dsvm-functional/145c9b3/ : SUCCESS in 25m 25s\n- legacy-swift-dsvm-functional-identity-v3-only http://logs.openstack.org/66/539466/6/check/legacy-swift-dsvm-functional-identity-v3-only/bbf1f16/ : SUCCESS in 23m 08s (non-voting)\n- legacy-tempest-dsvm-neutron-full http://logs.openstack.org/66/539466/6/check/legacy-tempest-dsvm-neutron-full/19cdea7/ : SUCCESS in 1h 34m 44s\n- neutron-grenade http://logs.openstack.org/66/539466/6/check/neutron-grenade/f6ca9d5/ : SUCCESS in 46m 05s\n- swift-tox-py27 http://logs.openstack.org/66/539466/6/check/swift-tox-py27/cfbefe3/ : SUCCESS in 6m 54s\n- swift-tox-py35 http://logs.openstack.org/66/539466/6/check/swift-tox-py35/6902ace/ : SUCCESS in 4m 19s\n- swift-tox-func http://logs.openstack.org/66/539466/6/check/swift-tox-func/080cb86/ : SUCCESS in 8m 05s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/6/check/swift-tox-func-encryption/9a1bd32/ : SUCCESS in 8m 38s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/6/check/swift-tox-func-ec/0e4273a/ : SUCCESS in 8m 58s","accounts_in_message":[],"_revision_number":6},{"id":"19908e51f5d2a801103e3ae0afba973b406ed19d","author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"date":"2018-02-15 02:01:52.000000000","message":"Patch Set 6: Code-Review+1\n\nGreat work! LGTM!!","accounts_in_message":[],"_revision_number":6},{"id":"c568d8c6c9b1a62e070947f8801167da450f0559","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2019-03-13 05:41:39.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"92318fdac266ea30f72f0f852110ea3a9274bff5","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-03-13 06:14:25.000000000","message":"Patch Set 7: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- test-release-openstack http://logs.openstack.org/66/539466/7/check/test-release-openstack/ce3d0d7/ : SUCCESS in 3m 24s\n- openstack-tox-docs http://logs.openstack.org/66/539466/7/check/openstack-tox-docs/e1a7d2a/html/ : SUCCESS in 5m 20s\n- swift-tox-py27 http://logs.openstack.org/66/539466/7/check/swift-tox-py27/7912e74/ : SUCCESS in 14m 15s\n- swift-tox-py35 http://logs.openstack.org/66/539466/7/check/swift-tox-py35/58964ab/ : FAILURE in 12m 00s\n- swift-tox-py36 http://logs.openstack.org/66/539466/7/check/swift-tox-py36/5487e2c/ : FAILURE in 8m 54s (non-voting)\n- swift-tox-func http://logs.openstack.org/66/539466/7/check/swift-tox-func/e06fc7d/ : SUCCESS in 14m 22s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/7/check/swift-tox-func-encryption/a40af5b/ : SUCCESS in 8m 55s\n- swift-tox-func-domain-remap-staticweb http://logs.openstack.org/66/539466/7/check/swift-tox-func-domain-remap-staticweb/9c79c03/ : SUCCESS in 9m 55s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/7/check/swift-tox-func-ec/ff17fd5/ : SUCCESS in 9m 27s\n- swift-tox-func-s3api http://logs.openstack.org/66/539466/7/check/swift-tox-func-s3api/7460ace/ : SUCCESS in 12m 22s\n- swift-tox-func-s3api-ceph-s3tests-tempauth http://logs.openstack.org/66/539466/7/check/swift-tox-func-s3api-ceph-s3tests-tempauth/e5fd3a0/ : SUCCESS in 14m 32s (non-voting)\n- swift-probetests-centos-7 http://logs.openstack.org/66/539466/7/check/swift-probetests-centos-7/36e75e4/ : SUCCESS in 29m 52s\n- swift-dsvm-functional http://logs.openstack.org/66/539466/7/check/swift-dsvm-functional/f5a1d92/ : SUCCESS in 27m 47s\n- swift-dsvm-functional-ipv6 http://logs.openstack.org/66/539466/7/check/swift-dsvm-functional-ipv6/c1cecdf/ : SUCCESS in 23m 01s\n- swift-tox-lower-constraints http://logs.openstack.org/66/539466/7/check/swift-tox-lower-constraints/2b5731a/ : SUCCESS in 9m 46s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/7/check/openstack-tox-pep8/a159ed2/ : SUCCESS in 5m 05s\n- swift-multinode-rolling-upgrade http://logs.openstack.org/66/539466/7/check/swift-multinode-rolling-upgrade/d26a9a2/ : SUCCESS in 17m 57s","accounts_in_message":[],"_revision_number":7},{"id":"84e24afdd7d6296a1078c5e6278cc4b3eda2d4d6","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2019-03-13 19:08:04.000000000","message":"Patch Set 7:\n\n(1 comment)\n\npy3 just *had* to go and muck with random...","accounts_in_message":[],"_revision_number":7},{"id":"354f0b1e4cd2ece1c0341f9311b45239598e06b7","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2019-03-17 23:43:57.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"4d55b029502cfd36d75dd243dca59693b10bc099","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-03-18 00:30:29.000000000","message":"Patch Set 8: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- test-release-openstack http://logs.openstack.org/66/539466/8/check/test-release-openstack/77af078/ : SUCCESS in 2m 08s\n- openstack-tox-docs http://logs.openstack.org/66/539466/8/check/openstack-tox-docs/ec7ff8c/html/ : SUCCESS in 4m 29s\n- swift-tox-py27 http://logs.openstack.org/66/539466/8/check/swift-tox-py27/90f1e40/ : SUCCESS in 10m 12s\n- swift-tox-py35 http://logs.openstack.org/66/539466/8/check/swift-tox-py35/a6ce628/ : SUCCESS in 8m 53s\n- swift-tox-py36 http://logs.openstack.org/66/539466/8/check/swift-tox-py36/6ae5ad8/ : SUCCESS in 7m 27s (non-voting)\n- swift-tox-func http://logs.openstack.org/66/539466/8/check/swift-tox-func/42c6bf4/ : SUCCESS in 13m 30s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/8/check/swift-tox-func-encryption/f2de338/ : SUCCESS in 8m 21s\n- swift-tox-func-domain-remap-staticweb http://logs.openstack.org/66/539466/8/check/swift-tox-func-domain-remap-staticweb/803b77e/ : SUCCESS in 8m 26s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/8/check/swift-tox-func-ec/d2b6f02/ : SUCCESS in 9m 50s\n- swift-tox-func-s3api http://logs.openstack.org/66/539466/8/check/swift-tox-func-s3api/a9a980e/ : SUCCESS in 9m 30s\n- swift-tox-func-s3api-ceph-s3tests-tempauth http://logs.openstack.org/66/539466/8/check/swift-tox-func-s3api-ceph-s3tests-tempauth/1f6967b/ : SUCCESS in 10m 59s (non-voting)\n- swift-probetests-centos-7 http://logs.openstack.org/66/539466/8/check/swift-probetests-centos-7/c4aab07/ : SUCCESS in 28m 02s\n- swift-dsvm-functional http://logs.openstack.org/66/539466/8/check/swift-dsvm-functional/8a0bfad/ : SUCCESS in 23m 28s\n- swift-dsvm-functional-ipv6 http://logs.openstack.org/66/539466/8/check/swift-dsvm-functional-ipv6/7e1bbb8/ : SUCCESS in 25m 52s\n- swift-tox-lower-constraints http://logs.openstack.org/66/539466/8/check/swift-tox-lower-constraints/44adc22/ : SUCCESS in 10m 17s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/8/check/openstack-tox-pep8/6c052c8/ : FAILURE in 6m 09s\n- swift-multinode-rolling-upgrade http://logs.openstack.org/66/539466/8/check/swift-multinode-rolling-upgrade/7ab75ca/ : SUCCESS in 15m 24s","accounts_in_message":[],"_revision_number":8},{"id":"f8d79f5e7fc8e954eae3122a8bb92e40e98575b5","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2019-03-18 00:41:54.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"1656fb8a71b81a18a7a0bc936393d06cca312449","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-03-18 01:31:46.000000000","message":"Patch Set 9: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- test-release-openstack http://logs.openstack.org/66/539466/9/check/test-release-openstack/827d361/ : SUCCESS in 2m 22s\n- openstack-tox-docs http://logs.openstack.org/66/539466/9/check/openstack-tox-docs/d13e7f6/html/ : SUCCESS in 5m 06s\n- swift-tox-py27 http://logs.openstack.org/66/539466/9/check/swift-tox-py27/aaf1dc3/ : SUCCESS in 10m 24s\n- swift-tox-py35 http://logs.openstack.org/66/539466/9/check/swift-tox-py35/6cc02ea/ : SUCCESS in 8m 36s\n- swift-tox-py36 http://logs.openstack.org/66/539466/9/check/swift-tox-py36/6794b7f/ : SUCCESS in 9m 19s (non-voting)\n- swift-tox-func http://logs.openstack.org/66/539466/9/check/swift-tox-func/e4ce780/ : SUCCESS in 11m 26s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/9/check/swift-tox-func-encryption/79b0417/ : SUCCESS in 9m 06s\n- swift-tox-func-domain-remap-staticweb http://logs.openstack.org/66/539466/9/check/swift-tox-func-domain-remap-staticweb/c53cfcf/ : SUCCESS in 8m 29s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/9/check/swift-tox-func-ec/4599c6c/ : SUCCESS in 10m 52s\n- swift-tox-func-s3api http://logs.openstack.org/66/539466/9/check/swift-tox-func-s3api/bc61c2d/ : SUCCESS in 9m 45s\n- swift-tox-func-s3api-ceph-s3tests-tempauth http://logs.openstack.org/66/539466/9/check/swift-tox-func-s3api-ceph-s3tests-tempauth/19fc7ca/ : SUCCESS in 11m 30s (non-voting)\n- swift-probetests-centos-7 http://logs.openstack.org/66/539466/9/check/swift-probetests-centos-7/20f6dba/ : FAILURE in 27m 18s\n- swift-dsvm-functional http://logs.openstack.org/66/539466/9/check/swift-dsvm-functional/ec25420/ : SUCCESS in 24m 24s\n- swift-dsvm-functional-ipv6 http://logs.openstack.org/66/539466/9/check/swift-dsvm-functional-ipv6/a78c8c6/ : SUCCESS in 26m 42s\n- swift-tox-lower-constraints http://logs.openstack.org/66/539466/9/check/swift-tox-lower-constraints/274bac2/ : SUCCESS in 10m 37s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/9/check/openstack-tox-pep8/b4eb282/ : SUCCESS in 5m 06s\n- swift-multinode-rolling-upgrade http://logs.openstack.org/66/539466/9/check/swift-multinode-rolling-upgrade/d10de7f/ : SUCCESS in 21m 43s","accounts_in_message":[],"_revision_number":9},{"id":"14ddde9ad65b52feae40fd415994ed8eeb49c30a","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2019-03-19 09:34:12.000000000","message":"Patch Set 9:\n\nrecheck","accounts_in_message":[],"_revision_number":9},{"id":"c12d3a7858a20fc6366025f12538e479e43bee0d","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-03-19 10:06:51.000000000","message":"Patch Set 9:\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- test-release-openstack http://logs.openstack.org/66/539466/9/check/test-release-openstack/f24f824/ : SUCCESS in 4m 45s\n- openstack-tox-docs http://logs.openstack.org/66/539466/9/check/openstack-tox-docs/9021a97/html/ : SUCCESS in 4m 23s\n- swift-tox-py27 http://logs.openstack.org/66/539466/9/check/swift-tox-py27/137512b/ : FAILURE in 12m 13s\n- swift-tox-py35 http://logs.openstack.org/66/539466/9/check/swift-tox-py35/55360b5/ : SUCCESS in 9m 32s\n- swift-tox-py36 http://logs.openstack.org/66/539466/9/check/swift-tox-py36/e70c584/ : SUCCESS in 9m 31s (non-voting)\n- swift-tox-func http://logs.openstack.org/66/539466/9/check/swift-tox-func/415a1a7/ : SUCCESS in 8m 48s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/9/check/swift-tox-func-encryption/ad6387e/ : SUCCESS in 10m 08s\n- swift-tox-func-domain-remap-staticweb http://logs.openstack.org/66/539466/9/check/swift-tox-func-domain-remap-staticweb/e6e628d/ : SUCCESS in 9m 02s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/9/check/swift-tox-func-ec/3d7a539/ : SUCCESS in 9m 30s\n- swift-tox-func-s3api http://logs.openstack.org/66/539466/9/check/swift-tox-func-s3api/843c0f0/ : SUCCESS in 10m 07s\n- swift-tox-func-s3api-ceph-s3tests-tempauth http://logs.openstack.org/66/539466/9/check/swift-tox-func-s3api-ceph-s3tests-tempauth/3828bfc/ : SUCCESS in 14m 39s (non-voting)\n- swift-probetests-centos-7 http://logs.openstack.org/66/539466/9/check/swift-probetests-centos-7/52aa31c/ : SUCCESS in 30m 54s\n- swift-dsvm-functional http://logs.openstack.org/66/539466/9/check/swift-dsvm-functional/9b65608/ : SUCCESS in 25m 18s\n- swift-dsvm-functional-ipv6 http://logs.openstack.org/66/539466/9/check/swift-dsvm-functional-ipv6/6d1cb66/ : SUCCESS in 30m 33s\n- swift-tox-lower-constraints http://logs.openstack.org/66/539466/9/check/swift-tox-lower-constraints/29cbeb6/ : FAILURE in 11m 58s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/9/check/openstack-tox-pep8/1855a75/ : SUCCESS in 5m 45s\n- swift-multinode-rolling-upgrade http://logs.openstack.org/66/539466/9/check/swift-multinode-rolling-upgrade/5ab7e66/ : SUCCESS in 16m 57s","accounts_in_message":[],"_revision_number":9},{"id":"9c093abe2b30489877eb0f6e64ed2fa7c38765a5","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2019-04-15 06:06:09.000000000","message":"Uploaded patch set 10: Patch Set 9 was rebased.","accounts_in_message":[],"_revision_number":10},{"id":"474f5287632722c8f64433ca108f96b2761e43ff","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-04-15 07:07:17.000000000","message":"Patch Set 10: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- test-release-openstack http://logs.openstack.org/66/539466/10/check/test-release-openstack/bfaf7f9/ : SUCCESS in 5m 49s\n- openstack-tox-docs http://logs.openstack.org/66/539466/10/check/openstack-tox-docs/3d45555/html/ : SUCCESS in 4m 40s\n- swift-tox-py27 http://logs.openstack.org/66/539466/10/check/swift-tox-py27/b37968c/ : SUCCESS in 13m 24s\n- swift-tox-py35 http://logs.openstack.org/66/539466/10/check/swift-tox-py35/ba2f1e2/ : SUCCESS in 9m 09s\n- swift-tox-py36 http://logs.openstack.org/66/539466/10/check/swift-tox-py36/3050626/ : SUCCESS in 11m 03s (non-voting)\n- swift-tox-py37 http://logs.openstack.org/66/539466/10/check/swift-tox-py37/b8b022b/ : FAILURE in 23m 34s (non-voting)\n- swift-tox-func http://logs.openstack.org/66/539466/10/check/swift-tox-func/b67d571/ : SUCCESS in 9m 38s\n- swift-tox-func-encryption http://logs.openstack.org/66/539466/10/check/swift-tox-func-encryption/6fd0558/ : SUCCESS in 9m 18s\n- swift-tox-func-domain-remap-staticweb http://logs.openstack.org/66/539466/10/check/swift-tox-func-domain-remap-staticweb/57d50e4/ : SUCCESS in 8m 21s\n- swift-tox-func-ec http://logs.openstack.org/66/539466/10/check/swift-tox-func-ec/03e3e40/ : SUCCESS in 9m 14s\n- swift-tox-func-s3api http://logs.openstack.org/66/539466/10/check/swift-tox-func-s3api/583384a/ : SUCCESS in 12m 16s\n- swift-tox-func-s3api-ceph-s3tests-tempauth http://logs.openstack.org/66/539466/10/check/swift-tox-func-s3api-ceph-s3tests-tempauth/7a95174/ : SUCCESS in 14m 16s (non-voting)\n- swift-probetests-centos-7 http://logs.openstack.org/66/539466/10/check/swift-probetests-centos-7/8d0c2b2/ : SUCCESS in 36m 07s\n- swift-dsvm-functional http://logs.openstack.org/66/539466/10/check/swift-dsvm-functional/9b0a772/ : SUCCESS in 31m 47s\n- swift-dsvm-functional-ipv6 http://logs.openstack.org/66/539466/10/check/swift-dsvm-functional-ipv6/f7b6564/ : SUCCESS in 29m 57s\n- swift-tox-lower-constraints http://logs.openstack.org/66/539466/10/check/swift-tox-lower-constraints/92d89a0/ : FAILURE in 32m 41s\n- openstack-tox-pep8 http://logs.openstack.org/66/539466/10/check/openstack-tox-pep8/c448911/ : SUCCESS in 5m 53s\n- swift-multinode-rolling-upgrade http://logs.openstack.org/66/539466/10/check/swift-multinode-rolling-upgrade/8719b0d/ : SUCCESS in 20m 06s","accounts_in_message":[],"_revision_number":10},{"id":"bb5485096b48ba5ae96c66244a48ffdf9c8ca1c4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2022-04-22 02:07:53.000000000","message":"Uploaded patch set 11.","accounts_in_message":[],"_revision_number":11},{"id":"0c598b42ce26b2e7ca07b03b16f5d370b589a1a4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-04-22 03:29:53.000000000","message":"Patch Set 11: Verified+1\n\nBuild succeeded (check pipeline).\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/95aad42b67164a4ba71bc3a3d63f986c : SUCCESS in 3m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2d0b180e9c5c41708060084bbc4339bb : SUCCESS in 9m 13s\n- grenade https://zuul.opendev.org/t/openstack/build/77eceb63751042cf84dc559d45b790e9 : SUCCESS in 1h 04m 41s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/9c1f238b1eb5488aa6a5d51c9a8e2a7b : SUCCESS in 51m 52s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/e0144ad4e3ad4e80a2b30cc3a99c9ec7 : SUCCESS in 58m 31s\n- swift-tox-func-py36-centos-8-stream-fips https://zuul.opendev.org/t/openstack/build/f6b633c1bf1d4060999e0d1510c9975e : SUCCESS in 22m 23s (non-voting)\n- swift-tox-func-encryption-py36-centos-8-stream-fips https://zuul.opendev.org/t/openstack/build/34574a9d809e44deb9c0acccdc5ba329 : SUCCESS in 20m 40s (non-voting)\n- swift-tox-func-ec-py36-centos-8-stream-fips https://zuul.opendev.org/t/openstack/build/05a9e94b3dea47a389be57cf7fe3a5d2 : SUCCESS in 20m 43s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/edb2f3a2ec81434684155b579c2bcd80 : SUCCESS in 9m 52s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/641fcfdedfb24a1d86ea846f638121d3 : SUCCESS in 7m 45s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/51fcd80ef2e64280a2c33fb53401811f : SUCCESS in 24m 42s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/1dfcfc9748474d47bfa36a5410018dbd : SUCCESS in 20m 49s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/01daa2ad57b34144bac672e3880dae98 : SUCCESS in 22m 12s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/aea25dd8582948759b6f78becbab33ef : SUCCESS in 24m 25s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/dd52361b3d0c403db2080d5d5b9ae32a : SUCCESS in 26m 47s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/0105795a816a4ee39aa29de80cd2bdee : SUCCESS in 26m 59s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/a3ddc62dd23d4aa1a82a1c02bb80b7f0 : SUCCESS in 21m 25s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/09022aebbd9d4c809a15b8afff67c8b8 : SUCCESS in 17m 44s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/203f376235e14ea98bcc88764e6c5b5b : SUCCESS in 18m 14s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/cddda810db0c43098fbf1639eb38f263 : SUCCESS in 9m 11s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/55f6db12cedb4788bb2f8475bd2808d7 : SUCCESS in 16m 30s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/fac80f0f90a245ee8f4e53c9e7b3132c : SUCCESS in 49m 23s\n- swift-probetests-centos-8-stream https://zuul.opendev.org/t/openstack/build/cd522f61d59249529b5d5a632d2e28e5 : SUCCESS in 1h 07m 48s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/51ea8292280c45e1941a1377c69156bf : SUCCESS in 40m 41s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/d9d720d3701c457781cc9f4405753753 : SUCCESS in 40m 45s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/be804cfa3c404ec1a5f1ad3522b370e1 : SUCCESS in 17m 45s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/fbc3e219c21943449fdf4117a7fc4c8c : SUCCESS in 7m 54s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/c75e68c1f58f4f2bb0f23bae384dfd4c : SUCCESS in 32m 38s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ce5612a3d6bc4e4cae5dfca0ff4062e0 : SUCCESS in 58m 58s","accounts_in_message":[],"_revision_number":11},{"id":"4341e593810ff1824715dfd69321a3b903a87552","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-04-22 07:28:14.000000000","message":"Patch Set 11:\n\nBuild failed (ARM64 pipeline).\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/2842cf2e6dcb4712a98d27db84745b34 : TIMED_OUT in 1h 31m 12s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/292f1118ced84d859b9e87937cfff3a2 : SUCCESS in 50m 19s\n- swift-probetests-centos-8-stream-arm64 https://zuul.opendev.org/t/openstack/build/56319ada95a9439385f0582403596115 : TIMED_OUT in 3h 01m 20s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/86717c13d1954697adb397e96b3a719d : SUCCESS in 1h 06m 41s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/446750e4e26f4a13b170280224573d29 : SUCCESS in 1h 00m 36s","accounts_in_message":[],"_revision_number":11},{"id":"49e5d1072e380e7ebca68c269f7abd4c06d7cca7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-02-02 06:24:13.000000000","message":"Uploaded patch set 12.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":12},{"id":"7eb2d1e2ab7970308d4b9f078d3984bd97528df0","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-02 07:15:52.000000000","message":"Patch Set 12:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5a3cac6d273c41f8876fb7fcda80541d\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/70e03acb4799423586ec2ad297297735 : SUCCESS in 50m 05s","accounts_in_message":[],"_revision_number":12},{"id":"3dc527d3228ebb1d7ef9270ed92d0f7e8bad0b57","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-02 07:36:45.000000000","message":"Patch Set 12: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6df5bdd176d542f3a8d89ac5252245b1\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/c0d28f3f2d3c468b9111032c9585f06f : SUCCESS in 2m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1e586416ff4e45c39412d2a651dad668 : SUCCESS in 7m 12s\n- grenade https://zuul.opendev.org/t/openstack/build/7e117d776b3a4d1099be0920fe76ad04 : SUCCESS in 40m 52s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/d20a11b16e564c14a666391fce610f16 : SUCCESS in 1h 01m 33s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/977b5a3670ed459abda05ff5e75bbcdf : SUCCESS in 36m 42s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/8c68d3ed6b0043e8a65c23505cb135cb : SUCCESS in 1h 04m 52s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f381cd10f26a4626be2a5e224f0582bb : SUCCESS in 18m 30s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/47dcabebf7a44834b82ea03687e58df2 : SUCCESS in 19m 18s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fcf0c4e144ef4c8aab29ddd7b524b522 : SUCCESS in 19m 22s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/854282768d9f4f8f87ce389dc2a6362a : SUCCESS in 5m 06s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/dcb025d0df7a4c16bdd581d3bf3caa52 : SUCCESS in 19m 51s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/c84e01b47a164ab4a89f2ffb0a3102ee : SUCCESS in 22m 55s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/75408c67ce6e4f518b27d20acc2778b6 : SUCCESS in 29m 33s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/09a269c43a4b48c2a9a123331f932e29 : SUCCESS in 17m 47s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/37d05e11ac644c99a56b7c46e9ce4bc9 : SUCCESS in 8m 26s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/d116ddb701c0439eb4ebcc9c3a6e15d5 : SUCCESS in 15m 17s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/7aa8aa8450544f059f26eccff23150bb : SUCCESS in 8m 03s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/26521ffa910d4ba2ab3e755731da06cb : SUCCESS in 6m 15s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/8721eb16d36a40a7a881679754b330b0 : SUCCESS in 7m 48s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/adab60052a7d431b83c078b32f2be403 : SUCCESS in 8m 25s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/9d8d5662ef5c4587a087420c5ac88191 : SUCCESS in 36m 00s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/ef3b4a104b9d42ceaf9a16a52ff8ed32 : SUCCESS in 49m 35s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/de21fd7c877a45ec8692a639bc6af93d : SUCCESS in 53m 32s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/67248aff40c843f69aa31915d3f9c47a : SUCCESS in 28m 10s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/fd0ed20916cf46c0a08ddff634668660 : SUCCESS in 3m 55s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/92a59075c7ea40eeaa6453f568f739b8 : SUCCESS in 17m 38s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/bfa4ed05d9ce41fb85141efa1b2ebc68 : SUCCESS in 38m 18s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/91b0df2a4b984f3cba3a71fa2d684c84 : SUCCESS in 1h 02m 41s","accounts_in_message":[],"_revision_number":12}],"current_revision_number":12,"current_revision":"a324af6137dfdcc2c5f01d661a1b0747215d9dbe","revisions":{"b184ea3a9aef0d8b8a21140da1d99290b188599c":{"kind":"REWORK","_number":1,"created":"2018-01-31 09:04:21.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/1"}}},"commit":{"parents":[{"commit":"d800c177cc7507ab749dd33704521d1d749f3045","subject":"Merge \"Replace Chinese punctuation with English punctuation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d800c177cc7507ab749dd33704521d1d749f3045"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"subject":"Add a partition a basic partition diffing tool","message":"Add a partition a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will pring the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b184ea3a9aef0d8b8a21140da1d99290b188599c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b184ea3a9aef0d8b8a21140da1d99290b188599c"}]},"branch":"refs/heads/master"},"642c6a7003a0d6ffaaa475c39e3e58baf9953843":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2018-01-31 09:12:07.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/2"}}},"commit":{"parents":[{"commit":"d800c177cc7507ab749dd33704521d1d749f3045","subject":"Merge \"Replace Chinese punctuation with English punctuation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d800c177cc7507ab749dd33704521d1d749f3045"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 09:11:29.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will pring the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/642c6a7003a0d6ffaaa475c39e3e58baf9953843"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/642c6a7003a0d6ffaaa475c39e3e58baf9953843"}]},"branch":"refs/heads/master"},"37db23a4b0db6fec4199bd4e843708837f913de7":{"kind":"REWORK","_number":3,"created":"2018-02-08 10:20:29.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/3"}}},"commit":{"parents":[{"commit":"d800c177cc7507ab749dd33704521d1d749f3045","subject":"Merge \"Replace Chinese punctuation with English punctuation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d800c177cc7507ab749dd33704521d1d749f3045"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-02-08 10:19:57.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will pring the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/37db23a4b0db6fec4199bd4e843708837f913de7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/37db23a4b0db6fec4199bd4e843708837f913de7"}]},"branch":"refs/heads/master"},"61a4634f84292b8d14dd6fdce322179ac2a27d28":{"kind":"REWORK","_number":4,"created":"2018-02-14 03:27:24.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/4"}}},"commit":{"parents":[{"commit":"d800c177cc7507ab749dd33704521d1d749f3045","subject":"Merge \"Replace Chinese punctuation with English punctuation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d800c177cc7507ab749dd33704521d1d749f3045"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-02-14 03:21:04.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/768 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will pring the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/61a4634f84292b8d14dd6fdce322179ac2a27d28"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/61a4634f84292b8d14dd6fdce322179ac2a27d28"}]},"branch":"refs/heads/master"},"11696f3699e2b51255cf8acae72c3e3c1806dd51":{"kind":"REWORK","_number":5,"created":"2018-02-14 23:52:03.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/5"}}},"commit":{"parents":[{"commit":"d800c177cc7507ab749dd33704521d1d749f3045","subject":"Merge \"Replace Chinese punctuation with English punctuation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d800c177cc7507ab749dd33704521d1d749f3045"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-02-14 23:51:26.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/768 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will pring the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/11696f3699e2b51255cf8acae72c3e3c1806dd51"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/11696f3699e2b51255cf8acae72c3e3c1806dd51"}]},"branch":"refs/heads/master"},"6173c4d9b573a00351b87865c0b0d9bfef58ad97":{"kind":"NO_CODE_CHANGE","_number":6,"created":"2018-02-14 23:57:13.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/6"}}},"commit":{"parents":[{"commit":"d800c177cc7507ab749dd33704521d1d749f3045","subject":"Merge \"Replace Chinese punctuation with English punctuation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d800c177cc7507ab749dd33704521d1d749f3045"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-02-14 23:57:08.000000000","tz":0},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6173c4d9b573a00351b87865c0b0d9bfef58ad97"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6173c4d9b573a00351b87865c0b0d9bfef58ad97"}]},"branch":"refs/heads/master"},"854909c621b2e65ba7719b432880c0309cacc325":{"kind":"REWORK","_number":7,"created":"2019-03-13 05:41:39.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/7"}}},"commit":{"parents":[{"commit":"cc6f69a2dc230429aa0e959142ccf8e869c836e2","subject":"Merge \"Fix a typo\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/cc6f69a2dc230429aa0e959142ccf8e869c836e2"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2019-03-13 05:41:22.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/854909c621b2e65ba7719b432880c0309cacc325"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/854909c621b2e65ba7719b432880c0309cacc325"}]},"branch":"refs/heads/master"},"085a6acfa171f60a3b6eacbe2a964f7a2bfde9d5":{"kind":"REWORK","_number":8,"created":"2019-03-17 23:43:57.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/8"}}},"commit":{"parents":[{"commit":"cc6f69a2dc230429aa0e959142ccf8e869c836e2","subject":"Merge \"Fix a typo\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/cc6f69a2dc230429aa0e959142ccf8e869c836e2"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2019-03-17 23:40:56.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nBecause random on py2 and py3 behave differently when unit testing\nthis tool the ring randomisation is disabled. Which is why you\u0027ll\nsee all devices in the rings in order when running the tests.\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/085a6acfa171f60a3b6eacbe2a964f7a2bfde9d5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/085a6acfa171f60a3b6eacbe2a964f7a2bfde9d5"}]},"branch":"refs/heads/master"},"2c6535feb7337a06b6b5a9e3851144ebefac462b":{"kind":"REWORK","_number":9,"created":"2019-03-18 00:41:54.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/9"}}},"commit":{"parents":[{"commit":"cc6f69a2dc230429aa0e959142ccf8e869c836e2","subject":"Merge \"Fix a typo\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/cc6f69a2dc230429aa0e959142ccf8e869c836e2"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2019-03-18 00:41:34.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nBecause random on py2 and py3 behave differently when unit testing\nthis tool the ring randomisation is disabled. Which is why you\u0027ll\nsee all devices in the rings in order when running the tests.\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2c6535feb7337a06b6b5a9e3851144ebefac462b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2c6535feb7337a06b6b5a9e3851144ebefac462b"}]},"branch":"refs/heads/master"},"aa474288a6da6797073fde89653834e9b6b812a6":{"kind":"TRIVIAL_REBASE","_number":10,"created":"2019-04-15 06:06:09.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/10"}}},"commit":{"parents":[{"commit":"b27026f6c7332c2aa598e0338f92fa46f70abd40","subject":"Merge \"py3: port staticweb middleware\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b27026f6c7332c2aa598e0338f92fa46f70abd40"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2019-04-15 05:44:08.000000000","tz":600},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help     show this help message and exit\n    -v, --verbose  Print entire table\n    -d, --diffs    Print only the diffs\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nBecause random on py2 and py3 behave differently when unit testing\nthis tool the ring randomisation is disabled. Which is why you\u0027ll\nsee all devices in the rings in order when running the tests.\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/aa474288a6da6797073fde89653834e9b6b812a6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/aa474288a6da6797073fde89653834e9b6b812a6"}]},"branch":"refs/heads/master"},"6231f0eeae5ca1d4fffd48e81df95ce9610f35b2":{"kind":"REWORK","_number":11,"created":"2022-04-22 02:07:53.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/11"}}},"commit":{"parents":[{"commit":"e2beaefd7bc129e02f8933726550e684f92f1050","subject":"Merge \"replicator: Tolerate ENOENT when calling listdir\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e2beaefd7bc129e02f8933726550e684f92f1050"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2022-04-22 02:04:49.000000000","tz":600},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help            show this help message and exit\n    -v, --verbose         Print entire table\n    -d, --diffs           Print only the diffs\n    -g GREATER, --greater\u003dGREATER\n                          Only show diffs greater then this. Default 0\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nBecause random on py2 and py3 behave differently when unit testing\nthis tool the ring randomisation is disabled. Which is why you\u0027ll\nsee all devices in the rings in order when running the tests.\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6231f0eeae5ca1d4fffd48e81df95ce9610f35b2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6231f0eeae5ca1d4fffd48e81df95ce9610f35b2"}]},"branch":"refs/heads/master"},"a324af6137dfdcc2c5f01d661a1b0747215d9dbe":{"kind":"REWORK","_number":12,"created":"2026-02-02 06:24:13.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/66/539466/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/66/539466/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/66/539466/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/66/539466/12"}}},"commit":{"parents":[{"commit":"c7bee623658b464072783096b98adaddfb1005bc","subject":"Merge \"s3api: Support for object expiration time\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c7bee623658b464072783096b98adaddfb1005bc"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2018-01-31 06:55:19.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2026-02-02 06:23:53.000000000","tz":660},"subject":"Add a basic partition diffing tool","message":"Add a basic partition diffing tool\n\nA few weeks ago it was mentioned in channel that someone wished\nthey could compare builders to rings. So as a random lunch time\nhack I created a partition diffing tool. I polished it up a bit\nand thought it might be usful in the Swift tool box.\n\nThis patch adds a new tool, swift-partition-diff, which does\nexactly what it says. It takes 2 builder or ring files\nand does a comparasion on the _replica2parts2dev table and\nwill tell out how different they are.\n\n  $ swift-partition-diff\n  Usage: swift-partition-diff [--verbose] [--diffs] \u003cbuilder1\u003e \u003cbuilder2\u003e\n\n  Options:\n    -h, --help            show this help message and exit\n    -v, --verbose         Print entire table\n    -d, --diffs           Print only the diffs\n    -g GREATER, --greater\u003dGREATER\n                          Only show diffs greater then this. Default 0\n\nIn it\u0027s simplest form it takes in 2 builders or rings to compare:\n\n  $ swift-partition-diff object.builder object.ring.gz\n  Number of diffs: 0/3072 (0.00%)\n  $ echo $?\n  0\n\nThere are a few ways to read the output. Firstly is the return code,\nwhere:\n\n  0 - no differences\n  1 - there are differences\n  2+ - Errors running diff tool\n\nObviously the other way is to read the output. Number represents:\n\n  Number of diffs: \u003cnumber of replicath\u0027s different\u003e (\u003cpercentage\u003e%)\n\nIf you want more information, you can pass the `--diffs` (`-d`) to print\nthe partiions that have changed:\n\n  $ swift-partition-diff object.builder object.ring.gz -d\n  b1: object.builder\n  b2: object.ring.gz\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  --------------------------\n\n  Number of diffs: 0/3072 (0.00%)\n\nIt obviously makes more sense on a ring that has changes, so lets take\none I\u0027ve fiddled with:\n\n  $ swift-partition-diff object.builder other-object.builder\n  Number of diffs: 4/3072 (0.13%)\n\n  $ swift-partition-diff object.builder other-object.builder -d\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0150|(0) 2  1 |(5) 2  1 |\n  |0550| 3 (0) 2 | 3 (2) 2 |\n  |1005| 1  3 (0)| 1  3 (3)|\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nThere is also a `--verbose` (`-v`) option, which will print the entire\n_replica2part2dev table. It looks pretty, but is obviously very verbose:\n\n  $ swift-partition-diff object.builder other-object.builder -v\n  b1: object.builder\n  b2: other-object.builder\n\n  --------------------------\n  | P  |   b1    |   b2    |\n  --------------------------\n  |0000| 3  0  2 | 3  0  2 |\n  |0001| 1  3  0 | 1  3  0 |\n  |0002| 3  0  2 | 3  0  2 |\n  |0003| 3  0  2 | 3  0  2 |\n  |0004| 3  0  2 | 3  0  2 |\n  |0005| 2  1  3 | 2  1  3 |\n  |0006| 3  0  2 | 3  0  2 |\n  |0007| 3  0  2 | 3  0  2 |\n  |0008| 3  0  2 | 3  0  2 |\n  |0009| 0  2  1 | 0  2  1 |\n  |0010| 2  1  3 | 2  1  3 |\n  |0011| 2  1  3 | 2  1  3 |\n  |0012| 1  3  0 | 1  3  0 |\n  |0013| 3  0  2 | 3  0  2 |\n  |0014| 1  3  0 | 1  3  0 |\n  |0015| 3  0 (2)| 3  0 (0)|\n  |0016| 2  1  3 | 2  1  3 |\n  |0017| 3  0  2 | 3  0  2 |\n  |0018| 0  2  1 | 0  2  1 |\n  |0019| 3  0  2 | 3  0  2 |\n  |0020| 3  0  2 | 3  0  2 |\n    .    .  .  .   .  .  .\n  |1005| 1  3 (0)| 1  3 (3)|\n  |1006| 1  3  0 | 1  3  0 |\n  |1007| 2  1  3 | 2  1  3 |\n  |1008| 1  3  0 | 1  3  0 |\n  |1009| 0  2  1 | 0  2  1 |\n  |1010| 2  1  3 | 2  1  3 |\n  |1011| 1  3  0 | 1  3  0 |\n  |1012| 1  3  0 | 1  3  0 |\n  |1013| 2  1  3 | 2  1  3 |\n  |1014| 3  0  2 | 3  0  2 |\n  |1015| 3  0  2 | 3  0  2 |\n  |1016| 1  3  0 | 1  3  0 |\n  |1017| 0  2  1 | 0  2  1 |\n  |1018| 2  1  3 | 2  1  3 |\n  |1019| 0  2  1 | 0  2  1 |\n  |1020| 2  1  3 | 2  1  3 |\n  |1021| 2  1  3 | 2  1  3 |\n  |1022| 3  0  2 | 3  0  2 |\n  |1023| 0  2  1 | 0  2  1 |\n  --------------------------\n\n  Number of diffs: 4/3072 (0.13%)\n\nRandomisation has been turned off in testing, which is why you\u0027ll\nsee all devices in the rings in order when running the tests. But\nhelps grok changes. Now that we\u0027re not supporting py2 we could turn\non randomisation again if required.\n\nChange-Id: I65e89ac83418d0b6ee15b78a4d1e33ba7ba6d7d2\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/a324af6137dfdcc2c5f01d661a1b0747215d9dbe"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/a324af6137dfdcc2c5f01d661a1b0747215d9dbe"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
