)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3aab94bd6c2eed296df26953f30b143d9fd6e3c3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lg.yue \u003cyuelongguang@letv.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-07-12 15:33:22 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"dd metadata length check to volume-manage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"api os-volume-manage allows user to create volume with metadata,"},{"line_number":10,"context_line":"but it does not do metadata length limit. This patch does length"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_40fec5ae","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":2},"updated":"2016-07-12 07:39:27.000000000","message":"Add?","commit_id":"19f37b08abb6e16c1b73614cadd3df84dec30c0e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"28615d6cc81e2aa99b6fa54402f9f78619619102","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lg.yue \u003cyuelongguang@letv.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-01 17:55:08 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add metadata length check to volume-manage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"api os-volume-manage allows user to create volume with metadata,"},{"line_number":10,"context_line":"but it does not do metadata length limit. This patch does length"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"bacf61ea_0cf165cd","line":7,"updated":"2016-08-01 17:07:26.000000000","message":"Add","commit_id":"e5c8fc4b909a6b2e4c6c3801491565b3d61d17c9"}],"cinder/api/contrib/volume_manage.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3aab94bd6c2eed296df26953f30b143d9fd6e3c3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        kwargs[\u0027availability_zone\u0027] \u003d volume.get(\u0027availability_zone\u0027, None)"},{"line_number":140,"context_line":"        kwargs[\u0027bootable\u0027] \u003d utils.get_bool_param(\u0027bootable\u0027, volume)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        utils.check_metadata_properties(kwargs[\u0027metadata\u0027])"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            new_volume \u003d self.volume_api.manage_existing(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_e0237156","line":142,"updated":"2016-07-12 07:39:27.000000000","message":"Please add a unit test to cover this case.\n\nSee https://github.com/openstack/cinder/blob/master/HACKING.rst for more details.","commit_id":"19f37b08abb6e16c1b73614cadd3df84dec30c0e"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"bed306f29c910d008cfe88065059f43a6736ece6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        kwargs[\u0027availability_zone\u0027] \u003d volume.get(\u0027availability_zone\u0027, None)"},{"line_number":140,"context_line":"        kwargs[\u0027bootable\u0027] \u003d utils.get_bool_param(\u0027bootable\u0027, volume)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        utils.check_metadata_properties(kwargs[\u0027metadata\u0027])"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            new_volume \u003d self.volume_api.manage_existing(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_5b1b5473","line":142,"in_reply_to":"1aa78d24_e0237156","updated":"2016-07-12 07:53:28.000000000","message":"The test here[1] doesn\u0027t cover metadata parameter.\nSo we can add a test for it.\n[1] https://github.com/openstack/cinder/blob/master/cinder/tests/unit/api/contrib/test_volume_manage.py","commit_id":"19f37b08abb6e16c1b73614cadd3df84dec30c0e"}],"cinder/tests/unit/api/contrib/test_volume_manage.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"b79e47a25e2cb5a6b1d0cb43f1a8c1de12e57ccd","unresolved":false,"context_lines":[{"line_number":335,"context_line":"    @mock.patch("},{"line_number":336,"context_line":"        \u0027cinder.api.openstack.wsgi.Controller.validate_name_and_description\u0027)"},{"line_number":337,"context_line":"    def test_manage_volume_metadata_fail_size(self, mock_validate, mock_api_manage):"},{"line_number":338,"context_line":"        \"\"\"Test successful manage volume execution."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        Tests for correct operation when valid arguments are passed in the"},{"line_number":341,"context_line":"        request body.  We ensure that cinder.volume.api.API.manage_existing got"},{"line_number":342,"context_line":"        called with the correct arguments, and that we return the correct HTTP"},{"line_number":343,"context_line":"        code to the caller."},{"line_number":344,"context_line":"        \"\"\""},{"line_number":345,"context_line":"        vol_id \u003d \u0027ffffffff-0000-ffff-0000-ffffffffffff\u0027"},{"line_number":346,"context_line":"        errmsg \u003d \".*Invalid metadata size:.*\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_717f4217","line":343,"range":{"start_line":338,"start_character":11,"end_line":343,"end_character":27},"updated":"2016-07-12 13:10:43.000000000","message":"This comment is not right.","commit_id":"ad11a356115fb76d10d0cfe60e7e06e1a88651ec"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"b79e47a25e2cb5a6b1d0cb43f1a8c1de12e57ccd","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    @mock.patch("},{"line_number":361,"context_line":"        \u0027cinder.api.openstack.wsgi.Controller.validate_name_and_description\u0027)"},{"line_number":362,"context_line":"    def test_manage_volume_metadata_fail_empty_key(self, mock_validate, mock_api_manage):"},{"line_number":363,"context_line":"        \"\"\"Test successful manage volume execution."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        Tests for correct operation when valid arguments are passed in the"},{"line_number":366,"context_line":"        request body.  We ensure that cinder.volume.api.API.manage_existing got"},{"line_number":367,"context_line":"        called with the correct arguments, and that we return the correct HTTP"},{"line_number":368,"context_line":"        code to the caller."},{"line_number":369,"context_line":"        \"\"\""},{"line_number":370,"context_line":"        vol_id \u003d \u0027ffffffff-0000-ffff-0000-ffffffffffff\u0027"},{"line_number":371,"context_line":"        errmsg \u003d \".*Invalid metadata:.*\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_b1a40aa6","line":368,"range":{"start_line":363,"start_character":11,"end_line":368,"end_character":27},"updated":"2016-07-12 13:10:43.000000000","message":"ditto.","commit_id":"ad11a356115fb76d10d0cfe60e7e06e1a88651ec"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"d30921a95ddb6fd19a51187d9a41e4e70a17b5b5","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            marker\u003dNone, offset\u003d0, sort_dirs\u003d[\u0027desc\u0027],"},{"line_number":331,"context_line":"            sort_keys\u003d[\u0027reference\u0027])"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    @mock.patch(\u0027cinder.volume.api.API.manage_existing\u0027, wraps\u003dapi_manage)"},{"line_number":334,"context_line":"    @mock.patch("},{"line_number":335,"context_line":"        \u0027cinder.api.openstack.wsgi.Controller.validate_name_and_description\u0027)"},{"line_number":336,"context_line":"    def test_manage_volume_metadata_fail_too_long("}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_bdf5d083","line":333,"range":{"start_line":333,"start_character":0,"end_line":333,"end_character":74},"updated":"2016-07-13 07:57:45.000000000","message":"It\u0027s not needed anymore as the exception has already been raised before calling this method.","commit_id":"93f755597956ccafa87f2754c18cbc47c59229c0"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"d30921a95ddb6fd19a51187d9a41e4e70a17b5b5","unresolved":false,"context_lines":[{"line_number":354,"context_line":"    @mock.patch(\u0027cinder.volume.api.API.manage_existing\u0027, wraps\u003dapi_manage)"},{"line_number":355,"context_line":"    @mock.patch("},{"line_number":356,"context_line":"        \u0027cinder.api.openstack.wsgi.Controller.validate_name_and_description\u0027)"},{"line_number":357,"context_line":"    def test_manage_volume_metadata_fail_empty_key("},{"line_number":358,"context_line":"            self, mock_validate, mock_api_manage):"},{"line_number":359,"context_line":"        \"\"\"Test InvalidVolumeMetadata exception"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_9d3f3486","line":357,"range":{"start_line":357,"start_character":8,"end_line":357,"end_character":50},"updated":"2016-07-13 07:57:45.000000000","message":"nit: You\u0027d better to use ddt lib instead, just like the following case does.\nhttps://github.com/openstack/cinder/blob/master/cinder/tests/unit/api/contrib/test_types_manage.py#L345","commit_id":"93f755597956ccafa87f2754c18cbc47c59229c0"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f141700bb9c9ebd5eaaddbd31ce127f7e4cbf63","unresolved":false,"context_lines":[{"line_number":336,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":337,"context_line":"              )"},{"line_number":338,"context_line":"    def test_manage_volume_metadata_fail_too_long(self, value):"},{"line_number":339,"context_line":"        \"\"\"Test InvalidVolumeMetadataSize exception"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"            when illegal metadata parameters are provided"},{"line_number":342,"context_line":"        \"\"\""},{"line_number":343,"context_line":"        vol_id \u003d \u0027ffffffff-0000-ffff-0000-ffffffffffff\u0027"},{"line_number":344,"context_line":"        errmsg \u003d \".*Invalid metadata size:.*\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_afebc8a2","line":341,"range":{"start_line":339,"start_character":8,"end_line":341,"end_character":57},"updated":"2016-07-13 12:57:11.000000000","message":"Please fix this doc comment or remove it.","commit_id":"452f46d3078d2c5b14cd291e3ef2c486aea14422"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f141700bb9c9ebd5eaaddbd31ce127f7e4cbf63","unresolved":false,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"            when illegal metadata parameters are provided"},{"line_number":342,"context_line":"        \"\"\""},{"line_number":343,"context_line":"        vol_id \u003d \u0027ffffffff-0000-ffff-0000-ffffffffffff\u0027"},{"line_number":344,"context_line":"        errmsg \u003d \".*Invalid metadata size:.*\""},{"line_number":345,"context_line":"        body \u003d {\u0027volume\u0027: {\u0027host\u0027: \u0027host_ok\u0027,"},{"line_number":346,"context_line":"                           \u0027ref\u0027: \u0027fake_ref\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_0f393ca4","line":343,"updated":"2016-07-13 12:57:11.000000000","message":"Use the volume ID defined in fake_constants.\n\nBtw, is it used anywhere in this test?","commit_id":"452f46d3078d2c5b14cd291e3ef2c486aea14422"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f141700bb9c9ebd5eaaddbd31ce127f7e4cbf63","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                           \u0027ref\u0027: \u0027fake_ref\u0027,"},{"line_number":347,"context_line":"                           \"metadata\": value}}"},{"line_number":348,"context_line":"        res \u003d self._get_resp_post(body)"},{"line_number":349,"context_line":"        self.assertEqual(400, res.status_int, res)"},{"line_number":350,"context_line":"        self.assertRegexpMatches(str(res.body), errmsg)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    @ddt.data({\u0027\u0027: \u0027a\u0027})"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_cf745437","line":349,"updated":"2016-07-13 12:57:11.000000000","message":"The third  argument should be a message and is optional.","commit_id":"452f46d3078d2c5b14cd291e3ef2c486aea14422"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f141700bb9c9ebd5eaaddbd31ce127f7e4cbf63","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                           \"metadata\": value}}"},{"line_number":348,"context_line":"        res \u003d self._get_resp_post(body)"},{"line_number":349,"context_line":"        self.assertEqual(400, res.status_int, res)"},{"line_number":350,"context_line":"        self.assertRegexpMatches(str(res.body), errmsg)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    @ddt.data({\u0027\u0027: \u0027a\u0027})"},{"line_number":353,"context_line":"    def test_manage_volume_metadata_fail_empty_key(self, value):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_4fe504da","line":350,"updated":"2016-07-13 12:57:11.000000000","message":"I don\u0027t think this is needed. If we remove this, we can add {\u0027\u0027: \u0027a\u0027} to ddt.data and remove the next test and avoid some duplication.\n\nAlso, rename the method to test_manage_volume_with_invalid_metadata.","commit_id":"452f46d3078d2c5b14cd291e3ef2c486aea14422"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"36f80a6455f58fc9ee35c44168d827551111526e","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                           \"metadata\": value}}"},{"line_number":348,"context_line":"        res \u003d self._get_resp_post(body)"},{"line_number":349,"context_line":"        self.assertEqual(400, res.status_int, res)"},{"line_number":350,"context_line":"        self.assertRegexpMatches(str(res.body), errmsg)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    @ddt.data({\u0027\u0027: \u0027a\u0027})"},{"line_number":353,"context_line":"    def test_manage_volume_metadata_fail_empty_key(self, value):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_265cf9ef","line":350,"in_reply_to":"1aa78d24_4fe504da","updated":"2016-07-14 03:49:15.000000000","message":"This comment is not addressed in patch set 8.......","commit_id":"452f46d3078d2c5b14cd291e3ef2c486aea14422"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7f733ee3e59b329b4588dff6f55317603a1962b2","unresolved":false,"context_lines":[{"line_number":336,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":337,"context_line":"              {\u0027\u0027: \u0027a\u0027},"},{"line_number":338,"context_line":"              )"},{"line_number":339,"context_line":"    def test_manage_volume_metadata_fail_too_long(self, value):"},{"line_number":340,"context_line":"        body \u003d {\u0027volume\u0027: {\u0027host\u0027: \u0027host_ok\u0027,"},{"line_number":341,"context_line":"                           \u0027ref\u0027: \u0027fake_ref\u0027,"},{"line_number":342,"context_line":"                           \"metadata\": value}}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_6680c1f8","line":339,"range":{"start_line":339,"start_character":40,"end_line":339,"end_character":49},"updated":"2016-07-14 04:00:37.000000000","message":"And this name should be updated.","commit_id":"c4e6d8a41f841a13a5f6bd3174c2960c1138414f"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"98737bf65e7575538a767a2fa4ec0fa13b43a322","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    from urllib import urlencode"},{"line_number":21,"context_line":"except ImportError:"},{"line_number":22,"context_line":"    from urllib.parse import urlencode"},{"line_number":23,"context_line":"import ddt"},{"line_number":24,"context_line":"import webob"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_b5fd760a","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":10},"updated":"2016-07-15 02:33:09.000000000","message":"Oh, I forget this:\n    We should import lib in alphabetic order.\n    So, I think this should be placed before \"import mock\".","commit_id":"5bfe7554531ab5d9817f5cc5eb5063d825227a10"}]}
