)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"cdb8bc0971b24e5658360b780dec0e2f8f5694df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fec62ff8_1def81b1","updated":"2026-02-03 15:47:15.000000000","message":"this is more of a workaround, the original issue remains\nalso we don\u0027t deal with the error 400 raised by the read-only property","commit_id":"2deaa9ce214b3acd5f488ef255fd52f106a3c420"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4e2bc30a853e34a7af59cfdac4902a437dbb5a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"366c75fd_74464ad7","updated":"2026-02-09 06:46:02.000000000","message":"Overall, looks good, but please add a release note linking to the bug for this issue. Thanks!","commit_id":"3c9856c3e8918d1bbd27c3b7de4f4c3a3413fdea"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"8d49f848bc4bd242dcd59bdf321afd3332bf68fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"79165112_1a6170cd","in_reply_to":"223009ff_bdd8954c","updated":"2026-02-09 10:29:29.000000000","message":"i think i figured it out","commit_id":"3c9856c3e8918d1bbd27c3b7de4f4c3a3413fdea"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"0999e0e14bad6e10d104c23d026210de6f66eb26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"223009ff_bdd8954c","in_reply_to":"366c75fd_74464ad7","updated":"2026-02-09 08:13:47.000000000","message":"i am new to this. Should i:\nOpen a bug for this issue\nopen release note bug\nlinke RN to bug","commit_id":"3c9856c3e8918d1bbd27c3b7de4f4c3a3413fdea"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"e57f905e7881a4ba1783662fac19f5e0809f4467","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ad6095bc_1b1c6c94","updated":"2026-02-09 18:52:55.000000000","message":"recheck\n\nError response from daemon: unknown: failed to resolve reference \"quay.io/metal3-io/metal3-fkas:latest\": unexpected status from HEAD request to https://quay.io/v2/metal3-io/metal3-fkas/manifests/latest: 502 Bad Gateway","commit_id":"b5987303b5af0a6179d8524b9532736b0393a099"},{"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":"a10e56f54dfb72a6aacca1af4ceac5e06c2f820b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9b79f979_26344273","updated":"2026-02-09 16:32:53.000000000","message":"recheck Error response from daemon: unknown: failed to resolve reference \"quay.io/metal3-io/metal3-fkas:latest\": unexpected status from HEAD request to https://quay.io/v2/metal3-io/metal3-fkas/manifests/latest: 502 Bad Gateway\n\nThis update is exactly what I was looking for; thanks!","commit_id":"b5987303b5af0a6179d8524b9532736b0393a099"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"cf2a89f1eb7551741796f37b6cde91084602e6b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f3caf27c_28b2bfc5","in_reply_to":"5a3ec9df_7e26a26c","updated":"2026-02-09 18:56:14.000000000","message":"oh missed it. i see you already did a recheck","commit_id":"b5987303b5af0a6179d8524b9532736b0393a099"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"9922c49df557275e77f1f60fd6b9c65ba4f7fc47","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5a3ec9df_7e26a26c","in_reply_to":"9b79f979_26344273","updated":"2026-02-09 18:44:18.000000000","message":"should i do something about this error or just recheck","commit_id":"b5987303b5af0a6179d8524b9532736b0393a099"}],"ironic/drivers/modules/redfish/management.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71020c3fa25c41a000c830b50b59b0c7f578006f","unresolved":true,"context_lines":[{"line_number":455,"context_line":"        # as read-only. To avoid unnecessary PATCH requests that will fail,"},{"line_number":456,"context_line":"        # check if the current mode already matches the desired mode."},{"line_number":457,"context_line":"        # This is similar to how we handle the \u0027enabled\u0027 field for boot device."},{"line_number":458,"context_line":"        if current_mode \u003d\u003d desired_mode:"},{"line_number":459,"context_line":"            LOG.debug(\u0027Boot mode for node %(node)s is already set to \u0027"},{"line_number":460,"context_line":"                      \u0027%(mode)s, skipping mode change\u0027,"},{"line_number":461,"context_line":"                      {\u0027node\u0027: task.node.uuid, \u0027mode\u0027: mode})"}],"source_content_type":"text/x-python","patch_set":3,"id":"589d145f_0bee6501","line":458,"updated":"2026-02-04 11:08:58.000000000","message":"We already have this logic on the higher level: https://opendev.org/openstack/ironic/src/branch/master/ironic/drivers/modules/boot_mode_utils.py#L137, do you know why it does not apply? Are there any logs from boot_mode_utils?","commit_id":"82427f41af93721b001e5ff7b3d25c2675e6de94"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"2e12aef447080ea5a1d5e421879a15029529ed6e","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        # as read-only. To avoid unnecessary PATCH requests that will fail,"},{"line_number":456,"context_line":"        # check if the current mode already matches the desired mode."},{"line_number":457,"context_line":"        # This is similar to how we handle the \u0027enabled\u0027 field for boot device."},{"line_number":458,"context_line":"        if current_mode \u003d\u003d desired_mode:"},{"line_number":459,"context_line":"            LOG.debug(\u0027Boot mode for node %(node)s is already set to \u0027"},{"line_number":460,"context_line":"                      \u0027%(mode)s, skipping mode change\u0027,"},{"line_number":461,"context_line":"                      {\u0027node\u0027: task.node.uuid, \u0027mode\u0027: mode})"}],"source_content_type":"text/x-python","patch_set":3,"id":"c2504ffc_fc715b60","line":458,"in_reply_to":"589d145f_0bee6501","updated":"2026-02-06 05:53:45.000000000","message":"No, i just missed it is implemented on higher level.\nRemoved","commit_id":"82427f41af93721b001e5ff7b3d25c2675e6de94"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71020c3fa25c41a000c830b50b59b0c7f578006f","unresolved":true,"context_lines":[{"line_number":528,"context_line":"                # This BMC has a read-only boot mode field."},{"line_number":529,"context_line":"                # Re-read current mode to handle potential race conditions."},{"line_number":530,"context_line":"                actual_mode \u003d system.boot.get(\u0027mode\u0027)"},{"line_number":531,"context_line":"                if actual_mode \u003d\u003d desired_mode:"},{"line_number":532,"context_line":"                    # The mode is already what we want, so we can continue"},{"line_number":533,"context_line":"                    LOG.warning("},{"line_number":534,"context_line":"                        \u0027Boot mode for node %(node)s is read-only on this \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"a8571559_303aa15f","line":531,"updated":"2026-02-04 11:08:58.000000000","message":"You\u0027ve already done the same check on line 458, here we can only fail","commit_id":"82427f41af93721b001e5ff7b3d25c2675e6de94"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"2e12aef447080ea5a1d5e421879a15029529ed6e","unresolved":false,"context_lines":[{"line_number":528,"context_line":"                # This BMC has a read-only boot mode field."},{"line_number":529,"context_line":"                # Re-read current mode to handle potential race conditions."},{"line_number":530,"context_line":"                actual_mode \u003d system.boot.get(\u0027mode\u0027)"},{"line_number":531,"context_line":"                if actual_mode \u003d\u003d desired_mode:"},{"line_number":532,"context_line":"                    # The mode is already what we want, so we can continue"},{"line_number":533,"context_line":"                    LOG.warning("},{"line_number":534,"context_line":"                        \u0027Boot mode for node %(node)s is read-only on this \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"82773be8_f62c3c10","line":531,"in_reply_to":"a8571559_303aa15f","updated":"2026-02-06 05:53:45.000000000","message":"Acknowledged","commit_id":"82427f41af93721b001e5ff7b3d25c2675e6de94"},{"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":"874be1250ffc3e91bf846fc42c9dbf0f3df69b5b","unresolved":true,"context_lines":[{"line_number":523,"context_line":"                        \u0027desired\u0027: mode,"},{"line_number":524,"context_line":"                        \u0027error\u0027: e}"},{"line_number":525,"context_line":"                LOG.error(detailed_error)"},{"line_number":526,"context_line":"                raise exception.RedfishError(error\u003ddetailed_error)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"768f212e_046b4644","line":526,"updated":"2026-02-08 21:22:38.000000000","message":"This is general FUD on my part -- I don\u0027t know specific hardware that works this way -- but I\u0027m a little nervous this could be a sneaky behavior change -- e.g. if a BMC updates the \"read\" side of the value lazily, we could be introducing a race that didn\u0027t exist anymore. I have run into redfish BMCs that behave this way (we can update X, but the read call for X won\u0027t update for 30 or 60 seconds), but I don\u0027t think that was specifically with boot source.\n\nWe could avoid this by instead, just determining if calling the PATCH should be fatal if failed, attempting it anyway, and swallowing the exception (with a debug log) about the PATCH failing if the value we read beforehand matches.","commit_id":"8925d4dd0e5cd9e0804fc814cb5ec1b1b8c88012"},{"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":"0e72f5e1a4bdacffbcc7ff142ae64f7cb3e8785e","unresolved":true,"context_lines":[{"line_number":523,"context_line":"                        \u0027desired\u0027: mode,"},{"line_number":524,"context_line":"                        \u0027error\u0027: e}"},{"line_number":525,"context_line":"                LOG.error(detailed_error)"},{"line_number":526,"context_line":"                raise exception.RedfishError(error\u003ddetailed_error)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"8ff9f680_128daeff","line":526,"in_reply_to":"3297a808_f184c1cb","updated":"2026-02-09 16:34:28.000000000","message":"There\u0027s no other way we can deal with it in code I suspect -- we just try to avoid constructs that are essentially: \"if vendor: change behavior\" -- but sometimes (like now) that\u0027s all that makes sense.","commit_id":"8925d4dd0e5cd9e0804fc814cb5ec1b1b8c88012"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"0999e0e14bad6e10d104c23d026210de6f66eb26","unresolved":true,"context_lines":[{"line_number":523,"context_line":"                        \u0027desired\u0027: mode,"},{"line_number":524,"context_line":"                        \u0027error\u0027: e}"},{"line_number":525,"context_line":"                LOG.error(detailed_error)"},{"line_number":526,"context_line":"                raise exception.RedfishError(error\u003ddetailed_error)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3297a808_f184c1cb","line":526,"in_reply_to":"695bbfda_f4ac6d24","updated":"2026-02-09 08:13:47.000000000","message":"what would you suggest instead ?","commit_id":"8925d4dd0e5cd9e0804fc814cb5ec1b1b8c88012"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4e2bc30a853e34a7af59cfdac4902a437dbb5a3","unresolved":true,"context_lines":[{"line_number":523,"context_line":"                        \u0027desired\u0027: mode,"},{"line_number":524,"context_line":"                        \u0027error\u0027: e}"},{"line_number":525,"context_line":"                LOG.error(detailed_error)"},{"line_number":526,"context_line":"                raise exception.RedfishError(error\u003ddetailed_error)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"695bbfda_f4ac6d24","line":526,"in_reply_to":"768f212e_046b4644","updated":"2026-02-09 06:46:02.000000000","message":"I’m personally, not really a fan of explicitly calling out the vendor, but this is known deficiency in their BMC design so.. *shrug*.","commit_id":"8925d4dd0e5cd9e0804fc814cb5ec1b1b8c88012"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"af1098ba6fe719a43439aa5dd8801299e06a4a92","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                        \u0027desired\u0027: mode,"},{"line_number":524,"context_line":"                        \u0027error\u0027: e}"},{"line_number":525,"context_line":"                LOG.error(detailed_error)"},{"line_number":526,"context_line":"                raise exception.RedfishError(error\u003ddetailed_error)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2fe62f24_af176bb5","line":526,"in_reply_to":"768f212e_046b4644","updated":"2026-02-09 06:39:52.000000000","message":"Thanks Jay for your comment. I\u0027ve added a check to treat PATCH failures as non-fatal when the mode is already correct. This handles the race condition you described while still providing the detailed error message for Cisco CIMC when the mode is actually wrong and can\u0027t be changed.\"","commit_id":"8925d4dd0e5cd9e0804fc814cb5ec1b1b8c88012"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"9bb64827fda0409e5dd05ad87a4d40adaefaf8bc","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                        \u0027desired\u0027: mode,"},{"line_number":524,"context_line":"                        \u0027error\u0027: e}"},{"line_number":525,"context_line":"                LOG.error(detailed_error)"},{"line_number":526,"context_line":"                raise exception.RedfishError(error\u003ddetailed_error)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7da75525_c8e5c6c2","line":526,"in_reply_to":"8ff9f680_128daeff","updated":"2026-02-09 18:41:49.000000000","message":"Acknowledged","commit_id":"8925d4dd0e5cd9e0804fc814cb5ec1b1b8c88012"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4e2bc30a853e34a7af59cfdac4902a437dbb5a3","unresolved":true,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"            # NOTE(jhajyahy): Some BMCs like Cisco CIMC have"},{"line_number":511,"context_line":"            # BootSourceOverrideMode as read-only. Detect this specific"},{"line_number":512,"context_line":"            # error and provide clear guidance."},{"line_number":513,"context_line":"            error_str \u003d str(e).lower()"},{"line_number":514,"context_line":"            if (isinstance(e, sushy.exceptions.BadRequestError)"},{"line_number":515,"context_line":"                and (\u0027bootsourceoverridemode\u0027 in error_str"}],"source_content_type":"text/x-python","patch_set":5,"id":"4aa44114_e102d3a0","line":512,"updated":"2026-02-09 06:46:02.000000000","message":"Out of curiosity, and I regret not asking Iury when he was looking at this a few months back, but is there a future state field value which can be toggled instead?\n\nSpecifically there is a special field value for “future state”, I can’t remember the name off the top of my head while it is 6:45 AM in my hotel room, but we had to check or it and draw from it in slushy for Idrac10 compatibility. It could be they might have done something similar? I mean, aside from all the other redfish issues with CIMCs.","commit_id":"3c9856c3e8918d1bbd27c3b7de4f4c3a3413fdea"},{"author":{"_account_id":33663,"name":"Jad Haj Yahya","email":"jhajyahy@redhat.com","username":"jadh"},"change_message_id":"259ab081edb70bbbfbea93aaa39022a494285f4e","unresolved":true,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"            # NOTE(jhajyahy): Some BMCs like Cisco CIMC have"},{"line_number":511,"context_line":"            # BootSourceOverrideMode as read-only. Detect this specific"},{"line_number":512,"context_line":"            # error and provide clear guidance."},{"line_number":513,"context_line":"            error_str \u003d str(e).lower()"},{"line_number":514,"context_line":"            if (isinstance(e, sushy.exceptions.BadRequestError)"},{"line_number":515,"context_line":"                and (\u0027bootsourceoverridemode\u0027 in error_str"}],"source_content_type":"text/x-python","patch_set":5,"id":"91137554_362ce0df","line":512,"in_reply_to":"4aa44114_e102d3a0","updated":"2026-02-10 14:20:44.000000000","message":"Not sure about this, maybe @iurygregory@gmail.com can help us with it","commit_id":"3c9856c3e8918d1bbd27c3b7de4f4c3a3413fdea"}]}
