)]}'
{"cinder/tests/unit/volume/drivers/vmware/test_vmware_vmdk.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5df097320311724789441888ee763b12666fb16e","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                \u0027display_description\u0027: description,"},{"line_number":222,"context_line":"                }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _create_snapshot_obj(self,"},{"line_number":225,"context_line":"                             volume,"},{"line_number":226,"context_line":"                             snap_id\u003dSNAPSHOT_ID,"},{"line_number":227,"context_line":"                             name\u003dSNAPSHOT_NAME,"},{"line_number":228,"context_line":"                             description\u003dSNAPSHOT_DESCRIPTION):"},{"line_number":229,"context_line":"        snap \u003d self._create_snapshot_dict(volume, snap_id, name, description)"},{"line_number":230,"context_line":"        snap_obj \u003d fake_snapshot.fake_snapshot_obj(self._context, **snap)"},{"line_number":231,"context_line":"        snap_obj.volume \u003d fake_volume.fake_volume_obj(self._context, **volume)"},{"line_number":232,"context_line":"        return snap_obj"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":235,"context_line":"    def test_create_snapshot_without_backing(self, vops):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_ea01c407","line":232,"range":{"start_line":224,"start_character":0,"end_line":232,"end_character":23},"updated":"2016-11-22 15:02:39.000000000","message":"-1: Don\u0027t create a new method, use the one in cinder/tests/unit/fake_snapshot.py","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a44700a66b8772763994e4a224ff86a5c0c50cad","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                \u0027display_description\u0027: description,"},{"line_number":222,"context_line":"                }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _create_snapshot_obj(self,"},{"line_number":225,"context_line":"                             volume,"},{"line_number":226,"context_line":"                             snap_id\u003dSNAPSHOT_ID,"},{"line_number":227,"context_line":"                             name\u003dSNAPSHOT_NAME,"},{"line_number":228,"context_line":"                             description\u003dSNAPSHOT_DESCRIPTION):"},{"line_number":229,"context_line":"        snap \u003d self._create_snapshot_dict(volume, snap_id, name, description)"},{"line_number":230,"context_line":"        snap_obj \u003d fake_snapshot.fake_snapshot_obj(self._context, **snap)"},{"line_number":231,"context_line":"        snap_obj.volume \u003d fake_volume.fake_volume_obj(self._context, **volume)"},{"line_number":232,"context_line":"        return snap_obj"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":235,"context_line":"    def test_create_snapshot_without_backing(self, vops):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_0b97783a","line":232,"range":{"start_line":224,"start_character":0,"end_line":232,"end_character":23},"in_reply_to":"3a71b18c_97c5db8f","updated":"2016-12-06 07:18:35.000000000","message":"Modifying fake_snapshot_obj() requires updating a unit test not related to this patch. Therefore posted a dependent patch for the fake_snapshot_obj change.\n\nhttps://review.openstack.org/#/c/407357","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"aba5e7c50f6d533b6bed2399d854276cced7cc87","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                \u0027display_description\u0027: description,"},{"line_number":222,"context_line":"                }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _create_snapshot_obj(self,"},{"line_number":225,"context_line":"                             volume,"},{"line_number":226,"context_line":"                             snap_id\u003dSNAPSHOT_ID,"},{"line_number":227,"context_line":"                             name\u003dSNAPSHOT_NAME,"},{"line_number":228,"context_line":"                             description\u003dSNAPSHOT_DESCRIPTION):"},{"line_number":229,"context_line":"        snap \u003d self._create_snapshot_dict(volume, snap_id, name, description)"},{"line_number":230,"context_line":"        snap_obj \u003d fake_snapshot.fake_snapshot_obj(self._context, **snap)"},{"line_number":231,"context_line":"        snap_obj.volume \u003d fake_volume.fake_volume_obj(self._context, **volume)"},{"line_number":232,"context_line":"        return snap_obj"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":235,"context_line":"    def test_create_snapshot_without_backing(self, vops):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_97c5db8f","line":232,"range":{"start_line":224,"start_character":0,"end_line":232,"end_character":23},"in_reply_to":"3a71b18c_f1638218","updated":"2016-12-02 11:01:04.000000000","message":"I agree.","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e5341fd9c287136e2691fa371368b378fb64abd3","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                \u0027display_description\u0027: description,"},{"line_number":222,"context_line":"                }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _create_snapshot_obj(self,"},{"line_number":225,"context_line":"                             volume,"},{"line_number":226,"context_line":"                             snap_id\u003dSNAPSHOT_ID,"},{"line_number":227,"context_line":"                             name\u003dSNAPSHOT_NAME,"},{"line_number":228,"context_line":"                             description\u003dSNAPSHOT_DESCRIPTION):"},{"line_number":229,"context_line":"        snap \u003d self._create_snapshot_dict(volume, snap_id, name, description)"},{"line_number":230,"context_line":"        snap_obj \u003d fake_snapshot.fake_snapshot_obj(self._context, **snap)"},{"line_number":231,"context_line":"        snap_obj.volume \u003d fake_volume.fake_volume_obj(self._context, **volume)"},{"line_number":232,"context_line":"        return snap_obj"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":235,"context_line":"    def test_create_snapshot_without_backing(self, vops):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_f1638218","line":232,"range":{"start_line":224,"start_character":0,"end_line":232,"end_character":23},"in_reply_to":"5a74a57a_347a9cbd","updated":"2016-12-02 09:55:26.000000000","message":"I\u0027m mostly saying that it doesn\u0027t make sense that every driver creates the same version of this thing, you can just modify fake_snapshot to accept volume and then just call:\n\n snapshot \u003d fake_snapshot.fake_snapshot_obj(self._context,\n                                            volume\u003dvolume)\n\nThe method in fake_snapshot would change to this:\n\n def fake_snapshot_obj(context, **updates):\n     expected_attrs \u003d updates.pop(\u0027expected_attrs\u0027, [])\n     if updates.get(\u0027volume\u0027) and \u0027volume\u0027 not in expected_attrs:\n         expected_attrs.append(\u0027volume\u0027)\n     snap \u003d snapshot.Snapshot._from_db_object(context, snapshot.Snapshot(),\n                                              fake_db_snapshot(**updates),\n                                              expected_attrs\u003dexpected_attrs)\n     return snap","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b2fa9a9b53dbdedd9c381d76f9d91b1a315ea54a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                \u0027display_description\u0027: description,"},{"line_number":222,"context_line":"                }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _create_snapshot_obj(self,"},{"line_number":225,"context_line":"                             volume,"},{"line_number":226,"context_line":"                             snap_id\u003dSNAPSHOT_ID,"},{"line_number":227,"context_line":"                             name\u003dSNAPSHOT_NAME,"},{"line_number":228,"context_line":"                             description\u003dSNAPSHOT_DESCRIPTION):"},{"line_number":229,"context_line":"        snap \u003d self._create_snapshot_dict(volume, snap_id, name, description)"},{"line_number":230,"context_line":"        snap_obj \u003d fake_snapshot.fake_snapshot_obj(self._context, **snap)"},{"line_number":231,"context_line":"        snap_obj.volume \u003d fake_volume.fake_volume_obj(self._context, **volume)"},{"line_number":232,"context_line":"        return snap_obj"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":235,"context_line":"    def test_create_snapshot_without_backing(self, vops):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_347a9cbd","line":232,"range":{"start_line":224,"start_character":0,"end_line":232,"end_character":23},"in_reply_to":"7a77a97e_ea01c407","updated":"2016-11-29 13:47:37.000000000","message":"It is already using fake_snapshot.fake_snapshot_obj().\nAre you saying that \"inline these statements\"? Btw, the tests will fail if we do not set snap_obj.volume. It fails when it tries to load the volume from db.","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"04c94597dacbe95d40c36b1c2e0d6db868e27485","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        backing \u003d mock.sentinel.backing"},{"line_number":278,"context_line":"        vops.get_backing.return_value \u003d backing"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        backend_snap \u003d mock.sentinel.backend_snap"},{"line_number":281,"context_line":"        vops.get_snapshot.return_value \u003d backend_snap"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        volume \u003d self._create_volume_dict()"},{"line_number":284,"context_line":"        snapshot \u003d fake_snapshot.fake_snapshot_obj(self._context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_85c61866","line":281,"range":{"start_line":280,"start_character":0,"end_line":281,"end_character":53},"updated":"2017-01-17 11:45:45.000000000","message":"-1: This is unnecessary","commit_id":"cf922fd94d3146336b8b09c4a21b87bdf5303441"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"6b68da6d3c59e50c4274e498af73ab867d5aa66c","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        backing \u003d mock.sentinel.backing"},{"line_number":278,"context_line":"        vops.get_backing.return_value \u003d backing"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        backend_snap \u003d mock.sentinel.backend_snap"},{"line_number":281,"context_line":"        vops.get_snapshot.return_value \u003d backend_snap"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        volume \u003d self._create_volume_dict()"},{"line_number":284,"context_line":"        snapshot \u003d fake_snapshot.fake_snapshot_obj(self._context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_3a60a135","line":281,"range":{"start_line":280,"start_character":0,"end_line":281,"end_character":53},"in_reply_to":"7a3c09a3_85c61866","updated":"2017-01-19 15:02:12.000000000","message":"Done","commit_id":"cf922fd94d3146336b8b09c4a21b87bdf5303441"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"04c94597dacbe95d40c36b1c2e0d6db868e27485","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":294,"context_line":"    def test_delete_snapshot_when_attached(self, vops):"},{"line_number":295,"context_line":"        backing \u003d mock.sentinel.backing"},{"line_number":296,"context_line":"        vops.get_backing.return_value \u003d backing"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        backend_snap \u003d mock.sentinel.backend_snap"},{"line_number":299,"context_line":"        vops.get_snapshot.return_value \u003d backend_snap"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        volume \u003d self._create_volume_dict(status\u003d\u0027in-use\u0027)"},{"line_number":302,"context_line":"        snapshot \u003d fake_snapshot.fake_snapshot_obj(self._context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_257f2467","line":299,"range":{"start_line":295,"start_character":0,"end_line":299,"end_character":53},"updated":"2017-01-17 11:45:45.000000000","message":"-1: All these are unnecessary","commit_id":"cf922fd94d3146336b8b09c4a21b87bdf5303441"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"6b68da6d3c59e50c4274e498af73ab867d5aa66c","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @mock.patch.object(VMDK_DRIVER, \u0027volumeops\u0027)"},{"line_number":294,"context_line":"    def test_delete_snapshot_when_attached(self, vops):"},{"line_number":295,"context_line":"        backing \u003d mock.sentinel.backing"},{"line_number":296,"context_line":"        vops.get_backing.return_value \u003d backing"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        backend_snap \u003d mock.sentinel.backend_snap"},{"line_number":299,"context_line":"        vops.get_snapshot.return_value \u003d backend_snap"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        volume \u003d self._create_volume_dict(status\u003d\u0027in-use\u0027)"},{"line_number":302,"context_line":"        snapshot \u003d fake_snapshot.fake_snapshot_obj(self._context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_7a5a2985","line":299,"range":{"start_line":295,"start_character":0,"end_line":299,"end_character":53},"in_reply_to":"7a3c09a3_257f2467","updated":"2017-01-19 15:02:12.000000000","message":"Done","commit_id":"cf922fd94d3146336b8b09c4a21b87bdf5303441"}],"cinder/volume/drivers/vmware/vmdk.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5df097320311724789441888ee763b12666fb16e","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            msg \u003d _(\"Delete snapshot of volume not supported in \""},{"line_number":675,"context_line":"                    \"state: %s.\") % snapshot.volume.status"},{"line_number":676,"context_line":"            LOG.error(msg)"},{"line_number":677,"context_line":"            raise exception.InvalidVolume(msg)"},{"line_number":678,"context_line":"        else:"},{"line_number":679,"context_line":"            self.volumeops.delete_snapshot(backing, snapshot.name)"},{"line_number":680,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_aaf34c9e","line":677,"range":{"start_line":677,"start_character":28,"end_line":677,"end_character":41},"updated":"2016-11-22 15:02:39.000000000","message":"I believe this should be InvalidSnapshot, but since you didn\u0027t change this, no downvote.","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"aba5e7c50f6d533b6bed2399d854276cced7cc87","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            msg \u003d _(\"Delete snapshot of volume not supported in \""},{"line_number":675,"context_line":"                    \"state: %s.\") % snapshot.volume.status"},{"line_number":676,"context_line":"            LOG.error(msg)"},{"line_number":677,"context_line":"            raise exception.InvalidVolume(msg)"},{"line_number":678,"context_line":"        else:"},{"line_number":679,"context_line":"            self.volumeops.delete_snapshot(backing, snapshot.name)"},{"line_number":680,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_57cb43a5","line":677,"range":{"start_line":677,"start_character":28,"end_line":677,"end_character":41},"in_reply_to":"7a77a97e_aaf34c9e","updated":"2016-12-02 11:01:04.000000000","message":"Done","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":23685,"name":"Mohammad Sayyed","email":"sayyedsbox@gmail.com","username":"sayyedm"},"change_message_id":"4dbd2e847566d8cd4a69eb18c26ed85c8e97e215","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            LOG.error(msg)"},{"line_number":677,"context_line":"            raise exception.InvalidVolume(msg)"},{"line_number":678,"context_line":"        else:"},{"line_number":679,"context_line":"            self.volumeops.delete_snapshot(backing, snapshot.name)"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":682,"context_line":"        \"\"\"Delete snapshot."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_80d13ed0","line":679,"range":{"start_line":679,"start_character":17,"end_line":679,"end_character":26},"updated":"2016-11-15 11:24:12.000000000","message":"Hi Vipin, any specific reason why the info log is removed in case of successful deletion, seems it might be handy when looking up while debugging.","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"ef8dec07e0af4103a388b48bd53317e72c252760","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            LOG.error(msg)"},{"line_number":677,"context_line":"            raise exception.InvalidVolume(msg)"},{"line_number":678,"context_line":"        else:"},{"line_number":679,"context_line":"            self.volumeops.delete_snapshot(backing, snapshot.name)"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":682,"context_line":"        \"\"\"Delete snapshot."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_f2a53a04","line":679,"range":{"start_line":679,"start_character":17,"end_line":679,"end_character":26},"in_reply_to":"7a77a97e_80d13ed0","updated":"2016-11-16 09:26:08.000000000","message":"Thank you for the review.\n\nThe info log here is redundant. See https://github.com/openstack/cinder/blob/master/cinder/volume/manager.py#L781","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"4abc0f872973473d6ad3e9c62af0340564b48139","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            LOG.error(msg)"},{"line_number":677,"context_line":"            raise exception.InvalidVolume(msg)"},{"line_number":678,"context_line":"        else:"},{"line_number":679,"context_line":"            self.volumeops.delete_snapshot(backing, snapshot.name)"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":682,"context_line":"        \"\"\"Delete snapshot."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_32c5f28d","line":679,"range":{"start_line":679,"start_character":17,"end_line":679,"end_character":26},"in_reply_to":"7a77a97e_f2a53a04","updated":"2016-11-16 09:28:10.000000000","message":"It\u0027s line 916 in manager.py.","commit_id":"c45c180f6fe82743aef9994edef46158af084f4b"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"23cf686bff2233b37c96d6f2b7d9bc5609262dc6","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        backing \u003d self.volumeops.get_backing(snapshot.volume_name)"},{"line_number":668,"context_line":"        if not backing:"},{"line_number":669,"context_line":"            LOG.debug(\"Backing does not exist for volume: %s.\","},{"line_number":670,"context_line":"                      snapshot.volume_name)"},{"line_number":671,"context_line":"        elif not self.volumeops.get_snapshot(backing, snapshot.name):"},{"line_number":672,"context_line":"            LOG.debug(\"Snapshot: %s does not exist in backend.\", snapshot.name)"},{"line_number":673,"context_line":"        elif snapshot.volume.status !\u003d \u0027available\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_e50859dc","line":670,"updated":"2016-12-07 16:14:21.000000000","message":"snapshot.volume_name  \u003d\u003e resource\u003dsnapshot","commit_id":"cf8c74130a6402f42762d904b80d94f60d6b9980"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"46de7fa7d6270f5303a80825d8406ad53adb6208","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        backing \u003d self.volumeops.get_backing(snapshot.volume_name)"},{"line_number":668,"context_line":"        if not backing:"},{"line_number":669,"context_line":"            LOG.debug(\"Backing does not exist for volume: %s.\","},{"line_number":670,"context_line":"                      snapshot.volume_name)"},{"line_number":671,"context_line":"        elif not self.volumeops.get_snapshot(backing, snapshot.name):"},{"line_number":672,"context_line":"            LOG.debug(\"Snapshot: %s does not exist in backend.\", snapshot.name)"},{"line_number":673,"context_line":"        elif snapshot.volume.status !\u003d \u0027available\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_f348fc89","line":670,"in_reply_to":"3a71b18c_e50859dc","updated":"2016-12-08 10:36:02.000000000","message":"Done","commit_id":"cf8c74130a6402f42762d904b80d94f60d6b9980"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"23cf686bff2233b37c96d6f2b7d9bc5609262dc6","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            LOG.debug(\"Backing does not exist for volume: %s.\","},{"line_number":670,"context_line":"                      snapshot.volume_name)"},{"line_number":671,"context_line":"        elif not self.volumeops.get_snapshot(backing, snapshot.name):"},{"line_number":672,"context_line":"            LOG.debug(\"Snapshot: %s does not exist in backend.\", snapshot.name)"},{"line_number":673,"context_line":"        elif snapshot.volume.status !\u003d \u0027available\u0027:"},{"line_number":674,"context_line":"            msg \u003d _(\"Delete snapshot of volume not supported in \""},{"line_number":675,"context_line":"                    \"state: %s.\") % snapshot.volume.status"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_050e35e5","line":672,"updated":"2016-12-07 16:14:21.000000000","message":"snapshot.volume_name  \u003d\u003e resource\u003dsnapshot","commit_id":"cf8c74130a6402f42762d904b80d94f60d6b9980"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"46de7fa7d6270f5303a80825d8406ad53adb6208","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            LOG.debug(\"Backing does not exist for volume: %s.\","},{"line_number":670,"context_line":"                      snapshot.volume_name)"},{"line_number":671,"context_line":"        elif not self.volumeops.get_snapshot(backing, snapshot.name):"},{"line_number":672,"context_line":"            LOG.debug(\"Snapshot: %s does not exist in backend.\", snapshot.name)"},{"line_number":673,"context_line":"        elif snapshot.volume.status !\u003d \u0027available\u0027:"},{"line_number":674,"context_line":"            msg \u003d _(\"Delete snapshot of volume not supported in \""},{"line_number":675,"context_line":"                    \"state: %s.\") % snapshot.volume.status"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_9330a809","line":672,"in_reply_to":"3a71b18c_050e35e5","updated":"2016-12-08 10:36:02.000000000","message":"Done","commit_id":"cf8c74130a6402f42762d904b80d94f60d6b9980"},{"author":{"_account_id":20382,"name":"YuYang","email":"yuyangwang1985@gmail.com","username":"YuYangWang"},"change_message_id":"5fcf06afaf2ab399b404bb014ceaeef9359382fa","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        elif not self.volumeops.get_snapshot(backing, snapshot.name):"},{"line_number":672,"context_line":"            LOG.debug(\"Snapshot does not exist in backend.\", resource\u003dsnapshot)"},{"line_number":673,"context_line":"        elif snapshot.volume.status !\u003d \u0027available\u0027:"},{"line_number":674,"context_line":"            msg \u003d _(\"Delete snapshot of volume not supported in \""},{"line_number":675,"context_line":"                    \"state: %s.\") % snapshot.volume.status"},{"line_number":676,"context_line":"            LOG.error(msg)"},{"line_number":677,"context_line":"            raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":678,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_fe88c3c8","line":675,"range":{"start_line":674,"start_character":11,"end_line":675,"end_character":58},"updated":"2016-12-08 10:58:53.000000000","message":"this can add snapshot name info in the msg,thanks!","commit_id":"37c05cb382cca450b66d3a090bfc15a42ba91478"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"33795a223f8542607c118c9fb8c1712f7bf5efd1","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        If the volume does not have a backing or the snapshot does not exist"},{"line_number":669,"context_line":"        then simply pass, else delete the snapshot. Snapshot deletion of only"},{"line_number":670,"context_line":"        available volume is supported."},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        :param snapshot: Snapshot object"},{"line_number":673,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a57fde8_d1a06093","line":670,"updated":"2017-01-12 19:11:49.000000000","message":"I\u0027m not sure that disallowing snapshot deletion if the volume is in \"error\" status is a valid thing to do... why is this a restriction?","commit_id":"cf922fd94d3146336b8b09c4a21b87bdf5303441"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"04c94597dacbe95d40c36b1c2e0d6db868e27485","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        If the volume does not have a backing or the snapshot does not exist"},{"line_number":669,"context_line":"        then simply pass, else delete the snapshot. Snapshot deletion of only"},{"line_number":670,"context_line":"        available volume is supported."},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        :param snapshot: Snapshot object"},{"line_number":673,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_c22c9604","line":670,"in_reply_to":"9a57fde8_d1a06093","updated":"2017-01-17 11:45:45.000000000","message":"That seems unrelated to this patch, right?","commit_id":"cf922fd94d3146336b8b09c4a21b87bdf5303441"}]}
