)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86abab9c8c4341471090eb6eeffff3baa78e20eb","unresolved":true,"context_lines":[{"line_number":12,"context_line":"This patch includes this possibility changing the logic of"},{"line_number":13,"context_line":"_show_msg_check_clone_v2_api."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Gorka Eguileor \u003cgeguileo@redhat.com\u003e"},{"line_number":16,"context_line":"Change-Id: I513abe980b73d7e7b1a3cd9c7ff89490f7fd6b08"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"03d53bc2_a7d6f793","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":52},"updated":"2021-08-30 17:27:11.000000000","message":"I don\u0027t think I deserve this credit ;-)","commit_id":"8dbd9ba48833c6e78d6fa2fa328b75f8187fe8a8"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"This patch includes this possibility changing the logic of"},{"line_number":13,"context_line":"_show_msg_check_clone_v2_api."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Gorka Eguileor \u003cgeguileo@redhat.com\u003e"},{"line_number":16,"context_line":"Change-Id: I513abe980b73d7e7b1a3cd9c7ff89490f7fd6b08"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"c3e314fd_668a8eb9","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":52},"in_reply_to":"03d53bc2_a7d6f793","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"8dbd9ba48833c6e78d6fa2fa328b75f8187fe8a8"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d117b3053eee4fe9f44c08de12e607e77de77d08","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD: Fix _show_msg_check_clone_v2_api"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There might be a case where we won\u0027t log the message and an"},{"line_number":10,"context_line":"exception raised by `op_features` other than AttributeError."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch includes this possibility changing the logic of"},{"line_number":13,"context_line":"_show_msg_check_clone_v2_api."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1942210"},{"line_number":16,"context_line":"Co-Authored-By: Gorka Eguileor \u003cgeguileo@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"d0e3fd97_7b399743","line":13,"range":{"start_line":9,"start_character":0,"end_line":13,"end_character":29},"updated":"2021-11-16 20:56:07.000000000","message":"This needs a rewrite when you decide exactly what the scope of this change is (see comment in rbd.py)","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD: Fix _show_msg_check_clone_v2_api"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There might be a case where we won\u0027t log the message and an"},{"line_number":10,"context_line":"exception raised by `op_features` other than AttributeError."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch includes this possibility changing the logic of"},{"line_number":13,"context_line":"_show_msg_check_clone_v2_api."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1942210"},{"line_number":16,"context_line":"Co-Authored-By: Gorka Eguileor \u003cgeguileo@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"a3fdd9c8_47029127","line":13,"range":{"start_line":9,"start_character":0,"end_line":13,"end_character":29},"in_reply_to":"d0e3fd97_7b399743","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d117b3053eee4fe9f44c08de12e607e77de77d08","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8245cab9_77427a7e","updated":"2021-11-16 20:56:07.000000000","message":"I agree with Rajat.  See comments inline.","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"f6a3f241a29d5a460df81ebaa36eed8e847d703f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3dc22f98_9991ed13","updated":"2021-11-11 13:28:43.000000000","message":"recheck","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ccb6828a0a936f4f3522557636599369bdda3e3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dee6fd22_e4ce366b","updated":"2021-11-17 13:20:30.000000000","message":"LGTM, but would like to get Gorka\u0027s input on how this patch has evolved.","commit_id":"b23f19ba6c3c079835ca3ed0e99f9cefebf8bc3b"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3289356db674adb51180af4df0ded42766dc08b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"86c70163_261cf666","updated":"2021-11-18 00:11:18.000000000","message":"Code looks good, and the tests are good too, though I think Gorka\u0027s suggestion was to combine them into a single test (see comment inline).  Also, I left a suggestion for the release note.","commit_id":"a49e300842f33b1a33d4872c5f855788e5a8eca8"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"c48bab6e626e9e0b3bcdada4b2dce4900a852cc0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6ec8e25f_93800a95","updated":"2021-11-19 18:45:18.000000000","message":"recheck tempest-integrated-storage","commit_id":"1a5a81d787d7cf7b88ebef0fb8fa4d89daacbe11"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2ea1d2b86a0df935acbfbb3b03f95d903d58f359","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5cb72172_4b83bee3","updated":"2022-05-02 18:56:45.000000000","message":"Sorry this has been sitting so long.  Revisions LGTM.\n\nRaising the priority so we can get this fixed and backported.","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"7707b3b45a18482dba3e5cff291ff06d8676b52d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"6d0ea9e2_7329b6c2","updated":"2022-05-12 13:38:20.000000000","message":"The CI error `tempest.lib.exceptions.ServerFault: Got server fault` is not related to this patch.","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cfa3fdba6289ce5281db7f5b57c841bbc91a578c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5ca422e0_4712746b","updated":"2022-05-11 14:35:18.000000000","message":"This looks ok to me.  We should get this merged.","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7f3b7198850699bf7584e2950f6a6b689ad2bc67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9247cdca_13eec360","updated":"2022-05-16 17:05:22.000000000","message":"needs rebase","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"bcd6394878db5ae5287627d53a4820f2a7f7edf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"143652a6_ffcdb6e7","updated":"2022-05-16 16:59:55.000000000","message":"recheck","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"5958241871a617cf5604b5f2100537c7875095e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"4a6a5952_32641b08","updated":"2022-01-04 17:19:59.000000000","message":"recheck","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"34c39d91d7e7a9f04f8f0c623395c7126a750e1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"806566ee_71507bff","updated":"2022-05-12 13:38:27.000000000","message":"recheck","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"390fa9857825084a1a5d151d9c6b1b70c0c1dd2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"42bf673e_81689e72","updated":"2022-01-04 16:44:18.000000000","message":"run-TOYOU ACS5000 CI","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c0e226ac8b4e91a908a4c438e016af9b1e7de9bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"a07913be_e17ba40c","updated":"2022-05-16 21:54:52.000000000","message":"Changes LGTM and Zuul agrees!","commit_id":"98acb8222135ed01d0d89c5f49247b4fd7d85add"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c0650d9f387a7c6814850c89ff19201638dac296","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"9cb3424a_1642a714","updated":"2022-05-17 10:19:43.000000000","message":"Code changes and UT look good.\n","commit_id":"98acb8222135ed01d0d89c5f49247b4fd7d85add"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"09af564b0ad0343593d37927ddb6821a6fee5ee6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"b6600b2a_2c92598c","updated":"2022-05-17 12:49:23.000000000","message":"Let\u0027s try this again.  :-)","commit_id":"98acb8222135ed01d0d89c5f49247b4fd7d85add"}],"cinder/tests/unit/volume/drivers/test_rbd.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"43b7894c454b6135e518b7b936bf4015bc4f7eaf","unresolved":true,"context_lines":[{"line_number":923,"context_line":"    @common_mocks"},{"line_number":924,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":925,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":926,"context_line":"    def test_log_create_vol_from_snap_raise_atribute_error(self,"},{"line_number":927,"context_line":"                                                           volume_get_by_id):"},{"line_number":928,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":929,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f3ce9cd0_cd8663e7","line":926,"range":{"start_line":926,"start_character":44,"end_line":926,"end_character":52},"updated":"2021-08-27 15:54:38.000000000","message":"typo: \"attribute\"","commit_id":"93dad38e9a6b00c2bec6adc3d8bea37758ef2693"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":923,"context_line":"    @common_mocks"},{"line_number":924,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":925,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":926,"context_line":"    def test_log_create_vol_from_snap_raise_atribute_error(self,"},{"line_number":927,"context_line":"                                                           volume_get_by_id):"},{"line_number":928,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":929,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bbd4f0b4_9c84b2d1","line":926,"range":{"start_line":926,"start_character":44,"end_line":926,"end_character":52},"in_reply_to":"f3ce9cd0_cd8663e7","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"93dad38e9a6b00c2bec6adc3d8bea37758ef2693"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"895f61d2db7bab86506ad18744f920f4b89bbc60","unresolved":true,"context_lines":[{"line_number":920,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":921,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    @common_mocks"},{"line_number":924,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":925,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":926,"context_line":"    def test_log_create_vol_from_snap_raise_attribute_error(self,"},{"line_number":927,"context_line":"                                                            volume_get_by_id):"},{"line_number":928,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        self.mock_proxy().__enter__().volume.op_features.side_effect \u003d ("},{"line_number":931,"context_line":"            AttributeError)"},{"line_number":932,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":935,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"},{"line_number":938,"context_line":"                mock_log:"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":943,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    @common_mocks"},{"line_number":946,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":947,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":948,"context_line":"    def test_log_create_vol_from_snap_raise_other_error(self,"},{"line_number":949,"context_line":"                                                        volume_get_by_id):"},{"line_number":950,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":951,"context_line":""},{"line_number":952,"context_line":"        self.mock_proxy().__enter__().volume.op_features.side_effect \u003d ("},{"line_number":953,"context_line":"            self.mock_rbd.ImageNotFound)"},{"line_number":954,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":957,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        self.assertRaises(self.mock_rbd.ImageNotFound,"},{"line_number":960,"context_line":"                          self.driver.create_volume_from_snapshot,"},{"line_number":961,"context_line":"                          self.volume_a, snapshot)"},{"line_number":962,"context_line":"        self.assertFalse(self.driver._clone_v2_api_checked)"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"    @common_mocks"},{"line_number":965,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dbf66f74_5f4130e4","line":962,"range":{"start_line":923,"start_character":0,"end_line":962,"end_character":59},"updated":"2021-08-30 17:26:39.000000000","message":"Unit test failures are legitimate failures, and they are caused by the RBD stripe fix introduced in https://review.opendev.org/c/openstack/cinder/+/786260\n\nYou can fix this by adding a mock on the `stripe_unit` of the `Image()`:\n\n            with mock.patch.object(self.driver.rbd.Image(), \u0027stripe_unit\u0027) as \\\n                    mock_rbd_image_stripe_unit:\n                mock_rbd_image_stripe_unit.return_value \u003d 4194304\n\nOr the driver\u0027s `_get_stripe_unit` method (probably better).\n\nThis mock can be introduced here or on the `common_mocks` decorador. The latter is probably the best location, since we are going to have this problem in future unit tests from this file in the future.","commit_id":"8dbd9ba48833c6e78d6fa2fa328b75f8187fe8a8"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":920,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":921,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    @common_mocks"},{"line_number":924,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":925,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":926,"context_line":"    def test_log_create_vol_from_snap_raise_attribute_error(self,"},{"line_number":927,"context_line":"                                                            volume_get_by_id):"},{"line_number":928,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        self.mock_proxy().__enter__().volume.op_features.side_effect \u003d ("},{"line_number":931,"context_line":"            AttributeError)"},{"line_number":932,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":935,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"},{"line_number":938,"context_line":"                mock_log:"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":943,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    @common_mocks"},{"line_number":946,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":947,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":948,"context_line":"    def test_log_create_vol_from_snap_raise_other_error(self,"},{"line_number":949,"context_line":"                                                        volume_get_by_id):"},{"line_number":950,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":951,"context_line":""},{"line_number":952,"context_line":"        self.mock_proxy().__enter__().volume.op_features.side_effect \u003d ("},{"line_number":953,"context_line":"            self.mock_rbd.ImageNotFound)"},{"line_number":954,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":957,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        self.assertRaises(self.mock_rbd.ImageNotFound,"},{"line_number":960,"context_line":"                          self.driver.create_volume_from_snapshot,"},{"line_number":961,"context_line":"                          self.volume_a, snapshot)"},{"line_number":962,"context_line":"        self.assertFalse(self.driver._clone_v2_api_checked)"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"    @common_mocks"},{"line_number":965,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"4ddbc37a_f0d21ec2","line":962,"range":{"start_line":923,"start_character":0,"end_line":962,"end_character":59},"in_reply_to":"dbf66f74_5f4130e4","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"8dbd9ba48833c6e78d6fa2fa328b75f8187fe8a8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f3570bdf3ddb330332156d25229c29042dd39679","unresolved":true,"context_lines":[{"line_number":939,"context_line":"            AttributeError)"},{"line_number":940,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":943,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"ef8a055e_03a79ccb","line":942,"range":{"start_line":942,"start_character":0,"end_line":942,"end_character":30},"updated":"2021-08-31 11:56:53.000000000","message":"-1: unit tests are failing because you are using a mock here and does\u0027t have a size.\n\nYou should use a normal snapshot OVO instance instead of this.\n\nTo fix replace it with:\n\n  snapshot \u003d self.snapshot","commit_id":"8e591bdb45f761e9ffd0d2c9d9d6e6f341fdd0a6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":939,"context_line":"            AttributeError)"},{"line_number":940,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":943,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"1debd24c_ccff87fd","line":942,"range":{"start_line":942,"start_character":0,"end_line":942,"end_character":30},"in_reply_to":"ef8a055e_03a79ccb","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"8e591bdb45f761e9ffd0d2c9d9d6e6f341fdd0a6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":939,"context_line":"            AttributeError)"},{"line_number":940,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":943,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"6dcf5315_d9ef0ba3","line":942,"range":{"start_line":942,"start_character":0,"end_line":942,"end_character":30},"in_reply_to":"ef8a055e_03a79ccb","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"8e591bdb45f761e9ffd0d2c9d9d6e6f341fdd0a6"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f3570bdf3ddb330332156d25229c29042dd39679","unresolved":true,"context_lines":[{"line_number":961,"context_line":"            self.mock_rbd.ImageNotFound)"},{"line_number":962,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":965,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        self.assertRaises(self.mock_rbd.ImageNotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"12e4ec46_ab4f3354","line":964,"range":{"start_line":964,"start_character":0,"end_line":964,"end_character":30},"updated":"2021-08-31 11:56:53.000000000","message":"ditto","commit_id":"8e591bdb45f761e9ffd0d2c9d9d6e6f341fdd0a6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":961,"context_line":"            self.mock_rbd.ImageNotFound)"},{"line_number":962,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        snapshot \u003d mock.Mock()"},{"line_number":965,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        self.assertRaises(self.mock_rbd.ImageNotFound,"}],"source_content_type":"text/x-python","patch_set":5,"id":"56351488_485c2636","line":964,"range":{"start_line":964,"start_character":0,"end_line":964,"end_character":30},"in_reply_to":"12e4ec46_ab4f3354","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"8e591bdb45f761e9ffd0d2c9d9d6e6f341fdd0a6"},{"author":{"_account_id":32266,"name":"Venkata krishna Thumu","display_name":"VenkataKrishna","email":"venkata.krishna.reddy@ibm.com","username":"venkatakrishnathumu","status":"Active"},"change_message_id":"6cea1d5b07af8a647528adeb28f8de2cfe3aa29c","unresolved":true,"context_lines":[{"line_number":942,"context_line":"        snapshot \u003d self.snapshot"},{"line_number":943,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"},{"line_number":946,"context_line":"                mock_log:"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da70b052_373e904c","line":945,"updated":"2021-09-02 13:59:00.000000000","message":"Can write this in one line. And too many empty lines to separate almost each function. Please reconsider.","commit_id":"52c468f8250d42524a8e5d92bd7e1d88f241335c"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        snapshot \u003d self.snapshot"},{"line_number":943,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as \\"},{"line_number":946,"context_line":"                mock_log:"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"}],"source_content_type":"text/x-python","patch_set":7,"id":"e3d8f2b5_50d5e747","line":945,"in_reply_to":"da70b052_373e904c","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"52c468f8250d42524a8e5d92bd7e1d88f241335c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"94eca8292c7dac956cf574c2bc5b10bba6b2f30c","unresolved":true,"context_lines":[{"line_number":1076,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":1077,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    @common_mocks"},{"line_number":1080,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":1081,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":1082,"context_line":"    def test_log_create_vol_from_snap_raise_other_error(self,"},{"line_number":1083,"context_line":"                                                        volume_get_by_id):"},{"line_number":1084,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        self.mock_proxy().__enter__().volume.op_features.side_effect \u003d ("},{"line_number":1087,"context_line":"            self.mock_rbd.ImageNotFound)"},{"line_number":1088,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"        snapshot \u003d self.snapshot"},{"line_number":1091,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as mock_log:"},{"line_number":1094,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"},{"line_number":1095,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":1096,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    @common_mocks"},{"line_number":1099,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9769a0f6_60ea97d9","line":1096,"range":{"start_line":1079,"start_character":0,"end_line":1096,"end_character":62},"updated":"2021-11-17 14:12:44.000000000","message":"-1: This is 99.9% the same as the other test we are adding, we should have a single test method to do both.\n\n-1: We should check that we only call it once and it won\u0027t be called on following calls, right?","commit_id":"b23f19ba6c3c079835ca3ed0e99f9cefebf8bc3b"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":1077,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    @common_mocks"},{"line_number":1080,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":1081,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":1082,"context_line":"    def test_log_create_vol_from_snap_raise_other_error(self,"},{"line_number":1083,"context_line":"                                                        volume_get_by_id):"},{"line_number":1084,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        self.mock_proxy().__enter__().volume.op_features.side_effect \u003d ("},{"line_number":1087,"context_line":"            self.mock_rbd.ImageNotFound)"},{"line_number":1088,"context_line":"        self.mock_rbd.RBD_OPERATION_FEATURE_CLONE_PARENT \u003d 1"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"        snapshot \u003d self.snapshot"},{"line_number":1091,"context_line":"        self.cfg.rbd_flatten_volume_from_snapshot \u003d False"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        with mock.patch.object(driver, \u0027LOG\u0027) as mock_log:"},{"line_number":1094,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"},{"line_number":1095,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":1096,"context_line":"            self.assertTrue(self.driver._clone_v2_api_checked)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    @common_mocks"},{"line_number":1099,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"6039939b_120b77af","line":1096,"range":{"start_line":1079,"start_character":0,"end_line":1096,"end_character":62},"in_reply_to":"9769a0f6_60ea97d9","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"b23f19ba6c3c079835ca3ed0e99f9cefebf8bc3b"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3289356db674adb51180af4df0ded42766dc08b6","unresolved":true,"context_lines":[{"line_number":1097,"context_line":"            # Second call"},{"line_number":1098,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"},{"line_number":1099,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"    @common_mocks"},{"line_number":1102,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":1103,"context_line":"    def test_delete_snapshot(self, volume_get_by_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"2dc097a4_eae7609a","line":1100,"updated":"2021-11-18 00:11:18.000000000","message":"I think Gorka\u0027s point on PS 11 was that you only need one test to do all this (that is, one test can check *both* that an exception from op_features is caught, *and* that the second call to create_volume_from_snapshot doesn\u0027t log anything).  If you make volume.op_features raise Exception (instead of AttributeError), that will pretty much cover all the possibilities, so I don\u0027t think you need to use ddt to pass in various types of exception to the test.","commit_id":"a49e300842f33b1a33d4872c5f855788e5a8eca8"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"            # Second call"},{"line_number":1098,"context_line":"            self.driver.create_volume_from_snapshot(self.volume_a, snapshot)"},{"line_number":1099,"context_line":"            mock_log.warning.assert_called_once_with(mock.ANY)"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"    @common_mocks"},{"line_number":1102,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":1103,"context_line":"    def test_delete_snapshot(self, volume_get_by_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"74f1f7d1_ae6d6da9","line":1100,"in_reply_to":"2dc097a4_eae7609a","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"a49e300842f33b1a33d4872c5f855788e5a8eca8"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2ea1d2b86a0df935acbfbb3b03f95d903d58f359","unresolved":true,"context_lines":[{"line_number":1063,"context_line":"    @common_mocks"},{"line_number":1064,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":1065,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":1066,"context_line":"    def test_log_create_vol_from_snap_raise_attribute_error(self,"},{"line_number":1067,"context_line":"                                                            volume_get_by_id):"},{"line_number":1068,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3e8bbabf_84443120","line":1066,"range":{"start_line":1066,"start_character":38,"end_line":1066,"end_character":59},"updated":"2022-05-02 18:56:45.000000000","message":"nit: it\u0027s not really an attribute error that you are checking","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"7a934183aed5718e059e5ff62c8a13c17ec9b95b","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"    @common_mocks"},{"line_number":1064,"context_line":"    @mock.patch(\u0027cinder.objects.Volume.get_by_id\u0027)"},{"line_number":1065,"context_line":"    @mock.patch.object(driver.RBDDriver, \u0027_resize\u0027, mock.Mock())"},{"line_number":1066,"context_line":"    def test_log_create_vol_from_snap_raise_attribute_error(self,"},{"line_number":1067,"context_line":"                                                            volume_get_by_id):"},{"line_number":1068,"context_line":"        volume_get_by_id.return_value \u003d self.volume_a"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"c50d6bf7_fb286f5d","line":1066,"range":{"start_line":1066,"start_character":38,"end_line":1066,"end_character":59},"in_reply_to":"3e8bbabf_84443120","updated":"2022-05-16 19:05:26.000000000","message":"Done","commit_id":"726448459f8dd9c24324f07431319a2d327ca29e"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"895f61d2db7bab86506ad18744f920f4b89bbc60","unresolved":true,"context_lines":[{"line_number":304,"context_line":"                    enabled \u003d (volume.volume.op_features() \u0026"},{"line_number":305,"context_line":"                               self.rbd.RBD_OPERATION_FEATURE_CLONE_PARENT)"},{"line_number":306,"context_line":"                except AttributeError:"},{"line_number":307,"context_line":"                    pass"},{"line_number":308,"context_line":"                if enabled:"},{"line_number":309,"context_line":"                    LOG.info(\u0027Using v2 Clone API\u0027)"},{"line_number":310,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3058bd_d943ac7a","line":307,"range":{"start_line":307,"start_character":20,"end_line":307,"end_character":24},"updated":"2021-08-30 17:26:39.000000000","message":"-1: There is no need to set a default value on L301 since this line is the only case where we want to default to False.   Please replace this `pass` with `enabled \u003d False`","commit_id":"8dbd9ba48833c6e78d6fa2fa328b75f8187fe8a8"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                    enabled \u003d (volume.volume.op_features() \u0026"},{"line_number":305,"context_line":"                               self.rbd.RBD_OPERATION_FEATURE_CLONE_PARENT)"},{"line_number":306,"context_line":"                except AttributeError:"},{"line_number":307,"context_line":"                    pass"},{"line_number":308,"context_line":"                if enabled:"},{"line_number":309,"context_line":"                    LOG.info(\u0027Using v2 Clone API\u0027)"},{"line_number":310,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"53fa49bf_1bb0f6b9","line":307,"range":{"start_line":307,"start_character":20,"end_line":307,"end_character":24},"in_reply_to":"df3058bd_d943ac7a","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"8dbd9ba48833c6e78d6fa2fa328b75f8187fe8a8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"432a1522312e1e8404051f3b4d3cb06f3111f31f","unresolved":true,"context_lines":[{"line_number":305,"context_line":"                try:"},{"line_number":306,"context_line":"                    enabled \u003d (volume.volume.op_features() \u0026"},{"line_number":307,"context_line":"                               self.rbd.RBD_OPERATION_FEATURE_CLONE_PARENT)"},{"line_number":308,"context_line":"                except AttributeError:"},{"line_number":309,"context_line":"                    enabled \u003d False"},{"line_number":310,"context_line":"                if enabled:"},{"line_number":311,"context_line":"                    LOG.info(\u0027Using v2 Clone API\u0027)"},{"line_number":312,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"be96bd8b_77722ca1","line":309,"range":{"start_line":308,"start_character":16,"end_line":309,"end_character":35},"updated":"2021-11-11 15:15:23.000000000","message":"The commit message says we are trying to handle a generic case, when any exception other than AttributeError is raised, we should log but i don\u0027t see how the code is doing that.","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                try:"},{"line_number":306,"context_line":"                    enabled \u003d (volume.volume.op_features() \u0026"},{"line_number":307,"context_line":"                               self.rbd.RBD_OPERATION_FEATURE_CLONE_PARENT)"},{"line_number":308,"context_line":"                except AttributeError:"},{"line_number":309,"context_line":"                    enabled \u003d False"},{"line_number":310,"context_line":"                if enabled:"},{"line_number":311,"context_line":"                    LOG.info(\u0027Using v2 Clone API\u0027)"},{"line_number":312,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"36dcd663_08ea6123","line":309,"range":{"start_line":308,"start_character":16,"end_line":309,"end_character":35},"in_reply_to":"be000685_57370be1","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d117b3053eee4fe9f44c08de12e607e77de77d08","unresolved":true,"context_lines":[{"line_number":305,"context_line":"                try:"},{"line_number":306,"context_line":"                    enabled \u003d (volume.volume.op_features() \u0026"},{"line_number":307,"context_line":"                               self.rbd.RBD_OPERATION_FEATURE_CLONE_PARENT)"},{"line_number":308,"context_line":"                except AttributeError:"},{"line_number":309,"context_line":"                    enabled \u003d False"},{"line_number":310,"context_line":"                if enabled:"},{"line_number":311,"context_line":"                    LOG.info(\u0027Using v2 Clone API\u0027)"},{"line_number":312,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"be000685_57370be1","line":309,"range":{"start_line":308,"start_character":16,"end_line":309,"end_character":35},"in_reply_to":"be96bd8b_77722ca1","updated":"2021-11-16 20:56:07.000000000","message":"I\u0027m confused here, too.  Is the idea that this should be a totally non-invasive function that should never raise an exception?  If so, you need to catch something more general at line 308.  Usually we don\u0027t like catching Exception and continuing, but this is a special purpose function, so I think it makes sense here.  (It also means you\u0027ll need to change your second unit test.)","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ccb6828a0a936f4f3522557636599369bdda3e3c","unresolved":true,"context_lines":[{"line_number":314,"context_line":"                                \u0027 mimic+ and set the OSD minimum client\u0027"},{"line_number":315,"context_line":"                                \u0027 compat version to mimic for better\u0027"},{"line_number":316,"context_line":"                                \u0027 performance, fewer deletion issues\u0027)"},{"line_number":317,"context_line":"                self._clone_v2_api_checked \u003d True"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _get_target_config(self, target_id):"},{"line_number":320,"context_line":"        \"\"\"Get a replication target from known replication targets.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"b91c9fa1_a5e189cb","line":317,"range":{"start_line":317,"start_character":16,"end_line":317,"end_character":49},"updated":"2021-11-17 13:20:30.000000000","message":"nit: I kind of liked this at line 304, so that if anything at all goes wrong in the rest of the function, we\u0027ll never try it again, but this is probably fine here.","commit_id":"b23f19ba6c3c079835ca3ed0e99f9cefebf8bc3b"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                                \u0027 mimic+ and set the OSD minimum client\u0027"},{"line_number":315,"context_line":"                                \u0027 compat version to mimic for better\u0027"},{"line_number":316,"context_line":"                                \u0027 performance, fewer deletion issues\u0027)"},{"line_number":317,"context_line":"                self._clone_v2_api_checked \u003d True"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _get_target_config(self, target_id):"},{"line_number":320,"context_line":"        \"\"\"Get a replication target from known replication targets.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"9b785a4d_288774cc","line":317,"range":{"start_line":317,"start_character":16,"end_line":317,"end_character":49},"in_reply_to":"b91c9fa1_a5e189cb","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"b23f19ba6c3c079835ca3ed0e99f9cefebf8bc3b"}],"releasenotes/notes/bug-1942210-show-msg-check-clone-v2-api-raise-attribute-error-40efd74bb92b9482.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cc99c677223ebf3db61fbc94e8bbb2d079599494","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"  - |"},{"line_number":3,"context_line":"    RBD driver `bug #1942210"},{"line_number":4,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1942210\u003e`_: Fixed"},{"line_number":5,"context_line":"    ``AttributeError`` when using _show_msg_check_clone_v2_api."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"674604e8_42014f91","line":2,"updated":"2021-09-01 08:24:06.000000000","message":"-1: Missing top-level key:\n\n fixes:\n  - |\n    RBD driver","commit_id":"52c468f8250d42524a8e5d92bd7e1d88f241335c"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"  - |"},{"line_number":3,"context_line":"    RBD driver `bug #1942210"},{"line_number":4,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1942210\u003e`_: Fixed"},{"line_number":5,"context_line":"    ``AttributeError`` when using _show_msg_check_clone_v2_api."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"47dd360b_6d881623","line":2,"in_reply_to":"674604e8_42014f91","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"52c468f8250d42524a8e5d92bd7e1d88f241335c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d117b3053eee4fe9f44c08de12e607e77de77d08","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    RBD driver `bug #1942210"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1942210\u003e`_: Fixed"},{"line_number":6,"context_line":"    ``AttributeError`` when using _show_msg_check_clone_v2_api."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9ed9b699_818dd00d","line":6,"updated":"2021-11-16 20:56:07.000000000","message":"I\u0027m not sure how accurate this is.  The old code would catch an AttributeError and then log \"not using clone v2\", so I don\u0027t think an operator would be seeing AttributeError in the logs.","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    RBD driver `bug #1942210"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1942210\u003e`_: Fixed"},{"line_number":6,"context_line":"    ``AttributeError`` when using _show_msg_check_clone_v2_api."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"b2eab09e_8b4ec640","line":6,"in_reply_to":"9ed9b699_818dd00d","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"e1a9004bf21ddeba203b4f483daabd213aa997b6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3289356db674adb51180af4df0ded42766dc08b6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"86c82158_b1b67bf2","line":8,"updated":"2021-11-18 00:11:18.000000000","message":"I don\u0027t know that you want to mention the name of the private function here, because this note is aimed at operators (not developers).  You might want to say something like \"When creating a volume from a snapshot, the operation could fail due to an uncaught exception being raised during a check to see if the backend Ceph installation supported the clone v2 API.  The driver now handles this situation gracefully.\"","commit_id":"a49e300842f33b1a33d4872c5f855788e5a8eca8"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"031423f02f216af2dac78dd72a0c775c8acc2ce5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"8e13d271_e539a28c","line":8,"in_reply_to":"86c82158_b1b67bf2","updated":"2022-05-02 17:47:11.000000000","message":"Done","commit_id":"a49e300842f33b1a33d4872c5f855788e5a8eca8"}]}
