)]}'
{"cinder/tests/test_gpfs.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5c8fd338314f1b2a4a7511ea3e7feaab15e75a77","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.stubs.Set(image_utils, \u0027qemu_img_info\u0027,"},{"line_number":113,"context_line":"                       self._fake_qemu_qcow2_image_info)"},{"line_number":114,"context_line":"        self.stubs.Set(image_utils, \u0027convert_image\u0027,"},{"line_number":115,"context_line":"                       self._fake_convert_image)"},{"line_number":116,"context_line":"        self.stubs.Set(image_utils, \u0027resize_image\u0027,"},{"line_number":117,"context_line":"                       self._fake_qemu_image_resize)"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvbY%3D","line":115,"updated":"2013-11-20 20:40:36.000000000","message":"Can remove the resize_image stub.","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"261a6ce92bb7e5f57dba0c9501ced64f7ac5d690","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.stubs.Set(image_utils, \u0027qemu_img_info\u0027,"},{"line_number":113,"context_line":"                       self._fake_qemu_qcow2_image_info)"},{"line_number":114,"context_line":"        self.stubs.Set(image_utils, \u0027convert_image\u0027,"},{"line_number":115,"context_line":"                       self._fake_convert_image)"},{"line_number":116,"context_line":"        self.stubs.Set(image_utils, \u0027resize_image\u0027,"},{"line_number":117,"context_line":"                       self._fake_qemu_image_resize)"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bu54%3D","line":115,"in_reply_to":"AAAATn%2F%2BvLU%3D","updated":"2013-11-20 23:20:54.000000000","message":"This is needed because other tests invoke driver functions that will call resize_image.  I\u0027ve re-added.","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"197ac42278d07227da25df3a1eaa2792a37759b7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.stubs.Set(image_utils, \u0027qemu_img_info\u0027,"},{"line_number":113,"context_line":"                       self._fake_qemu_qcow2_image_info)"},{"line_number":114,"context_line":"        self.stubs.Set(image_utils, \u0027convert_image\u0027,"},{"line_number":115,"context_line":"                       self._fake_convert_image)"},{"line_number":116,"context_line":"        self.stubs.Set(image_utils, \u0027resize_image\u0027,"},{"line_number":117,"context_line":"                       self._fake_qemu_image_resize)"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvLU%3D","line":115,"in_reply_to":"AAAATn%2F%2BvbY%3D","updated":"2013-11-20 21:46:17.000000000","message":"Done","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d1d83955b9e3c23649bd1763bac6eb4c5ab0a86d","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        self.assertEqual(stats[\u0027volume_backend_name\u0027], \u0027GPFS\u0027)"},{"line_number":365,"context_line":"        self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027file\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def test_extend_volume(self):"},{"line_number":368,"context_line":"        new_vol_size \u003d 15"},{"line_number":369,"context_line":"        mox \u003d mox_lib.Mox()"},{"line_number":370,"context_line":"        volume \u003d test_utils.create_volume(self.context, host\u003dCONF.host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvTg%3D","line":367,"updated":"2013-11-20 21:03:10.000000000","message":"Need a test case to test the failing path as well.","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"197ac42278d07227da25df3a1eaa2792a37759b7","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        self.assertEqual(stats[\u0027volume_backend_name\u0027], \u0027GPFS\u0027)"},{"line_number":365,"context_line":"        self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027file\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def test_extend_volume(self):"},{"line_number":368,"context_line":"        new_vol_size \u003d 15"},{"line_number":369,"context_line":"        mox \u003d mox_lib.Mox()"},{"line_number":370,"context_line":"        volume \u003d test_utils.create_volume(self.context, host\u003dCONF.host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvL0%3D","line":367,"in_reply_to":"AAAATn%2F%2BvTg%3D","updated":"2013-11-20 21:46:17.000000000","message":"Done","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5c8fd338314f1b2a4a7511ea3e7feaab15e75a77","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        file format: raw"},{"line_number":375,"context_line":"        virtual size: %sG (%s bytes)"},{"line_number":376,"context_line":"        backing file: %s"},{"line_number":377,"context_line":"        \"\"\" % (volume[\u0027name\u0027], new_vol_size, new_vol_size * units.GiB, volpath)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        mox.StubOutWithMock(image_utils, \u0027resize_image\u0027)"},{"line_number":380,"context_line":"        image_utils.resize_image(volpath, new_vol_size)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bva8%3D","line":377,"updated":"2013-11-20 20:40:36.000000000","message":"Doesn\u0027t this result in \n\"image: volume-volume-\u003cid\u003e\"  ?\n\nvolume[\u0027name\u0027] typically contains \"volume-\".","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"197ac42278d07227da25df3a1eaa2792a37759b7","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        file format: raw"},{"line_number":375,"context_line":"        virtual size: %sG (%s bytes)"},{"line_number":376,"context_line":"        backing file: %s"},{"line_number":377,"context_line":"        \"\"\" % (volume[\u0027name\u0027], new_vol_size, new_vol_size * units.GiB, volpath)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        mox.StubOutWithMock(image_utils, \u0027resize_image\u0027)"},{"line_number":380,"context_line":"        image_utils.resize_image(volpath, new_vol_size)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvLk%3D","line":377,"in_reply_to":"AAAATn%2F%2Bva8%3D","updated":"2013-11-20 21:46:17.000000000","message":"Done","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5c8fd338314f1b2a4a7511ea3e7feaab15e75a77","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        data.virtual_size \u003d 1 * units.GiB"},{"line_number":522,"context_line":"        return data"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def _fake_qemu_image_resize(self, path, size):"},{"line_number":525,"context_line":"        LOG.info(\u0027wtf\u0027)"},{"line_number":526,"context_line":"        pass"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvbU%3D","line":524,"updated":"2013-11-20 20:40:36.000000000","message":"Should just remove this method altogether since you\u0027re using mox to mock this out in test_extend_volume.","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"261a6ce92bb7e5f57dba0c9501ced64f7ac5d690","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        data.virtual_size \u003d 1 * units.GiB"},{"line_number":522,"context_line":"        return data"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def _fake_qemu_image_resize(self, path, size):"},{"line_number":525,"context_line":"        LOG.info(\u0027wtf\u0027)"},{"line_number":526,"context_line":"        pass"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bu5s%3D","line":524,"in_reply_to":"AAAATn%2F%2BvLM%3D","updated":"2013-11-20 23:20:54.000000000","message":"This is needed because other tests invoke driver functions that will call resize_image.  I\u0027ve re-added.","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"197ac42278d07227da25df3a1eaa2792a37759b7","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        data.virtual_size \u003d 1 * units.GiB"},{"line_number":522,"context_line":"        return data"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def _fake_qemu_image_resize(self, path, size):"},{"line_number":525,"context_line":"        LOG.info(\u0027wtf\u0027)"},{"line_number":526,"context_line":"        pass"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BvLM%3D","line":524,"in_reply_to":"AAAATn%2F%2BvbU%3D","updated":"2013-11-20 21:46:17.000000000","message":"Done","commit_id":"8da4838b56c3d94a3fe3a9fd3f1bb7f82a4ff83e"}],"cinder/volume/drivers/gpfs.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6bb5d70673f1a256273d85065c9bc601768e2b84","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    def _resize_volume_file(self, volume, new_size):"},{"line_number":552,"context_line":"        \"\"\"Resize volume file to new size.\"\"\""},{"line_number":553,"context_line":"        vol_path \u003d self.local_path(volume)"},{"line_number":554,"context_line":"        image_utils.resize_image(vol_path, new_size)"},{"line_number":555,"context_line":"        data \u003d image_utils.qemu_img_info(vol_path)"},{"line_number":556,"context_line":"        file_size \u003d data.virtual_size / units.GiB"},{"line_number":557,"context_line":"        if file_size !\u003d new_size:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2By3w%3D","line":554,"updated":"2013-11-20 03:57:35.000000000","message":"I think the execution of image_utils.resize_image should be in a try: block and then you should be prepared for an exception to be thrown.  resize_image uses qemu-img and there are a variety of ways that execution of that can fail and you should at least catch and report the exception.  Otherwise you are never going to reach the file_size check below and I think the end result may be confusing the the a user.  At a minimum you should be able to use the exception information to explain why the size might not match.","commit_id":"46ae111b8183ee98da78046c3fd25acdae508115"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"e90ac2507bcb1b42c6d9bfceb1b2383fdfc7ded3","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    def _resize_volume_file(self, volume, new_size):"},{"line_number":552,"context_line":"        \"\"\"Resize volume file to new size.\"\"\""},{"line_number":553,"context_line":"        vol_path \u003d self.local_path(volume)"},{"line_number":554,"context_line":"        image_utils.resize_image(vol_path, new_size)"},{"line_number":555,"context_line":"        data \u003d image_utils.qemu_img_info(vol_path)"},{"line_number":556,"context_line":"        file_size \u003d data.virtual_size / units.GiB"},{"line_number":557,"context_line":"        if file_size !\u003d new_size:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bvc4%3D","line":554,"in_reply_to":"AAAATn%2F%2By3w%3D","updated":"2013-11-20 20:23:21.000000000","message":"Done","commit_id":"46ae111b8183ee98da78046c3fd25acdae508115"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6bb5d70673f1a256273d85065c9bc601768e2b84","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        file_size \u003d data.virtual_size / units.GiB"},{"line_number":557,"context_line":"        if file_size !\u003d new_size:"},{"line_number":558,"context_line":"            raise exception.InvalidResults("},{"line_number":559,"context_line":"                _(\u0027New volume size does not match request\u0027))"},{"line_number":560,"context_line":"        return data.virtual_size"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def extend_volume(self, volume, new_size):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2By3k%3D","line":559,"updated":"2013-11-20 03:57:35.000000000","message":"Should end this with a \u0027.\u0027 .  Might also be good to report the expected versus actual sizes.  I think that would be consistent with other places where I have seen this type of exception raised.","commit_id":"46ae111b8183ee98da78046c3fd25acdae508115"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"e90ac2507bcb1b42c6d9bfceb1b2383fdfc7ded3","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        file_size \u003d data.virtual_size / units.GiB"},{"line_number":557,"context_line":"        if file_size !\u003d new_size:"},{"line_number":558,"context_line":"            raise exception.InvalidResults("},{"line_number":559,"context_line":"                _(\u0027New volume size does not match request\u0027))"},{"line_number":560,"context_line":"        return data.virtual_size"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def extend_volume(self, volume, new_size):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bvcs%3D","line":559,"in_reply_to":"AAAATn%2F%2By3k%3D","updated":"2013-11-20 20:23:21.000000000","message":"After further review of qemu-img, I don\u0027t see a way that resize operation can silently fail, so I am removing the file size checking code.","commit_id":"46ae111b8183ee98da78046c3fd25acdae508115"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"1a3d8db03134941ada19d22f13b44705998b73bc","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        return data.virtual_size"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":567,"context_line":"        \"\"\"Extend an Existing Volume.\"\"\""},{"line_number":568,"context_line":"        self._resize_volume_file(volume, new_size)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BtrA%3D","line":567,"updated":"2013-11-21 07:55:41.000000000","message":"Is it OK to uncapitalize \u0027E\u0027 and \u0027V\u0027?  --\u003e \"existing volume\"","commit_id":"8a5c885d025be119677777dae2892da323886c27"},{"author":{"_account_id":7689,"name":"Bill Owen","email":"billowen@us.ibm.com","username":"billowen"},"change_message_id":"70548635a60d2aea5e9fa206c93d28dd37b3ecc6","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        return data.virtual_size"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":567,"context_line":"        \"\"\"Extend an Existing Volume.\"\"\""},{"line_number":568,"context_line":"        self._resize_volume_file(volume, new_size)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Bpks%3D","line":567,"in_reply_to":"AAAATn%2F%2BtrA%3D","updated":"2013-11-22 01:00:35.000000000","message":"Done","commit_id":"8a5c885d025be119677777dae2892da323886c27"}]}
