)]}'
{"cinder/tests/test_nfs.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d0080e48ad19d66d3c16999aef4481500a1d7e93","unresolved":false,"context_lines":[{"line_number":643,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":644,"context_line":"                                       return_value\u003dTrue):"},{"line_number":645,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":646,"context_line":"                                           return_value\u003dTrue):"},{"line_number":647,"context_line":"                        drv.extend_volume(volume, newSize)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"                        resize.assert_called_once_with(path, newSize)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_7aa64cc2","line":646,"updated":"2014-06-13 22:07:35.000000000","message":"These nested with statements could be put in one contextlib.nested(), making it more readable.  Also, should some of these mocked calls be checked if it has been called, e.g. local_path?","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"40b56cd5689d860a9376635dd158915448c05f68","unresolved":false,"context_lines":[{"line_number":643,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":644,"context_line":"                                       return_value\u003dTrue):"},{"line_number":645,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":646,"context_line":"                                           return_value\u003dTrue):"},{"line_number":647,"context_line":"                        drv.extend_volume(volume, newSize)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"                        resize.assert_called_once_with(path, newSize)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_ecbc5cb7","line":646,"in_reply_to":"1ae5cdf2_7aa64cc2","updated":"2014-06-15 11:25:54.000000000","message":"From docs.python.org\u0027s contextlib.nested() documentation: Deprecated since version 2.7\n\nhttps://docs.python.org/2/library/contextlib.html","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"8c0d1e20147aa923edb414fdb84f77fa8df0d4ac","unresolved":false,"context_lines":[{"line_number":643,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":644,"context_line":"                                       return_value\u003dTrue):"},{"line_number":645,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":646,"context_line":"                                           return_value\u003dTrue):"},{"line_number":647,"context_line":"                        drv.extend_volume(volume, newSize)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"                        resize.assert_called_once_with(path, newSize)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_67ace79f","line":646,"in_reply_to":"1ae5cdf2_ecbc5cb7","updated":"2014-06-15 15:21:48.000000000","message":"Ok. You could use decorators instead, e.g.\n@mock.patch.object(image_utils, \u0027resize_image\u0027)","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d0080e48ad19d66d3c16999aef4481500a1d7e93","unresolved":false,"context_lines":[{"line_number":659,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":660,"context_line":"                                       return_value\u003dTrue):"},{"line_number":661,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":662,"context_line":"                                           return_value\u003dFalse):"},{"line_number":663,"context_line":"                        self.assertRaises(exception.ExtendVolumeError,"},{"line_number":664,"context_line":"                                          drv.extend_volume, volume, 2)"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_da7da01d","line":662,"updated":"2014-06-13 22:07:35.000000000","message":"Ditto","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"40b56cd5689d860a9376635dd158915448c05f68","unresolved":false,"context_lines":[{"line_number":659,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":660,"context_line":"                                       return_value\u003dTrue):"},{"line_number":661,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":662,"context_line":"                                           return_value\u003dFalse):"},{"line_number":663,"context_line":"                        self.assertRaises(exception.ExtendVolumeError,"},{"line_number":664,"context_line":"                                          drv.extend_volume, volume, 2)"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_0cdfc80d","line":662,"in_reply_to":"1ae5cdf2_da7da01d","updated":"2014-06-15 11:25:54.000000000","message":"See above","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d0080e48ad19d66d3c16999aef4481500a1d7e93","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":675,"context_line":"                                       return_value\u003dFalse):"},{"line_number":676,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":677,"context_line":"                                           return_value\u003dFalse):"},{"line_number":678,"context_line":"                        self.assertRaises(exception.ExtendVolumeError,"},{"line_number":679,"context_line":"                                          drv.extend_volume, volume, 2)"},{"line_number":680,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_fa789c2c","line":677,"updated":"2014-06-13 22:07:35.000000000","message":"Ditto","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"40b56cd5689d860a9376635dd158915448c05f68","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                with mock.patch.object(drv, \u0027_is_share_eligible\u0027,"},{"line_number":675,"context_line":"                                       return_value\u003dFalse):"},{"line_number":676,"context_line":"                    with mock.patch.object(drv, \u0027_is_file_size_equal\u0027,"},{"line_number":677,"context_line":"                                           return_value\u003dFalse):"},{"line_number":678,"context_line":"                        self.assertRaises(exception.ExtendVolumeError,"},{"line_number":679,"context_line":"                                          drv.extend_volume, volume, 2)"},{"line_number":680,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_2ce2c4d4","line":677,"in_reply_to":"1ae5cdf2_fa789c2c","updated":"2014-06-15 11:25:54.000000000","message":"See above","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"a0909d5e0dd5610d469b8d62577fe203ef6553ee","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        with mock.patch.object(image_utils, \u0027qemu_img_info\u0027,"},{"line_number":756,"context_line":"                               return_value\u003ddata):"},{"line_number":757,"context_line":"            self.assertFalse(drv._is_file_size_equal(path, size))"},{"line_number":758,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_5da905dc","line":758,"updated":"2014-06-18 05:45:52.000000000","message":"needless blank line","commit_id":"9ad246acf223c7610635e532fd1e7c7fd2a77894"}],"cinder/volume/drivers/nfs.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9c8e479709fc09d17d8e85ea0dcd6e9d98dbea61","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":576,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":577,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":578,"context_line":"        LOG.debug(_(\u0027Checking file for resize\u0027))"},{"line_number":579,"context_line":"        if not self._is_file_size_equal(path, new_size):"},{"line_number":580,"context_line":"            LOG.info(_(\u0027Resizing file to %sG\u0027), new_size)"},{"line_number":581,"context_line":"            image_utils.resize_image(path, new_size)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B7gs%3D","line":578,"updated":"2014-03-21 15:58:49.000000000","message":"Suggest ending this with \u0027.\u0027 or \u0027...\u0027","commit_id":"661247d39ffca40ed41caca72817297fdd741720"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9c8e479709fc09d17d8e85ea0dcd6e9d98dbea61","unresolved":false,"context_lines":[{"line_number":577,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":578,"context_line":"        LOG.debug(_(\u0027Checking file for resize\u0027))"},{"line_number":579,"context_line":"        if not self._is_file_size_equal(path, new_size):"},{"line_number":580,"context_line":"            LOG.info(_(\u0027Resizing file to %sG\u0027), new_size)"},{"line_number":581,"context_line":"            image_utils.resize_image(path, new_size)"},{"line_number":582,"context_line":"            if not self._is_file_size_equal(path, new_size):"},{"line_number":583,"context_line":"                raise exception.InvalidResults("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B7gk%3D","line":580,"updated":"2014-03-21 15:58:49.000000000","message":"Same comment as above.","commit_id":"661247d39ffca40ed41caca72817297fdd741720"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e44240726361728d9301db55f6da7b66a88a266b","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":576,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":577,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":578,"context_line":"        LOG.debug(_(\u0027Checking file for resize...\u0027))"},{"line_number":579,"context_line":"        if not self._is_file_size_equal(path, new_size):"},{"line_number":580,"context_line":"            LOG.info(_(\u0027Resizing file to %sG...\u0027), new_size)"},{"line_number":581,"context_line":"            image_utils.resize_image(path, new_size)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BsWw%3D","line":578,"updated":"2014-03-25 01:37:58.000000000","message":"I don\u0027t believe you need this check. It is already done in the cinder.volume.api.extend() method:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/api.py#L738-L744","commit_id":"637719a293c0f56bc71f1a916ab3e93871f7ee59"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"0b416003f26cb5e8ae11e085462ab6c5dcc507cd","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":394,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":395,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":396,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":397,"context_line":"        LOG.info(_(\u0027Resizing file to %sG...\u0027), new_size)"},{"line_number":398,"context_line":"        image_utils.resize_image(path, new_size)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_fa1144ad","line":395,"updated":"2014-05-01 09:51:00.000000000","message":"Don\u0027t we usually log uuid of a volume so that it\u0027s unique?","commit_id":"0744cbc11b6988f123f5daff21ee8a23dbe3cc35"},{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"c97a08520f5a9538b9bfce9e94c39b7c676b557f","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":394,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":395,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":396,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":397,"context_line":"        LOG.info(_(\u0027Resizing file to %sG...\u0027), new_size)"},{"line_number":398,"context_line":"        image_utils.resize_image(path, new_size)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_906814bc","line":395,"in_reply_to":"9ad9bd40_ad86a3b7","updated":"2014-05-01 15:24:55.000000000","message":"Yes, I have a fixed patchset for this sitting on my box, will have to submit tonight from home as gerrit update borked the corp firewall rules.","commit_id":"0744cbc11b6988f123f5daff21ee8a23dbe3cc35"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"60641eaa2f4e0e7e53204fd394ee0bad99f48bc8","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":394,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":395,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":396,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":397,"context_line":"        LOG.info(_(\u0027Resizing file to %sG...\u0027), new_size)"},{"line_number":398,"context_line":"        image_utils.resize_image(path, new_size)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_ad86a3b7","line":395,"in_reply_to":"9ad9bd40_fa1144ad","updated":"2014-05-01 15:11:04.000000000","message":"Yes good call","commit_id":"0744cbc11b6988f123f5daff21ee8a23dbe3cc35"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d0080e48ad19d66d3c16999aef4481500a1d7e93","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        return self.base"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":575,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":576,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027id\u0027])"},{"line_number":577,"context_line":"        extend_by \u003d int(new_size) - volume[\u0027size\u0027]"},{"line_number":578,"context_line":"        if not self._is_share_eligible(volume[\u0027provider_location\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_daf92081","line":575,"updated":"2014-06-13 22:07:35.000000000","message":"Can we extend a volume that is attached to an active instance?  Should we do some try/except for this?","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"528852a4e8a25dac3128a347c311459df4893e6b","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        return self.base"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":575,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":576,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027id\u0027])"},{"line_number":577,"context_line":"        extend_by \u003d int(new_size) - volume[\u0027size\u0027]"},{"line_number":578,"context_line":"        if not self._is_share_eligible(volume[\u0027provider_location\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_27949f35","line":575,"in_reply_to":"1ae5cdf2_acc6d446","updated":"2014-06-15 15:28:25.000000000","message":"Thanks for pointing it out.  cinder/volume/api.py does check that the volume is \u0027available\u0027 before allowing an extend.","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"},{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"40b56cd5689d860a9376635dd158915448c05f68","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        return self.base"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":575,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":576,"context_line":"        LOG.info(_(\u0027Extending volume %s.\u0027), volume[\u0027id\u0027])"},{"line_number":577,"context_line":"        extend_by \u003d int(new_size) - volume[\u0027size\u0027]"},{"line_number":578,"context_line":"        if not self._is_share_eligible(volume[\u0027provider_location\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_acc6d446","line":575,"in_reply_to":"1ae5cdf2_daf92081","updated":"2014-06-15 11:25:54.000000000","message":"Would that not be caught by the API since the volume would \"in-use\" and not \"available\"?","commit_id":"fb8d61ce9ae3d16c192ae641fa7cd4723cb6746f"}]}
