)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"37b48dc72fd2bea8870c2a5f56a49947158d2e9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5377f379_799d5184","updated":"2026-04-08 16:12:33.000000000","message":"i need to review this deeper but i think i agree with the direction\nim undecided if we shoudl add a fixes release note (just a cople of lines) to call out this behavior change but i agree that there is livel value in retryign withthe same image if ironic is just going to reject it every time","commit_id":"d4d181957c6b6451de91081675441a955a028291"},{"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":"e8c453cc925ae418b4662fb71c9bbcfbe1e38d11","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1cd4629b_c5ebe996","updated":"2026-04-09 16:46:06.000000000","message":"This still needs a release note","commit_id":"90c489749cab282368d3494520566974807329d7"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"86403ae02ede2c539bc1f53be251eedc07f58309","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"efb42f46_7f961165","updated":"2026-04-09 15:17:24.000000000","message":"While I dislike the str check, I understand its necessary cause its just a requests exception for the 4xx error and you\u0027re checking that specific error.","commit_id":"90c489749cab282368d3494520566974807329d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"973b897c490ae21e8cb2a8b57a7dc91f618915ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"739fc499_bee6fcc6","updated":"2026-04-08 17:54:37.000000000","message":"i wont have time to review this properly today but i think it looks good over all so +1 for now","commit_id":"90c489749cab282368d3494520566974807329d7"},{"author":{"_account_id":38704,"name":"Victor","display_name":"victor_obi","email":"obiezuevictor@gmail.com","username":"victor_obi"},"change_message_id":"2d4ca2f3db7f12810daf51c97aa2cc128e586fed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f35ea475_4a0faed3","updated":"2026-04-09 15:40:18.000000000","message":"recheck","commit_id":"90c489749cab282368d3494520566974807329d7"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"6ee3b6afe9e1312b7f38ae349914e50e057303d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cc6407d5_0d1ae11c","updated":"2026-04-09 15:15:40.000000000","message":"recheck unrelated test to ironic timed out","commit_id":"90c489749cab282368d3494520566974807329d7"},{"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":"c8b8051ec6d38e0fe20520cae6cf81dd173a3c98","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a431c54d_5f0188da","updated":"2026-04-28 17:44:00.000000000","message":"Honestly, this seems like a change that can and should be backported.","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0a62eeb7901a54b32f65fab91a87176ce2af1bdd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d175190f_7210a6d6","updated":"2026-04-28 22:48:44.000000000","message":"Makes sense, looks OK to me","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"4241303a66ccb1a0f965e427cdb742fd8c0ee199","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c5bd178f_ba55ff03","updated":"2026-04-14 14:01:12.000000000","message":"recheck","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"a617bf60194c93316e7680f196a1d272dcd24605","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e060c7d0_b2d220e0","updated":"2026-04-14 13:14:50.000000000","message":"recheck","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3a949fe11125a3d3fbdacdf63f0d3c0d511f9aaa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fad221b4_75fcdaf5","updated":"2026-04-28 18:26:10.000000000","message":"upgrading to a +2\n\nThinking about this a littel, we dont have funcitonl test for ironc\nand i think the existin unit test is suffcint to cover the change.\n\nso the only other change i woudl condier is if we are backporting this it might be nice to include a \"fixes\" release note.\n\nbut as it stand i think we can proceed with this as it is.","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"},{"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":"1d88ef73911707a6990d3a18131770a7ff03e769","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"629ec496_5b28e7c5","in_reply_to":"a431c54d_5f0188da","updated":"2026-04-28 17:47:09.000000000","message":"This was reviewed by CID (ironic-approver), Clif (ironic-reviewer) and I as part of a GR-OSS group review.","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"}],"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3a949fe11125a3d3fbdacdf63f0d3c0d511f9aaa","unresolved":false,"context_lines":[{"line_number":1707,"context_line":"        )"},{"line_number":1708,"context_line":""},{"line_number":1709,"context_line":"        self.assertRaises("},{"line_number":1710,"context_line":"            exception.BuildAbortException,"},{"line_number":1711,"context_line":"            self.driver.spawn,"},{"line_number":1712,"context_line":"            self.ctx, instance, image_meta, [], None, {},"},{"line_number":1713,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"a9304c8e_35a10778","line":1710,"updated":"2026-04-28 18:26:10.000000000","message":"this asserts the core fo the change","commit_id":"8ef656e82fd1b5219608fed65495ad8b551a7b75"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"37b48dc72fd2bea8870c2a5f56a49947158d2e9b","unresolved":true,"context_lines":[{"line_number":1259,"context_line":"                config_drive\u003dconfigdrive_value,"},{"line_number":1260,"context_line":"            )"},{"line_number":1261,"context_line":"        except Exception as e:"},{"line_number":1262,"context_line":"            with excutils.save_and_reraise_exception() as ctxt:"},{"line_number":1263,"context_line":"                LOG.error(\"Failed to request Ironic to provision instance \""},{"line_number":1264,"context_line":"                          \"%(inst)s: %(reason)s\","},{"line_number":1265,"context_line":"                          {\u0027inst\u0027: instance.uuid,"},{"line_number":1266,"context_line":"                           \u0027reason\u0027: str(e)})"},{"line_number":1267,"context_line":"                self._cleanup_deploy(node, instance, network_info)"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"                if \u0027InvalidImage\u0027 in str(e):"},{"line_number":1270,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":1271,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1272,"context_line":"                        instance_uuid\u003dinstance.uuid,"},{"line_number":1273,"context_line":"                        reason\u003dstr(e)"},{"line_number":1274,"context_line":"                    )"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(self._wait_for_active,"},{"line_number":1277,"context_line":"                                                     instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e841077c_5dd86833","line":1274,"range":{"start_line":1262,"start_character":10,"end_line":1274,"end_character":21},"updated":"2026-04-08 16:12:33.000000000","message":"it woudl proably be cleaner to stop using \n\n`excutils.save_and_reraise_exception()` entirly \n\nwe used to priamrlly use thsi due to python 2 vs 3 issues realted to tracebacsk\n\n\ncall raise\n\n\n\n```suggestion\n            LOG.error(\"Failed to request Ironic to provision instance \"\n                      \"%(inst)s: %(reason)s\",\n                      {\u0027inst\u0027: instance.uuid,\n                       \u0027reason\u0027: str(e)})\n            self._cleanup_deploy(node, instance, network_info)\n            if \u0027InvalidImage\u0027 in str(e):\n                raise exception.BuildAbortException(\n                    instance_uuid\u003dinstance.uuid,\n                    reason\u003dstr(e)\n                ) from e\n            raise\n```\n\nthat a little cleaner the conditionally messing with the internal of the context manager.","commit_id":"d4d181957c6b6451de91081675441a955a028291"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3a949fe11125a3d3fbdacdf63f0d3c0d511f9aaa","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                config_drive\u003dconfigdrive_value,"},{"line_number":1260,"context_line":"            )"},{"line_number":1261,"context_line":"        except Exception as e:"},{"line_number":1262,"context_line":"            with excutils.save_and_reraise_exception() as ctxt:"},{"line_number":1263,"context_line":"                LOG.error(\"Failed to request Ironic to provision instance \""},{"line_number":1264,"context_line":"                          \"%(inst)s: %(reason)s\","},{"line_number":1265,"context_line":"                          {\u0027inst\u0027: instance.uuid,"},{"line_number":1266,"context_line":"                           \u0027reason\u0027: str(e)})"},{"line_number":1267,"context_line":"                self._cleanup_deploy(node, instance, network_info)"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"                if \u0027InvalidImage\u0027 in str(e):"},{"line_number":1270,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":1271,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1272,"context_line":"                        instance_uuid\u003dinstance.uuid,"},{"line_number":1273,"context_line":"                        reason\u003dstr(e)"},{"line_number":1274,"context_line":"                    )"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(self._wait_for_active,"},{"line_number":1277,"context_line":"                                                     instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7e2d2faa_cd40b58a","line":1274,"range":{"start_line":1262,"start_character":10,"end_line":1274,"end_character":21},"in_reply_to":"be30e051_7955ec10","updated":"2026-04-28 18:26:10.000000000","message":"Done","commit_id":"d4d181957c6b6451de91081675441a955a028291"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"973b897c490ae21e8cb2a8b57a7dc91f618915ef","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                config_drive\u003dconfigdrive_value,"},{"line_number":1260,"context_line":"            )"},{"line_number":1261,"context_line":"        except Exception as e:"},{"line_number":1262,"context_line":"            with excutils.save_and_reraise_exception() as ctxt:"},{"line_number":1263,"context_line":"                LOG.error(\"Failed to request Ironic to provision instance \""},{"line_number":1264,"context_line":"                          \"%(inst)s: %(reason)s\","},{"line_number":1265,"context_line":"                          {\u0027inst\u0027: instance.uuid,"},{"line_number":1266,"context_line":"                           \u0027reason\u0027: str(e)})"},{"line_number":1267,"context_line":"                self._cleanup_deploy(node, instance, network_info)"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"                if \u0027InvalidImage\u0027 in str(e):"},{"line_number":1270,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":1271,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1272,"context_line":"                        instance_uuid\u003dinstance.uuid,"},{"line_number":1273,"context_line":"                        reason\u003dstr(e)"},{"line_number":1274,"context_line":"                    )"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(self._wait_for_active,"},{"line_number":1277,"context_line":"                                                     instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"478c347b_133dfdfa","line":1274,"range":{"start_line":1262,"start_character":10,"end_line":1274,"end_character":21},"in_reply_to":"e841077c_5dd86833","updated":"2026-04-08 17:54:37.000000000","message":"Done","commit_id":"d4d181957c6b6451de91081675441a955a028291"},{"author":{"_account_id":38704,"name":"Victor","display_name":"victor_obi","email":"obiezuevictor@gmail.com","username":"victor_obi"},"change_message_id":"2d4ca2f3db7f12810daf51c97aa2cc128e586fed","unresolved":true,"context_lines":[{"line_number":1259,"context_line":"                config_drive\u003dconfigdrive_value,"},{"line_number":1260,"context_line":"            )"},{"line_number":1261,"context_line":"        except Exception as e:"},{"line_number":1262,"context_line":"            with excutils.save_and_reraise_exception() as ctxt:"},{"line_number":1263,"context_line":"                LOG.error(\"Failed to request Ironic to provision instance \""},{"line_number":1264,"context_line":"                          \"%(inst)s: %(reason)s\","},{"line_number":1265,"context_line":"                          {\u0027inst\u0027: instance.uuid,"},{"line_number":1266,"context_line":"                           \u0027reason\u0027: str(e)})"},{"line_number":1267,"context_line":"                self._cleanup_deploy(node, instance, network_info)"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"                if \u0027InvalidImage\u0027 in str(e):"},{"line_number":1270,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":1271,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1272,"context_line":"                        instance_uuid\u003dinstance.uuid,"},{"line_number":1273,"context_line":"                        reason\u003dstr(e)"},{"line_number":1274,"context_line":"                    )"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(self._wait_for_active,"},{"line_number":1277,"context_line":"                                                     instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"be30e051_7955ec10","line":1274,"range":{"start_line":1262,"start_character":10,"end_line":1274,"end_character":21},"in_reply_to":"e841077c_5dd86833","updated":"2026-04-09 15:40:18.000000000","message":"Noted, I\u0027ll implement the correction in the next patch","commit_id":"d4d181957c6b6451de91081675441a955a028291"}]}
