)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e9205ac7c880342d29495b9d764ddaf63aee3eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3bdbcf6b_ac980f27","updated":"2026-01-14 10:48:21.000000000","message":"I got my answers","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"},{"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":"2a39284810b8b9b0278b02c0359e7aa5c95304b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"148576b6_5679a99c","updated":"2025-12-11 20:28:51.000000000","message":"recheck POST_FAILURE in one job, all others passed","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e83fc22e79fd25b8d4cae4480021363d8b89dd3","unresolved":true,"context_lines":[{"line_number":1373,"context_line":"            return"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        if (node.provision_state in _UNPROVISION_STATES or"},{"line_number":1376,"context_line":"            node.provision_state not in ironic_states.ALL_STATES):"},{"line_number":1377,"context_line":"            # NOTE(mgoddard): Ironic\u0027s node tear-down procedure includes all of"},{"line_number":1378,"context_line":"            # the things we do in _cleanup_deploy, so let\u0027s not repeat them"},{"line_number":1379,"context_line":"            # here. Doing so would also race with the node cleaning process,"}],"source_content_type":"text/x-python","patch_set":2,"id":"18aa0ffc_05d5ab72","line":1376,"updated":"2025-12-19 08:48:09.000000000","message":"hm, PROVISION_STATE_LIST and ALL_STATES differs by content. Is this an intentional change of this condition?\n\n```\n\u003e\u003e\u003e set(ironic_states.PROVISION_STATE_LIST).symmetric_difference(ironic_states.ALL_STATES)\n{None, \u0027rebuild\u0027, \u0027adopt failed\u0027, \u0027adopting\u0027}\n```","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"},{"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":"c1cf8439d7ddf55f1e847ae0672faff28ee1da9d","unresolved":true,"context_lines":[{"line_number":1373,"context_line":"            return"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        if (node.provision_state in _UNPROVISION_STATES or"},{"line_number":1376,"context_line":"            node.provision_state not in ironic_states.ALL_STATES):"},{"line_number":1377,"context_line":"            # NOTE(mgoddard): Ironic\u0027s node tear-down procedure includes all of"},{"line_number":1378,"context_line":"            # the things we do in _cleanup_deploy, so let\u0027s not repeat them"},{"line_number":1379,"context_line":"            # here. Doing so would also race with the node cleaning process,"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf2beb3a_86604253","line":1376,"in_reply_to":"18aa0ffc_05d5ab72","updated":"2026-01-05 21:41:53.000000000","message":"None should remain out (it\u0027s not been a valid Ironic state for ~10 years), the others are not states nova should see either, but should be reflected in ALL_STATES. I\u0027ll push a revision.","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e9205ac7c880342d29495b9d764ddaf63aee3eb","unresolved":false,"context_lines":[{"line_number":1373,"context_line":"            return"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        if (node.provision_state in _UNPROVISION_STATES or"},{"line_number":1376,"context_line":"            node.provision_state not in ironic_states.ALL_STATES):"},{"line_number":1377,"context_line":"            # NOTE(mgoddard): Ironic\u0027s node tear-down procedure includes all of"},{"line_number":1378,"context_line":"            # the things we do in _cleanup_deploy, so let\u0027s not repeat them"},{"line_number":1379,"context_line":"            # here. Doing so would also race with the node cleaning process,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3e79731b_4a8cd772","line":1376,"in_reply_to":"289dcfa2_cc7ace72","updated":"2026-01-14 10:48:21.000000000","message":"Thanks for the explanation.","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"},{"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":"c2eadd55b3817693978bc73f8cfa75f261c0ae09","unresolved":true,"context_lines":[{"line_number":1373,"context_line":"            return"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        if (node.provision_state in _UNPROVISION_STATES or"},{"line_number":1376,"context_line":"            node.provision_state not in ironic_states.ALL_STATES):"},{"line_number":1377,"context_line":"            # NOTE(mgoddard): Ironic\u0027s node tear-down procedure includes all of"},{"line_number":1378,"context_line":"            # the things we do in _cleanup_deploy, so let\u0027s not repeat them"},{"line_number":1379,"context_line":"            # here. Doing so would also race with the node cleaning process,"}],"source_content_type":"text/x-python","patch_set":2,"id":"289dcfa2_cc7ace72","line":1376,"in_reply_to":"c5c3c652_615f634b","updated":"2026-01-13 23:01:29.000000000","message":"I misspoke: REBUILD is in the ALL_STATES list now when it wasn\u0027t before; this is fine and expected.","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"},{"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":"92d9676a5b73460424ee77d25dc6ae7e7f8110df","unresolved":true,"context_lines":[{"line_number":1373,"context_line":"            return"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        if (node.provision_state in _UNPROVISION_STATES or"},{"line_number":1376,"context_line":"            node.provision_state not in ironic_states.ALL_STATES):"},{"line_number":1377,"context_line":"            # NOTE(mgoddard): Ironic\u0027s node tear-down procedure includes all of"},{"line_number":1378,"context_line":"            # the things we do in _cleanup_deploy, so let\u0027s not repeat them"},{"line_number":1379,"context_line":"            # here. Doing so would also race with the node cleaning process,"}],"source_content_type":"text/x-python","patch_set":2,"id":"c5c3c652_615f634b","line":1376,"in_reply_to":"cf2beb3a_86604253","updated":"2026-01-13 22:59:08.000000000","message":"OK, I looked into this, no change is needed:\n- Added: ADOPT / ADOPTFAIL are valid Ironic states. I never expect nova to see them, but it\u0027s useful to have them in this list for the purposes of fallback logic.\n- Removed: REBUILD - rebuild is not what Ironic considers a stable state, but instead a state verb. Meaning you can call our API and say \"rebuild\", but a Node will never reach this state and it will never be returned from the Ironic API.\n- Removed: None - None, aka NOSTATE, was removed from Ironic a decade ago and will never be emitted by Ironic API 1.46 (the minimum required for this driver).","commit_id":"21cebb77258dc2667e95fc019b11939ae54e33e8"}]}
