)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7568be451d24d79c5df4525323233067e09a9768","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     wuyuting \u003cwytdahu@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-02-13 14:28:48 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Admin extend tenant\u0027s volume but change self quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When admin extend a tenant\u0027s volume, the tenant\u0027s"},{"line_number":10,"context_line":"quota-usage doesn\u0027t change, but admin self quota-usage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_a0f15e03","line":7,"updated":"2015-02-13 16:08:52.000000000","message":"I don\u0027t think this really matches the change.  Do you mean:\n\"Admin extend tenant\u0027s volume but quota usage doesn\u0027t change\" ?","commit_id":"3f67262cc5a827ae7e9b92bb22ce58069b125862"}],"cinder/tests/test_volume.py":[{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"b5a53a3b719806a986ef729209d72000f4c16ea3","unresolved":false,"context_lines":[{"line_number":3470,"context_line":"        # Test driver success"},{"line_number":3471,"context_line":"        with mock.patch.object(self.volume.driver,"},{"line_number":3472,"context_line":"                               \u0027extend_volume\u0027) as extend_volume:"},{"line_number":3473,"context_line":"            with mock.patch.object(QUOTAS, \u0027commit\u0027) as quotas_commit:"},{"line_number":3474,"context_line":"                extend_volume.return_value \u003d fake_extend"},{"line_number":3475,"context_line":"                volume[\u0027status\u0027] \u003d \u0027extending\u0027"},{"line_number":3476,"context_line":"                self.volume.extend_volume(self.context, volume[\u0027id\u0027], \u00274\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ab451fb_04876110","line":3473,"updated":"2015-04-17 13:41:00.000000000","message":"I believe we can use mock-decorator instead of nested with. It will cause fewer changes.","commit_id":"601ef62ca26a0f5866867549e9053cdef886fc76"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f6ac2fc35f2c557a47cdf0d7fed16d98374e044e","unresolved":false,"context_lines":[{"line_number":3477,"context_line":"                                          fake_reservations)"},{"line_number":3478,"context_line":"                volume \u003d db.volume_get(context.get_admin_context(),"},{"line_number":3479,"context_line":"                                       volume[\u0027id\u0027])"},{"line_number":3480,"context_line":"                self.assertEqual(volume[\u0027size\u0027], 4)"},{"line_number":3481,"context_line":"                self.assertEqual(volume[\u0027status\u0027], \u0027available\u0027)"},{"line_number":3482,"context_line":"                quotas_commit.assert_called_with("},{"line_number":3483,"context_line":"                    self.context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_81eeba20","line":3480,"updated":"2015-04-07 07:30:25.000000000","message":"Could you swap the positions for volume[\u0027size\u0027] and 4? The first param is supposed to be expected and the second is the result.","commit_id":"601ef62ca26a0f5866867549e9053cdef886fc76"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f6ac2fc35f2c557a47cdf0d7fed16d98374e044e","unresolved":false,"context_lines":[{"line_number":3478,"context_line":"                volume \u003d db.volume_get(context.get_admin_context(),"},{"line_number":3479,"context_line":"                                       volume[\u0027id\u0027])"},{"line_number":3480,"context_line":"                self.assertEqual(volume[\u0027size\u0027], 4)"},{"line_number":3481,"context_line":"                self.assertEqual(volume[\u0027status\u0027], \u0027available\u0027)"},{"line_number":3482,"context_line":"                quotas_commit.assert_called_with("},{"line_number":3483,"context_line":"                    self.context,"},{"line_number":3484,"context_line":"                    [\u0027RESERVATION\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_61f3b60b","line":3481,"updated":"2015-04-07 07:30:25.000000000","message":"The same as the above comment.","commit_id":"601ef62ca26a0f5866867549e9053cdef886fc76"}],"cinder/tests/volume/test_api.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6e26dc4ff1dcf194af5210500addb72230e947d3","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# Copyright 2012 Josh Durgin"},{"line_number":3,"context_line":"# Copyright 2013 Canonical Ltd."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_f74b39ae","line":2,"updated":"2015-02-13 04:22:14.000000000","message":"This is a new file. I don\u0027t think these copyrights are correct.","commit_id":"560d8f9a6f869d7215dbadf8cbefa4296c2699fa"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"adae79430aa01ab4dac232e5a0f7f8a26606c1ae","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# Copyright (c) 2015 wuyuting"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_3cdbe022","line":1,"updated":"2015-02-13 14:37:14.000000000","message":"Please remove this blank line if you end up doing another update.","commit_id":"3f67262cc5a827ae7e9b92bb22ce58069b125862"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"9008c465b3ec2642e067aac2cc8859b9ae333bdc","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class VolumeApiTestCase(test.TestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(VolumeApiTestCase, self).setUp()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        with mock.patch.object(api.API, \u0027__init__\u0027, return_value\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_41282433","line":27,"updated":"2015-02-18 07:17:34.000000000","message":"We have these kind of tests in cinder.tests.test_volume under VolumeTestCase","commit_id":"dfbf4d93c446aaa0f13b4d43f127feb0caca4dc9"}],"cinder/volume/api.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1a99de9dcadff4be4c63e171e5d9130b1674423f","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"        if volume[\u0027status\u0027] !\u003d \u0027available\u0027:"},{"line_number":1017,"context_line":"            msg \u003d _(\u0027Volume status must be available to extend.\u0027)"},{"line_number":1018,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1019,"context_line":"        if context.project_id !\u003d volume[\u0027project_id\u0027]:"},{"line_number":1020,"context_line":"            project_id \u003d volume[\u0027project_id\u0027]"},{"line_number":1021,"context_line":"        else:"},{"line_number":1022,"context_line":"            project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_3050db31","line":1019,"updated":"2015-02-18 08:47:45.000000000","message":"Can we replace this if..else with\n\nproject_id \u003d volume[\u0027project_id\u0027]","commit_id":"dfbf4d93c446aaa0f13b4d43f127feb0caca4dc9"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a284d8c3edd177fa132f71b5dd50d4668c7502e3","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"        if volume[\u0027status\u0027] !\u003d \u0027available\u0027:"},{"line_number":1017,"context_line":"            msg \u003d _(\u0027Volume status must be available to extend.\u0027)"},{"line_number":1018,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1019,"context_line":"        if context.project_id !\u003d volume[\u0027project_id\u0027]:"},{"line_number":1020,"context_line":"            project_id \u003d volume[\u0027project_id\u0027]"},{"line_number":1021,"context_line":"        else:"},{"line_number":1022,"context_line":"            project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_69098194","line":1019,"in_reply_to":"da86d52c_3050db31","updated":"2015-02-18 13:57:36.000000000","message":"Good catch!\n\nIf context.project_id !\u003d volume[\u0027project_id\u0027] then volume[\u0027project_id\u0027] is used.\n\nIf context.project_id \u003d\u003d volume[\u0027project_id\u0027] then project_id is effectively still set to the value of volume[\u0027project_id\u0027].\n\nSo in either if/else case whatever value is in volume[\u0027project_id\u0027] is what ends up getting passed in to the QUOTAS.reserve() call below. \n\nPlease remove this if/else block and just pass project_id\u003dvolume[\u0027project_id\u0027] in the call below. Unless I\u0027m missing something here.","commit_id":"dfbf4d93c446aaa0f13b4d43f127feb0caca4dc9"}],"cinder/volume/manager.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a284d8c3edd177fa132f71b5dd50d4668c7502e3","unresolved":false,"context_lines":[{"line_number":1338,"context_line":"                                      {\u0027status\u0027: \u0027error_extending\u0027})"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"        volume \u003d self.db.volume_get(context, volume_id)"},{"line_number":1341,"context_line":"        if context.project_id !\u003d volume[\u0027project_id\u0027]:"},{"line_number":1342,"context_line":"            project_id \u003d volume[\u0027project_id\u0027]"},{"line_number":1343,"context_line":"        else:"},{"line_number":1344,"context_line":"            project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_c93eed28","line":1341,"updated":"2015-02-18 13:57:36.000000000","message":"Same here. Remove if/else block and just pass volume[\u0027project_id\u0027] into the QUOTAS calls below.","commit_id":"dfbf4d93c446aaa0f13b4d43f127feb0caca4dc9"}]}
