)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"1486654e81b1ee2036d5a7799a357695c4ef84ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9f7f176b_c2990b3c","updated":"2026-02-23 21:36:30.000000000","message":"fix is confirmed effective, however an additional one is needed in sushy","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"36cf3178049211df44c1d5dd3d07cf2da629042c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a71880ef_08fb9428","updated":"2026-02-23 12:14:07.000000000","message":"waiting for reporter to validate if the fix is effective","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"16d64a9b41971aff2f65d360b9731641ea41e3ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"96006c51_40af8402","updated":"2026-02-25 10:19:44.000000000","message":"Thank you for your review Dmitry. Pushing revised patch, responses inline.","commit_id":"8c95a7b50771024f7dca05c4e473a265b9b1ecf3"}],"ironic/drivers/modules/redfish/boot.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"747290a21d645736469d260f1b52de4847e0baa6","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        # via WebSocket/NBD and do not have the InsertMedia action."},{"line_number":369,"context_line":"        # Skip these slots to avoid HTTP 405 errors."},{"line_number":370,"context_line":"        insert_action \u003d getattr("},{"line_number":371,"context_line":"            getattr(v_media, \u0027_actions\u0027, None), \u0027insert_media\u0027, None)"},{"line_number":372,"context_line":"        if not insert_action:"},{"line_number":373,"context_line":"            LOG.info(\"Virtual media device %(slot)s on node %(node)s does \""},{"line_number":374,"context_line":"                     \"not support InsertMedia action, skipping.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"43a8bfd7_545f92a9","line":371,"updated":"2026-02-24 12:08:22.000000000","message":"You can use v_media._actions directly, it can be None but cannot be absent.\n\nMore importantly, cannot you catch MissingActionError from insert_media below instead of accessing a private attribute?","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"16d64a9b41971aff2f65d360b9731641ea41e3ae","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        # via WebSocket/NBD and do not have the InsertMedia action."},{"line_number":369,"context_line":"        # Skip these slots to avoid HTTP 405 errors."},{"line_number":370,"context_line":"        insert_action \u003d getattr("},{"line_number":371,"context_line":"            getattr(v_media, \u0027_actions\u0027, None), \u0027insert_media\u0027, None)"},{"line_number":372,"context_line":"        if not insert_action:"},{"line_number":373,"context_line":"            LOG.info(\"Virtual media device %(slot)s on node %(node)s does \""},{"line_number":374,"context_line":"                     \"not support InsertMedia action, skipping.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"efbed2ae_82cb0f9c","line":371,"in_reply_to":"43a8bfd7_545f92a9","updated":"2026-02-25 10:19:44.000000000","message":"Good point. Claude got a bit carried away trying to double-tap the problem and I didn\u0027t stop him while I should have looked closer. Your suggestion is much cleaner.","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"747290a21d645736469d260f1b52de4847e0baa6","unresolved":true,"context_lines":[{"line_number":410,"context_line":"                err_msg \u003d (\"Inserting virtual media into %(boot_device)s \""},{"line_number":411,"context_line":"                           \"failed for node %(node)s with HTTP 405 (Method \""},{"line_number":412,"context_line":"                           \"Not Allowed), moving to next virtual media \""},{"line_number":413,"context_line":"                           \"device, if available. %(exc)s\" %"},{"line_number":414,"context_line":"                           {\u0027node\u0027: task.node.uuid, \u0027exc\u0027: exc,"},{"line_number":415,"context_line":"                            \u0027boot_device\u0027: boot_device})"},{"line_number":416,"context_line":"                err_msgs.append(err_msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b1c54bdb_aadac7ff","line":413,"updated":"2026-02-24 12:08:22.000000000","message":"nit: since you add exc to the message, you don\u0027t need to elaborate on the error yourself (\"HTTP 405 (Method Not Allowed)\" - this part).","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"03027713055b8d2790bf8b15099fb1112e3c783d","unresolved":false,"context_lines":[{"line_number":410,"context_line":"                err_msg \u003d (\"Inserting virtual media into %(boot_device)s \""},{"line_number":411,"context_line":"                           \"failed for node %(node)s with HTTP 405 (Method \""},{"line_number":412,"context_line":"                           \"Not Allowed), moving to next virtual media \""},{"line_number":413,"context_line":"                           \"device, if available. %(exc)s\" %"},{"line_number":414,"context_line":"                           {\u0027node\u0027: task.node.uuid, \u0027exc\u0027: exc,"},{"line_number":415,"context_line":"                            \u0027boot_device\u0027: boot_device})"},{"line_number":416,"context_line":"                err_msgs.append(err_msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ad98b315_7cfcf663","line":413,"in_reply_to":"7072076c_49bb5bca","updated":"2026-03-02 11:23:05.000000000","message":"Done","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"16d64a9b41971aff2f65d360b9731641ea41e3ae","unresolved":true,"context_lines":[{"line_number":410,"context_line":"                err_msg \u003d (\"Inserting virtual media into %(boot_device)s \""},{"line_number":411,"context_line":"                           \"failed for node %(node)s with HTTP 405 (Method \""},{"line_number":412,"context_line":"                           \"Not Allowed), moving to next virtual media \""},{"line_number":413,"context_line":"                           \"device, if available. %(exc)s\" %"},{"line_number":414,"context_line":"                           {\u0027node\u0027: task.node.uuid, \u0027exc\u0027: exc,"},{"line_number":415,"context_line":"                            \u0027boot_device\u0027: boot_device})"},{"line_number":416,"context_line":"                err_msgs.append(err_msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7072076c_49bb5bca","line":413,"in_reply_to":"b1c54bdb_aadac7ff","updated":"2026-02-25 10:19:44.000000000","message":"Good pickup. I solved this but I wonder if it makes sense to keep double-tap with catching both MissingActionError and HTTPError with 405. I am leaning towards a \"yes\" - WDYT?","commit_id":"aa8809aa4a1701f34a1606931c4e0ee001b3448f"}]}
