)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc6f81e3464f6231f563edf36b93c7455cb359f0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"property."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"A following patch will add a switch to allow the proxies"},{"line_number":23,"context_line":"to use the database for authorization instead or the"},{"line_number":24,"context_line":"consoleauth service. The consoleauth service will be"},{"line_number":25,"context_line":"deprecated when there are no more components that rely"},{"line_number":26,"context_line":"on it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"9f6a8fd7_e9b53333","line":23,"range":{"start_line":23,"start_character":46,"end_line":23,"end_character":48},"updated":"2018-04-23 14:24:40.000000000","message":"of","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"}],"doc/api_samples/os-remote-consoles/get-spice-console-post-resp.json":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6eba14df7bf65227e4987944eaa688c8969cb7a4","unresolved":false,"context_lines":[{"line_number":3,"context_line":"        \"type\": \"spice-html5\","},{"line_number":4,"context_line":"        \"url\": \"http://127.0.0.1:6082/spice_auto.html?token\u003da30e5d08-6a20-4043-958f-0852440c6af4\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":15,"id":"ff82abbf_8f3ffab2","line":6,"updated":"2017-11-24 13:23:50.000000000","message":"Unrelated change?","commit_id":"9050f33418eec7781272c51085d1f0cd762e89f9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"11cce660ab2255441061be9c69a7bff839822d92","unresolved":false,"context_lines":[{"line_number":3,"context_line":"        \"type\": \"spice-html5\","},{"line_number":4,"context_line":"        \"url\": \"http://127.0.0.1:6082/spice_auto.html?token\u003da30e5d08-6a20-4043-958f-0852440c6af4\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":15,"id":"df87a7cf_bae3eed8","line":6,"in_reply_to":"ff82abbf_8f3ffab2","updated":"2017-12-08 23:52:09.000000000","message":"Guh, I don\u0027t know how this happened. Thanks.","commit_id":"9050f33418eec7781272c51085d1f0cd762e89f9"}],"doc/api_samples/os-remote-consoles/get-vnc-console-post-resp.json":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6eba14df7bf65227e4987944eaa688c8969cb7a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ff82abbf_4f457242","line":7,"updated":"2017-11-24 13:23:50.000000000","message":"Ditto","commit_id":"9050f33418eec7781272c51085d1f0cd762e89f9"}],"nova/compute/api.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c0c5986df944bcf738f1e8ee84ed9efbd327242d","unresolved":false,"context_lines":[{"line_number":2833,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":2834,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":2835,"context_line":""},{"line_number":2836,"context_line":"        # NOTE(PaulMurray): the compute manager also puts the"},{"line_number":2837,"context_line":"        # console authorization in the database in the above method."},{"line_number":2838,"context_line":"        # The following will be removed after the consoleauth service"},{"line_number":2839,"context_line":"        # has gone through the depreication period."}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_dbbb1fe3","line":2836,"updated":"2016-06-16 11:01:18.000000000","message":"Again as the previous change, you should to reflect in which release that has been introduced and in which release we should to fix it. s/NOTE/TODO","commit_id":"7eb795e8800b82e1723230e6481503b50e6eda9c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5f47d9a67f038836de96bdb4a3f591ec0941aa32","unresolved":false,"context_lines":[{"line_number":2833,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":2834,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":2835,"context_line":""},{"line_number":2836,"context_line":"        # NOTE(PaulMurray): the compute manager also puts the"},{"line_number":2837,"context_line":"        # console authorization in the database in the above method."},{"line_number":2838,"context_line":"        # The following will be removed after the consoleauth service"},{"line_number":2839,"context_line":"        # has gone through the depreication period."}],"source_content_type":"text/x-python","patch_set":6,"id":"5a9d85d2_ab6ee1c6","line":2836,"updated":"2016-06-20 15:00:06.000000000","message":"As the previous change, you should to reflect in which release that has been introduced and in which release we should to fix it. s/NOTE/TODO.\nYou are repeating the same action so a private method can be introduced instead (with that comment inside).\n\n  _create_console_connection(.. )","commit_id":"2c8ce74566b082ab883092e75a873ccfd8fbead1"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"eed5c5d3c769f74a94af20a3f720a56dee277160","unresolved":false,"context_lines":[{"line_number":2833,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":2834,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":2835,"context_line":""},{"line_number":2836,"context_line":"        # NOTE(PaulMurray): the compute manager also puts the"},{"line_number":2837,"context_line":"        # console authorization in the database in the above method."},{"line_number":2838,"context_line":"        # The following will be removed after the consoleauth service"},{"line_number":2839,"context_line":"        # has gone through the depreication period."}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_a1a9c17d","line":2836,"in_reply_to":"5a9d85d2_ab6ee1c6","updated":"2016-06-22 17:19:15.000000000","message":"Thanks, same as before, turns out this does not need the deprecation period, so it will be done as a matter of course as I go through the conversion. Changed to a TODO.","commit_id":"2c8ce74566b082ab883092e75a873ccfd8fbead1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0ca2927c8736d68a1a3749bf0dca3b76a2d77139","unresolved":false,"context_lines":[{"line_number":3588,"context_line":"                connect_info[\u0027token\u0027], console_type,"},{"line_number":3589,"context_line":"                connect_info[\u0027host\u0027], connect_info[\u0027port\u0027],"},{"line_number":3590,"context_line":"                connect_info[\u0027internal_access_path\u0027], instance.uuid,"},{"line_number":3591,"context_line":"                access_url\u003dconnect_info[\u0027access_url\u0027])"},{"line_number":3592,"context_line":""},{"line_number":3593,"context_line":"        return {\u0027url\u0027: connect_info[\u0027access_url\u0027]}"},{"line_number":3594,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_0f9a8260","line":3591,"updated":"2017-07-20 02:53:59.000000000","message":"I was trying to think why this is needed if new authorizations will always be stored in the database. I think the answer is that during an upgrade, old compute hosts won\u0027t be storing authorizations in the database, so we need to be able to handle that by also adding authorizations to the consoleauth store. Once Pike is the old side during an upgrade, we can remove these. So in Queens.","commit_id":"429ef6aba998bd7eb8d99dfbf068cfd22919c5c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"754a606d4255c2782c03bf763cb4d128e0d7079d","unresolved":false,"context_lines":[{"line_number":3610,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":3611,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":3612,"context_line":""},{"line_number":3613,"context_line":"        # TODO(melwitt): In Queens, the compute manager puts the"},{"line_number":3614,"context_line":"        # console authorization in the database in the above method."},{"line_number":3615,"context_line":"        # The following will be removed when everything has been"},{"line_number":3616,"context_line":"        # converted to use the database, in the Rocky release."},{"line_number":3617,"context_line":"        self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":3618,"context_line":"                connect_info[\u0027token\u0027], console_type,"},{"line_number":3619,"context_line":"                connect_info[\u0027host\u0027], connect_info[\u0027port\u0027],"}],"source_content_type":"text/x-python","patch_set":28,"id":"df7087c5_99567c06","line":3616,"range":{"start_line":3613,"start_character":0,"end_line":3616,"end_character":62},"updated":"2018-03-22 11:26:12.000000000","message":"I\u0027m guessing version numbers need to change here now too","commit_id":"ee0e60e29c1acf6b93da0371385e7b06cb119ef8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc6f81e3464f6231f563edf36b93c7455cb359f0","unresolved":false,"context_lines":[{"line_number":3610,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":3611,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":3612,"context_line":""},{"line_number":3613,"context_line":"        # TODO(melwitt): In Rocky, the compute manager puts the"},{"line_number":3614,"context_line":"        # console authorization in the database in the above method."},{"line_number":3615,"context_line":"        # The following will be removed when everything has been"},{"line_number":3616,"context_line":"        # converted to use the database, in Stein."}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_a9a2dbac","line":3613,"range":{"start_line":3613,"start_character":25,"end_line":3613,"end_character":33},"updated":"2018-04-23 14:24:40.000000000","message":"Just thinking ahead, would there be any reason that we should bump the compute RPC API version so we can tell later when all computes in a given cell are using this code? Or are we just going got drop the code? If the latter, I don\u0027t think we can do it in Stein since you could have Rocky (n-1) computes, which means we\u0027d have to push the drop from the API to the T release. If you add a version check for nova-compute, then you can automatically stop using the consoleauth service in Rocky once all computes in a cell are upgraded.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d73891714d85cc0140c70ac71d94792e73415a42","unresolved":false,"context_lines":[{"line_number":3610,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":3611,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":3612,"context_line":""},{"line_number":3613,"context_line":"        # TODO(melwitt): In Rocky, the compute manager puts the"},{"line_number":3614,"context_line":"        # console authorization in the database in the above method."},{"line_number":3615,"context_line":"        # The following will be removed when everything has been"},{"line_number":3616,"context_line":"        # converted to use the database, in Stein."}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_b001bc6c","line":3613,"range":{"start_line":3613,"start_character":25,"end_line":3613,"end_character":33},"in_reply_to":"9f6a8fd7_a9a2dbac","updated":"2018-04-24 17:40:26.000000000","message":"\u003e If the latter, I don\u0027t think we can do it in Stein since you could have Rocky (n-1) computes, which means we\u0027d have to push the drop from the API to the T release.\n\nNevermind, I wasn\u0027t thinking clearly here. Dropping API compat in Stein is OK since we\u0027ll support N-1 computes, which would be Rocky, which would have this code.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84ea5fcaeac3dc816bba306a4c70a22ac9df36af","unresolved":false,"context_lines":[{"line_number":3610,"context_line":"        connect_info \u003d self.compute_rpcapi.get_vnc_console(context,"},{"line_number":3611,"context_line":"                instance\u003dinstance, console_type\u003dconsole_type)"},{"line_number":3612,"context_line":""},{"line_number":3613,"context_line":"        # TODO(melwitt): In Rocky, the compute manager puts the"},{"line_number":3614,"context_line":"        # console authorization in the database in the above method."},{"line_number":3615,"context_line":"        # The following will be removed when everything has been"},{"line_number":3616,"context_line":"        # converted to use the database, in Stein."}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_b06e9cfd","line":3613,"range":{"start_line":3613,"start_character":25,"end_line":3613,"end_character":33},"in_reply_to":"9f6a8fd7_b001bc6c","updated":"2018-04-24 17:56:56.000000000","message":"I wasn\u0027t thinking of doing a RPC API bump for this -- seems unnecessary. Once we\u0027re in Stein, all Rocky computes will be storing token auths in the database, so at that point it\u0027s safe to stop running the consoleauth service.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"}],"nova/compute/cells_api.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"904088b68e2dbe55533d7db27b63f4fb6e756c7c","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        # TODO(PaulMurray): the compute manager also puts the"},{"line_number":395,"context_line":"        # console authorization in the database in the above method."},{"line_number":396,"context_line":"        # The following will be removed when everything has been"},{"line_number":397,"context_line":"        # converted to use the database."},{"line_number":398,"context_line":"        self.consoleauth_rpcapi.authorize_console(context,"},{"line_number":399,"context_line":"                connect_info[\u0027token\u0027], console_type, connect_info[\u0027host\u0027],"},{"line_number":400,"context_line":"                connect_info[\u0027port\u0027], connect_info[\u0027internal_access_path\u0027],"}],"source_content_type":"text/x-python","patch_set":28,"id":"bf659307_5f0a238a","line":397,"updated":"2018-03-27 22:11:06.000000000","message":"I removed these comments because, as has been stated in the spec and commit messages of some of the changes in the series, the cells v1 code path is *never* going to be converted to use the database backend for console auths (it will remain using the legacy consoleauth service).\n\nSo this past update, I realized these comments were incorrect and must have been old, as we\u0027re not going to leverage the database backend for cells v1 code paths and this file is exclusively cells v1.","commit_id":"ee0e60e29c1acf6b93da0371385e7b06cb119ef8"}],"nova/compute/manager.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c0c5986df944bcf738f1e8ee84ed9efbd327242d","unresolved":false,"context_lines":[{"line_number":4338,"context_line":"            # access info token"},{"line_number":4339,"context_line":"            console \u003d self.driver.get_vnc_console(context, instance)"},{"line_number":4340,"context_line":"            connect_info \u003d console.get_connection_info(token, access_url)"},{"line_number":4341,"context_line":"            console_auth \u003d obj_console_auth.ConsoleConnection("},{"line_number":4342,"context_line":"                context\u003dcontext,"},{"line_number":4343,"context_line":"                console_type\u003dconsole_type,"},{"line_number":4344,"context_line":"                host\u003dconsole.host,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_9ba7d7a6","line":4341,"updated":"2016-06-16 11:01:18.000000000","message":"You are repeating the same action for every console types. I guess an helper can be used instead.\n\n  _create_console_connection(.. )","commit_id":"7eb795e8800b82e1723230e6481503b50e6eda9c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6eba14df7bf65227e4987944eaa688c8969cb7a4","unresolved":false,"context_lines":[{"line_number":4904,"context_line":"                port\u003dconsole.port,"},{"line_number":4905,"context_line":"                internal_access_path\u003dconsole.internal_access_path,"},{"line_number":4906,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":4907,"context_line":"                # For essex, spicehtml5proxy_base_url must include the"},{"line_number":4908,"context_line":"                # full path including the html file"},{"line_number":4909,"context_line":"                # (like http://myhost/spice_auto.html)"},{"line_number":4910,"context_line":"                access_url_base\u003dCONF.spice.html5proxy_base_url,"},{"line_number":4911,"context_line":"            )"},{"line_number":4912,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_ef9c86c1","line":4909,"range":{"start_line":4907,"start_character":0,"end_line":4909,"end_character":54},"updated":"2017-11-24 13:23:50.000000000","message":"Is this really still relevant? Who remembers pre-Essex code at this point?","commit_id":"9050f33418eec7781272c51085d1f0cd762e89f9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"99028543ed91936e974bfdad993a2097a405de17","unresolved":false,"context_lines":[{"line_number":4904,"context_line":"                port\u003dconsole.port,"},{"line_number":4905,"context_line":"                internal_access_path\u003dconsole.internal_access_path,"},{"line_number":4906,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":4907,"context_line":"                # For essex, spicehtml5proxy_base_url must include the"},{"line_number":4908,"context_line":"                # full path including the html file"},{"line_number":4909,"context_line":"                # (like http://myhost/spice_auto.html)"},{"line_number":4910,"context_line":"                access_url_base\u003dCONF.spice.html5proxy_base_url,"},{"line_number":4911,"context_line":"            )"},{"line_number":4912,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df87a7cf_fa8c16d8","line":4909,"range":{"start_line":4907,"start_character":0,"end_line":4909,"end_character":54},"in_reply_to":"df87a7cf_1afbfa78","updated":"2017-12-09 00:04:21.000000000","message":"Looks like maybe this was added to be consistent with L4846 for vnc.","commit_id":"9050f33418eec7781272c51085d1f0cd762e89f9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"11cce660ab2255441061be9c69a7bff839822d92","unresolved":false,"context_lines":[{"line_number":4904,"context_line":"                port\u003dconsole.port,"},{"line_number":4905,"context_line":"                internal_access_path\u003dconsole.internal_access_path,"},{"line_number":4906,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":4907,"context_line":"                # For essex, spicehtml5proxy_base_url must include the"},{"line_number":4908,"context_line":"                # full path including the html file"},{"line_number":4909,"context_line":"                # (like http://myhost/spice_auto.html)"},{"line_number":4910,"context_line":"                access_url_base\u003dCONF.spice.html5proxy_base_url,"},{"line_number":4911,"context_line":"            )"},{"line_number":4912,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df87a7cf_1afbfa78","line":4909,"range":{"start_line":4907,"start_character":0,"end_line":4909,"end_character":54},"in_reply_to":"ff82abbf_ef9c86c1","updated":"2017-12-08 23:52:09.000000000","message":"Maybe not. This series was first attempted in liberty I believe, but still essex was ancient even then.","commit_id":"9050f33418eec7781272c51085d1f0cd762e89f9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f71cdd8c94630d31271477cbaa99838549d229f7","unresolved":false,"context_lines":[{"line_number":4996,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":4997,"context_line":"                access_url_base\u003daccess_url_base,"},{"line_number":4998,"context_line":"            )"},{"line_number":4999,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5000,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5001,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5002,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_eace9658","line":4999,"range":{"start_line":4999,"start_character":35,"end_line":4999,"end_character":57},"updated":"2018-01-09 04:19:19.000000000","message":"\u0027console_token_ttl\u0027 has been deprecated since Iede35bbbf0124cfc7521cb91dda323b4d425e630 .\nIt should be CONF.consoleauth.token_ttl .","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"53e633dede87f236267d83a98401e7d9655025ac","unresolved":false,"context_lines":[{"line_number":4996,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":4997,"context_line":"                access_url_base\u003daccess_url_base,"},{"line_number":4998,"context_line":"            )"},{"line_number":4999,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5000,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5001,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5002,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_9d02ad6e","line":4999,"range":{"start_line":4999,"start_character":35,"end_line":4999,"end_character":57},"in_reply_to":"9f91af0f_eace9658","updated":"2018-01-09 09:48:09.000000000","message":"Oh, good spot!","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"dc15cb3077bb115b5b501910a7f7db9169377802","unresolved":false,"context_lines":[{"line_number":4996,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":4997,"context_line":"                access_url_base\u003daccess_url_base,"},{"line_number":4998,"context_line":"            )"},{"line_number":4999,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5000,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5001,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5002,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_3b959733","line":4999,"range":{"start_line":4999,"start_character":35,"end_line":4999,"end_character":57},"in_reply_to":"9f91af0f_eace9658","updated":"2018-01-09 22:42:45.000000000","message":"Thanks Takashi.","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f71cdd8c94630d31271477cbaa99838549d229f7","unresolved":false,"context_lines":[{"line_number":5040,"context_line":"                # the html file (like http://myhost/spice_auto.html)"},{"line_number":5041,"context_line":"                access_url_base\u003dCONF.spice.html5proxy_base_url,"},{"line_number":5042,"context_line":"            )"},{"line_number":5043,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5044,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5045,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5046,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_2a023e70","line":5043,"range":{"start_line":5043,"start_character":35,"end_line":5043,"end_character":57},"updated":"2018-01-09 04:19:19.000000000","message":"ditto","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f71cdd8c94630d31271477cbaa99838549d229f7","unresolved":false,"context_lines":[{"line_number":5082,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":5083,"context_line":"                access_url_base\u003dCONF.rdp.html5_proxy_base_url,"},{"line_number":5084,"context_line":"            )"},{"line_number":5085,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5086,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5087,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5088,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_cafab273","line":5085,"range":{"start_line":5085,"start_character":35,"end_line":5085,"end_character":57},"updated":"2018-01-09 04:19:19.000000000","message":"ditto","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f71cdd8c94630d31271477cbaa99838549d229f7","unresolved":false,"context_lines":[{"line_number":5124,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":5125,"context_line":"                access_url_base\u003dCONF.mks.mksproxy_base_url,"},{"line_number":5126,"context_line":"            )"},{"line_number":5127,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5128,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5129,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5130,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_aaedeeb7","line":5127,"range":{"start_line":5127,"start_character":35,"end_line":5127,"end_character":57},"updated":"2018-01-09 04:19:19.000000000","message":"ditto","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f71cdd8c94630d31271477cbaa99838549d229f7","unresolved":false,"context_lines":[{"line_number":5167,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":5168,"context_line":"                access_url_base\u003dCONF.serial_console.base_url,"},{"line_number":5169,"context_line":"            )"},{"line_number":5170,"context_line":"            console_auth.authorize(CONF.console_token_ttl)"},{"line_number":5171,"context_line":"            connect_info \u003d console.get_connection_info("},{"line_number":5172,"context_line":"                console_auth.token, console_auth.access_url)"},{"line_number":5173,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9f91af0f_6a31265a","line":5170,"range":{"start_line":5170,"start_character":35,"end_line":5170,"end_character":57},"updated":"2018-01-09 04:19:19.000000000","message":"ditto","commit_id":"6a41dbb430fbcebfd0532b869f4a7d0d08746106"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7b33e242a8d46700bb951026326dd3d818500ed9","unresolved":false,"context_lines":[{"line_number":5235,"context_line":"    @wrap_instance_fault"},{"line_number":5236,"context_line":"    def get_serial_console(self, context, console_type, instance):"},{"line_number":5237,"context_line":"        \"\"\"Returns connection information for a serial console.\"\"\""},{"line_number":5238,"context_line":"        context \u003d context.elevated()"},{"line_number":5239,"context_line":"        LOG.debug(\"Getting serial console\", instance\u003dinstance)"},{"line_number":5240,"context_line":""},{"line_number":5241,"context_line":"        if not CONF.serial_console.enabled:"}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_0eefc884","line":5238,"updated":"2018-04-17 16:42:19.000000000","message":"Why is this moved? Seems like just noise to me.","commit_id":"7059f2d7d09b61b378896ebfe47f6ba4fabe889f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"764bf0d6ce9dbc263d43742e403bb2a1cfeddbca","unresolved":false,"context_lines":[{"line_number":5235,"context_line":"    @wrap_instance_fault"},{"line_number":5236,"context_line":"    def get_serial_console(self, context, console_type, instance):"},{"line_number":5237,"context_line":"        \"\"\"Returns connection information for a serial console.\"\"\""},{"line_number":5238,"context_line":"        context \u003d context.elevated()"},{"line_number":5239,"context_line":"        LOG.debug(\"Getting serial console\", instance\u003dinstance)"},{"line_number":5240,"context_line":""},{"line_number":5241,"context_line":"        if not CONF.serial_console.enabled:"}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_913219f1","line":5238,"in_reply_to":"9f6a8fd7_0eefc884","updated":"2018-04-17 16:44:45.000000000","message":"By mistake, I think. I\u0027ll move it back when I respin.","commit_id":"7059f2d7d09b61b378896ebfe47f6ba4fabe889f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc6f81e3464f6231f563edf36b93c7455cb359f0","unresolved":false,"context_lines":[{"line_number":5083,"context_line":"            # Retrieve connect info from driver, and then decorate with our"},{"line_number":5084,"context_line":"            # access info token"},{"line_number":5085,"context_line":"            console \u003d self.driver.get_vnc_console(context, instance)"},{"line_number":5086,"context_line":"            console_auth \u003d obj_console_auth_token.ConsoleAuthToken("},{"line_number":5087,"context_line":"                context\u003dcontext,"},{"line_number":5088,"context_line":"                console_type\u003dconsole_type,"},{"line_number":5089,"context_line":"                host\u003dconsole.host,"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_29c7ab98","line":5086,"range":{"start_line":5086,"start_character":27,"end_line":5086,"end_character":66},"updated":"2018-04-23 14:24:40.000000000","message":"ConsoleAuthToken is a registered object, so why not just:\n\n  objects.ConsoleAuthToken\n\n?","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84ea5fcaeac3dc816bba306a4c70a22ac9df36af","unresolved":false,"context_lines":[{"line_number":5083,"context_line":"            # Retrieve connect info from driver, and then decorate with our"},{"line_number":5084,"context_line":"            # access info token"},{"line_number":5085,"context_line":"            console \u003d self.driver.get_vnc_console(context, instance)"},{"line_number":5086,"context_line":"            console_auth \u003d obj_console_auth_token.ConsoleAuthToken("},{"line_number":5087,"context_line":"                context\u003dcontext,"},{"line_number":5088,"context_line":"                console_type\u003dconsole_type,"},{"line_number":5089,"context_line":"                host\u003dconsole.host,"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_104748be","line":5086,"range":{"start_line":5086,"start_character":27,"end_line":5086,"end_character":66},"in_reply_to":"9f6a8fd7_29c7ab98","updated":"2018-04-24 17:56:56.000000000","message":"This is old, so maybe back then we didn\u0027t have \"from nova import objects\". Hopefully.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc6f81e3464f6231f563edf36b93c7455cb359f0","unresolved":false,"context_lines":[{"line_number":5132,"context_line":"                port\u003dconsole.port,"},{"line_number":5133,"context_line":"                internal_access_path\u003dconsole.internal_access_path,"},{"line_number":5134,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":5135,"context_line":"                # spicehtml5proxy_base_url must include the full path including"},{"line_number":5136,"context_line":"                # the html file (like http://myhost/spice_auto.html)"},{"line_number":5137,"context_line":"                access_url_base\u003dCONF.spice.html5proxy_base_url,"},{"line_number":5138,"context_line":"            )"},{"line_number":5139,"context_line":"            console_auth.authorize(CONF.consoleauth.token_ttl)"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_a9de5b0e","line":5136,"range":{"start_line":5135,"start_character":16,"end_line":5136,"end_character":68},"updated":"2018-04-23 14:24:40.000000000","message":"nit: this should either be removed or live in the config option help for html5proxy_base_url itself. I know you\u0027re just moving code around but we could also make that change.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84ea5fcaeac3dc816bba306a4c70a22ac9df36af","unresolved":false,"context_lines":[{"line_number":5132,"context_line":"                port\u003dconsole.port,"},{"line_number":5133,"context_line":"                internal_access_path\u003dconsole.internal_access_path,"},{"line_number":5134,"context_line":"                instance_uuid\u003dinstance.uuid,"},{"line_number":5135,"context_line":"                # spicehtml5proxy_base_url must include the full path including"},{"line_number":5136,"context_line":"                # the html file (like http://myhost/spice_auto.html)"},{"line_number":5137,"context_line":"                access_url_base\u003dCONF.spice.html5proxy_base_url,"},{"line_number":5138,"context_line":"            )"},{"line_number":5139,"context_line":"            console_auth.authorize(CONF.consoleauth.token_ttl)"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_d016b0a8","line":5136,"range":{"start_line":5135,"start_character":16,"end_line":5136,"end_character":68},"in_reply_to":"9f6a8fd7_a9de5b0e","updated":"2018-04-24 17:56:56.000000000","message":"Okay.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc6f81e3464f6231f563edf36b93c7455cb359f0","unresolved":false,"context_lines":[{"line_number":5256,"context_line":"            # Retrieve connect info from driver, and then decorate with our"},{"line_number":5257,"context_line":"            # access info token"},{"line_number":5258,"context_line":"            console \u003d self.driver.get_serial_console(context, instance)"},{"line_number":5259,"context_line":"            console_auth \u003d obj_console_auth_token.ConsoleAuthToken("},{"line_number":5260,"context_line":"                context\u003dcontext,"},{"line_number":5261,"context_line":"                console_type\u003dconsole_type,"},{"line_number":5262,"context_line":"                host\u003dconsole.host,"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_e91e93b9","line":5259,"updated":"2018-04-23 14:24:40.000000000","message":"I don\u0027t see a unit test for this case.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84ea5fcaeac3dc816bba306a4c70a22ac9df36af","unresolved":false,"context_lines":[{"line_number":5256,"context_line":"            # Retrieve connect info from driver, and then decorate with our"},{"line_number":5257,"context_line":"            # access info token"},{"line_number":5258,"context_line":"            console \u003d self.driver.get_serial_console(context, instance)"},{"line_number":5259,"context_line":"            console_auth \u003d obj_console_auth_token.ConsoleAuthToken("},{"line_number":5260,"context_line":"                context\u003dcontext,"},{"line_number":5261,"context_line":"                console_type\u003dconsole_type,"},{"line_number":5262,"context_line":"                host\u003dconsole.host,"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_706a441a","line":5259,"in_reply_to":"9f6a8fd7_e91e93b9","updated":"2018-04-24 17:56:56.000000000","message":"Dangit.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc6f81e3464f6231f563edf36b93c7455cb359f0","unresolved":false,"context_lines":[{"line_number":10085,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027mks\u0027)"},{"line_number":10086,"context_line":""},{"line_number":10087,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":10088,"context_line":"        self.compute.build_and_run_instance(self.context,"},{"line_number":10089,"context_line":"            instance, {}, {}, {}, block_device_mapping\u003d[])"},{"line_number":10090,"context_line":""},{"line_number":10091,"context_line":"        # Try with the full instance"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_e94533b5","line":10088,"range":{"start_line":10088,"start_character":8,"end_line":10088,"end_character":57},"updated":"2018-04-23 14:24:40.000000000","message":"nit: I\u0027d prefer this is just a mock-based test in nova.tests.unit.compute.test_compute_mgr so we don\u0027t have to actually create and terminate the instance, as these legacy tests do.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a9378ac639a5b78982c3abc35aba347da7983d54","unresolved":false,"context_lines":[{"line_number":10085,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027mks\u0027)"},{"line_number":10086,"context_line":""},{"line_number":10087,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":10088,"context_line":"        self.compute.build_and_run_instance(self.context,"},{"line_number":10089,"context_line":"            instance, {}, {}, {}, block_device_mapping\u003d[])"},{"line_number":10090,"context_line":""},{"line_number":10091,"context_line":"        # Try with the full instance"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_56ce1863","line":10088,"range":{"start_line":10088,"start_character":8,"end_line":10088,"end_character":57},"in_reply_to":"9f6a8fd7_502aa0da","updated":"2018-04-24 19:15:45.000000000","message":"FWIW, I did this to be consistent with the other test coverage for the other types of consoles.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"84ea5fcaeac3dc816bba306a4c70a22ac9df36af","unresolved":false,"context_lines":[{"line_number":10085,"context_line":"        self.flags(enabled\u003dTrue, group\u003d\u0027mks\u0027)"},{"line_number":10086,"context_line":""},{"line_number":10087,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":10088,"context_line":"        self.compute.build_and_run_instance(self.context,"},{"line_number":10089,"context_line":"            instance, {}, {}, {}, block_device_mapping\u003d[])"},{"line_number":10090,"context_line":""},{"line_number":10091,"context_line":"        # Try with the full instance"}],"source_content_type":"text/x-python","patch_set":31,"id":"9f6a8fd7_502aa0da","line":10088,"range":{"start_line":10088,"start_character":8,"end_line":10088,"end_character":57},"in_reply_to":"9f6a8fd7_e94533b5","updated":"2018-04-24 17:56:56.000000000","message":"K, can do.","commit_id":"a5e0e38ca1ecd89165f2308d6906f7831ff3071a"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8facc0e9c49182da9d0755b6f350b9dc55287be7","unresolved":false,"context_lines":[{"line_number":6801,"context_line":"                                                   instance)"},{"line_number":6802,"context_line":""},{"line_number":6803,"context_line":"        driver_console \u003d mock_get_console.return_value"},{"line_number":6804,"context_line":"        mock_console_obj.assert_called_once_with("},{"line_number":6805,"context_line":"            context\u003dmock_elevated.return_value, console_type\u003d\u0027webmks\u0027,"},{"line_number":6806,"context_line":"            host\u003ddriver_console.host, port\u003ddriver_console.port,"},{"line_number":6807,"context_line":"            internal_access_path\u003ddriver_console.internal_access_path,"},{"line_number":6808,"context_line":"            instance_uuid\u003dinstance.uuid,"},{"line_number":6809,"context_line":"            access_url_base\u003dCONF.mks.mksproxy_base_url)"},{"line_number":6810,"context_line":"        mock_console_obj.return_value.authorize.assert_called_once_with("},{"line_number":6811,"context_line":"            CONF.consoleauth.token_ttl)"},{"line_number":6812,"context_line":"        self.assertEqual(driver_console.get_connection_info.return_value,"}],"source_content_type":"text/x-python","patch_set":32,"id":"9f6a8fd7_0c74f5cd","line":6809,"range":{"start_line":6804,"start_character":8,"end_line":6809,"end_character":55},"updated":"2018-04-25 21:43:15.000000000","message":"This is kind of weird to be mocking out the init, but I guess you\u0027re doing that to assert what is used to construct the object.","commit_id":"9ee9926ee76f62ab50d9c74dcbea0db95bf37c0b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"10a3b5a4ebd145e27b95ee4f31361fde3e6e03c6","unresolved":false,"context_lines":[{"line_number":6801,"context_line":"                                                   instance)"},{"line_number":6802,"context_line":""},{"line_number":6803,"context_line":"        driver_console \u003d mock_get_console.return_value"},{"line_number":6804,"context_line":"        mock_console_obj.assert_called_once_with("},{"line_number":6805,"context_line":"            context\u003dmock_elevated.return_value, console_type\u003d\u0027webmks\u0027,"},{"line_number":6806,"context_line":"            host\u003ddriver_console.host, port\u003ddriver_console.port,"},{"line_number":6807,"context_line":"            internal_access_path\u003ddriver_console.internal_access_path,"},{"line_number":6808,"context_line":"            instance_uuid\u003dinstance.uuid,"},{"line_number":6809,"context_line":"            access_url_base\u003dCONF.mks.mksproxy_base_url)"},{"line_number":6810,"context_line":"        mock_console_obj.return_value.authorize.assert_called_once_with("},{"line_number":6811,"context_line":"            CONF.consoleauth.token_ttl)"},{"line_number":6812,"context_line":"        self.assertEqual(driver_console.get_connection_info.return_value,"}],"source_content_type":"text/x-python","patch_set":32,"id":"9f6a8fd7_7739baa1","line":6809,"range":{"start_line":6804,"start_character":8,"end_line":6809,"end_character":55},"in_reply_to":"9f6a8fd7_0c74f5cd","updated":"2018-04-25 21:58:40.000000000","message":"Yeah, I wasn\u0027t sure. A lot of what to test is whether we create the object as we expect. In the old version of this test, it was really creating database records, so it was verified that way. Now that we\u0027re mocking, if I don\u0027t do this then there\u0027s no checking of whether the object is created with all the stuff it needs.\n\nThat said, I\u0027m not sure the former database test was really checking the host/port/access path etc.","commit_id":"9ee9926ee76f62ab50d9c74dcbea0db95bf37c0b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"823b993956e359cbd54fcbc6e38495c54f4d8a1e","unresolved":false,"context_lines":[{"line_number":6801,"context_line":"                                                   instance)"},{"line_number":6802,"context_line":""},{"line_number":6803,"context_line":"        driver_console \u003d mock_get_console.return_value"},{"line_number":6804,"context_line":"        mock_console_obj.assert_called_once_with("},{"line_number":6805,"context_line":"            context\u003dmock_elevated.return_value, console_type\u003d\u0027webmks\u0027,"},{"line_number":6806,"context_line":"            host\u003ddriver_console.host, port\u003ddriver_console.port,"},{"line_number":6807,"context_line":"            internal_access_path\u003ddriver_console.internal_access_path,"},{"line_number":6808,"context_line":"            instance_uuid\u003dinstance.uuid,"},{"line_number":6809,"context_line":"            access_url_base\u003dCONF.mks.mksproxy_base_url)"},{"line_number":6810,"context_line":"        mock_console_obj.return_value.authorize.assert_called_once_with("},{"line_number":6811,"context_line":"            CONF.consoleauth.token_ttl)"},{"line_number":6812,"context_line":"        self.assertEqual(driver_console.get_connection_info.return_value,"}],"source_content_type":"text/x-python","patch_set":32,"id":"9f6a8fd7_a8432213","line":6809,"range":{"start_line":6804,"start_character":8,"end_line":6809,"end_character":55},"in_reply_to":"9f6a8fd7_7739baa1","updated":"2018-04-30 21:59:37.000000000","message":"Yeah, this is not great because you\u0027re mocking out the whole object, which means compute manager is interacting with a mock. That can either break, or behave differently which means we\u0027re not really doing what we normally would here. I would tend to mock out the db call and make sure we passed to it what we expect.\n\nI guess we\u0027re okay with manager-object interaction because of the few tests in test_compute.py where you\u0027re actually hitting the DB, but it\u0027s not a whole lot of coverage.","commit_id":"9ee9926ee76f62ab50d9c74dcbea0db95bf37c0b"}]}
