)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b044746afe4313fa76d7abc2ddfde05a98fb6e57","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for spice-direct console types."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for Nova microversion 2.98 which exposes the new"},{"line_number":10,"context_line":"spice-direct console type and the pre-existing /os-console-auth-token/ API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"+----------+----------------------------------------------------------+"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"48e61769_f322bbb9","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":50},"updated":"2025-02-25 16:29:38.000000000","message":"as an aside this merged as 2.99\nso when testing is added we need to update this to reflect that.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"e252d162d1704afb003b6c0b967044cbdf744376","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for spice-direct console types."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for Nova microversion 2.98 which exposes the new"},{"line_number":10,"context_line":"spice-direct console type and the pre-existing /os-console-auth-token/ API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"+----------+----------------------------------------------------------+"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"55847484_5353968f","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":50},"in_reply_to":"48e61769_f322bbb9","updated":"2025-03-11 00:31:12.000000000","message":"Yeah, I noticed these over the weekend. Quite embarrassing. I\u0027ve cleaned them up.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3793aeb13dabd448995d90648b71873555d2a819","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for spice-direct console types."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for Nova microversion 2.98 which exposes the new"},{"line_number":10,"context_line":"spice-direct console type and the pre-existing /os-console-auth-token/ API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"+----------+----------------------------------------------------------+"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"d85ae9ca_5d4c3313","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":50},"in_reply_to":"55847484_5353968f","updated":"2025-03-12 00:53:42.000000000","message":"Done","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bd98dd019ff31779996cf2d651b0f04282da20f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6df0a89d_d3e31e97","updated":"2025-03-13 10:49:08.000000000","message":"One nit inline, but that\u0027s opinion so feel free to disagree with me. The -1 is for a missing release note and docs. You\u0027ll want to document both the resource and the new proxy method. You can find a good example of all [here](https://review.opendev.org/c/openstack/openstacksdk/+/886084).\n\n(Apologies for not asking for this sooner: I didn\u0027t think of it)","commit_id":"12af738618ca78c58c84817914f1aa83fb18efdc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da065e7c_e000966a","updated":"2025-03-18 13:33:26.000000000","message":"Took this for a spin this morning and noted a small issue. Let me know if what I\u0027ve said isn\u0027t clear.","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28699b25b354aa1e4bcea4b6173aaf8dac903389","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c96924eb_da8f49af","updated":"2025-03-26 10:56:13.000000000","message":"Almost there!","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"efcbc1e4c21317b9feda623a59db986e3a3ff77a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"30170b16_062d0269","updated":"2025-04-03 08:51:27.000000000","message":"Honestly I am still quite confused by how these proxies work, but I have attempted to comply with your instructions. Here goes nothing!","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed141fbbbe8319cf17203399d7e3db3e82dc41c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"adbdb8cd_27f21a09","updated":"2025-04-04 12:15:54.000000000","message":"Thanks for the persistence here 🙏","commit_id":"446c47ad747ede4bf8dece84391f38ab646533a1"}],"doc/source/user/proxies/compute.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":false,"context_lines":[{"line_number":194,"context_line":"  :noindex:"},{"line_number":195,"context_line":"  :members: create_server_remote_console, get_server_console_url,"},{"line_number":196,"context_line":"            validate_console_auth_token, get_server_console_output,"},{"line_number":197,"context_line":"            create_console"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Helpers"},{"line_number":200,"context_line":"^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c973c65f_5dece2ae","line":197,"updated":"2025-03-18 13:33:26.000000000","message":"++","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"}],"doc/source/user/resources/compute/v2/console_auth_token.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":true,"context_lines":[{"line_number":1,"context_line":"openstack.compute.v2.console_auth_token"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":".. automodule:: openstack.compute.v2.console_auth_token"},{"line_number":5,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"00060889_dcb2b65b","line":2,"range":{"start_line":2,"start_character":39,"end_line":2,"end_character":42},"updated":"2025-03-18 13:33:26.000000000","message":"nit: extra characters","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3259908700c45fa0e6adbbe36b717594d8f624bb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"openstack.compute.v2.console_auth_token"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":".. automodule:: openstack.compute.v2.console_auth_token"},{"line_number":5,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"f350cc7c_5c07cd33","line":2,"range":{"start_line":2,"start_character":39,"end_line":2,"end_character":42},"in_reply_to":"00060889_dcb2b65b","updated":"2025-03-25 05:58:37.000000000","message":"Done","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"}],"openstack/compute/v2/_proxy.py":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"320a44414e1ec9cfd9ff0534c610ba344715d9d9","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"e7fa549c_d82472b5","line":2388,"updated":"2025-02-10 09:24:14.000000000","message":"for the new public proxy method we need a dedicated test","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2c6da49262991ded339d3fe1bf75dc24d40bc0e2","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"956a0fa8_788a0c6f","line":2388,"in_reply_to":"4481fcff_025bcdb3","updated":"2025-02-26 18:31:22.000000000","message":"@mikal@stillhq.com Each of the methods in here will have a test. The likes of `get_quota_class_set` or `get_server_event` are probably the closest matches since they use `self._get`. You can find the tests for those [here](https://github.com/openstack/openstacksdk/blob/6438e3b653a64a790f4ec9b30c9ebd0e63ae6055/openstack/tests/unit/compute/v2/test_proxy.py#L1736-L1739) and [here](https://github.com/openstack/openstacksdk/blob/6438e3b653a64a790f4ec9b30c9ebd0e63ae6055/openstack/tests/unit/compute/v2/test_proxy.py#L1867-L1878), respectively.\n\nAlso, as a general point, SDK is like nova and many others, in that each file has an equivalent `test_` file in `openstack/tests/unit`. This file `openstack/compute/v2/_proxy.py` will be tested in `openstack/tests/unit/compute/v2/test_proxy.py`.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3793aeb13dabd448995d90648b71873555d2a819","unresolved":false,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"23cfdd21_c5b137a1","line":2388,"in_reply_to":"89e1e676_43dc434d","updated":"2025-03-12 00:53:42.000000000","message":"Done","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e871592f0bcca11a945e204053ca669a4971f340","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"ed4fed4a_26d47a48","line":2388,"in_reply_to":"93830c48_dea4122f","updated":"2025-03-11 10:28:26.000000000","message":"the reqeust id is a header that is vlaid to set on any api call to any openstack service\n\nits a unique optional identifyer that a client can pass so they can correallate a request across multipel servics and logs.\n\nThe OpenStack service api will generate one if its not present using Keystone middelware.\n\ni have not looked at the test but i suspect that is one of the special cases.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"e252d162d1704afb003b6c0b967044cbdf744376","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"a3b51b07_06f64dd4","line":2388,"in_reply_to":"956a0fa8_788a0c6f","updated":"2025-03-11 00:31:12.000000000","message":"Thank you.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a72e58a3a0c46094e4b74c0173644409280c1166","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"93830c48_dea4122f","line":2388,"in_reply_to":"a3b51b07_06f64dd4","updated":"2025-03-11 09:55:25.000000000","message":"When I look at TestServerAction the whole thing is very confusing to me. For example, there is a method_arg called \u0027request_id\u0027, but that\u0027s not an argument for the method under test. Are there any docs on how these tests are meant to work?","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"35bea8ef74c2879761afcc87b831961ce49e36f2","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"4481fcff_025bcdb3","line":2388,"in_reply_to":"e7fa549c_d82472b5","updated":"2025-02-22 00:06:29.000000000","message":"I am happy enough to write such a test, but as a person who doesn\u0027t have a history of writing code in openstacksdk it would be nice if you could provide a pointer to such a test that you think is a good model to copy from. Thanks.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c673f3b94224cc59fea72db3d4b6e8df2af6b285","unresolved":true,"context_lines":[{"line_number":2385,"context_line":"        server \u003d self._get_resource(_server.Server, server)"},{"line_number":2386,"context_line":"        return server.get_console_url(self, console_type)"},{"line_number":2387,"context_line":""},{"line_number":2388,"context_line":"    def validate_console_auth_token(self, console_token):"},{"line_number":2389,"context_line":"        \"\"\"Lookup console connection information for a console auth token."},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"        :param console_token: The console auth token as returned in the URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"89e1e676_43dc434d","line":2388,"in_reply_to":"ed4fed4a_26d47a48","updated":"2025-03-12 00:53:14.000000000","message":"Ok, I think I got it working. Thanks for the explanation.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":true,"context_lines":[{"line_number":2393,"context_line":"            from get_server_console_url."},{"line_number":2394,"context_line":"        :returns: Dictionary with connection details, varying by console type."},{"line_number":2395,"context_line":"        \"\"\""},{"line_number":2396,"context_line":"        return self._get("},{"line_number":2397,"context_line":"            _console_auth_token.ConsoleAuthToken,"},{"line_number":2398,"context_line":"            console_token\u003dconsole_token,"},{"line_number":2399,"context_line":"        )"},{"line_number":2400,"context_line":""},{"line_number":2401,"context_line":"    def get_server_console_output(self, server, length\u003dNone):"},{"line_number":2402,"context_line":"        \"\"\"Return the console output for a server."},{"line_number":2403,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"62b79747_3459d51d","line":2400,"range":{"start_line":2396,"start_character":0,"end_line":2400,"end_character":1},"updated":"2025-03-18 13:33:26.000000000","message":"Potentially, depending on the outcome of my comment on the next file.\n\n```suggestion\n        return self._get(_console_auth_token.ConsoleAuthToken, console_token)\n\n```","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3259908700c45fa0e6adbbe36b717594d8f624bb","unresolved":false,"context_lines":[{"line_number":2393,"context_line":"            from get_server_console_url."},{"line_number":2394,"context_line":"        :returns: Dictionary with connection details, varying by console type."},{"line_number":2395,"context_line":"        \"\"\""},{"line_number":2396,"context_line":"        return self._get("},{"line_number":2397,"context_line":"            _console_auth_token.ConsoleAuthToken,"},{"line_number":2398,"context_line":"            console_token\u003dconsole_token,"},{"line_number":2399,"context_line":"        )"},{"line_number":2400,"context_line":""},{"line_number":2401,"context_line":"    def get_server_console_output(self, server, length\u003dNone):"},{"line_number":2402,"context_line":"        \"\"\"Return the console output for a server."},{"line_number":2403,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"538e90b7_0cf34ac3","line":2400,"range":{"start_line":2396,"start_character":0,"end_line":2400,"end_character":1},"in_reply_to":"62b79747_3459d51d","updated":"2025-03-25 05:58:37.000000000","message":"Done","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"}],"openstack/compute/v2/console_auth_token.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class ConsoleAuthToken(resource.Resource):"},{"line_number":17,"context_line":"    resource_key \u003d \u0027console\u0027"},{"line_number":18,"context_line":"    base_path \u003d \u0027/os-console-auth-tokens/%(console_token)s\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    # capabilities"},{"line_number":21,"context_line":"    allow_fetch \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"324252d0_a419d47a","line":18,"updated":"2025-03-18 13:33:26.000000000","message":"If you change this to:\n\n\n```suggestion\n    base_path \u003d \u0027/os-console-auth-tokens\u0027\n```","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3259908700c45fa0e6adbbe36b717594d8f624bb","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class ConsoleAuthToken(resource.Resource):"},{"line_number":17,"context_line":"    resource_key \u003d \u0027console\u0027"},{"line_number":18,"context_line":"    base_path \u003d \u0027/os-console-auth-tokens/%(console_token)s\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    # capabilities"},{"line_number":21,"context_line":"    allow_fetch \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"185e0a34_03b483a2","line":18,"in_reply_to":"324252d0_a419d47a","updated":"2025-03-25 05:58:37.000000000","message":"Done","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Request"},{"line_number":27,"context_line":"    #: The console token to lookup connection information for."},{"line_number":28,"context_line":"    console_token \u003d resource.URI(\u0027console_token\u0027, alternate_id\u003dTrue)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Properties"},{"line_number":31,"context_line":"    #: Instance UUID"}],"source_content_type":"text/x-python","patch_set":6,"id":"9314878c_03ec160d","line":28,"updated":"2025-03-18 13:33:26.000000000","message":"...and optionally drop this [*]\n\n[*] The `id` field is sufficient and what we use for most other resources, including servers, volumes, etc. `alternate_id` is usually reserved for `Body` resources, where you\u0027ll have e.g. a `server_uuid` field in a response body, rather than simply `id`.","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3259908700c45fa0e6adbbe36b717594d8f624bb","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Request"},{"line_number":27,"context_line":"    #: The console token to lookup connection information for."},{"line_number":28,"context_line":"    console_token \u003d resource.URI(\u0027console_token\u0027, alternate_id\u003dTrue)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Properties"},{"line_number":31,"context_line":"    #: Instance UUID"}],"source_content_type":"text/x-python","patch_set":6,"id":"cec27e22_ce29e683","line":28,"in_reply_to":"9314878c_03ec160d","updated":"2025-03-25 05:58:37.000000000","message":"Done","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    #: Internal access path"},{"line_number":40,"context_line":"    internal_access_path \u003d resource.Body(\u0027internal_access_path\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def fetch("},{"line_number":43,"context_line":"        self,"},{"line_number":44,"context_line":"        session,"},{"line_number":45,"context_line":"        requires_id\u003dFalse,"},{"line_number":46,"context_line":"        base_path\u003dNone,"},{"line_number":47,"context_line":"        error_message\u003dNone,"},{"line_number":48,"context_line":"        skip_cache\u003dFalse,"},{"line_number":49,"context_line":"        *,"},{"line_number":50,"context_line":"        resource_response_key\u003dNone,"},{"line_number":51,"context_line":"        microversion\u003dNone,"},{"line_number":52,"context_line":"        **params,"},{"line_number":53,"context_line":"    ):"},{"line_number":54,"context_line":"        return super().fetch("},{"line_number":55,"context_line":"            session,"},{"line_number":56,"context_line":"            requires_id\u003dFalse,"},{"line_number":57,"context_line":"            base_path\u003dbase_path,"},{"line_number":58,"context_line":"            error_message\u003derror_message,"},{"line_number":59,"context_line":"            skip_cache\u003dskip_cache,"},{"line_number":60,"context_line":"            resource_response_key\u003dresource_response_key,"},{"line_number":61,"context_line":"            microversion\u003dmicroversion,"},{"line_number":62,"context_line":"            **params,"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"313ff018_62e0feaf","line":63,"range":{"start_line":42,"start_character":0,"end_line":63,"end_character":9},"updated":"2025-03-18 13:33:26.000000000","message":"...then you shouldn\u0027t need the override of `requires_id`, which means you shouldn\u0027t need this method override, since we\u0027ll append an ID field to the base path for fetch operations (and everything else is disallowed since you didn\u0027t set e.g. `allow_list`).","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3259908700c45fa0e6adbbe36b717594d8f624bb","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    #: Internal access path"},{"line_number":40,"context_line":"    internal_access_path \u003d resource.Body(\u0027internal_access_path\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def fetch("},{"line_number":43,"context_line":"        self,"},{"line_number":44,"context_line":"        session,"},{"line_number":45,"context_line":"        requires_id\u003dFalse,"},{"line_number":46,"context_line":"        base_path\u003dNone,"},{"line_number":47,"context_line":"        error_message\u003dNone,"},{"line_number":48,"context_line":"        skip_cache\u003dFalse,"},{"line_number":49,"context_line":"        *,"},{"line_number":50,"context_line":"        resource_response_key\u003dNone,"},{"line_number":51,"context_line":"        microversion\u003dNone,"},{"line_number":52,"context_line":"        **params,"},{"line_number":53,"context_line":"    ):"},{"line_number":54,"context_line":"        return super().fetch("},{"line_number":55,"context_line":"            session,"},{"line_number":56,"context_line":"            requires_id\u003dFalse,"},{"line_number":57,"context_line":"            base_path\u003dbase_path,"},{"line_number":58,"context_line":"            error_message\u003derror_message,"},{"line_number":59,"context_line":"            skip_cache\u003dskip_cache,"},{"line_number":60,"context_line":"            resource_response_key\u003dresource_response_key,"},{"line_number":61,"context_line":"            microversion\u003dmicroversion,"},{"line_number":62,"context_line":"            **params,"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"89c774da_853ac4a1","line":63,"range":{"start_line":42,"start_character":0,"end_line":63,"end_character":9},"in_reply_to":"313ff018_62e0feaf","updated":"2025-03-25 05:58:37.000000000","message":"Done","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28699b25b354aa1e4bcea4b6173aaf8dac903389","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    # capabilities"},{"line_number":21,"context_line":"    allow_fetch \u003d True"},{"line_number":22,"context_line":"    requires_id \u003d False"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.99\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1141cc63_da5d51ce","line":22,"updated":"2025-03-26 10:56:13.000000000","message":"Per my comments on the last PS, we will have an `id` field [available](https://github.com/openstack/openstacksdk/blob/108545a692d7372fa1b314c45f9d339cffa0f1c8/openstack/resource.py#L354-L355) and that `id` field is [automatically appended to the `base_path`](https://github.com/openstack/openstacksdk/blob/108545a692d7372fa1b314c45f9d339cffa0f1c8/openstack/resource.py#L1142-L1151). As a result, I think you can drop this...","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"efcbc1e4c21317b9feda623a59db986e3a3ff77a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    # capabilities"},{"line_number":21,"context_line":"    allow_fetch \u003d True"},{"line_number":22,"context_line":"    requires_id \u003d False"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.99\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"f753d8d8_c62c6b21","line":22,"in_reply_to":"1141cc63_da5d51ce","updated":"2025-04-03 08:51:27.000000000","message":"Done","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28699b25b354aa1e4bcea4b6173aaf8dac903389","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.99\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Request"},{"line_number":27,"context_line":"    #: The console token to lookup connection information for."},{"line_number":28,"context_line":"    console_token \u003d resource.URI(\u0027console_token\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Properties"},{"line_number":31,"context_line":"    #: Instance UUID"}],"source_content_type":"text/x-python","patch_set":7,"id":"69fa0bfd_489c368e","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":49},"updated":"2025-03-26 10:56:13.000000000","message":"...and this...","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"efcbc1e4c21317b9feda623a59db986e3a3ff77a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.99\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Request"},{"line_number":27,"context_line":"    #: The console token to lookup connection information for."},{"line_number":28,"context_line":"    console_token \u003d resource.URI(\u0027console_token\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Properties"},{"line_number":31,"context_line":"    #: Instance UUID"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf395a82_e7ff6b2c","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":49},"in_reply_to":"69fa0bfd_489c368e","updated":"2025-04-03 08:51:27.000000000","message":"Done","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28699b25b354aa1e4bcea4b6173aaf8dac903389","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    #: Internal access path"},{"line_number":40,"context_line":"    internal_access_path \u003d resource.Body(\u0027internal_access_path\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def fetch("},{"line_number":43,"context_line":"        self,"},{"line_number":44,"context_line":"        session,"},{"line_number":45,"context_line":"        requires_id\u003dTrue,"},{"line_number":46,"context_line":"        base_path\u003dNone,"},{"line_number":47,"context_line":"        error_message\u003dNone,"},{"line_number":48,"context_line":"        skip_cache\u003dFalse,"},{"line_number":49,"context_line":"        *,"},{"line_number":50,"context_line":"        resource_response_key\u003dNone,"},{"line_number":51,"context_line":"        microversion\u003dNone,"},{"line_number":52,"context_line":"        **params,"},{"line_number":53,"context_line":"    ):"},{"line_number":54,"context_line":"        return super().fetch("},{"line_number":55,"context_line":"            session,"},{"line_number":56,"context_line":"            requires_id\u003dFalse,"},{"line_number":57,"context_line":"            base_path\u003dbase_path,"},{"line_number":58,"context_line":"            error_message\u003derror_message,"},{"line_number":59,"context_line":"            skip_cache\u003dskip_cache,"},{"line_number":60,"context_line":"            resource_response_key\u003dresource_response_key,"},{"line_number":61,"context_line":"            microversion\u003dmicroversion,"},{"line_number":62,"context_line":"            **params,"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":7,"id":"4ef87f8a_ddb4c2a7","line":63,"range":{"start_line":42,"start_character":0,"end_line":63,"end_character":9},"updated":"2025-03-26 10:56:13.000000000","message":"...and all of this.\n\nThe proof of all the above is that should be able to call the Proxy method against a DevStack deployed from master (i.e. with your 2.99 changes) and it\u0027ll \"just work\". Hint:\n\n```\n# from repo root with this change checked out\nvirtualenv .venv\nsource .venv/bin/activate\npip install -e .\n```\n\nthen\n\n```\nimport openstack\nconn \u003d openstack.connect(\u0027devstack-admin\u0027)\nconn.compute.validate_console_auth_token(\u0027\u003cyour-token\u003e\u0027)\n```","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"efcbc1e4c21317b9feda623a59db986e3a3ff77a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    #: Internal access path"},{"line_number":40,"context_line":"    internal_access_path \u003d resource.Body(\u0027internal_access_path\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def fetch("},{"line_number":43,"context_line":"        self,"},{"line_number":44,"context_line":"        session,"},{"line_number":45,"context_line":"        requires_id\u003dTrue,"},{"line_number":46,"context_line":"        base_path\u003dNone,"},{"line_number":47,"context_line":"        error_message\u003dNone,"},{"line_number":48,"context_line":"        skip_cache\u003dFalse,"},{"line_number":49,"context_line":"        *,"},{"line_number":50,"context_line":"        resource_response_key\u003dNone,"},{"line_number":51,"context_line":"        microversion\u003dNone,"},{"line_number":52,"context_line":"        **params,"},{"line_number":53,"context_line":"    ):"},{"line_number":54,"context_line":"        return super().fetch("},{"line_number":55,"context_line":"            session,"},{"line_number":56,"context_line":"            requires_id\u003dFalse,"},{"line_number":57,"context_line":"            base_path\u003dbase_path,"},{"line_number":58,"context_line":"            error_message\u003derror_message,"},{"line_number":59,"context_line":"            skip_cache\u003dskip_cache,"},{"line_number":60,"context_line":"            resource_response_key\u003dresource_response_key,"},{"line_number":61,"context_line":"            microversion\u003dmicroversion,"},{"line_number":62,"context_line":"            **params,"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":7,"id":"2463357b_f1fd9d4e","line":63,"range":{"start_line":42,"start_character":0,"end_line":63,"end_character":9},"in_reply_to":"4ef87f8a_ddb4c2a7","updated":"2025-04-03 08:51:27.000000000","message":"Done","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"}],"openstack/compute/v2/server_console_auth_token.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b044746afe4313fa76d7abc2ddfde05a98fb6e57","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    allow_fetch \u003d True"},{"line_number":22,"context_line":"    requires_id \u003d False"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.98\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Request"},{"line_number":27,"context_line":"    #: The console token to lookup connection information for."}],"source_content_type":"text/x-python","patch_set":2,"id":"8ee0bfa5_3c1f02eb","line":24,"range":{"start_line":24,"start_character":27,"end_line":24,"end_character":29},"updated":"2025-02-25 16:29:38.000000000","message":"99","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"e252d162d1704afb003b6c0b967044cbdf744376","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    allow_fetch \u003d True"},{"line_number":22,"context_line":"    requires_id \u003d False"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _max_microversion \u003d \u00272.98\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    # Request"},{"line_number":27,"context_line":"    #: The console token to lookup connection information for."}],"source_content_type":"text/x-python","patch_set":2,"id":"24e7a78f_777894f4","line":24,"range":{"start_line":24,"start_character":27,"end_line":24,"end_character":29},"in_reply_to":"8ee0bfa5_3c1f02eb","updated":"2025-03-11 00:31:12.000000000","message":"Acknowledged","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2c6da49262991ded339d3fe1bf75dc24d40bc0e2","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        **params,"},{"line_number":53,"context_line":"    ):"},{"line_number":54,"context_line":"        # NOTE(mikal): I am really not sure this is the right way to not"},{"line_number":55,"context_line":"        # require an id."},{"line_number":56,"context_line":"        return super().fetch("},{"line_number":57,"context_line":"            session,"},{"line_number":58,"context_line":"            requires_id\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b8cad09e_a017c047","line":55,"updated":"2025-02-26 18:31:22.000000000","message":"It is for now, sadly. To be fixed in time. You can remove this note when you respin.","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"e252d162d1704afb003b6c0b967044cbdf744376","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        **params,"},{"line_number":53,"context_line":"    ):"},{"line_number":54,"context_line":"        # NOTE(mikal): I am really not sure this is the right way to not"},{"line_number":55,"context_line":"        # require an id."},{"line_number":56,"context_line":"        return super().fetch("},{"line_number":57,"context_line":"            session,"},{"line_number":58,"context_line":"            requires_id\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"017d203b_6cd97bf3","line":55,"in_reply_to":"b8cad09e_a017c047","updated":"2025-03-11 00:31:12.000000000","message":"Acknowledged","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bd98dd019ff31779996cf2d651b0f04282da20f5","unresolved":true,"context_lines":[{"line_number":13,"context_line":"from openstack import resource"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class ServerConsoleAuthToken(resource.Resource):"},{"line_number":17,"context_line":"    resource_key \u003d \u0027console\u0027"},{"line_number":18,"context_line":"    base_path \u003d \u0027/os-console-auth-tokens/%(console_token)s\u0027"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3d0cf500_7d3d8e36","line":16,"updated":"2025-03-13 10:49:08.000000000","message":"nit: The `Server` prefix feels a bit redundant. Unlike the other `Server` prefixed resources, this one isn\u0027t an explicit sub-resource of `Server` (as evidenced by the `base_path`: `ServerRemoteConsole`, for example, is, with a base path of `/servers/%(server_id)s/remote-consoles`.\n\nHow about dropping it from the filename `s/server_//` and here?\n\n```suggestion\nclass ConsoleAuthToken(resource.Resource):\n```","commit_id":"12af738618ca78c58c84817914f1aa83fb18efdc"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"80915cb8002fb606909de4832fb0eaab6a7cf586","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from openstack import resource"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class ServerConsoleAuthToken(resource.Resource):"},{"line_number":17,"context_line":"    resource_key \u003d \u0027console\u0027"},{"line_number":18,"context_line":"    base_path \u003d \u0027/os-console-auth-tokens/%(console_token)s\u0027"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"0db69e26_712ef593","line":16,"in_reply_to":"3d0cf500_7d3d8e36","updated":"2025-03-18 02:30:43.000000000","message":"Done","commit_id":"12af738618ca78c58c84817914f1aa83fb18efdc"}],"openstack/compute/v2/server_remote_console.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b044746afe4313fa76d7abc2ddfde05a98fb6e57","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    allow_delete \u003d False"},{"line_number":36,"context_line":"    allow_list \u003d False"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    _max_microversion \u003d \u00272.98\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    #: Protocol of the remote console."},{"line_number":41,"context_line":"    protocol \u003d resource.Body(\u0027protocol\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ecf079a_a612f194","line":38,"range":{"start_line":38,"start_character":27,"end_line":38,"end_character":29},"updated":"2025-02-25 16:29:38.000000000","message":"99","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"e252d162d1704afb003b6c0b967044cbdf744376","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    allow_delete \u003d False"},{"line_number":36,"context_line":"    allow_list \u003d False"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    _max_microversion \u003d \u00272.98\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    #: Protocol of the remote console."},{"line_number":41,"context_line":"    protocol \u003d resource.Body(\u0027protocol\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e39d4964_e66c66f7","line":38,"range":{"start_line":38,"start_character":27,"end_line":38,"end_character":29},"in_reply_to":"9ecf079a_a612f194","updated":"2025-03-11 00:31:12.000000000","message":"Acknowledged","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b044746afe4313fa76d7abc2ddfde05a98fb6e57","unresolved":true,"context_lines":[{"line_number":57,"context_line":"                \u0027Console type webmks is not supported on server side\u0027"},{"line_number":58,"context_line":"            )"},{"line_number":59,"context_line":"        if ("},{"line_number":60,"context_line":"            not utils.supports_microversion(session, \u00272.98\u0027)"},{"line_number":61,"context_line":"            and self.type \u003d\u003d \u0027spice-direct\u0027"},{"line_number":62,"context_line":"        ):"},{"line_number":63,"context_line":"            raise ValueError("}],"source_content_type":"text/x-python","patch_set":2,"id":"da4624af_dfd777f7","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":58},"updated":"2025-02-25 16:29:38.000000000","message":"99","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"e252d162d1704afb003b6c0b967044cbdf744376","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                \u0027Console type webmks is not supported on server side\u0027"},{"line_number":58,"context_line":"            )"},{"line_number":59,"context_line":"        if ("},{"line_number":60,"context_line":"            not utils.supports_microversion(session, \u00272.98\u0027)"},{"line_number":61,"context_line":"            and self.type \u003d\u003d \u0027spice-direct\u0027"},{"line_number":62,"context_line":"        ):"},{"line_number":63,"context_line":"            raise ValueError("}],"source_content_type":"text/x-python","patch_set":2,"id":"7e081573_24717240","line":60,"range":{"start_line":60,"start_character":56,"end_line":60,"end_character":58},"in_reply_to":"da4624af_dfd777f7","updated":"2025-03-11 00:31:12.000000000","message":"Acknowledged","commit_id":"b3fda947012c699f26a967f1489e5e6b494f2988"}],"releasenotes/notes/compute-add-validate-console-auth-token-999b790aec83de85.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ebc944ae67ab28ab9f6e8447c42e8122ecc4425","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Callers of this method must have ``admin`` access to the OpenStack Compute"},{"line_number":12,"context_line":"    API due to the privileged nature of the hypervisor connection information"},{"line_number":13,"context_line":"    returned."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"5bbdc84d_423bd9b6","line":13,"updated":"2025-03-18 13:33:26.000000000","message":"nit: trailing newline?","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"3259908700c45fa0e6adbbe36b717594d8f624bb","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Callers of this method must have ``admin`` access to the OpenStack Compute"},{"line_number":12,"context_line":"    API due to the privileged nature of the hypervisor connection information"},{"line_number":13,"context_line":"    returned."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fbe07f20_49125add","line":13,"in_reply_to":"5bbdc84d_423bd9b6","updated":"2025-03-25 05:58:37.000000000","message":"Done","commit_id":"d9d2bbde90b706d282ae929d7f3cd1727d535df3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28699b25b354aa1e4bcea4b6173aaf8dac903389","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    information for the console (hypervisor IP and port numbers), as this call"},{"line_number":9,"context_line":"    is generally used by the console proxies which users connect to."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Callers of this method must have ``admin`` access to the OpenStack Compute"},{"line_number":12,"context_line":"    API due to the privileged nature of the hypervisor connection information"},{"line_number":13,"context_line":"    returned."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"c75d5758_914f7637","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":13},"updated":"2025-03-26 10:56:13.000000000","message":"```suggestion\n    By default, callers of this method must have ``admin`` access to the\n    OpenStack Compute API due to the privileged nature of the hypervisor\n    connection information returned.\n```\n\n(We use weasel words because policy)","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"efcbc1e4c21317b9feda623a59db986e3a3ff77a","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    information for the console (hypervisor IP and port numbers), as this call"},{"line_number":9,"context_line":"    is generally used by the console proxies which users connect to."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Callers of this method must have ``admin`` access to the OpenStack Compute"},{"line_number":12,"context_line":"    API due to the privileged nature of the hypervisor connection information"},{"line_number":13,"context_line":"    returned."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"42ff7878_832c3f67","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":13},"in_reply_to":"c75d5758_914f7637","updated":"2025-04-03 08:51:27.000000000","message":"Done","commit_id":"9206461f4f87b5806b92ba16c2df6572abdb12e8"}]}
