)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c2034014debccf2046864e80f7ea0d68f188642e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0b233a06_8f837ef3","updated":"2022-07-11 13:50:11.000000000","message":"-1 for visibility because I\u0027m not sure about the new exception. Adding gmann for his opinion.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"ed18fca82bfaa52ecc10dcf9d3f39cf7b10d61a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"274e2f07_6c3ef78b","updated":"2022-07-29 12:14:27.000000000","message":"Hi Ghanshyam. Can you please take a look?","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"926d2a8b7506a51595ff41ea1d5e54479326604c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d32c124b_f9b525c8","updated":"2022-07-21 14:38:47.000000000","message":"Hi Ghanshyam. What\u0027s your take on this one?","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"662f58e787dc9643a1a38181d0cb7c2991f73f7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9acf62fc_3c9c84c5","updated":"2022-08-10 11:13:56.000000000","message":"I failed to find gmann in IRC, so would like to ask for a look from other Core developers.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"363bbe5468b5b95749bdc59e826b669f9cdae973","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"de21066f_41c0f4fd","updated":"2022-07-27 13:40:28.000000000","message":"Removing -1 to avoid scaring off potential reviewers, as it was for question visibility than any real issue with the patch.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"d394f7b1896cdee80b88b68c7182edff49d17099","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d95b9292_09bf4d69","updated":"2022-07-11 13:59:44.000000000","message":"Thank you for taking a look Artom.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"7973bcf75c9b4f7c88e44415a80a6dfeaeaba0d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"123036b0_aa80b996","in_reply_to":"0b233a06_8f837ef3","updated":"2022-08-17 07:56:53.000000000","message":"Done","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"cb1311ee50b88b42ace587310338c41b68585841","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"027362e9_39f1dc3b","updated":"2023-01-10 08:49:13.000000000","message":"recheck","commit_id":"8c6daaacbedc33e738ce85aec0ead5f6947d60bf"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"b43f64be719d59cac72b86710fbc789a57739ea7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8e7e0b37_e8f5e30d","updated":"2022-10-06 19:38:10.000000000","message":"recheck","commit_id":"8c6daaacbedc33e738ce85aec0ead5f6947d60bf"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"2491605769650d07ed592f4feccf63aa42902cf4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8f91d1b5_501dcf0f","updated":"2023-01-12 15:03:53.000000000","message":"recheck","commit_id":"8c6daaacbedc33e738ce85aec0ead5f6947d60bf"}],"nova/api/openstack/compute/flavor_access.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ba57e22dd42e5d4ca9b17e387ed0812d63ca2b64","unresolved":true,"context_lines":[{"line_number":102,"context_line":"            if msg in identity_exc.explanation:"},{"line_number":103,"context_line":"                pass"},{"line_number":104,"context_line":"            else:"},{"line_number":105,"context_line":"                raise"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # NOTE(gibi): We have to load a flavor from the db here as"},{"line_number":108,"context_line":"        # flavor.remove_access() will try to emit a notification and that needs"}],"source_content_type":"text/x-python","patch_set":3,"id":"9125a393_c13ac7db","line":105,"updated":"2022-08-19 11:49:28.000000000","message":"nit:\n\n  if msg not in identity_exc.explanation:\n      raise\n\nVery unfortunate we don\u0027t have error codes we can rely on here rather than string matching... 😞","commit_id":"821972f4545c58c0d296ba4fa272e230e836c65b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7e7306193e0398268e8fd38194ff1f2fb24cb9cb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            if msg in identity_exc.explanation:"},{"line_number":103,"context_line":"                pass"},{"line_number":104,"context_line":"            else:"},{"line_number":105,"context_line":"                raise"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # NOTE(gibi): We have to load a flavor from the db here as"},{"line_number":108,"context_line":"        # flavor.remove_access() will try to emit a notification and that needs"}],"source_content_type":"text/x-python","patch_set":3,"id":"6a92572f_89454c4a","line":105,"in_reply_to":"9125a393_c13ac7db","updated":"2022-10-06 13:44:40.000000000","message":"Done","commit_id":"821972f4545c58c0d296ba4fa272e230e836c65b"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"dcd824b271d0518ce34e19ef423761201e101a1a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            if msg in identity_exc.explanation:"},{"line_number":103,"context_line":"                pass"},{"line_number":104,"context_line":"            else:"},{"line_number":105,"context_line":"                raise"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # NOTE(gibi): We have to load a flavor from the db here as"},{"line_number":108,"context_line":"        # flavor.remove_access() will try to emit a notification and that needs"}],"source_content_type":"text/x-python","patch_set":3,"id":"2c5775bb_1788ce9a","line":105,"in_reply_to":"9125a393_c13ac7db","updated":"2022-10-06 13:44:23.000000000","message":"Thank you, tuned if statement.","commit_id":"821972f4545c58c0d296ba4fa272e230e836c65b"}],"nova/api/openstack/compute/quota_sets.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c2034014debccf2046864e80f7ea0d68f188642e","unresolved":true,"context_lines":[{"line_number":126,"context_line":"    def _show(self, req, id, filtered_quotas):"},{"line_number":127,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":128,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027show\u0027, {\u0027project_id\u0027: id})"},{"line_number":129,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":132,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"d715feec_70c0cf97","line":129,"updated":"2022-07-11 13:50:11.000000000","message":"So now this can raise your new exception, and it will show up directly in the API. I *think* it\u0027s technically fine, because your new exception is a 500, which is always a possibility, so we\u0027re allowed to do this without any other work (like a new API microversion).","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"15d228145c530bfbc5ded5f685bd6bef77213f0e","unresolved":true,"context_lines":[{"line_number":126,"context_line":"    def _show(self, req, id, filtered_quotas):"},{"line_number":127,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":128,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027show\u0027, {\u0027project_id\u0027: id})"},{"line_number":129,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":132,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"56deee3f_10e69029","line":129,"in_reply_to":"0ebb9cfc_52be2f1f","updated":"2022-08-10 11:36:44.000000000","message":"no its not ok to intionally add a new 500 like this in my opion.\nwe certinly should not change an existing response to a 500 where it was previously anything elese.\n\nthe only way a 500 would be accpatble there as a reulst of this chagne is if it wa already a 500 but you change the error message.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"cf9ebf30103c5454b12a0e602ff6eacc1aaefcaa","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def _show(self, req, id, filtered_quotas):"},{"line_number":127,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":128,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027show\u0027, {\u0027project_id\u0027: id})"},{"line_number":129,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":132,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9d52b4ca_59e22a40","line":129,"in_reply_to":"56deee3f_10e69029","updated":"2022-08-16 15:43:45.000000000","message":"Done","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"d394f7b1896cdee80b88b68c7182edff49d17099","unresolved":true,"context_lines":[{"line_number":126,"context_line":"    def _show(self, req, id, filtered_quotas):"},{"line_number":127,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":128,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027show\u0027, {\u0027project_id\u0027: id})"},{"line_number":129,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":132,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"0ebb9cfc_52be2f1f","line":129,"in_reply_to":"d715feec_70c0cf97","updated":"2022-07-11 13:59:44.000000000","message":"Yes, IMO HTTP 500 is correct exception to raise here: from client\u0027s perspective Nova/Keystone interactions are not really related to his request, so HTTPBadRequest was not proper way to react in the first place.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c2034014debccf2046864e80f7ea0d68f188642e","unresolved":true,"context_lines":[{"line_number":155,"context_line":"    def _detail(self, req, id, filtered_quotas):"},{"line_number":156,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":157,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027detail\u0027, {\u0027project_id\u0027: id})"},{"line_number":158,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        user_id \u003d req.GET.get(\u0027user_id\u0027, None)"},{"line_number":161,"context_line":"        return self._format_quota_set("}],"source_content_type":"text/x-python","patch_set":2,"id":"74c223bd_88d1129f","line":158,"updated":"2022-07-11 13:50:11.000000000","message":"Ditto.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"7973bcf75c9b4f7c88e44415a80a6dfeaeaba0d1","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def _detail(self, req, id, filtered_quotas):"},{"line_number":156,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":157,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027detail\u0027, {\u0027project_id\u0027: id})"},{"line_number":158,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        user_id \u003d req.GET.get(\u0027user_id\u0027, None)"},{"line_number":161,"context_line":"        return self._format_quota_set("}],"source_content_type":"text/x-python","patch_set":2,"id":"ca5a4291_d132ed4e","line":158,"in_reply_to":"74c223bd_88d1129f","updated":"2022-08-17 07:56:53.000000000","message":"Done","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c2034014debccf2046864e80f7ea0d68f188642e","unresolved":true,"context_lines":[{"line_number":187,"context_line":"    def _update(self, req, id, body, filtered_quotas):"},{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027update\u0027, {\u0027project_id\u0027: id})"},{"line_number":190,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        project_id \u003d id"},{"line_number":193,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"6270f92d_efcb052f","line":190,"updated":"2022-07-11 13:50:11.000000000","message":"Ditto.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"7973bcf75c9b4f7c88e44415a80a6dfeaeaba0d1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    def _update(self, req, id, body, filtered_quotas):"},{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027update\u0027, {\u0027project_id\u0027: id})"},{"line_number":190,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        project_id \u003d id"},{"line_number":193,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"5c168fa5_7548073c","line":190,"in_reply_to":"6270f92d_efcb052f","updated":"2022-08-17 07:56:53.000000000","message":"Done","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c2034014debccf2046864e80f7ea0d68f188642e","unresolved":true,"context_lines":[{"line_number":266,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":267,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027defaults\u0027, {\u0027project_id\u0027: id})"},{"line_number":268,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        values \u003d QUOTAS.get_defaults(context)"},{"line_number":271,"context_line":"        return self._format_quota_set(id, values,"},{"line_number":272,"context_line":"            filtered_quotas\u003dfiltered_quotas)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d5adaef1_86a7b9e6","line":269,"updated":"2022-07-11 13:50:11.000000000","message":"Ditto.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"7973bcf75c9b4f7c88e44415a80a6dfeaeaba0d1","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":267,"context_line":"        context.can(qs_policies.POLICY_ROOT % \u0027defaults\u0027, {\u0027project_id\u0027: id})"},{"line_number":268,"context_line":"        identity.verify_project_id(context, id)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        values \u003d QUOTAS.get_defaults(context)"},{"line_number":271,"context_line":"        return self._format_quota_set(id, values,"},{"line_number":272,"context_line":"            filtered_quotas\u003dfiltered_quotas)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b94f00e4_8ccb0d72","line":269,"in_reply_to":"d5adaef1_86a7b9e6","updated":"2022-08-17 07:56:53.000000000","message":"Done","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"}],"nova/api/openstack/identity.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c2034014debccf2046864e80f7ea0d68f188642e","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            \"might be caused by Nova misconfiguration or Keystone \""},{"line_number":44,"context_line":"            \"problems.\")"},{"line_number":45,"context_line":"        msg \u003d _(\"Nova was unable to find Keystone service endpoint.\")"},{"line_number":46,"context_line":"        raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":47,"context_line":"    except kse.ClientException:"},{"line_number":48,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":49,"context_line":"        # or nova isn\u0027t configured for the interface to talk to it;"}],"source_content_type":"text/x-python","patch_set":2,"id":"ed908165_b60ae172","line":46,"updated":"2022-07-11 13:50:11.000000000","message":"If I\u0027m reading this correctly, this is a new exception. Previously, this method could only raise  HTTP 400.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"15d228145c530bfbc5ded5f685bd6bef77213f0e","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            \"might be caused by Nova misconfiguration or Keystone \""},{"line_number":44,"context_line":"            \"problems.\")"},{"line_number":45,"context_line":"        msg \u003d _(\"Nova was unable to find Keystone service endpoint.\")"},{"line_number":46,"context_line":"        raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":47,"context_line":"    except kse.ClientException:"},{"line_number":48,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":49,"context_line":"        # or nova isn\u0027t configured for the interface to talk to it;"}],"source_content_type":"text/x-python","patch_set":2,"id":"a1d64315_b2a66ae4","line":46,"in_reply_to":"84f36eef_4a803b8a","updated":"2022-08-10 11:36:44.000000000","message":"-1 for this its not ok to go form 400 to 500\n\nwe are only allow  to do that in the other direction without a microverion bump.\n\nif keystone is in accessible then yes technially that is a server side error although not an error in nova. \n\nits either an infra error or a config error.\na service unabaiable error woudl be more correct since this is not an internal error so 503 Service Unavailable https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503\n\nthat is still a little ambigous  but i think this likely shoudl be split out into a differnt change if we want to change the respocne code.\n\nfor now you should keep it as a 400 with a differnt message in the body.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"cf9ebf30103c5454b12a0e602ff6eacc1aaefcaa","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \"might be caused by Nova misconfiguration or Keystone \""},{"line_number":44,"context_line":"            \"problems.\")"},{"line_number":45,"context_line":"        msg \u003d _(\"Nova was unable to find Keystone service endpoint.\")"},{"line_number":46,"context_line":"        raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":47,"context_line":"    except kse.ClientException:"},{"line_number":48,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":49,"context_line":"        # or nova isn\u0027t configured for the interface to talk to it;"}],"source_content_type":"text/x-python","patch_set":2,"id":"12b12cf2_8b7ffec1","line":46,"in_reply_to":"a1d64315_b2a66ae4","updated":"2022-08-16 15:43:45.000000000","message":"Done","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"d394f7b1896cdee80b88b68c7182edff49d17099","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            \"might be caused by Nova misconfiguration or Keystone \""},{"line_number":44,"context_line":"            \"problems.\")"},{"line_number":45,"context_line":"        msg \u003d _(\"Nova was unable to find Keystone service endpoint.\")"},{"line_number":46,"context_line":"        raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":47,"context_line":"    except kse.ClientException:"},{"line_number":48,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":49,"context_line":"        # or nova isn\u0027t configured for the interface to talk to it;"}],"source_content_type":"text/x-python","patch_set":2,"id":"84f36eef_4a803b8a","line":46,"in_reply_to":"ed908165_b60ae172","updated":"2022-07-11 13:59:44.000000000","message":"Yes, this method originally was used to raise HTTPBadRequest in two cases: when Keystone was unable to find project and when keystoneauth was unable to find v3 endpoint in the catalog. First case shouldn\u0027t block project\u0027s deletion from flavor\u0027s access list, so I changed exception raised for second case to isolate it.","commit_id":"dfdb4ce8863443687c207b0478ad00dd0e7516df"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ba57e22dd42e5d4ca9b17e387ed0812d63ca2b64","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        # TODO(astupnik). It may be reasonable to switch to HTTP 503"},{"line_number":47,"context_line":"        # (HTTP Service Unavailable) instead of HTTP Bad Request here."},{"line_number":48,"context_line":"        # If proper Keystone servie is inaccessible, then technially"},{"line_number":49,"context_line":"        # this is a server side error and not an error in Nova."},{"line_number":50,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":51,"context_line":"    except kse.ClientException:"},{"line_number":52,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"}],"source_content_type":"text/x-python","patch_set":3,"id":"237d6cdc_eee2d2c3","line":49,"updated":"2022-08-19 11:49:28.000000000","message":"There\u0027s no issue with _nova_ though so I\u0027m not sure if HTTP 5xx is really valid...","commit_id":"821972f4545c58c0d296ba4fa272e230e836c65b"}]}
