)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"df5b2233bf8e60c5f6c42df439220b7d3a851899","unresolved":true,"context_lines":[{"line_number":30,"context_line":"unmocked nova.volume.cinder.API.get() method. Because the error was"},{"line_number":31,"context_line":"being raised from get() and get() is unrelated to the detach() test and"},{"line_number":32,"context_line":"should be mocked anyway, this cherry pick was modified to also mock"},{"line_number":33,"context_line":"nova.volume.cinder.API.get() to avoid the error."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Closes-Bug: #1944043"},{"line_number":36,"context_line":"Change-Id: I741cb6b29a67da8c60708c6251c441d778ca74d0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"c9a9b7b7_8631170d","line":33,"updated":"2022-12-15 09:18:45.000000000","message":"+1","commit_id":"56ae96c0f999046cfa9c15c5206ff73989d8f313"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"50d57f4fb82ca6a32bea96ecf11b4cda793a694c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c8f72df4_bf9ca8a1","updated":"2022-11-30 01:40:31.000000000","message":"Failure looks legit","commit_id":"ba03c7cc33843d263b35f86d123877cf16ac9add"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a3af092b163e86f9d4ebe8412583056d4b2eda96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"20f5da10_4598fbcd","updated":"2022-12-07 18:56:32.000000000","message":"after a lot of back and forth on irc yes i think this is an ok tweak to the test for train\n\nim not sure why this fails on 27 althoguh i am speculating that it might be something to do with trackbacks and exciton handeling combind with the interaction be deepcopy and magicmocks.\n\nits really non obvious but i agree with your comment that get should likely be mocked in this test anyway.\n\n","commit_id":"56ae96c0f999046cfa9c15c5206ff73989d8f313"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"df5b2233bf8e60c5f6c42df439220b7d3a851899","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d45559f9_3bddc922","updated":"2022-12-15 09:18:45.000000000","message":"looks OK to me","commit_id":"56ae96c0f999046cfa9c15c5206ff73989d8f313"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e7a37f401a5d4785d6768cc3fb94ee97928d543d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a79f68e4_764c36c1","in_reply_to":"20f5da10_4598fbcd","updated":"2022-12-07 21:44:54.000000000","message":"For completeness, I\u0027m adding a link to the IRC conversion [1].\n\nThe error had something to do with attempting to deepcopy a MagicMock [2] and Sean noticed that the failing test, test_detach_internal_server_error, is the only test that ends up propagating a 500 error up. And 500 is the only error code that will do retries via @retrying.retry(). There is something about this specific path that breaks in python 2.7.\n\n[1] https://meetings.opendev.org/irclogs/%23openstack-nova/%23openstack-nova.2022-12-07.log.html#t2022-12-07T17:43:30\n[2] https://review.opendev.org/c/openstack/nova/+/866090/comments/6b36ff76_377b6e49","commit_id":"56ae96c0f999046cfa9c15c5206ff73989d8f313"}],"nova/tests/unit/volume/test_cinder.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e7a37f401a5d4785d6768cc3fb94ee97928d543d","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        mock_cinderclient.assert_called_with(self.ctx, microversion\u003dNone)"},{"line_number":670,"context_line":"        mock_volumes.detach.assert_called_once_with(\u0027id1\u0027, \u0027fakeid\u0027)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    @mock.patch(\u0027nova.volume.cinder.API.get\u0027, new\u003dmock.MagicMock())"},{"line_number":673,"context_line":"    @mock.patch(\u0027nova.volume.cinder.cinderclient\u0027)"},{"line_number":674,"context_line":"    def test_detach_internal_server_error(self, mock_cinderclient):"},{"line_number":675,"context_line":"        mock_cinderclient.return_value.volumes.detach.side_effect \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"b53c20df_66ecf109","line":672,"updated":"2022-12-07 21:44:54.000000000","message":"For reviewers: this is the new code line that is not in any of the newer branches patch versions.","commit_id":"56ae96c0f999046cfa9c15c5206ff73989d8f313"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"df5b2233bf8e60c5f6c42df439220b7d3a851899","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        mock_cinderclient.assert_called_with(self.ctx, microversion\u003dNone)"},{"line_number":670,"context_line":"        mock_volumes.detach.assert_called_once_with(\u0027id1\u0027, \u0027fakeid\u0027)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    @mock.patch(\u0027nova.volume.cinder.API.get\u0027, new\u003dmock.MagicMock())"},{"line_number":673,"context_line":"    @mock.patch(\u0027nova.volume.cinder.cinderclient\u0027)"},{"line_number":674,"context_line":"    def test_detach_internal_server_error(self, mock_cinderclient):"},{"line_number":675,"context_line":"        mock_cinderclient.return_value.volumes.detach.side_effect \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"b42ba558_3b67a57b","line":672,"in_reply_to":"b53c20df_66ecf109","updated":"2022-12-15 09:18:45.000000000","message":"thanks for the note","commit_id":"56ae96c0f999046cfa9c15c5206ff73989d8f313"}],"nova/volume/cinder.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"420ee95988450575d3460417ccb1cf3b23ea3cca","unresolved":true,"context_lines":[{"line_number":575,"context_line":"               attachment_id\u003dNone):"},{"line_number":576,"context_line":"        client \u003d cinderclient(context)"},{"line_number":577,"context_line":"        if attachment_id is None:"},{"line_number":578,"context_line":"            volume \u003d self.get(context, volume_id)"},{"line_number":579,"context_line":"            if volume[\u0027multiattach\u0027]:"},{"line_number":580,"context_line":"                attachments \u003d volume.get(\u0027attachments\u0027, {})"},{"line_number":581,"context_line":"                if instance_uuid:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6b36ff76_377b6e49","line":578,"updated":"2022-12-06 04:26:48.000000000","message":"This is where the unit test is blowing up in py27 ... Really I\u0027d think this method should be mocked so we don\u0027t run the real stuff in self.get(). But since it\u0027s not mocked, it will end up calling _untranslate_volume_summary_view() and that function calls copy.deepcopy() with the volume object returned by cinderclient.volumes.get(), which would be a MagicMock I think.\n\nSo something about deepcopying a MagicMock in py27 is problematic ... ? But not always?\n\nI don\u0027t think I\u0027ll be able to figure out why and self.get() should be mocked anyway. I guess I\u0027ll mock it for Train only since it\u0027s the only one failing. And because backports from some of the newer branches have already merged.","commit_id":"ba03c7cc33843d263b35f86d123877cf16ac9add"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"df5b2233bf8e60c5f6c42df439220b7d3a851899","unresolved":true,"context_lines":[{"line_number":575,"context_line":"               attachment_id\u003dNone):"},{"line_number":576,"context_line":"        client \u003d cinderclient(context)"},{"line_number":577,"context_line":"        if attachment_id is None:"},{"line_number":578,"context_line":"            volume \u003d self.get(context, volume_id)"},{"line_number":579,"context_line":"            if volume[\u0027multiattach\u0027]:"},{"line_number":580,"context_line":"                attachments \u003d volume.get(\u0027attachments\u0027, {})"},{"line_number":581,"context_line":"                if instance_uuid:"}],"source_content_type":"text/x-python","patch_set":1,"id":"85779f87_edff0041","line":578,"in_reply_to":"6b36ff76_377b6e49","updated":"2022-12-15 09:18:45.000000000","message":"yeah I have no explanation either. I think mocking it is a good enough solution on stable.","commit_id":"ba03c7cc33843d263b35f86d123877cf16ac9add"}]}
