)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"10a4a049a5c5eca772176f9b1956c0eecdcebf2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2c5b9c59_f8a7341d","updated":"2025-02-14 22:11:37.000000000","message":"All review feedback should now be addressed. I\u0027ve not updated the commit message because I don\u0027t want to re-run tests. But the original code had a bug that if a \"preprocess()\" method of a hook threw an exception the log message we had was formatted wrong and caused another exception to happen which didn\u0027t get handled all that gracefully. As part of this change I\u0027ve added a test that covers this case as well.","commit_id":"59804114fbe0f10d2c6ebd1d21261110413aa0f0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"398c40b1c19af6b28235d08d1a8dcad1272d09d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2b4e2f1d_296466bf","updated":"2025-02-18 21:06:25.000000000","message":"LGTM, Thanks!","commit_id":"59804114fbe0f10d2c6ebd1d21261110413aa0f0"}],"ironic/drivers/modules/inspect_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8f682c4057b00db3f06420569d3a1e37cc9b37a9","unresolved":true,"context_lines":[{"line_number":526,"context_line":"def _store_logs(plugin_data, node):"},{"line_number":527,"context_line":"    logs \u003d plugin_data.get(\u0027logs\u0027)"},{"line_number":528,"context_line":"    if not logs:"},{"line_number":529,"context_line":"        LOG.warning(\u0027No logs were passed by the ramdisk for node %(node)s.\u0027,"},{"line_number":530,"context_line":"                    {\u0027node\u0027: node.uuid})"},{"line_number":531,"context_line":"        return"},{"line_number":532,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6012e016_ab5b159f","line":529,"updated":"2025-02-03 14:56:28.000000000","message":"Note: this part does not make sense for non-agent implementations","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"10a4a049a5c5eca772176f9b1956c0eecdcebf2e","unresolved":false,"context_lines":[{"line_number":526,"context_line":"def _store_logs(plugin_data, node):"},{"line_number":527,"context_line":"    logs \u003d plugin_data.get(\u0027logs\u0027)"},{"line_number":528,"context_line":"    if not logs:"},{"line_number":529,"context_line":"        LOG.warning(\u0027No logs were passed by the ramdisk for node %(node)s.\u0027,"},{"line_number":530,"context_line":"                    {\u0027node\u0027: node.uuid})"},{"line_number":531,"context_line":"        return"},{"line_number":532,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f8ae6377_13392204","line":529,"in_reply_to":"6012e016_ab5b159f","updated":"2025-02-14 22:11:37.000000000","message":"Done","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8f682c4057b00db3f06420569d3a1e37cc9b37a9","unresolved":true,"context_lines":[{"line_number":546,"context_line":"        _run_post_hooks(task, inventory, plugin_data, hooks)"},{"line_number":547,"context_line":"    except exception.HardwareInspectionFailure:"},{"line_number":548,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":549,"context_line":"            _store_logs(plugin_data, task.node)"},{"line_number":550,"context_line":"    except Exception as exc:"},{"line_number":551,"context_line":"        LOG.exception(\u0027Unexpected exception while running inspection hooks for\u0027"},{"line_number":552,"context_line":"                      \u0027 node %(node)s\u0027, {\u0027node\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":1,"id":"74ce5d91_98eda3d3","line":549,"updated":"2025-02-03 14:56:28.000000000","message":"Given what I wrote above, I wonder if the storing logs part should fine a new home, somewhere agent-specific.","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"10a4a049a5c5eca772176f9b1956c0eecdcebf2e","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        _run_post_hooks(task, inventory, plugin_data, hooks)"},{"line_number":547,"context_line":"    except exception.HardwareInspectionFailure:"},{"line_number":548,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":549,"context_line":"            _store_logs(plugin_data, task.node)"},{"line_number":550,"context_line":"    except Exception as exc:"},{"line_number":551,"context_line":"        LOG.exception(\u0027Unexpected exception while running inspection hooks for\u0027"},{"line_number":552,"context_line":"                      \u0027 node %(node)s\u0027, {\u0027node\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd4886e0_cddf1160","line":549,"in_reply_to":"74ce5d91_98eda3d3","updated":"2025-02-14 22:11:37.000000000","message":"Done","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"}],"ironic/tests/unit/drivers/modules/inspector/test_agent.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9619f3963fabffe816c1a18071ce6a21f0905036","unresolved":true,"context_lines":[{"line_number":199,"context_line":"        self.plugin_data \u003d {\"logs\": \"abcd\"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test(self, mock_ramdisk_logs):"},{"line_number":202,"context_line":"        inspect_utils.run_inspection_hooks(self.task, self.inventory,"},{"line_number":203,"context_line":"                                           self.plugin_data, self.hooks)"},{"line_number":204,"context_line":"        for hook in self.hooks:"},{"line_number":205,"context_line":"            hook.obj.preprocess.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"a6bddcdc_0671348c","line":202,"updated":"2025-02-03 14:37:31.000000000","message":"Ugh, feels like this test should be moved.","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"10a4a049a5c5eca772176f9b1956c0eecdcebf2e","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.plugin_data \u003d {\"logs\": \"abcd\"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test(self, mock_ramdisk_logs):"},{"line_number":202,"context_line":"        inspect_utils.run_inspection_hooks(self.task, self.inventory,"},{"line_number":203,"context_line":"                                           self.plugin_data, self.hooks)"},{"line_number":204,"context_line":"        for hook in self.hooks:"},{"line_number":205,"context_line":"            hook.obj.preprocess.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"0f30e612_07e978ad","line":202,"in_reply_to":"a6bddcdc_0671348c","updated":"2025-02-14 22:11:37.000000000","message":"Done","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9619f3963fabffe816c1a18071ce6a21f0905036","unresolved":true,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def test_always_collect_logs(self, mock_ramdisk_logs):"},{"line_number":213,"context_line":"        CONF.set_override(\u0027deploy_logs_collect\u0027, \u0027always\u0027, group\u003d\u0027agent\u0027)"},{"line_number":214,"context_line":"        inspect_utils.run_inspection_hooks(self.task, self.inventory,"},{"line_number":215,"context_line":"                                           self.plugin_data, self.hooks)"},{"line_number":216,"context_line":"        for hook in self.hooks:"},{"line_number":217,"context_line":"            hook.obj.preprocess.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"952af5cd_a6b14d89","line":214,"updated":"2025-02-03 14:37:31.000000000","message":"ditto.","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"10a4a049a5c5eca772176f9b1956c0eecdcebf2e","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def test_always_collect_logs(self, mock_ramdisk_logs):"},{"line_number":213,"context_line":"        CONF.set_override(\u0027deploy_logs_collect\u0027, \u0027always\u0027, group\u003d\u0027agent\u0027)"},{"line_number":214,"context_line":"        inspect_utils.run_inspection_hooks(self.task, self.inventory,"},{"line_number":215,"context_line":"                                           self.plugin_data, self.hooks)"},{"line_number":216,"context_line":"        for hook in self.hooks:"},{"line_number":217,"context_line":"            hook.obj.preprocess.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"1d68d7bb_16a62743","line":214,"in_reply_to":"952af5cd_a6b14d89","updated":"2025-02-14 22:11:37.000000000","message":"Done","commit_id":"ca31d58d534b52f6f63bbbbe4b6ec053273fdb69"}]}
