)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbfdf33d210fb8c421cd275d2a8cf4a32a8ed470","unresolved":false,"context_lines":[{"line_number":24,"context_line":"tests to fail to find token authorizations in nova-consoleauth."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-Bug: #1788470"},{"line_number":27,"context_line":"Closes-Bug: #1795982"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Change-Id: Iff6020f1a10afc476864f979faf251ef5a1a6184"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_a341cb65","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":20},"updated":"2018-10-10 20:11:25.000000000","message":"This is a regression since multi-cell support in Pike, right? So it\u0027s more than just the database backend for consoleauth in Rocky, and shouldn\u0027t it be a separate bug fix so it could be backported to Pike, wherease the rest of this change won\u0027t go further than Rocky?","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"010ae0b74e86b5e1ac85e20f4e461692cd31f70f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"tests to fail to find token authorizations in nova-consoleauth."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-Bug: #1788470"},{"line_number":27,"context_line":"Closes-Bug: #1795982"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Change-Id: Iff6020f1a10afc476864f979faf251ef5a1a6184"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_63097330","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":20},"in_reply_to":"3f79a3b5_a341cb65","updated":"2018-10-10 20:13:39.000000000","message":"Nevermind I guess consoleauth is global:\n\nhttps://docs.openstack.org/nova/queens/user/cellsv2-layout.html#consoleauth-service-and-console-proxies","commit_id":"ba4746215227937d19e720731ecd51418ef96074"}],"nova/api/openstack/compute/console_auth_tokens.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e05dd42e596f748892cd05431c741e1c432b8a6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            for result in results.values():"},{"line_number":51,"context_line":"                if result not in (nova_context.did_not_respond_sentinel,"},{"line_number":52,"context_line":"                                  nova_context.raised_exception_sentinel):"},{"line_number":53,"context_line":"                    connect_info \u003d result.to_dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_fe4bd85a","line":50,"updated":"2018-10-10 20:50:31.000000000","message":"Might want to add a comment about this and why we have to do it this way, and why it\u0027s OK to break the loop once we get a result (because the token is tied to an instance which can be only in one cell).","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"532e6178f0f08cfe9b47f5d7e86e3af7dd964312","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            for result in results.values():"},{"line_number":51,"context_line":"                if result not in (nova_context.did_not_respond_sentinel,"},{"line_number":52,"context_line":"                                  nova_context.raised_exception_sentinel):"},{"line_number":53,"context_line":"                    connect_info \u003d result.to_dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_a47b1278","line":50,"in_reply_to":"3f79a3b5_fe4bd85a","updated":"2018-10-10 21:01:25.000000000","message":"Sure, can do that.","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46eb94aabe7c837fef0139c9d93f8e8d6d17011f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            for result in results.values():"},{"line_number":51,"context_line":"                if result not in (nova_context.did_not_respond_sentinel,"},{"line_number":52,"context_line":"                                  nova_context.raised_exception_sentinel):"},{"line_number":53,"context_line":"                    connect_info \u003d result.to_dict()"},{"line_number":54,"context_line":"                    break"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if not connect_info:"},{"line_number":57,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003d_(\"Token not found\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_03dc3f15","line":54,"range":{"start_line":50,"start_character":12,"end_line":54,"end_character":25},"updated":"2018-10-10 19:59:59.000000000","message":"Shouldn\u0027t we have an else on this for loop in case we don\u0027t get any results? Otherwise we\u0027d get an UnboundLocalError on using connect_info below, right?","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"90333b55d1fe4b4189861592d24c8ab22caf1e7e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            for result in results.values():"},{"line_number":51,"context_line":"                if result not in (nova_context.did_not_respond_sentinel,"},{"line_number":52,"context_line":"                                  nova_context.raised_exception_sentinel):"},{"line_number":53,"context_line":"                    connect_info \u003d result.to_dict()"},{"line_number":54,"context_line":"                    break"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if not connect_info:"},{"line_number":57,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003d_(\"Token not found\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_fe88b821","line":54,"range":{"start_line":50,"start_character":12,"end_line":54,"end_character":25},"in_reply_to":"3f79a3b5_03dc3f15","updated":"2018-10-10 20:32:13.000000000","message":"I think we\u0027re OK because I initialized connect_info \u003d None on L44. Or are you pointing out something else that I\u0027m missing?","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e05dd42e596f748892cd05431c741e1c432b8a6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            for result in results.values():"},{"line_number":51,"context_line":"                if result not in (nova_context.did_not_respond_sentinel,"},{"line_number":52,"context_line":"                                  nova_context.raised_exception_sentinel):"},{"line_number":53,"context_line":"                    connect_info \u003d result.to_dict()"},{"line_number":54,"context_line":"                    break"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if not connect_info:"},{"line_number":57,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003d_(\"Token not found\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_de15bc4d","line":54,"range":{"start_line":50,"start_character":12,"end_line":54,"end_character":25},"in_reply_to":"3f79a3b5_fe88b821","updated":"2018-10-10 20:50:31.000000000","message":"No I missed that, plus test_get_console_connect_info_token_not_found would have failed on it if not.","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f3c179fc5f6c877e92763346bcafd27cf99cc5f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            # NOTE(melwitt): Console auth tokens are stored in cell databases,"},{"line_number":51,"context_line":"            # but with only the token as a request param, we can\u0027t know which"},{"line_number":52,"context_line":"            # cell database contains the token\u0027s corresponding connection info."},{"line_number":53,"context_line":"            # So, we must query all cells for the info and we can break the"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_dd6daa99","line":50,"range":{"start_line":50,"start_character":42,"end_line":50,"end_character":48},"updated":"2018-10-11 18:12:16.000000000","message":"token hashes","commit_id":"440a4dc0eef577c8ec5b8fa0837acd2ba97d8cde"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9c48fa346668fa0971f93648b411e9695c8e5a17","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":49,"context_line":"                context, objects.ConsoleAuthToken.validate, token)"},{"line_number":50,"context_line":"            # NOTE(melwitt): Console auth tokens are stored in cell databases,"},{"line_number":51,"context_line":"            # but with only the token as a request param, we can\u0027t know which"},{"line_number":52,"context_line":"            # cell database contains the token\u0027s corresponding connection info."},{"line_number":53,"context_line":"            # So, we must query all cells for the info and we can break the"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_fda3c6ae","line":50,"range":{"start_line":50,"start_character":42,"end_line":50,"end_character":48},"in_reply_to":"3f79a3b5_dd6daa99","updated":"2018-10-11 18:22:37.000000000","message":"Argh. I should have written \"console token auths\" like I was originally planning but got confused by the name of the unified object \"ConsoleAuthToken\" which should really also be \"ConsoleTokenAuth\".","commit_id":"440a4dc0eef577c8ec5b8fa0837acd2ba97d8cde"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e05dd42e596f748892cd05431c741e1c432b8a6","unresolved":false,"context_lines":[{"line_number":3703,"context_line":""},{"line_number":3704,"context_line":"        # TODO(melwitt): In Rocky, the compute manager puts the"},{"line_number":3705,"context_line":"        # console authorization in the database in the above method."},{"line_number":3706,"context_line":"        # The following will be removed when everything has been"},{"line_number":3707,"context_line":"        # converted to use the database, in Stein."},{"line_number":3708,"context_line":"        if CONF.workarounds.enable_consoleauth:"},{"line_number":3709,"context_line":"            self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":3710,"context_line":"                    connect_info[\u0027token\u0027], console_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_deb93c7c","line":3707,"range":{"start_line":3706,"start_character":10,"end_line":3707,"end_character":50},"updated":"2018-10-10 20:50:31.000000000","message":"This isn\u0027t really true because of cells v1\u0027s reliance on the consoleauth service right? And we can\u0027t remove cells v1 until we remove nova-network...","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"532e6178f0f08cfe9b47f5d7e86e3af7dd964312","unresolved":false,"context_lines":[{"line_number":3703,"context_line":""},{"line_number":3704,"context_line":"        # TODO(melwitt): In Rocky, the compute manager puts the"},{"line_number":3705,"context_line":"        # console authorization in the database in the above method."},{"line_number":3706,"context_line":"        # The following will be removed when everything has been"},{"line_number":3707,"context_line":"        # converted to use the database, in Stein."},{"line_number":3708,"context_line":"        if CONF.workarounds.enable_consoleauth:"},{"line_number":3709,"context_line":"            self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":3710,"context_line":"                    connect_info[\u0027token\u0027], console_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_e4858a5a","line":3707,"range":{"start_line":3706,"start_character":10,"end_line":3707,"end_character":50},"in_reply_to":"3f79a3b5_deb93c7c","updated":"2018-10-10 21:01:25.000000000","message":"We can remove these code blocks in Stein because cells v1 makes the analogous calls like this:\n\nhttps://github.com/openstack/nova/blob/6bf11e1dc14afad78b11d980c2544a3dc41579ff/nova/compute/cells_api.py#L394\n\nBut correct we can\u0027t remove nova-consoleauth in general until we remove cells v1.","commit_id":"ba4746215227937d19e720731ecd51418ef96074"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"210d001eb05dedfe28c4e5b1357e348fd5e9bea0","unresolved":false,"context_lines":[{"line_number":3705,"context_line":"        # console authorization in the database in the above method."},{"line_number":3706,"context_line":"        # The following will be removed when everything has been"},{"line_number":3707,"context_line":"        # converted to use the database, in Stein."},{"line_number":3708,"context_line":"        if CONF.workarounds.enable_consoleauth:"},{"line_number":3709,"context_line":"            self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":3710,"context_line":"                    connect_info[\u0027token\u0027], console_type,"},{"line_number":3711,"context_line":"                    connect_info[\u0027host\u0027], connect_info[\u0027port\u0027],"},{"line_number":3712,"context_line":"                    connect_info[\u0027internal_access_path\u0027], instance.uuid,"},{"line_number":3713,"context_line":"                    access_url\u003dconnect_info[\u0027access_url\u0027])"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"        return {\u0027url\u0027: connect_info[\u0027access_url\u0027]}"},{"line_number":3716,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_2f6a56eb","line":3713,"range":{"start_line":3708,"start_character":0,"end_line":3713,"end_character":58},"updated":"2018-10-12 10:50:40.000000000","message":"How come we couldn\u0027t just put the check inside the function itself? RPC versioning constraints or something?","commit_id":"b49209cc29f5ccd529b8074b68be074c5a2f742f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"96a2e946410d7859887968ff4757523f8bde9ced","unresolved":false,"context_lines":[{"line_number":3705,"context_line":"        # console authorization in the database in the above method."},{"line_number":3706,"context_line":"        # The following will be removed when everything has been"},{"line_number":3707,"context_line":"        # converted to use the database, in Stein."},{"line_number":3708,"context_line":"        if CONF.workarounds.enable_consoleauth:"},{"line_number":3709,"context_line":"            self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":3710,"context_line":"                    connect_info[\u0027token\u0027], console_type,"},{"line_number":3711,"context_line":"                    connect_info[\u0027host\u0027], connect_info[\u0027port\u0027],"},{"line_number":3712,"context_line":"                    connect_info[\u0027internal_access_path\u0027], instance.uuid,"},{"line_number":3713,"context_line":"                    access_url\u003dconnect_info[\u0027access_url\u0027])"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"        return {\u0027url\u0027: connect_info[\u0027access_url\u0027]}"},{"line_number":3716,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_99dc10e3","line":3713,"range":{"start_line":3708,"start_character":0,"end_line":3713,"end_character":58},"in_reply_to":"3f79a3b5_2f6a56eb","updated":"2018-10-12 14:46:33.000000000","message":"When used, the intended behavior of the [workarounds]enable_consoleauth config option is to avoid calling nova-consoleauth entirely when False. (See the original usage in nova/console/websocketproxy.py).\n\nWhat we\u0027re trying to do here is leverage the workaround config option to control whether we call nova-consoleauth at all, same as we do in the console proxy code. That way, if an operator is running with the option set to False (it defaults to False), then that operator can discontinue running the nova-consoleauth service entirely.","commit_id":"b49209cc29f5ccd529b8074b68be074c5a2f742f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3858b539a7e13ae8a1d06612a327fc2e5217718f","unresolved":false,"context_lines":[{"line_number":3705,"context_line":"        # console authorization in the database in the above method."},{"line_number":3706,"context_line":"        # The following will be removed when everything has been"},{"line_number":3707,"context_line":"        # converted to use the database, in Stein."},{"line_number":3708,"context_line":"        if CONF.workarounds.enable_consoleauth:"},{"line_number":3709,"context_line":"            self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":3710,"context_line":"                    connect_info[\u0027token\u0027], console_type,"},{"line_number":3711,"context_line":"                    connect_info[\u0027host\u0027], connect_info[\u0027port\u0027],"},{"line_number":3712,"context_line":"                    connect_info[\u0027internal_access_path\u0027], instance.uuid,"},{"line_number":3713,"context_line":"                    access_url\u003dconnect_info[\u0027access_url\u0027])"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"        return {\u0027url\u0027: connect_info[\u0027access_url\u0027]}"},{"line_number":3716,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_a76c296b","line":3713,"range":{"start_line":3708,"start_character":0,"end_line":3713,"end_character":58},"in_reply_to":"3f79a3b5_99dc10e3","updated":"2018-10-15 09:20:46.000000000","message":"Ah, I meant literally adding this check in nova/consoleauth/rpcapi.py (i.e. still on the client side of the RPC API). Maybe that\u0027s not something we want to do at that layer though and, in any case, this is pretty much a nit so meh","commit_id":"b49209cc29f5ccd529b8074b68be074c5a2f742f"}]}
