)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"1c3386e1d931b364bffa2729aa78ab705eae1aa8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"14b9e30c_97d5dd85","updated":"2025-10-01 13:33:36.000000000","message":"Thank you for your review Dmitry, uploaded revised version.","commit_id":"b6c475f0dea617b06f579bd395d7d1b7b04b9c42"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"008988194884b3eaab305041d4b0f397a8c6d63a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1c0ca499_c205cd28","updated":"2025-10-02 12:59:43.000000000","message":"Thank you for your review Dmitry. Uploading revised patch, stacked on top of validations change since this change is moving firmware caching to an area dependent on it.","commit_id":"f57861023fdd6eb41379ce62e43043df3637e2f6"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"9e9002afee380d57821f7315aceee384993e78bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"95655fa6_dccfaa56","updated":"2025-10-17 01:48:57.000000000","message":"Removing workflow, since the first patch in chain is without reviews","commit_id":"bba3041ccf6397587e51c676781f6a204396bdc5"}],"ironic/drivers/modules/redfish/firmware.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"04a5a32ebfc7cb26d2a8d5f043673324be30de38","unresolved":true,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        if len(settings) \u003d\u003d 1:"},{"line_number":333,"context_line":"            self._clear_updates(node)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"            LOG.info(\u0027Firmware updates completed for node %(node)s\u0027,"},{"line_number":336,"context_line":"                     {\u0027node\u0027: node.uuid})"},{"line_number":337,"context_line":"            if task.node.clean_step:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fe46094_5180ee89","line":334,"updated":"2025-09-15 11:08:34.000000000","message":"Maybe cache the settings here instead?","commit_id":"d2c8f062b55b11d98fa4810c03ecf94764400200"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"221cfca88d42040db005cec3ab8234985ad7273f","unresolved":true,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        if len(settings) \u003d\u003d 1:"},{"line_number":333,"context_line":"            self._clear_updates(node)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"            LOG.info(\u0027Firmware updates completed for node %(node)s\u0027,"},{"line_number":336,"context_line":"                     {\u0027node\u0027: node.uuid})"},{"line_number":337,"context_line":"            if task.node.clean_step:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9e6a7b31_5e198365","line":334,"in_reply_to":"1fe46094_5180ee89","updated":"2025-09-16 06:34:30.000000000","message":"Thank you for the suggestion Dmitry. I have done something similar after discussion with Iury:\n\nhttps://review.opendev.org/c/openstack/ironic/+/960230/13/ironic/drivers/modules/redfish/firmware.py#580\n\nI opted for _check_node_redfish_firmware_update() because there I can do this immediately after required checks (including against NetworkAdapters) have just passed so there shouldn\u0027t be any issue. Happy to consider other options though.","commit_id":"d2c8f062b55b11d98fa4810c03ecf94764400200"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d6562b921fdb183c80625ff198b1a51fb1921361","unresolved":true,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        nic_components \u003d self.retrieve_nic_components(task, system)"},{"line_number":114,"context_line":"        if nic_components \u003d\u003d []:"},{"line_number":115,"context_line":"            LOG.debug(\u0027Could not retrieve Firmware Package Version from \u0027"},{"line_number":116,"context_line":"                      \u0027NetworkAdapters on node %(node_uuid)s\u0027,"},{"line_number":117,"context_line":"                      {\u0027node_uuid\u0027: task.node.uuid})"},{"line_number":118,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"0cdaa247_278165a5","line":115,"updated":"2025-09-30 12:56:39.000000000","message":"This is going to duplicate the warning you\u0027re adding. Maybe catch the exceptions here and distinguish (when logging) between a failure and missing network adapters?","commit_id":"33596fed123490fdbece8651ae202aca667d7351"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"008988194884b3eaab305041d4b0f397a8c6d63a","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        nic_components \u003d self.retrieve_nic_components(task, system)"},{"line_number":114,"context_line":"        if nic_components \u003d\u003d []:"},{"line_number":115,"context_line":"            LOG.debug(\u0027Could not retrieve Firmware Package Version from \u0027"},{"line_number":116,"context_line":"                      \u0027NetworkAdapters on node %(node_uuid)s\u0027,"},{"line_number":117,"context_line":"                      {\u0027node_uuid\u0027: task.node.uuid})"},{"line_number":118,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"0fcb1102_78734077","line":115,"in_reply_to":"0cdaa247_278165a5","updated":"2025-10-02 12:59:43.000000000","message":"Done","commit_id":"33596fed123490fdbece8651ae202aca667d7351"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d6562b921fdb183c80625ff198b1a51fb1921361","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        try:"},{"line_number":168,"context_line":"            network_adapters \u003d chassis.network_adapters.get_members()"},{"line_number":169,"context_line":"        except (exception.RedfishConnectionError,"},{"line_number":170,"context_line":"                sushy.exceptions.BadRequestError) as e:"},{"line_number":171,"context_line":"            LOG.warning(\u0027Unable to access NetworkAdapters on node \u0027"},{"line_number":172,"context_line":"                        \u0027%(node_uuid)s, Error: %(error)s\u0027,"},{"line_number":173,"context_line":"                        {\u0027node_uuid\u0027: task.node.uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":5,"id":"8ea2e23a_cf8bc4a3","line":170,"updated":"2025-09-30 12:56:39.000000000","message":"Let\u0027s generalize it to RedfishError because who knows at this point.","commit_id":"33596fed123490fdbece8651ae202aca667d7351"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"008988194884b3eaab305041d4b0f397a8c6d63a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        try:"},{"line_number":168,"context_line":"            network_adapters \u003d chassis.network_adapters.get_members()"},{"line_number":169,"context_line":"        except (exception.RedfishConnectionError,"},{"line_number":170,"context_line":"                sushy.exceptions.BadRequestError) as e:"},{"line_number":171,"context_line":"            LOG.warning(\u0027Unable to access NetworkAdapters on node \u0027"},{"line_number":172,"context_line":"                        \u0027%(node_uuid)s, Error: %(error)s\u0027,"},{"line_number":173,"context_line":"                        {\u0027node_uuid\u0027: task.node.uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":5,"id":"52eb3e1d_f1a15f57","line":170,"in_reply_to":"8ea2e23a_cf8bc4a3","updated":"2025-10-02 12:59:43.000000000","message":"Done","commit_id":"33596fed123490fdbece8651ae202aca667d7351"}]}
