)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"e4613618aad85a9fdc051b2d3e71504435c5615c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lijunbo \u003clijunbo@fiberhome.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-22 16:54:18 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fixed get ring name"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ida659fa71585f9b0cf36da75b58b28e6a25533df"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_d81d6abe","line":7,"updated":"2017-03-24 03:38:31.000000000","message":"I\u0027d also like the commit message to better explain what it does. Once a patch is commited we test to only look at commit messages in git, so this needs to gives us a better clue. I.e what ring name, how?\n\nsomething like:\n\n  Fixed get ring name from recon cli\n\n  This patch uses a more specific string to match\n  the ring name in recon cli.","commit_id":"332c3ea972e5a4e023a60c489387ecfb1f51e968"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"39925a756f4fd18a55371594ea4e08dc0834d6bf","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch uses a more specific string to match"},{"line_number":10,"context_line":"the ring name in recon cli."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Almost all the places in the project where need "},{"line_number":13,"context_line":"to get the suffix (like ring.gz, ts, data and .etc) "},{"line_number":14,"context_line":"will include the \u0027.\u0027 in front, if a file named "},{"line_number":15,"context_line":"\u0027obejcts.sring.gz\u0027 in the swift_dir will be added "},{"line_number":16,"context_line":"in the ring_names, which is not what we want."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ida659fa71585f9b0cf36da75b58b28e6a25533df"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dfeb2761_85705dde","line":15,"range":{"start_line":12,"start_character":0,"end_line":15,"end_character":50},"updated":"2017-04-03 04:32:47.000000000","message":"nits) trailing white spaces found for each line.","commit_id":"c5d0dff55807c813a9be964ded694dd579f7adfa"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"9d2fb55833e6a493ef032f946765f3d65eb4614a","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Almost all the places in the project where need to get the"},{"line_number":13,"context_line":"suffix (like ring.gz, ts, data and .etc) will include the \u0027.\u0027"},{"line_number":14,"context_line":"in front, if a file named \u0027obejct.sring.gz\u0027 in the swift_dir"},{"line_number":15,"context_line":"will be added in the ring_names, which is not what we want."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1680704"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bff0334d_8f3c6fe1","line":14,"range":{"start_line":14,"start_character":27,"end_line":14,"end_character":33},"updated":"2017-04-12 02:48:05.000000000","message":"Is this really the name? I would not normally harp on spelling, but in this case we specifically want to deal with invalid names, so it becomes important. Please verify.","commit_id":"1db9c06062f16a34c0a2fd068388d872f2f87205"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5d86e3099daf9b51c06f23ce2c60f78573b4a35a","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Almost all the places in the project where need to get the"},{"line_number":13,"context_line":"suffix (like ring.gz, ts, data and .etc) will include the \u0027.\u0027"},{"line_number":14,"context_line":"in front, if a file named \u0027obejct.sring.gz\u0027 in the swift_dir"},{"line_number":15,"context_line":"will be added in the ring_names, which is not what we want."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: Kota Tsuyuzaki \u003ctsuyuzaki.kota@lab.ntt.co.jp\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9ff52f3f_94efb286","line":14,"range":{"start_line":14,"start_character":27,"end_line":14,"end_character":33},"updated":"2017-04-13 04:53:14.000000000","message":"ah, Pete pointed out the name seems to be \u0027object\u0027 instead of \u0027obejct\u0027. Hmm... we need also \u0027object\u0027 prefix for the ring name so that at the meaning of that, the commit message is wrong. I think probably we can assume it as typo and the test can be helpful what\u0027s changed with this patch though.","commit_id":"b608c2f4f7b67c8b6f9ffe28c229b8488e10c3d3"}],"swift/cli/recon.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"e4613618aad85a9fdc051b2d3e71504435c5615c","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        if self.server_type \u003d\u003d \u0027object\u0027:"},{"line_number":228,"context_line":"            for ring_name in os.listdir(swift_dir):"},{"line_number":229,"context_line":"                if ring_name.startswith(\u0027object\u0027) and \\"},{"line_number":230,"context_line":"                        ring_name.endswith(\u0027.ring.gz\u0027):"},{"line_number":231,"context_line":"                    ring_names.add(ring_name)"},{"line_number":232,"context_line":"        else:"},{"line_number":233,"context_line":"            ring_name \u003d \u0027%s.ring.gz\u0027 % self.server_type"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_18cd125d","line":230,"updated":"2017-03-24 03:38:31.000000000","message":"I\u0027m not saying this isn\u0027t correct, but is there an issue this is actually fixing? the .ring.gz is more specific, but just wondering what caused this to be an issue and so a patch?","commit_id":"332c3ea972e5a4e023a60c489387ecfb1f51e968"}],"test/unit/cli/test_recon.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5ff35fe47a39787a23e7792ed68e61117a3c343a","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.tmpfile_name3 \u003d os.path.join("},{"line_number":159,"context_line":"            self.swift_dir, self.ring_name + \u0027.sring.gz\u0027)"},{"line_number":160,"context_line":"        self.tmpfile_name4 \u003d os.path.join("},{"line_number":161,"context_line":"            self.swift_dir, self.ring_name2 + \u0027.sring.gz\u0027)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        utils.HASH_PATH_SUFFIX \u003d \u0027endcap\u0027"},{"line_number":164,"context_line":"        utils.HASH_PATH_PREFIX \u003d \u0027startcap\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_6d206249","line":161,"updated":"2017-04-10 05:27:43.000000000","message":"Those file names and the ring at L183 and L196 are never used in the test case. When I tried to remove and run all tests in this file, nothing failed so they are unnecessary changes.","commit_id":"4792a30326a2727925627f6dcda51ddc0afef8e3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5ff35fe47a39787a23e7792ed68e61117a3c343a","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            output \u003d stdout.getvalue()"},{"line_number":396,"context_line":"            expected \u003d \u00270/1 hosts matched\u0027"},{"line_number":397,"context_line":"            found \u003d False"},{"line_number":398,"context_line":"            for line in output.splitlines():"},{"line_number":399,"context_line":"                if \u0027!!\u0027 in line:"},{"line_number":400,"context_line":"                    self.assertIn(\u0027doesn\\\u0027t match on disk md5sum\u0027, line)"},{"line_number":401,"context_line":"                if expected in line:"},{"line_number":402,"context_line":"                    found \u003d True"},{"line_number":403,"context_line":"            if not found:"},{"line_number":404,"context_line":"                self.fail(\u0027Did not find expected substring %r \u0027"},{"line_number":405,"context_line":"                          \u0027in output:\\n%s\u0027 % (expected, output))"}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_6dcaa24e","line":402,"range":{"start_line":398,"start_character":0,"end_line":402,"end_character":32},"updated":"2017-04-10 05:27:43.000000000","message":"This test looks an implicit test a bit to me. The rings created at first L369 will be ignored as the files being checked with remote. The \"expected\" can be found if the ring was picked up to the files to assert and then, the md5 was wrong. Actually, it doesn\u0027t look to have the direct assertion yet right now but... for instance, check the existence of\n\n print(\"-\u003e On disk %s md5sum: %s\" % (ring_file, ring_sum))\n\nmessage with verbose mode. Obviously, the message should not be found if the rings are ignored.\n\n\nOff-topic:\nit should be another patch, but if we add the local ring md5 in the error message, it could be worth even if it\u0027s None that means no ring file at local.","commit_id":"4792a30326a2727925627f6dcda51ddc0afef8e3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5ff35fe47a39787a23e7792ed68e61117a3c343a","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                self.fail(\u0027Did not find expected substring %r \u0027"},{"line_number":405,"context_line":"                          \u0027in output:\\n%s\u0027 % (expected, output))"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        # Cleanup"},{"line_number":408,"context_line":"        self.recon_instance.server_type \u003d \u0027object\u0027"},{"line_number":409,"context_line":"        for ring in (\u0027object\u0027, \u0027object-1\u0027):"},{"line_number":410,"context_line":"            os.remove(os.path.join(self.swift_dir, \"%s.sring.gz\" % ring))"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def test_quarantine_check(self):"},{"line_number":413,"context_line":"        hosts \u003d [(\u0027127.0.0.1\u0027, 6010), (\u0027127.0.0.1\u0027, 6020),"}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_6d93c25c","line":410,"range":{"start_line":407,"start_character":0,"end_line":410,"end_character":73},"updated":"2017-04-10 05:27:43.000000000","message":"Those look redundant because tearDown calls rmtree for self.swift_dir so the dir and the files included in the dir should be deleted always.","commit_id":"4792a30326a2727925627f6dcda51ddc0afef8e3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"e48e138cb12bf03f164f080c1a6c492ee405f532","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                              (\u0027127.0.0.2\u0027, 10004)]), ips)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def test_get_error_ringnames(self):"},{"line_number":277,"context_line":"        self._make_object_rings(valid\u003dFalse)"},{"line_number":278,"context_line":"        mock_hash \u003d mock.MagicMock()"},{"line_number":279,"context_line":"        hosts \u003d [(\"127.0.0.1\", \"8080\")]"},{"line_number":280,"context_line":"        self.recon_instance.verbose \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"bff0334d_ef789b90","line":277,"updated":"2017-04-12 02:13:41.000000000","message":"why not just\n\n with open(os.path.join(self.swift_dir, \u0027object.sring.gz\u0027), \u0027w\u0027) as f:\n    pass\n\n?\n\nthe ring file need not being correct ring format so that we don\u0027t have to inject the valid\u003dTrue/False arg for existing _make_object_rings.\n\nI make a candidate here[1]. If you like it, please squash up it into this patch.\n\n1: https://review.openstack.org/455875","commit_id":"1db9c06062f16a34c0a2fd068388d872f2f87205"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6be184f6b6de4db0bbd9cdd8518db160e3d19c7b","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            with open(ring_path, \u0027w\u0027):"},{"line_number":274,"context_line":"                pass"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        mock_hash \u003d mock.MagicMock()"},{"line_number":277,"context_line":"        hosts \u003d [(\"127.0.0.1\", \"8080\")]"},{"line_number":278,"context_line":"        self.recon_instance.verbose \u003d True"},{"line_number":279,"context_line":"        self.recon_instance.server_type \u003d \u0027object\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ff52f3f_4baf4894","line":276,"updated":"2017-04-13 06:35:43.000000000","message":"NIT: There is no reason to have mock_hash definded. remove it here and on line 282:\n\n  mock.patch(\u0027swift.common.utils.md5\u0027):","commit_id":"cbb134d0f2a93480f8617d7183020a8c3f6e13f3"}]}
