)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"4223b4e403f34b8fad198b9354bb5a503b076222","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"81d4831a_d99f5995","updated":"2022-06-14 16:41:52.000000000","message":"All looks sane to me. I have one suggestion, though.","commit_id":"4978f8126208b421829459a5e63f6913016260f5"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b26a62a9e4c0c821cf3a10960e556c1f05c8457f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7dd1f702_42895dd3","updated":"2022-06-15 11:36:52.000000000","message":"cool!","commit_id":"3fc324fb54d4fc5b705e60a1d6642871ebb0b2f8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a27bc1211350cdbffaa9520c637995dfa195d3be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"279c8b1b_ea448626","updated":"2022-06-20 13:17:31.000000000","message":"recheck","commit_id":"3fc324fb54d4fc5b705e60a1d6642871ebb0b2f8"},{"author":{"_account_id":27032,"name":"Maysa de Macedo Souza","email":"maysa.macedo95@gmail.com","username":"maysa"},"change_message_id":"269b0b2f337917bf581802a781ae39a1b4875d03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8e3858c4_760913a2","updated":"2022-06-16 08:50:16.000000000","message":"recheck","commit_id":"3fc324fb54d4fc5b705e60a1d6642871ebb0b2f8"}],"kuryr_kubernetes/clients.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"922abe84f6fe3d96c4eb32f5ce62bbf973d4f3f6","unresolved":true,"context_lines":[{"line_number":129,"context_line":"    trunk._body.attributes.update({\u0027sub_ports\u0027: subports})"},{"line_number":130,"context_line":"    return trunk"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def get_neutron_error_type(ex):"},{"line_number":134,"context_line":"    response \u003d ex.response.json()"},{"line_number":135,"context_line":"    if response:"},{"line_number":136,"context_line":"        try:"},{"line_number":137,"context_line":"            return response[\u0027NeutronError\u0027][\u0027type\u0027]"},{"line_number":138,"context_line":"        except KeyError:"},{"line_number":139,"context_line":"            pass"},{"line_number":140,"context_line":"    return None"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def handle_neutron_errors(method, *args, **kwargs):"},{"line_number":144,"context_line":"    \"\"\"Handle errors on openstacksdk router methods\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"75635710_05c0bc95","line":141,"range":{"start_line":132,"start_character":0,"end_line":141,"end_character":0},"updated":"2022-06-14 15:29:28.000000000","message":"This got to be super-safe, please double-check me.","commit_id":"326718a840bfa1e396ef724862951d74bcb26d4c"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"4223b4e403f34b8fad198b9354bb5a503b076222","unresolved":true,"context_lines":[{"line_number":135,"context_line":"    if response:"},{"line_number":136,"context_line":"        try:"},{"line_number":137,"context_line":"            return response[\u0027NeutronError\u0027][\u0027type\u0027]"},{"line_number":138,"context_line":"        except KeyError:"},{"line_number":139,"context_line":"            pass"},{"line_number":140,"context_line":"    return None"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6319af0f_ad3afba6","line":138,"updated":"2022-06-14 16:41:52.000000000","message":"Probably JSONDecodeError (or maybe RequestException) should also be catch here in case of no/bad json in reponse.","commit_id":"4978f8126208b421829459a5e63f6913016260f5"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"22ec67ae01ebfaeab9364ddd8461c3bf601ee4a0","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    if response:"},{"line_number":136,"context_line":"        try:"},{"line_number":137,"context_line":"            return response[\u0027NeutronError\u0027][\u0027type\u0027]"},{"line_number":138,"context_line":"        except KeyError:"},{"line_number":139,"context_line":"            pass"},{"line_number":140,"context_line":"    return None"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ced85f39_6b509dd0","line":138,"in_reply_to":"6319af0f_ad3afba6","updated":"2022-06-15 11:26:19.000000000","message":"Obviously it\u0027s not trivial, but seems like ValueError covers it for all requests versions we support.","commit_id":"4978f8126208b421829459a5e63f6913016260f5"}],"kuryr_kubernetes/handlers/retry.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"922abe84f6fe3d96c4eb32f5ce62bbf973d4f3f6","unresolved":true,"context_lines":[{"line_number":101,"context_line":"                with excutils.save_and_reraise_exception() as ex:"},{"line_number":102,"context_line":"                    if self._sleep(deadline, attempt, ex.value):"},{"line_number":103,"context_line":"                        ex.reraise \u003d False"},{"line_number":104,"context_line":"            except os_exc.ConflictException:"},{"line_number":105,"context_line":"                with excutils.save_and_reraise_exception() as ex:"},{"line_number":106,"context_line":"                    error_type \u003d clients.get_neutron_error_type(ex)"},{"line_number":107,"context_line":"                    if error_type \u003d\u003d \u0027OverQuota\u0027:"},{"line_number":108,"context_line":"                        if self._sleep(deadline, attempt, ex.value):"},{"line_number":109,"context_line":"                            ex.reraise \u003d False"},{"line_number":110,"context_line":"            except self._exceptions:"},{"line_number":111,"context_line":"                with excutils.save_and_reraise_exception() as ex:"},{"line_number":112,"context_line":"                    if self._sleep(deadline, attempt, ex.value):"}],"source_content_type":"text/x-python","patch_set":1,"id":"92e25c7a_4ec9e1cc","line":109,"range":{"start_line":104,"start_character":0,"end_line":109,"end_character":46},"updated":"2022-06-14 15:29:28.000000000","message":"This is a non-trivial change that should not change the logic, please double-check me.\n\nI simply decided to rather use save_and_reraise_exception instead of raising ourselves.","commit_id":"326718a840bfa1e396ef724862951d74bcb26d4c"}]}
