)]}'
{"swift/cli/ringbuilder.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"45ae26daa4d7cfe66dc64382ee05bf90c1589ea5","unresolved":false,"context_lines":[{"line_number":792,"context_line":"swift-ring-builder \u003cbuilder_file\u003e set_region"},{"line_number":793,"context_line":"    --region \u003cregion\u003e --zone \u003czone\u003e --ip \u003cip or hostname\u003e --port \u003cport\u003e"},{"line_number":794,"context_line":"    --replication-ip \u003cr_ip or r_hostname\u003e --replication-port \u003cr_port\u003e"},{"line_number":795,"context_line":"    --device \u003cdevice_name\u003e --meta \u003cmeta\u003e --region \u003cregion\u003e"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"    Where \u003cr_ip\u003e, \u003cr_hostname\u003e and \u003cr_port\u003e are replication ip, hostname"},{"line_number":798,"context_line":"    and port."}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_03a250ae","line":795,"range":{"start_line":795,"start_character":40,"end_line":795,"end_character":58},"updated":"2016-03-14 06:38:00.000000000","message":"There appears the same option name twice. How about using the defferent name, like new_region?","commit_id":"0904e935a1ec045d51f086e51eb3e8fd0e127486"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"45ae26daa4d7cfe66dc64382ee05bf90c1589ea5","unresolved":false,"context_lines":[{"line_number":825,"context_line":"swift-ring-builder \u003cbuilder_file\u003e set_zone"},{"line_number":826,"context_line":"    --region \u003cregion\u003e --zone \u003czone\u003e --ip \u003cip or hostname\u003e --port \u003cport\u003e"},{"line_number":827,"context_line":"    --replication-ip \u003cr_ip or r_hostname\u003e --replication-port \u003cr_port\u003e"},{"line_number":828,"context_line":"    --device \u003cdevice_name\u003e --meta \u003cmeta\u003e --zone \u003czone\u003e"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    Where \u003cr_ip\u003e, \u003cr_hostname\u003e and \u003cr_port\u003e are replication ip, hostname"},{"line_number":831,"context_line":"    and port."}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_43ac58a0","line":828,"range":{"start_line":828,"start_character":40,"end_line":828,"end_character":54},"updated":"2016-03-14 06:38:00.000000000","message":"ditto","commit_id":"0904e935a1ec045d51f086e51eb3e8fd0e127486"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"def _set_region_values(devs, region, opts):"},{"line_number":214,"context_line":"    if not devs:"},{"line_number":215,"context_line":"        print(\u0027Search value matched 0 devices.\\n\u0027"},{"line_number":216,"context_line":"              \u0027The on-disk ring builder is unchanged.\u0027)"},{"line_number":217,"context_line":"        exit(EXIT_ERROR)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_8195e6e6","line":214,"updated":"2017-10-20 17:40:48.000000000","message":"Should we be using check_devs, like _set_weight_values does? Presumably, that wasn\u0027t a thing when this was first written...","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a077c8cdc6f3e18fa32a8e2520db0486d44228df","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"def _set_region_values(devs, region, opts):"},{"line_number":214,"context_line":"    if not devs:"},{"line_number":215,"context_line":"        print(\u0027Search value matched 0 devices.\\n\u0027"},{"line_number":216,"context_line":"              \u0027The on-disk ring builder is unchanged.\u0027)"},{"line_number":217,"context_line":"        exit(EXIT_ERROR)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_965e7174","line":214,"in_reply_to":"3f4b6375_8195e6e6","updated":"2019-10-05 04:57:37.000000000","message":"Done","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        for dev in devs:"},{"line_number":222,"context_line":"            print(\u0027    %s\u0027 % format_device(dev))"},{"line_number":223,"context_line":"        if not opts.yes and \\"},{"line_number":224,"context_line":"                input(\u0027Are you sure you want to update the region for \u0027"},{"line_number":225,"context_line":"                      \u0027these %s devices? (y/N) \u0027 % len(devs)) !\u003d \u0027y\u0027:"},{"line_number":226,"context_line":"            print(\u0027Aborting device modifications\u0027)"},{"line_number":227,"context_line":"            exit(EXIT_ERROR)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_55fcc83c","line":224,"range":{"start_line":224,"start_character":16,"end_line":224,"end_character":21},"updated":"2017-10-20 17:40:48.000000000","message":"OK, good, we\u0027re already grabbing this from six...","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            exit(EXIT_ERROR)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    for dev in devs:"},{"line_number":230,"context_line":"        builder.set_dev_region(dev[\u0027id\u0027], region)"},{"line_number":231,"context_line":"        print(\u0027%s region set to %s\u0027 % (format_device(dev),"},{"line_number":232,"context_line":"                                       dev[\u0027region\u0027]))"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_003a8c97","line":230,"updated":"2017-10-20 17:40:48.000000000","message":"When there are multiple devs, should we tolerate the ValueError this could raise? Otherwise, we can have a partial application :-/\n\nMaybe (some of?) the\n\n except ValueError:\n\nhandling should be hoisted up here? Although set_weight has the same problem...","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a077c8cdc6f3e18fa32a8e2520db0486d44228df","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            exit(EXIT_ERROR)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    for dev in devs:"},{"line_number":230,"context_line":"        builder.set_dev_region(dev[\u0027id\u0027], region)"},{"line_number":231,"context_line":"        print(\u0027%s region set to %s\u0027 % (format_device(dev),"},{"line_number":232,"context_line":"                                       dev[\u0027region\u0027]))"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_36553d51","line":230,"in_reply_to":"7f515b1d_003a8c97","updated":"2019-10-05 04:57:37.000000000","message":"I was being dumb -- we exit() on the ValueError below, so we never call builder.save() -- the partial application doesn\u0027t matter.","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"}],"test/unit/cli/test_ringbuilder.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4cfd18b6ff68c8b13ac3e447700057cc5626eab3","unresolved":false,"context_lines":[{"line_number":248,"context_line":"    def test_set_region_values_no_devices(self):"},{"line_number":249,"context_line":"        # Test no devices"},{"line_number":250,"context_line":"        err \u003d None"},{"line_number":251,"context_line":"        try:"},{"line_number":252,"context_line":"            ringbuilder._set_region_values([], 100, {})"},{"line_number":253,"context_line":"        except SystemExit as e:"},{"line_number":254,"context_line":"            err \u003d e"},{"line_number":255,"context_line":"        self.assertEqual(err.code, 2)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def test_parse_set_region_values_number_of_arguments(self):"},{"line_number":258,"context_line":"        # Test Number of arguments abnormal"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_58aee098","line":255,"range":{"start_line":251,"start_character":0,"end_line":255,"end_character":37},"updated":"2016-06-12 05:03:37.000000000","message":"We had better use assertSystemExit instead.\nAlso, \u00272\u0027 should be replaced by EXIT_ERROR, according to other test cases.","commit_id":"3322e40daaf6dcdb45da63ee8435468c0cdba994"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        err \u003d None"},{"line_number":303,"context_line":"        try:"},{"line_number":304,"context_line":"            ringbuilder._parse_set_region_values(argv)"},{"line_number":305,"context_line":"        except SystemExit as e:"},{"line_number":306,"context_line":"            err \u003d e"},{"line_number":307,"context_line":"        self.assertEqual(err.code, 2)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_217072dc","line":305,"updated":"2017-10-20 17:40:48.000000000","message":"Not using assertSystemExit as above?","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a077c8cdc6f3e18fa32a8e2520db0486d44228df","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        err \u003d None"},{"line_number":303,"context_line":"        try:"},{"line_number":304,"context_line":"            ringbuilder._parse_set_region_values(argv)"},{"line_number":305,"context_line":"        except SystemExit as e:"},{"line_number":306,"context_line":"            err \u003d e"},{"line_number":307,"context_line":"        self.assertEqual(err.code, 2)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_56d559b6","line":305,"in_reply_to":"3f4b6375_217072dc","updated":"2019-10-05 04:57:37.000000000","message":"Done","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            ringbuilder._parse_set_region_values(argv)"},{"line_number":305,"context_line":"        except SystemExit as e:"},{"line_number":306,"context_line":"            err \u003d e"},{"line_number":307,"context_line":"        self.assertEqual(err.code, 2)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        argv \u003d [\"--region\", \"2\"]"},{"line_number":310,"context_line":"        err \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_61342afc","line":307,"updated":"2017-10-20 17:40:48.000000000","message":"...which means a test failure (presumably) looks like\n\n AttributeError: \u0027NoneType\u0027 object has no attribute \u0027code\u0027","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"    def _check_region(self, ring, dev_id, expected_region):"},{"line_number":1018,"context_line":"        for dev in ring.devs:"},{"line_number":1019,"context_line":"            if dev[\u0027id\u0027] !\u003d dev_id:"},{"line_number":1020,"context_line":"                self.assertFalse(dev[\u0027region\u0027] \u003d\u003d expected_region)"},{"line_number":1021,"context_line":"            else:"},{"line_number":1022,"context_line":"                self.assertEqual(dev[\u0027region\u0027], expected_region)"},{"line_number":1023,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_e1081a2e","line":1020,"range":{"start_line":1020,"start_character":21,"end_line":1020,"end_character":32},"updated":"2017-10-20 17:40:48.000000000","message":"assertNotEqual?","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a077c8cdc6f3e18fa32a8e2520db0486d44228df","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"    def _check_region(self, ring, dev_id, expected_region):"},{"line_number":1018,"context_line":"        for dev in ring.devs:"},{"line_number":1019,"context_line":"            if dev[\u0027id\u0027] !\u003d dev_id:"},{"line_number":1020,"context_line":"                self.assertFalse(dev[\u0027region\u0027] \u003d\u003d expected_region)"},{"line_number":1021,"context_line":"            else:"},{"line_number":1022,"context_line":"                self.assertEqual(dev[\u0027region\u0027], expected_region)"},{"line_number":1023,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_96d3d1d5","line":1020,"range":{"start_line":1020,"start_character":21,"end_line":1020,"end_character":32},"in_reply_to":"3f4b6375_e1081a2e","updated":"2019-10-05 04:57:37.000000000","message":"Done","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5a5b13de960607ab5170d16b2121d787a8dfbe53","unresolved":false,"context_lines":[{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"            argv \u003d [\"\", self.tmpfile, \"set_region\","},{"line_number":1033,"context_line":"                    search_value, \"314\"]"},{"line_number":1034,"context_line":"            self.assertRaises(SystemExit, ringbuilder.main, argv)"},{"line_number":1035,"context_line":"            ring \u003d RingBuilder.load(self.tmpfile)"},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"            self._check_region(ring, 0, 314)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_6479d891","line":1034,"updated":"2017-10-20 17:40:48.000000000","message":"No check on the exit code?","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a077c8cdc6f3e18fa32a8e2520db0486d44228df","unresolved":false,"context_lines":[{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"            argv \u003d [\"\", self.tmpfile, \"set_region\","},{"line_number":1033,"context_line":"                    search_value, \"314\"]"},{"line_number":1034,"context_line":"            self.assertRaises(SystemExit, ringbuilder.main, argv)"},{"line_number":1035,"context_line":"            ring \u003d RingBuilder.load(self.tmpfile)"},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"            self._check_region(ring, 0, 314)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_36da1de9","line":1034,"in_reply_to":"3f4b6375_6479d891","updated":"2019-10-05 04:57:37.000000000","message":"Done","commit_id":"ce9ce70613e92cbbbe520449b3ed4fe1f5ccf6cb"}]}
