)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"589daa3a226e0c44fdd477bd080c8b9ed5b500ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cf96c41c_b5a80539","updated":"2025-02-18 03:34:19.000000000","message":"This does add the missing bit from my earlier attempt for backwards compatibility. Thanks Julia!","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"3af111d0a886d0ad1a4c9483df3d09ada734e259","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b114c14a_f5a58a0f","updated":"2025-02-19 19:09:40.000000000","message":"I\u0027m gonna be honest, I\u0027m not thrilled that we gave up security on the first get_command_status request for backwards compatibility, but this is certainly well beyond the good enough threshold :)\n\nThank you for remaking this!","commit_id":"a6ca65201ab84190f6a61e66081562e92abfdba6"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"227d83cd4f827c6117ef916769ba07e382dab0fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b4c4cf2c_79460346","updated":"2025-02-18 17:51:41.000000000","message":"recheck - test_ip_access_to_server (AssertionError: False is not true). Possibly unrelated.","commit_id":"a6ca65201ab84190f6a61e66081562e92abfdba6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c4881d02bc1b6343908035be4603fe7c09938492","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e06788d3_794010a6","updated":"2025-02-24 18:11:09.000000000","message":"recheck it appears the job timing overall has shifted and I\u0027ve submitted a change for that specifically.","commit_id":"a6ca65201ab84190f6a61e66081562e92abfdba6"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"4d644377c1840325969f343549920ca97657117a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dbf6e0c7_0a963525","updated":"2025-03-05 04:03:47.000000000","message":"recheck many CI fixes have merged","commit_id":"a6ca65201ab84190f6a61e66081562e92abfdba6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9ef2ed989c0d6b9d9bde89fde720bead7fc30854","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"aa23e99e_41386b54","updated":"2025-03-04 04:40:13.000000000","message":"recheck updated results needed","commit_id":"a6ca65201ab84190f6a61e66081562e92abfdba6"}],"ironic_python_agent/tests/unit/test_api.py":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"589daa3a226e0c44fdd477bd080c8b9ed5b500ac","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        self.mock_agent.validate_agent_token.return_value \u003d False"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        response \u003d self.get_json("},{"line_number":343,"context_line":"            \u0027/commands/abc123\u0027, expect_errors\u003dTrue)"},{"line_number":344,"context_line":"        self.assertEqual(200, response.status_code)"},{"line_number":345,"context_line":"        self.assertFalse(self.app.security_get_token_support)"},{"line_number":346,"context_line":"        self.assertEqual(1, self.mock_agent.get_command_result.call_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0d906896_d556e072","line":343,"range":{"start_line":343,"start_character":32,"end_line":343,"end_character":50},"updated":"2025-02-18 03:34:19.000000000","message":"We are not expecting errors here (?), so we don\u0027t need the `expect_errors\u003dTrue` argument.","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3a30cea1d7ddef4be34c6f39458d93dea87ea7e7","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        self.mock_agent.validate_agent_token.return_value \u003d False"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        response \u003d self.get_json("},{"line_number":343,"context_line":"            \u0027/commands/abc123\u0027, expect_errors\u003dTrue)"},{"line_number":344,"context_line":"        self.assertEqual(200, response.status_code)"},{"line_number":345,"context_line":"        self.assertFalse(self.app.security_get_token_support)"},{"line_number":346,"context_line":"        self.assertEqual(1, self.mock_agent.get_command_result.call_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6162bf14_6a53f3c5","line":343,"range":{"start_line":343,"start_character":32,"end_line":343,"end_character":50},"in_reply_to":"0d906896_d556e072","updated":"2025-02-18 14:23:58.000000000","message":"We only need the response code, so it doesn\u0027t really matter if it is there or not.\n\nThe actual test is that the response code is 200.","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8c688fb0e89c0f783d08f3ed580aee007a5caea7","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        self.mock_agent.validate_agent_token.return_value \u003d False"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        response \u003d self.get_json("},{"line_number":343,"context_line":"            \u0027/commands/abc123\u0027, expect_errors\u003dTrue)"},{"line_number":344,"context_line":"        self.assertEqual(200, response.status_code)"},{"line_number":345,"context_line":"        self.assertFalse(self.app.security_get_token_support)"},{"line_number":346,"context_line":"        self.assertEqual(1, self.mock_agent.get_command_result.call_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"75820806_26c2e0db","line":343,"range":{"start_line":343,"start_character":32,"end_line":343,"end_character":50},"in_reply_to":"6162bf14_6a53f3c5","updated":"2025-02-18 14:35:41.000000000","message":"Done","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"589daa3a226e0c44fdd477bd080c8b9ed5b500ac","unresolved":true,"context_lines":[{"line_number":346,"context_line":"        self.assertEqual(1, self.mock_agent.get_command_result.call_count)"},{"line_number":347,"context_line":"        self.mock_agent.reset_mock()"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        response \u003d self.get_json("},{"line_number":350,"context_line":"            \u0027/commands/abc123?agent_token\u003d%s\u0027 % agent_token,"},{"line_number":351,"context_line":"            expect_errors\u003dTrue)"},{"line_number":352,"context_line":"        self.assertTrue(self.app.security_get_token_support)"}],"source_content_type":"text/x-python","patch_set":1,"id":"402dddb6_1f35fe48","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":17},"updated":"2025-02-18 03:34:19.000000000","message":"I don\u0027t know what use a note in unit test may be, but adding some here could help anyone understand at a glance, that the second request fails because `if a request comes in with an agent_token to the command results endpoint, the agent will require subsequent calls to leverage the token`, and second request is missing a token.","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3a30cea1d7ddef4be34c6f39458d93dea87ea7e7","unresolved":true,"context_lines":[{"line_number":346,"context_line":"        self.assertEqual(1, self.mock_agent.get_command_result.call_count)"},{"line_number":347,"context_line":"        self.mock_agent.reset_mock()"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        response \u003d self.get_json("},{"line_number":350,"context_line":"            \u0027/commands/abc123?agent_token\u003d%s\u0027 % agent_token,"},{"line_number":351,"context_line":"            expect_errors\u003dTrue)"},{"line_number":352,"context_line":"        self.assertTrue(self.app.security_get_token_support)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e775eee5_e466d3d8","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":17},"in_reply_to":"402dddb6_1f35fe48","updated":"2025-02-18 14:23:58.000000000","message":"Sure. One thing is this is intentional. The idea is to prove the lockout occurs and the agent is still backwards compatible, so pre-upgrade success, then upgraded ironic success, then the agent fails as intended once the token has been used.","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8c688fb0e89c0f783d08f3ed580aee007a5caea7","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        self.assertEqual(1, self.mock_agent.get_command_result.call_count)"},{"line_number":347,"context_line":"        self.mock_agent.reset_mock()"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        response \u003d self.get_json("},{"line_number":350,"context_line":"            \u0027/commands/abc123?agent_token\u003d%s\u0027 % agent_token,"},{"line_number":351,"context_line":"            expect_errors\u003dTrue)"},{"line_number":352,"context_line":"        self.assertTrue(self.app.security_get_token_support)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ed26c111_e3007c60","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":17},"in_reply_to":"e775eee5_e466d3d8","updated":"2025-02-18 14:35:41.000000000","message":"Done","commit_id":"4689b742855ae580480cc37df952a561935e9d76"}],"releasenotes/notes/lockout-command-result-a368187515385270.yaml":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"589daa3a226e0c44fdd477bd080c8b9ed5b500ac","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    the agent. If a request comes in with an ``agent_token`` to the"},{"line_number":7,"context_line":"    command results endpoint, the agent will now require all future"},{"line_number":8,"context_line":"    calls to leverage the token to retrieve results and validate"},{"line_number":9,"context_line":"    that token\u0027s validity. This effectiely eliminates the possibility"},{"line_number":10,"context_line":"    of a malicious entity with access to the agent\u0027s API endpoint from"},{"line_number":11,"context_line":"    capturing the command results from agent operations."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"b69e6e77_caf3d895","line":9,"range":{"start_line":9,"start_character":32,"end_line":9,"end_character":42},"updated":"2025-02-18 03:34:19.000000000","message":"s/effectiely/effectively","commit_id":"4689b742855ae580480cc37df952a561935e9d76"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8c688fb0e89c0f783d08f3ed580aee007a5caea7","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    the agent. If a request comes in with an ``agent_token`` to the"},{"line_number":7,"context_line":"    command results endpoint, the agent will now require all future"},{"line_number":8,"context_line":"    calls to leverage the token to retrieve results and validate"},{"line_number":9,"context_line":"    that token\u0027s validity. This effectiely eliminates the possibility"},{"line_number":10,"context_line":"    of a malicious entity with access to the agent\u0027s API endpoint from"},{"line_number":11,"context_line":"    capturing the command results from agent operations."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"9d73a046_4d88b3cb","line":9,"range":{"start_line":9,"start_character":32,"end_line":9,"end_character":42},"in_reply_to":"b69e6e77_caf3d895","updated":"2025-02-18 14:35:41.000000000","message":"Done","commit_id":"4689b742855ae580480cc37df952a561935e9d76"}]}
