)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b0e8f8193d3736bd8a54d32620e255e49b4a9b27","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6dd1dac8_a2f4ec20","updated":"2024-12-10 00:06:06.000000000","message":"+2 based on the follow up patch https://review.opendev.org/c/openstack/nova/+/937377","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0e138e4ba8dd7f282ab8ead45ce3d8738e0650f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0916b157_2f99f06a","updated":"2025-01-20 18:45:43.000000000","message":"lgtm","commit_id":"1d4688aa8ba924ea1eab0a7dd0c22367a062b346"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1b0f79cbe897420abb8d4ec597465cc0d5bf0b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b2ef79de_8dfb2032","updated":"2025-01-24 10:09:32.000000000","message":"recheck random failure on base patch","commit_id":"1d4688aa8ba924ea1eab0a7dd0c22367a062b346"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c5f51a6e9d230aa81e6dd82226d580c0380d7d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"44d9f24e_a5a8fe73","updated":"2025-01-28 12:21:47.000000000","message":"recheck","commit_id":"97ca3204ad33ecd331978e7aa6cd362715a8372f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab6be05d99830298e765a8c76bc78e11afe9dc29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"532e8e26_bd855bdc","updated":"2025-02-10 11:07:57.000000000","message":"recheck","commit_id":"97ca3204ad33ecd331978e7aa6cd362715a8372f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb102e7a5f5c9ad644925e5413613ad7aeea86f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cfe597a0_b952dc60","updated":"2025-01-31 18:11:39.000000000","message":"recheck","commit_id":"97ca3204ad33ecd331978e7aa6cd362715a8372f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"64d3f8b4a17ba096c8b3b9933510eae59df4f2fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8e876d52_a135c42e","updated":"2025-01-31 09:48:21.000000000","message":"recheck failure on base patch","commit_id":"97ca3204ad33ecd331978e7aa6cd362715a8372f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3af642e4cbbb6bd998f352fd93d48f14130bfe68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4fc9bff2_cbba3777","updated":"2025-01-28 16:45:46.000000000","message":"recheck timeout","commit_id":"97ca3204ad33ecd331978e7aa6cd362715a8372f"}],"nova/api/openstack/wsgi.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da7c1941857075368584d98c4a70dd50899a6a88","unresolved":false,"context_lines":[{"line_number":266,"context_line":"    \"\"\""},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def decorator(func):"},{"line_number":269,"context_line":"        if not hasattr(func, \u0027wsgi_codes\u0027):"},{"line_number":270,"context_line":"            func.wsgi_codes \u003d WSGICodes()"},{"line_number":271,"context_line":"        func.wsgi_codes.add_code((code, min_version, max_version))"},{"line_number":272,"context_line":"        return func"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8bae602_69ed4baf","line":269,"updated":"2024-12-09 15:00:29.000000000","message":"ok so we need to do this chacke because we can wrap the same responce fucntion mulitple times with mulitple time but for diffent microvsrion ranages.\n\nSo we want to initialize it once and extend it to all subsequent wrapping.\n\nim not a fan of using hasattr directly but i agree this is a good example of when to use it.","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da7c1941857075368584d98c4a70dd50899a6a88","unresolved":true,"context_lines":[{"line_number":597,"context_line":"            # Run post-processing extensions"},{"line_number":598,"context_line":"            if resp_obj:"},{"line_number":599,"context_line":"                # Do a preserialize to set up the response object"},{"line_number":600,"context_line":"                if hasattr(meth, \u0027wsgi_codes\u0027):"},{"line_number":601,"context_line":"                    resp_obj._default_code \u003d meth.wsgi_codes(request)"},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"            if resp_obj and not response:"}],"source_content_type":"text/x-python","patch_set":2,"id":"84193348_915078bf","line":600,"updated":"2024-12-09 15:00:29.000000000","message":"evenually we shoudl be able ot remove this hasattr as all respocnes shoudl have codes registered but for now we also need this","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1efe28a3e07db46a3c78f94bbf4ba051af6c8ff3","unresolved":false,"context_lines":[{"line_number":597,"context_line":"            # Run post-processing extensions"},{"line_number":598,"context_line":"            if resp_obj:"},{"line_number":599,"context_line":"                # Do a preserialize to set up the response object"},{"line_number":600,"context_line":"                if hasattr(meth, \u0027wsgi_codes\u0027):"},{"line_number":601,"context_line":"                    resp_obj._default_code \u003d meth.wsgi_codes(request)"},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"            if resp_obj and not response:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2a1fdfaf_e8e1826b","line":600,"in_reply_to":"84193348_915078bf","updated":"2025-01-08 11:54:20.000000000","message":"Yup, exactly.","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"}],"nova/tests/unit/api/openstack/compute/admin_only_action_common.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"da7c1941857075368584d98c4a70dd50899a6a88","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            res \u003d controller_function(self.req, instance.uuid, body\u003dbody)"},{"line_number":92,"context_line":"            # NOTE: on v2.1, http status code is set as wsgi_codes of API"},{"line_number":93,"context_line":"            # method instead of status_int in a response object."},{"line_number":94,"context_line":"            if self._api_version \u003d\u003d \u00272.1\u0027:"},{"line_number":95,"context_line":"                status_int \u003d controller_function.wsgi_codes(self.req)"},{"line_number":96,"context_line":"            else:"},{"line_number":97,"context_line":"                status_int \u003d res.status_int"},{"line_number":98,"context_line":"            self.assertEqual(202, status_int)"},{"line_number":99,"context_line":"            mock_method.assert_called_once_with(self.context, instance, *args,"},{"line_number":100,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2c9f1506_987003a6","line":97,"range":{"start_line":94,"start_character":11,"end_line":97,"end_character":43},"updated":"2024-12-09 15:00:29.000000000","message":"im missing why it is always not corect to just do \n\nstatus_int \u003d controller_function.wsgi_codes(self.req)\n \ncan we just remove this if here and else where.\n\ni woudl expect controller_function.wsgi_codes(self.req)\nto return the same value as res.status_int in the non 2.1 case\n\nperhaps i need to look at the implation again to see why that wouldnot be the case?","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99ead8564391e5f146b7af35d3e9c82d6e0b5fb6","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            res \u003d controller_function(self.req, instance.uuid, body\u003dbody)"},{"line_number":92,"context_line":"            # NOTE: on v2.1, http status code is set as wsgi_codes of API"},{"line_number":93,"context_line":"            # method instead of status_int in a response object."},{"line_number":94,"context_line":"            if self._api_version \u003d\u003d \u00272.1\u0027:"},{"line_number":95,"context_line":"                status_int \u003d controller_function.wsgi_codes(self.req)"},{"line_number":96,"context_line":"            else:"},{"line_number":97,"context_line":"                status_int \u003d res.status_int"},{"line_number":98,"context_line":"            self.assertEqual(202, status_int)"},{"line_number":99,"context_line":"            mock_method.assert_called_once_with(self.context, instance, *args,"},{"line_number":100,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f2b48b36_a7fbaa33","line":97,"range":{"start_line":94,"start_character":11,"end_line":97,"end_character":43},"in_reply_to":"2c9f1506_987003a6","updated":"2024-12-09 15:25:00.000000000","message":"tbh, I\u0027ve no idea. This wasn\u0027t me so I didn\u0027t look too deeply. I will take a look now but the fix can be separate IMO","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b0e8f8193d3736bd8a54d32620e255e49b4a9b27","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            res \u003d controller_function(self.req, instance.uuid, body\u003dbody)"},{"line_number":92,"context_line":"            # NOTE: on v2.1, http status code is set as wsgi_codes of API"},{"line_number":93,"context_line":"            # method instead of status_int in a response object."},{"line_number":94,"context_line":"            if self._api_version \u003d\u003d \u00272.1\u0027:"},{"line_number":95,"context_line":"                status_int \u003d controller_function.wsgi_codes(self.req)"},{"line_number":96,"context_line":"            else:"},{"line_number":97,"context_line":"                status_int \u003d res.status_int"},{"line_number":98,"context_line":"            self.assertEqual(202, status_int)"},{"line_number":99,"context_line":"            mock_method.assert_called_once_with(self.context, instance, *args,"},{"line_number":100,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c622b53a_979c7263","line":97,"range":{"start_line":94,"start_character":11,"end_line":97,"end_character":43},"in_reply_to":"71853f99_510c38b7","updated":"2024-12-10 00:06:06.000000000","message":"Acknowledged","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"713d505ddce0d4f6b4402bf03dc9b5e10acdff2e","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            res \u003d controller_function(self.req, instance.uuid, body\u003dbody)"},{"line_number":92,"context_line":"            # NOTE: on v2.1, http status code is set as wsgi_codes of API"},{"line_number":93,"context_line":"            # method instead of status_int in a response object."},{"line_number":94,"context_line":"            if self._api_version \u003d\u003d \u00272.1\u0027:"},{"line_number":95,"context_line":"                status_int \u003d controller_function.wsgi_codes(self.req)"},{"line_number":96,"context_line":"            else:"},{"line_number":97,"context_line":"                status_int \u003d res.status_int"},{"line_number":98,"context_line":"            self.assertEqual(202, status_int)"},{"line_number":99,"context_line":"            mock_method.assert_called_once_with(self.context, instance, *args,"},{"line_number":100,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"71853f99_510c38b7","line":97,"range":{"start_line":94,"start_character":11,"end_line":97,"end_character":43},"in_reply_to":"f2b48b36_a7fbaa33","updated":"2024-12-09 15:35:12.000000000","message":"I\u0027m fine with simplifying this in a follow-up if that simplification is valid\n\nif gmann is fine to cover this in a follow up ill upgrade to +2\n\nlet\u0027s just update this comment either way to reflect that and once we have determiend if this simplifcation makes sense.","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b081fa0a8bfc0858e203e2a3d854965c0d4679fd","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            res \u003d controller_function(self.req, instance.uuid, body\u003dbody)"},{"line_number":92,"context_line":"            # NOTE: on v2.1, http status code is set as wsgi_codes of API"},{"line_number":93,"context_line":"            # method instead of status_int in a response object."},{"line_number":94,"context_line":"            if self._api_version \u003d\u003d \u00272.1\u0027:"},{"line_number":95,"context_line":"                status_int \u003d controller_function.wsgi_codes(self.req)"},{"line_number":96,"context_line":"            else:"},{"line_number":97,"context_line":"                status_int \u003d res.status_int"},{"line_number":98,"context_line":"            self.assertEqual(202, status_int)"},{"line_number":99,"context_line":"            mock_method.assert_called_once_with(self.context, instance, *args,"},{"line_number":100,"context_line":"                                                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffd54924_21e8f9fe","line":97,"range":{"start_line":94,"start_character":11,"end_line":97,"end_character":43},"in_reply_to":"f2b48b36_a7fbaa33","updated":"2024-12-09 15:34:35.000000000","message":"Yeah, this other branch is dead code now. Good spot. Fixed [here](https://review.opendev.org/c/openstack/nova/+/937377).","commit_id":"0d6a70c82c2cc7ab80d4af6e20fc65c2d346fff5"}]}
