)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"95e616bf0c00d603574e1bc303accd190dcfb524","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Guryanov \u003cdguryanov@virtuozzo.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-05 00:57:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"vzstorage: fix creating and deleting snapshots of in-use volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"vzstorage doesn\u0027t support simultaneous open from different"},{"line_number":10,"context_line":"clients. It means you can\u0027t open qcow2 file from cinder-volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a57f1b5_441a4370","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":64},"updated":"2016-02-09 22:15:18.000000000","message":"First line of the commit message should be limited to 50 characters.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"cd67a3b6333c5e2e2a9d63d538eda8eee1073796"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"e9e8b3921539cd6fee85ab0657104160608c1028","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Evgeny Antyshev \u003ceantyshev@virtuozzo.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-11 11:35:11 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"vzstorage: fix creating and deleting snapshots of in-use volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"vzstorage doesn\u0027t support simultaneous open from different"},{"line_number":10,"context_line":"clients. It means you can\u0027t open qcow2 file from cinder-volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afc51ec_a916b652","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":64},"updated":"2016-03-14 18:50:16.000000000","message":"First line of the commit message should be limited to 50 characters.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"ebddb309de6c3d60b47b1940cf8a236fdc281ed7"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"45eb219862aad3dc93fcb5e896e0c2b46ec9aca8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Evgeny Antyshev \u003ceantyshev@virtuozzo.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-23 15:18:50 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"vzstorage: fix creating and deleting snapshots of in-use volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"vzstorage doesn\u0027t support simultaneous open from different"},{"line_number":10,"context_line":"clients. It means you can\u0027t open qcow2 file from cinder-volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9a061dce_f1dcf174","line":7,"updated":"2016-04-06 16:20:31.000000000","message":"Same as previously commented, this line should be cut down to ~50 characters per the commit message guidelines.\n\nThe example title below is still over by a few, but is a little closer to the guidelines while still keeping your original meaning.\n\n\"vzstorage: fix create/delete snapshots of in-use volumes\"\n\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"a29e54f3f55004b1e432fc56fc7e69e891398190"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d3d2919fa0021bee3bf2999d9d0f63dee240c4b5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"side, if it\u0027s used by an instance on nova-compute side."},{"line_number":12,"context_line":"The solution is to cache QemuImgInfo instance"},{"line_number":13,"context_line":"under \u003cpath\u003e.qemu_img_cache for image file \u003cpath\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I8949ddc244e0eef699b2af224303f86507f6f30e"},{"line_number":16,"context_line":"Co-Authored-By: Evgeny Antyshev \u003ceantyshev@virtuozzo.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"1ac06dbe_47fe0538","line":14,"updated":"2016-08-22 13:41:43.000000000","message":"This is a bug fix and should have a bug number.  Can you open a bug and reference it here?","commit_id":"d8ce78e41b6ea7afefeccdd5345518e0f5ed82db"},{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"9ca2fe81d1ee44a71a061c369605d796b8d4fe68","unresolved":false,"context_lines":[{"line_number":11,"context_line":"side, if it\u0027s used by an instance on nova-compute side."},{"line_number":12,"context_line":"The solution is to cache QemuImgInfo instance"},{"line_number":13,"context_line":"under \u003cpath\u003e.qemu_img_cache for image file \u003cpath\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I8949ddc244e0eef699b2af224303f86507f6f30e"},{"line_number":16,"context_line":"Co-Authored-By: Evgeny Antyshev \u003ceantyshev@virtuozzo.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"1ac06dbe_41ba70c1","line":14,"in_reply_to":"1ac06dbe_47fe0538","updated":"2016-08-22 14:54:38.000000000","message":"Done","commit_id":"d8ce78e41b6ea7afefeccdd5345518e0f5ed82db"}],"cinder/tests/unit/volume/drivers/test_vzstorage.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d3d2919fa0021bee3bf2999d9d0f63dee240c4b5","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        drv \u003d self._vz_driver"},{"line_number":216,"context_line":"        drv._check_extend_volume_support \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":217,"context_line":"        drv._is_file_size_equal \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":218,"context_line":"        drv.get_volume_format \u003d mock.Mock(return_value\u003d\"raw\")"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        snap_info \u003d \u0027{\"active\": \"%s\"}\u0027 % self.vol.id"},{"line_number":221,"context_line":"        with mock.patch.object(drv, \u0027local_path\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ac06dbe_4779e5f5","line":218,"updated":"2016-08-22 13:41:43.000000000","message":"Please use @mock.patch.object to mock the method drv.get_volume_format and change the return_value of the mocked method, rather than change the method directly.","commit_id":"d8ce78e41b6ea7afefeccdd5345518e0f5ed82db"},{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"c0c74ce05cb17f8120d113f003197874cfa95b4e","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        drv \u003d self._vz_driver"},{"line_number":216,"context_line":"        drv._check_extend_volume_support \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":217,"context_line":"        drv._is_file_size_equal \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":218,"context_line":"        drv.get_volume_format \u003d mock.Mock(return_value\u003d\"raw\")"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        snap_info \u003d \u0027{\"active\": \"%s\"}\u0027 % self.vol.id"},{"line_number":221,"context_line":"        with mock.patch.object(drv, \u0027local_path\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ac06dbe_02dbf21b","line":218,"in_reply_to":"1ac06dbe_2750245d","updated":"2016-08-23 20:04:06.000000000","message":"Done","commit_id":"d8ce78e41b6ea7afefeccdd5345518e0f5ed82db"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f82a69b6b3090362b3568eecc78dc15f0ad0dd7b","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        drv \u003d self._vz_driver"},{"line_number":216,"context_line":"        drv._check_extend_volume_support \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":217,"context_line":"        drv._is_file_size_equal \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":218,"context_line":"        drv.get_volume_format \u003d mock.Mock(return_value\u003d\"raw\")"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        snap_info \u003d \u0027{\"active\": \"%s\"}\u0027 % self.vol.id"},{"line_number":221,"context_line":"        with mock.patch.object(drv, \u0027local_path\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ac06dbe_448ff5cb","line":218,"in_reply_to":"1ac06dbe_2750245d","updated":"2016-08-23 05:21:41.000000000","message":"I saw a similar comment on the following patch.  What you have works and it is in other places as well.  What is suggested is a preferred way of writing tests.\n\nhttps://review.openstack.org/#/c/342300/11/cinder/tests/unit/volume/drivers/emc/test_emc_vmax.py","commit_id":"d8ce78e41b6ea7afefeccdd5345518e0f5ed82db"},{"author":{"_account_id":13431,"name":"Evgeny Antyshev","email":"eantyshev@gmail.com","username":"eantyshev"},"change_message_id":"9ca2fe81d1ee44a71a061c369605d796b8d4fe68","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        drv \u003d self._vz_driver"},{"line_number":216,"context_line":"        drv._check_extend_volume_support \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":217,"context_line":"        drv._is_file_size_equal \u003d mock.Mock(return_value\u003dTrue)"},{"line_number":218,"context_line":"        drv.get_volume_format \u003d mock.Mock(return_value\u003d\"raw\")"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        snap_info \u003d \u0027{\"active\": \"%s\"}\u0027 % self.vol.id"},{"line_number":221,"context_line":"        with mock.patch.object(drv, \u0027local_path\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ac06dbe_2750245d","line":218,"in_reply_to":"1ac06dbe_4779e5f5","updated":"2016-08-22 14:54:38.000000000","message":"I don\u0027t understand the purpose of this, could you please expand this a bit?","commit_id":"d8ce78e41b6ea7afefeccdd5345518e0f5ed82db"}],"cinder/volume/drivers/vzstorage.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f9a03243971d8121231655b9c6320ac625607a65","unresolved":false,"context_lines":[{"line_number":619,"context_line":"# which are in use."},{"line_number":620,"context_line":"#"},{"line_number":621,"context_line":"# The set of functions below are almost copy-pasted from remotefs.py."},{"line_number":622,"context_line":"# I just replaced qemu-img with reading backing files from .info."},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _delete_snapshot_qcow2(self, snapshot):"},{"line_number":625,"context_line":"        \"\"\"Delete a snapshot."}],"source_content_type":"text/x-python","patch_set":18,"id":"9abb7d3a_ad3f2a24","line":622,"updated":"2016-05-27 15:06:51.000000000","message":"Can you indent the above comments to the same level as the method \"def _delete_snapshot_qcow2\"?","commit_id":"a4e46c6a9b06b492559b1a6790347e40157a1b12"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f9a03243971d8121231655b9c6320ac625607a65","unresolved":false,"context_lines":[{"line_number":739,"context_line":"                                snapshot_file),"},{"line_number":740,"context_line":"                               None)"},{"line_number":741,"context_line":"            if higher_file is None:"},{"line_number":742,"context_line":"                msg \u003d _(\u0027No file found with %s as backing file.\u0027) %\\"},{"line_number":743,"context_line":"                    snapshot_file"},{"line_number":744,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":745,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9abb7d3a_8d5b4654","line":742,"updated":"2016-05-27 15:06:51.000000000","message":"Please use a () to wrap around multi-line statement:\n\nmsg \u003d (_(\u0027No file found with % as ....\u0027) %\n            snapshot_file)\n\nSame comment in other places.","commit_id":"a4e46c6a9b06b492559b1a6790347e40157a1b12"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"dcc1004067a467a7d7518b78e01bfd3157ccf7b4","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                json.dump(ret.__dict__, f)"},{"line_number":172,"context_line":"        else:"},{"line_number":173,"context_line":"            ret \u003d imageutils.QemuImgInfo()"},{"line_number":174,"context_line":"            with open(qemu_img_cache, \"r\") as f:"},{"line_number":175,"context_line":"                ret.__dict__ \u003d json.load(f)"},{"line_number":176,"context_line":"            LOG.debug(\"Use cached qemu-img info: %s\", ret)"},{"line_number":177,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_715e7913","line":174,"range":{"start_line":174,"start_character":22,"end_line":174,"end_character":36},"updated":"2016-06-07 03:17:57.000000000","message":"this shoud try except errot,i think","commit_id":"7d12d4cced95c207a84d48b6d92b30330e8a7f41"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2d3128517d18c48e75fc9eb41d0b2904c38bff19","unresolved":false,"context_lines":[{"line_number":502,"context_line":"                     \u0027specified, skipping.\u0027) % volume.name)"},{"line_number":503,"context_line":"            LOG.error(msg)"},{"line_number":504,"context_line":"            return"},{"line_number":505,"context_line":"#            raise exception.VzStorageException(msg)"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        self._ensure_share_mounted(volume.provider_location)"},{"line_number":508,"context_line":"        volume_dir \u003d self._local_volume_dir(volume)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3ac371cc_92acfd36","line":505,"range":{"start_line":505,"start_character":0,"end_line":505,"end_character":52},"updated":"2016-08-19 09:59:53.000000000","message":"Please delete the comments code.","commit_id":"2a2ffd7ad41f17d67451510fd292f5e487fddb9a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2d3128517d18c48e75fc9eb41d0b2904c38bff19","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            higher_file \u003d os.path.join(self._local_volume_dir(snapshot.volume),"},{"line_number":582,"context_line":"                                       higher_file)"},{"line_number":583,"context_line":"        elif active_file !\u003d snap_file:"},{"line_number":584,"context_line":"            msg \u003d _(\"Expected higher file exists for snapshot %s\") % \\"},{"line_number":585,"context_line":"                snapshot.id"},{"line_number":586,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":587,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"3ac371cc_3249c98f","line":584,"range":{"start_line":584,"start_character":69,"end_line":584,"end_character":70},"updated":"2016-08-19 09:59:53.000000000","message":"use () instead of  \\","commit_id":"2a2ffd7ad41f17d67451510fd292f5e487fddb9a"}]}
