)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"04b222162f2ac11186831dc6b88f771d162775ec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"020254d7_698c6bda","updated":"2022-06-17 21:14:49.000000000","message":"Hey John, perhaps we should move this forward, thoughts? concerns?\n\nSeems like you\u0027ve been using it for a long time.","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"68bc83cba45235324b602f3bc782d94e3c7ef5ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cd4530ae_ef34de43","updated":"2023-03-14 08:57:36.000000000","message":"John G leads me to believe there is a better version of this patch that needs to be extracted from somewhere into the open.","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2d52867fe4bc5e7d0e63549e079ef40bf09f55cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"38bb38d3_5fbebe16","updated":"2022-05-19 15:22:49.000000000","message":"Not had much chance to refine this properly yet, sorry, but this one works better for the NGS case.\n\nThe update in port binding is totally async, so you need to poll, I totally got that wrong, apologies.","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"24dd0fddbd1c2cae619a700564ad7711c0fbbbe0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"70068966_b65f7f45","in_reply_to":"020254d7_698c6bda","updated":"2022-12-22 15:52:16.000000000","message":"I think we should try to move this forward. I had some instances attached to a GENEVE network without any visible errors and was scratching my head for some time. I expect this would have caught the issue sooner.","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1afa9a1962d87b526a65a5a68b02d15a4b2bca11","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c5193247_b86adaa8","in_reply_to":"70068966_b65f7f45","updated":"2023-01-04 20:44:50.000000000","message":"I agree, I would be happy to review an updated version. :)","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"173b7f7b4918636b2c3a901919e34f2b2a6555e0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a69a7202_fe9d1622","in_reply_to":"c5193247_b86adaa8","updated":"2023-01-05 09:12:21.000000000","message":"I\u0027ll put some time into it.","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"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":"58171836f2df24ad9e36983ddfcfe83bc08ccf7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4e5326b8_6daeec78","updated":"2025-02-05 23:04:20.000000000","message":"We need a release note, but I also think there\u0027s something weird about the logic -- it seems like previous behavior may have been if is_smart_nic to enforce binding success; we probably need to keep that behavior if so.","commit_id":"ddfabc4497eb81ef828755df38d2646c4d527ded"},{"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":"c51422222d344168e41ebe2683e8f5512236845a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"02fd77a7_9a39904c","updated":"2025-02-06 20:29:24.000000000","message":"As written, we\u0027ll never fallback to the config as the","commit_id":"bc566ea7d689f027e5470a05e896d3e3fb52dbee"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"aac56337ddaf5b108075cacb95d012d9fc73db09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"78510163_3acf0016","updated":"2025-02-06 20:52:02.000000000","message":"One failing unit test","commit_id":"b87b191cdadfdb084d7d14b83c60839f583e4eab"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d348fadcc528885aa794228ba426975525f4a104","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"95216274_9b169aa3","updated":"2025-02-17 17:54:12.000000000","message":"I\u0027m worried, this as-is, breaks deployments.\n\nSpecifically https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_e8f/941712/1/check/ironic-tempest-bios-ipmi-direct-tinyipa/e8fad3f/controller/logs/screen-ir-cond.txt is from a job where this is *disabled*, and we can see the binding failed killed the overall flow.","commit_id":"63d3677597cf436c1a2c49ff05a199b725673932"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c178331f1da6a67c46a9d797904a09d7fc27dfe6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"d3205c3e_36cfabba","updated":"2025-02-14 19:44:39.000000000","message":"recheck","commit_id":"63d3677597cf436c1a2c49ff05a199b725673932"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"50e290f185ab6851081ef45123e76c8e14a206fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9d686013_442be726","updated":"2025-02-11 21:19:44.000000000","message":"recheck - Some nodes did not finish cleaning","commit_id":"63d3677597cf436c1a2c49ff05a199b725673932"},{"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":"65b0f536267b9d52fbb3262db2d6ebf787e9ff53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"a1e3d64a_3eaced9d","updated":"2025-04-16 17:54:02.000000000","message":"```\nMar 19 18:24:44.317263 np0040211134 neutron-server[86619]: DEBUG neutron.plugins.ml2.plugin [None req-916d823b-d36b-4d81-abdb-162ad414c94f None None] Port c7fad300-44fd-4a3c-a7f9-233eca7b36b9 cannot update to ACTIVE because it is not bound. {{(pid\u003d86619) _port_provisioned /opt/stack/neutron/neutron/plugins/ml2/plugin.py:381}}```","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"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":"b810d0a14fd31988ea2cb597960ea186449c17eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"c24a52b6_3e55551b","updated":"2025-04-16 17:47:11.000000000","message":"```\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils Traceback (most recent call last):\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/conductor/cleaning.py\", line 92, in do_node_clean\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     prepare_result \u003d task.driver.deploy.prepare_cleaning(task)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/common/metrics.py\", line 60, in wrapped\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     result \u003d f(*args, **kwargs)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils              ^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/drivers/modules/agent_base.py\", line 807, in prepare_cleaning\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     result \u003d deploy_utils.prepare_inband_cleaning(\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/drivers/modules/deploy_utils.py\", line 732, in prepare_inband_cleaning\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     task.driver.network.add_cleaning_network(task)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/drivers/modules/network/flat.py\", line 161, in add_cleaning_network\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     return self._add_service_network(\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils            ^^^^^^^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/drivers/modules/network/flat.py\", line 132, in _add_service_network\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     vifs \u003d neutron.add_ports_to_network(task, network)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/common/neutron.py\", line 373, in add_ports_to_network\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     wait_for_port_status(\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/data/venv/lib/python3.12/site-packages/tenacity/__init__.py\", line 336, in wrapped_f\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     return copy(f, *args, **kw)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils            ^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/data/venv/lib/python3.12/site-packages/tenacity/__init__.py\", line 475, in __call__\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     do \u003d self.iter(retry_state\u003dretry_state)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/data/venv/lib/python3.12/site-packages/tenacity/__init__.py\", line 376, in iter\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     result \u003d action(retry_state)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils              ^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/data/venv/lib/python3.12/site-packages/tenacity/__init__.py\", line 418, in exc_check\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     raise retry_exc.reraise()\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils           ^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/data/venv/lib/python3.12/site-packages/tenacity/__init__.py\", line 185, in reraise\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     raise self.last_attempt.result()\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils           ^^^^^^^^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/usr/lib/python3.12/concurrent/futures/_base.py\", line 449, in result\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     return self.__get_result()\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils            ^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/usr/lib/python3.12/concurrent/futures/_base.py\", line 401, in __get_result\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     raise self._exception\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/data/venv/lib/python3.12/site-packages/tenacity/__init__.py\", line 478, in __call__\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     result \u003d fn(*args, **kwargs)\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils              ^^^^^^^^^^^^^^^^^^^\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils   File \"/opt/stack/ironic/ironic/common/neutron.py\", line 1054, in wait_for_port_status\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils     raise exception.NetworkError(\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils ironic.common.exception.NetworkError: Port c7fad300-44fd-4a3c-a7f9-233eca7b36b9 failed to reach status ACTIVE\nMar 19 18:41:24.135483 np0040211134 ironic-conductor[101735]: ERROR ironic.conductor.utils \n```","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"9cccc6b7e02da5021ce706fb13c4f6f9648fc760","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7de2bbb4_eee305d5","updated":"2025-03-17 17:59:41.000000000","message":"consistent failure of the same job must mean something. This needs more troubleshooting, help is welcomed\n\n[ERROR] /opt/stack/ironic/devstack/lib/ironic:2644 Some nodes did not finish cleaning:  47f6c052-2457-4f75-a412-6c620977c88b baa73f94-5c5b-4552-9513-688eac36dbe3\nexit_trap: cleaning up child processes","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"0d810b6bc5f545029c66130a89e028132952429b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"8f58fd28_a0fd49ff","updated":"2025-03-06 07:45:53.000000000","message":"recheck - CI improvements merged","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"8791a77f8f07cfe34ed004a92439a836267ae13d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"0fb5408d_7b343ace","updated":"2025-03-17 13:11:35.000000000","message":"recheck - Some nodes did not finish cleaning (should not be related to this change)","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"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":"5d31d9da219a2df644e1758f6bcefe9e006896f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"93fc8df0_59ae7112","updated":"2025-03-19 17:58:38.000000000","message":"recheck get updated CI information","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"74312f9e414f1860178f52bcf5d45d4c0e91e3f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"885ede84_15e8a052","updated":"2025-02-26 14:13:47.000000000","message":"recheck glance fix merged","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"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":"777dbfce3546b6bafddf44b1bf6ddebcc82c6476","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f749c89f_aa8ba406","updated":"2025-03-12 18:43:04.000000000","message":"recheck many CI fixes in laast week","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"05b9d40a1433803ec6f94301c31fd2d956d3288f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7eda8f46_903c13d1","updated":"2025-03-13 14:18:51.000000000","message":"recheck zuul log failure","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"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":"4d4d891bf49732d98052cc2ec05998e4eaf3e878","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"750777c8_82c3d9ad","updated":"2025-04-16 18:19:25.000000000","message":"CID and I dug this failure; jobs which perform automated cleaning are failing with the above traceback+error while trying to prepare for inband cleaning. Jobs with automated cleaning disabled pass.","commit_id":"45f75c81cb863ee37b7b50ad8fdcc9f8c61bfd17"},{"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":"6fd99f0031062de1627ad6bdb092c23bfdf615e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"c258cbfa_4c967a6f","updated":"2025-04-16 18:49:23.000000000","message":"We will need to, as a prerequisite to this merging, ensure we have a non-multinode neutron job that runs automated cleaning. We then need to test if that job fails in the same way the other automated_clean+flat network jobs are failing now (as documented above)","commit_id":"45f75c81cb863ee37b7b50ad8fdcc9f8c61bfd17"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"ea768f4b47737abbff9e0af0283de49e954321a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"127f41aa_de6a25b7","updated":"2025-04-16 18:24:42.000000000","message":"failure to a log in neutron: Port c7fad300-44fd-4a3c-a7f9-233eca7b36b9 cannot update to ACTIVE because it is not bound","commit_id":"45f75c81cb863ee37b7b50ad8fdcc9f8c61bfd17"},{"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":"568850e136e486553112a3819f4d3161bd3fe4db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"914c72f4_e72268ac","updated":"2025-04-16 22:50:57.000000000","message":":( I think I might have misled you in slack! Sorry.","commit_id":"5ea70e6e3543d47a2f2b356c3b605aa38578839d"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"719fba78f0a9f70307ba33f8040ae6fa259674af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"34b36a10_35408ced","updated":"2025-04-17 19:48:11.000000000","message":"So, the modified job with auto cleaning + neutron `ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode` passed on the change (though it\u0027s multinode and I believe we\u0027ll need to change that).\n\n`ironic-tempest-bios-ipmi-direct-tinyipa` still failed, seemingly in the exact same manner as it has consistently done.\n\n`ironic-tempest-functional-python3`\u0027s failure is unrelated.\n\nJust highlighting these!","commit_id":"77d7cf0878c2e5d08cfa2a37898baacf9a24fd58"},{"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":"6dca55ea9ce8d9c3b3d263fcffaf649e7f9c6a92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"4f43621c_799cb23a","updated":"2025-05-19 14:38:46.000000000","message":"Can we do some actual docs for this (in docs/) as a follow-up? Thank you!","commit_id":"876a9d40275d21bf2a7889a2d864877292f18143"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8f5b2ad411ac2cb34f9258f8a7e280980391c66f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"a019cde4_d57444af","updated":"2025-06-03 19:35:07.000000000","message":"Definitely would like to have some docs.","commit_id":"876a9d40275d21bf2a7889a2d864877292f18143"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"b50b27b6f916c11fccd44175d1d7d63006c0c221","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"bb44f656_0f620e7e","updated":"2025-06-04 00:33:50.000000000","message":"Doc follow-up here: https://review.opendev.org/c/openstack/ironic/+/950363","commit_id":"876a9d40275d21bf2a7889a2d864877292f18143"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2fafb658494b42fff520e831dfbd5d25cb822cee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"c143a767_029ce15a","updated":"2025-06-04 18:13:14.000000000","message":"recheck network transport failure","commit_id":"876a9d40275d21bf2a7889a2d864877292f18143"}],"ironic/common/neutron.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1526bff8b66cebf707d21c2157c0f603248fea9a","unresolved":true,"context_lines":[{"line_number":931,"context_line":"    if port.status \u003d\u003d status:"},{"line_number":932,"context_line":"        return True"},{"line_number":933,"context_line":"    # fail early on port binding failure"},{"line_number":934,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":935,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":936,"context_line":"        LOG.error(msg)"},{"line_number":937,"context_line":"        raise openstack_exc.OpenStackCloudException(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"57561e89_f967cd46","line":934,"updated":"2023-02-08 15:05:30.000000000","message":"question: might need a workaround option to succeed on binding failed when that is “expected”. is that still expected in some cases?","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7b069e24fd03788117aa8b7781a361ba0f41d6be","unresolved":true,"context_lines":[{"line_number":931,"context_line":"    if port.status \u003d\u003d status:"},{"line_number":932,"context_line":"        return True"},{"line_number":933,"context_line":"    # fail early on port binding failure"},{"line_number":934,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":935,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":936,"context_line":"        LOG.error(msg)"},{"line_number":937,"context_line":"        raise openstack_exc.OpenStackCloudException(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"6304f2e3_3aad487f","line":934,"in_reply_to":"57561e89_f967cd46","updated":"2023-03-13 18:56:55.000000000","message":"This is a great question, because I\u0027ve recently looked at a working environment where binding failed due to entirely unrelated reasons but that it was still good. Maybe an option on the node level in driver_info?!","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"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":"58171836f2df24ad9e36983ddfcfe83bc08ccf7d","unresolved":false,"context_lines":[{"line_number":931,"context_line":"    if port.status \u003d\u003d status:"},{"line_number":932,"context_line":"        return True"},{"line_number":933,"context_line":"    # fail early on port binding failure"},{"line_number":934,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":935,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":936,"context_line":"        LOG.error(msg)"},{"line_number":937,"context_line":"        raise openstack_exc.OpenStackCloudException(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2b32f3c1_fdcce704","line":934,"in_reply_to":"6304f2e3_3aad487f","updated":"2025-02-05 23:04:20.000000000","message":"Done","commit_id":"98996bb413520769de450ddde07665a63a30d50a"},{"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":"383d282a83e70ef471f315a71d7d66d45d20727b","unresolved":true,"context_lines":[{"line_number":933,"context_line":"    # fail early on port binding failure"},{"line_number":934,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":935,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":936,"context_line":"        if CONF.neutron.fail_on_port_binding_failure:"},{"line_number":937,"context_line":"            LOG.error(msg)"},{"line_number":938,"context_line":"            raise openstack_exc.OpenStackCloudException(msg)"},{"line_number":939,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"c03c5f84_18ee26b0","line":936,"updated":"2025-02-05 18:35:53.000000000","message":"We should also make this disableable in driver_info / per node.","commit_id":"ba210f063f4c89daf617d3145bfe0ab15faf6748"},{"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":"58171836f2df24ad9e36983ddfcfe83bc08ccf7d","unresolved":false,"context_lines":[{"line_number":933,"context_line":"    # fail early on port binding failure"},{"line_number":934,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":935,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":936,"context_line":"        if CONF.neutron.fail_on_port_binding_failure:"},{"line_number":937,"context_line":"            LOG.error(msg)"},{"line_number":938,"context_line":"            raise openstack_exc.OpenStackCloudException(msg)"},{"line_number":939,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"061f4632_d48f063e","line":936,"in_reply_to":"c03c5f84_18ee26b0","updated":"2025-02-05 23:04:20.000000000","message":"Done","commit_id":"ba210f063f4c89daf617d3145bfe0ab15faf6748"},{"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":"d71f5e910f745760346b0b3c40d8038110c81f58","unresolved":true,"context_lines":[{"line_number":369,"context_line":"                wait_for_port_status("},{"line_number":370,"context_line":"                    client, port.id, \u0027ACTIVE\u0027,"},{"line_number":371,"context_line":"                    fail_on_binding_failure\u003dfail_on_binding_failure)"},{"line_number":372,"context_line":"        except openstack_exc.OpenStackCloudException as e:"},{"line_number":373,"context_line":"            failures.append(ironic_port.uuid)"},{"line_number":374,"context_line":"            LOG.warning(\"Could not create neutron port for node\u0027s \""},{"line_number":375,"context_line":"                        \"%(node)s port %(ir_port)s on the neutron \""}],"source_content_type":"text/x-python","patch_set":10,"id":"a0d2ef24_e55ffeaa","line":372,"updated":"2025-02-06 15:43:00.000000000","message":"I think we need it to look more like:\n\nif is_smart_nic:\n    fail_on_binding_failure \u003d True\nelse:\n    fail_on_binding_failure \u003d node.driver_info.get(\u0027fail_on_binding_failure\u0027)","commit_id":"fd749b56b18f694970d69079dc798149edc920de"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"736128b53db75b8b88fcd3e36e3b40303fde8b59","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                wait_for_port_status("},{"line_number":370,"context_line":"                    client, port.id, \u0027ACTIVE\u0027,"},{"line_number":371,"context_line":"                    fail_on_binding_failure\u003dfail_on_binding_failure)"},{"line_number":372,"context_line":"        except openstack_exc.OpenStackCloudException as e:"},{"line_number":373,"context_line":"            failures.append(ironic_port.uuid)"},{"line_number":374,"context_line":"            LOG.warning(\"Could not create neutron port for node\u0027s \""},{"line_number":375,"context_line":"                        \"%(node)s port %(ir_port)s on the neutron \""}],"source_content_type":"text/x-python","patch_set":10,"id":"a6bec53a_1ca0993e","line":372,"in_reply_to":"a0d2ef24_e55ffeaa","updated":"2025-02-14 19:44:32.000000000","message":"Looks like current logic handles that.","commit_id":"fd749b56b18f694970d69079dc798149edc920de"},{"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":"c51422222d344168e41ebe2683e8f5512236845a","unresolved":true,"context_lines":[{"line_number":987,"context_line":"    # fail early on port binding failure"},{"line_number":988,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":989,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":990,"context_line":"        if fail_on_binding_failure is None:"},{"line_number":991,"context_line":"            fail_on_binding_failure \u003d CONF.neutron.fail_on_port_binding_failure"},{"line_number":992,"context_line":"        if fail_on_binding_failure:"},{"line_number":993,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"08248c84_290ab553","line":990,"updated":"2025-02-06 20:29:24.000000000","message":"it\u0027s impossible for this code to get here now; as this will always be bool coming out of line 369","commit_id":"bc566ea7d689f027e5470a05e896d3e3fb52dbee"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8c63ea6ce20b0b1443a3606b71a42da63925ac60","unresolved":true,"context_lines":[{"line_number":367,"context_line":"            fail_on_binding_failure \u003d node.driver_info.get("},{"line_number":368,"context_line":"                \u0027fail_on_binding_failure\u0027, default_failure_behavior)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"            wait_for_port_status("},{"line_number":371,"context_line":"                client, port.id, \u0027ACTIVE\u0027,"},{"line_number":372,"context_line":"                fail_on_binding_failure\u003dfail_on_binding_failure)"},{"line_number":373,"context_line":"        except openstack_exc.OpenStackCloudException as e:"},{"line_number":374,"context_line":"            failures.append(ironic_port.uuid)"},{"line_number":375,"context_line":"            LOG.warning(\"Could not create neutron port for node\u0027s \""}],"source_content_type":"text/x-python","patch_set":15,"id":"8aa5decb_442901f0","line":372,"range":{"start_line":370,"start_character":0,"end_line":372,"end_character":64},"updated":"2025-02-17 18:10:48.000000000","message":"This needs to be predicated upon the configuration option, not always the case. Otherwise we need to have callback support finished.\n\nSpecifically this breaks existing jobs where binding is not part of the matrix or not always reliable but where the job would have otherwise worked.\n\nOh, and when not enabled.\n\nSo I would just put an if statement in place for this.\n\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_e8f/941712/1/check/ironic-tempest-bios-ipmi-direct-tinyipa/e8fad3f/controller/logs/screen-ir-cond.txt\n\nThis ended up spinning for close to 20 minutes on getting port status after a port creation failed as well:\n\nReviewing: https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_e8f/941712/1/check/ironic-tempest-bios-ipmi-direct-tinyipa/e8fad3f/controller/logs/screen-q-svc.txt \n\nWe see:\n\n\n\nFeb 14 20:01:29.249470 np0039858275 neutron-server[82691]: DEBUG neutron.db.provisioning_blocks [None req-bf331601-6518-4344-849c-cea9b86d3f89 None None] Provisioning for port b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 completed by entity DHCP. {{(pid\u003d82691) provisioning_complete /opt/stack/neutron/neutron/db/provisioning_blocks.py:133}}\nFeb 14 20:01:29.252322 np0039858275 neutron-server[82691]: DEBUG neutron.db.provisioning_blocks [None req-bf331601-6518-4344-849c-cea9b86d3f89 None None] Provisioning complete for port b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 triggered by entity DHCP. {{(pid\u003d82691) provisioning_complete /opt/stack/neutron/neutron/db/provisioning_blocks.py:141}}\nFeb 14 20:01:29.252441 np0039858275 neutron-server[82691]: DEBUG neutron_lib.callbacks.manager [None req-bf331601-6518-4344-849c-cea9b86d3f89 None None] Publish callbacks [\u0027neutron.plugins.ml2.plugin.Ml2Plugin._port_provisioned-1197183\u0027] for port (b26f3f21-51cd-4bc1-8e4e-38789cbb29f3), provisioning_complete {{(pid\u003d82691) _notify_loop /opt/stack/data/venv/lib/python3.12/site-packages/neutron_lib/callbacks/manager.py:184}}\nFeb 14 20:01:29.252536 np0039858275 neutron-server[82691]: INFO neutron.plugins.ml2.plugin [None req-bf331601-6518-4344-849c-cea9b86d3f89 None None] Attempt 1 to provision port b26f3f21-51cd-4bc1-8e4e-38789cbb29f3\nFeb 14 20:01:29.263504 np0039858275 neutron-server[82691]: DEBUG neutron.plugins.ml2.plugin [None req-bf331601-6518-4344-849c-cea9b86d3f89 None None] Port b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 cannot update to ACTIVE because it failed. {{(pid\u003d82691) _port_provisioned /opt/stack/neutron/neutron/plugins/ml2/plugin.py:374}}\nFeb 14 20:01:37.566927 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-84195886-4275-42ac-89b1-4bc49b8a2ede service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0171833\nFeb 14 20:01:47.595547 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-8665a769-7e63-4aac-92e5-711a981c84a6 service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0156853\nFeb 14 20:01:57.622658 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-7f6c0613-93b4-4dad-83a3-86fa88587e0e service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0160971\nFeb 14 20:02:07.648480 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-99db044b-7044-40cb-a9a0-34f323344d7d service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0166399\n[trimmed]\nFeb 14 20:17:40.382234 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-820b7214-b400-4364-a493-74fc8235e7c2 service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0165541\nFeb 14 20:17:50.411571 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-270474d2-9aef-4dba-b297-af83d8399d35 service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0163870\nFeb 14 20:18:00.438442 np0039858275 neutron-server[82690]: INFO neutron.api.wsgi [req-9205f991-e6de-4e8d-88cf-3bc0fcceb685 req-bebf282a-6cf7-4d52-a60c-f0aebf85ca3a service ironic] 10.0.18.158,10.0.18.158 \"GET /networking/v2.0/ports/b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 HTTP/1.1\" status: 200  len: 1129 time: 0.0155642\nFeb 14 20:18:01.195298 np0039858275 neutron-server[82690]: DEBUG neutron.plugins.ml2.plugin [req-60bebdb4-1a36-4558-971c-bf0a03eccfff req-80dd6326-534f-4239-a4f9-f098b0ea5477 service ironic] Deleting port b26f3f21-51cd-4bc1-8e4e-38789cbb29f3 {{(pid\u003d82690) _pre_delete_port /opt/stack/neutron/neutron/plugins/ml2/plugin.py:2172}}\nFeb 14 20:18:01.195397 np0039858275 neutron-server[82690]: DEBUG neutron_lib.callbacks.manager [req-60bebdb4-1a36-4558-971c-bf0a03eccfff req-80dd6326-534f-4239-a4f9-f098b0ea5477 service ironic] Publish callbacks [\u0027neutron.db.l3_db.L3_NAT_dbonly_mixin._prevent_l3_port_delete_callback-8403477434008\u0027] for port (b26f3f21-51cd-4bc1-8e4e-38789cbb29f3), before_delete {{(pid\u003d82690) _notify_loop /opt/stack/data/venv/lib/python3.12/site-packages/neutron_lib/callbacks/manager.py:184}}\n\n\nFurther review of the logs appears that networking-baremetal was not running nor pulled in which would result in no update to the appropriate status, but it could also be a bug in neutron or in the job. Either way, it seems we need to do a little more polishing on this capability.","commit_id":"63d3677597cf436c1a2c49ff05a199b725673932"},{"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":"65b0f536267b9d52fbb3262db2d6ebf787e9ff53","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        return True"},{"line_number":993,"context_line":"    # fail early on port binding failure"},{"line_number":994,"context_line":"    if port.get(\u0027binding:vif_type\u0027) \u003d\u003d \u0027binding_failed\u0027:"},{"line_number":995,"context_line":"        msg \u003d \"Binding failed for port %s\" % port_id"},{"line_number":996,"context_line":"        if fail_on_binding_failure:"},{"line_number":997,"context_line":"            LOG.error(msg)"},{"line_number":998,"context_line":"            raise openstack_exc.OpenStackCloudException(msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"2cf1715d_721eed78","line":995,"updated":"2025-04-16 17:54:02.000000000","message":"maybe worth specifying it\u0027s an Neutron port ID?","commit_id":"436ea96dcdeb7a21069b2f90eafb41f30aaf8f55"},{"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":"7dc740862d42d4d990e179bdbd5fdf5fadc9b989","unresolved":true,"context_lines":[{"line_number":997,"context_line":"            LOG.error(msg)"},{"line_number":998,"context_line":"            raise openstack_exc.OpenStackCloudException(msg)"},{"line_number":999,"context_line":"        LOG.warning(msg)"},{"line_number":1000,"context_line":"    raise exception.NetworkError("},{"line_number":1001,"context_line":"        \u0027Port %(port_id)s failed to reach status %(status)s\u0027 % {"},{"line_number":1002,"context_line":"            \u0027port_id\u0027: port_id, \u0027status\u0027: status})"},{"line_number":1003,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9c9e491b_8e0e897d","line":1000,"updated":"2025-04-16 18:32:24.000000000","message":"This needs to be only if not fail_on_binding_failure, since Neutron will *never* set a a port to ACTIVE which has failed to bind.","commit_id":"45f75c81cb863ee37b7b50ad8fdcc9f8c61bfd17"}],"ironic/conf/neutron.py":[{"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":"6fd99f0031062de1627ad6bdb092c23bfdf615e6","unresolved":true,"context_lines":[{"line_number":27,"context_line":"               help\u003d_(\u0027Delay value to wait for Neutron agents to setup \u0027"},{"line_number":28,"context_line":"                      \u0027sufficient DHCP configuration for port.\u0027)),"},{"line_number":29,"context_line":"    cfg.BoolOpt(\u0027fail_on_port_binding_failure\u0027,"},{"line_number":30,"context_line":"                default\u003dFalse,"},{"line_number":31,"context_line":"                help\u003d_(\u0027Whether to fail or continue deployment if neutron \u0027"},{"line_number":32,"context_line":"                       \u0027port binding fails.\u0027)),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027retries\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"0a77f047_6782b192","line":30,"updated":"2025-04-16 18:49:23.000000000","message":"This should default to true. We need to ensure there is a strongly worded warning in the release notes that if the network is not configured properly that this will cause failures.","commit_id":"45f75c81cb863ee37b7b50ad8fdcc9f8c61bfd17"}],"ironic/drivers/modules/network/common.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"36f6c4649c26d584d2240184e4181fbcba1d1d82","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        neutron.wait_for_host_agent(client, body[\u0027port\u0027][\u0027binding:host_id\u0027])"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    try:"},{"line_number":286,"context_line":"        updated_port \u003d client.update_port(vif_id, body)"},{"line_number":287,"context_line":"        config_says_fail_on_unbound_port \u003d True"},{"line_number":288,"context_line":"        if updated_port.get(\"binding:vif_type\") \u003d\u003d \"binding_failed\":"},{"line_number":289,"context_line":"            if config_says_fail_on_unbound_port:"},{"line_number":290,"context_line":"                msg \u003d \"binding failed for %s\" % vif_id"},{"line_number":291,"context_line":"                LOG.error(msg)"},{"line_number":292,"context_line":"                raise exception.NetworkError(msg)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if is_smart_nic:"},{"line_number":295,"context_line":"            neutron.wait_for_port_status(client, vif_id, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_5804a219","line":292,"range":{"start_line":286,"start_character":6,"end_line":292,"end_character":49},"updated":"2019-12-19 14:10:40.000000000","message":"I thought the call was async with-in neutron?\n\nWe already know from CI that there can be 20-30+ second delays for thigns like dhcp to be updated....","commit_id":"4e59c78bd3df272d6679347a7ca6a276f2fd1d5f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"5c07b28cc3cf70da9e40e2d944297654127ec4a8","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        neutron.wait_for_host_agent(client, body[\u0027port\u0027][\u0027binding:host_id\u0027])"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    try:"},{"line_number":286,"context_line":"        updated_port \u003d client.update_port(vif_id, body)"},{"line_number":287,"context_line":"        config_says_fail_on_unbound_port \u003d True"},{"line_number":288,"context_line":"        if updated_port.get(\"binding:vif_type\") \u003d\u003d \"binding_failed\":"},{"line_number":289,"context_line":"            if config_says_fail_on_unbound_port:"},{"line_number":290,"context_line":"                msg \u003d \"binding failed for %s\" % vif_id"},{"line_number":291,"context_line":"                LOG.error(msg)"},{"line_number":292,"context_line":"                raise exception.NetworkError(msg)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if is_smart_nic:"},{"line_number":295,"context_line":"            neutron.wait_for_port_status(client, vif_id, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_a835eeaa","line":292,"range":{"start_line":286,"start_character":6,"end_line":292,"end_character":49},"in_reply_to":"3fa7e38b_3e33cf63","updated":"2020-05-23 16:11:06.000000000","message":"Sounds like a nice addition for the provision network, this is exactly the use case we are using: multitenancy+ngs, and a deployment with binding failure is doomed to fail.","commit_id":"4e59c78bd3df272d6679347a7ca6a276f2fd1d5f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5558b4aafab45a77b2083b57fe9dab62a93f0218","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        neutron.wait_for_host_agent(client, body[\u0027port\u0027][\u0027binding:host_id\u0027])"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    try:"},{"line_number":286,"context_line":"        updated_port \u003d client.update_port(vif_id, body)"},{"line_number":287,"context_line":"        config_says_fail_on_unbound_port \u003d True"},{"line_number":288,"context_line":"        if updated_port.get(\"binding:vif_type\") \u003d\u003d \"binding_failed\":"},{"line_number":289,"context_line":"            if config_says_fail_on_unbound_port:"},{"line_number":290,"context_line":"                msg \u003d \"binding failed for %s\" % vif_id"},{"line_number":291,"context_line":"                LOG.error(msg)"},{"line_number":292,"context_line":"                raise exception.NetworkError(msg)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if is_smart_nic:"},{"line_number":295,"context_line":"            neutron.wait_for_port_status(client, vif_id, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3e33cf63","line":292,"range":{"start_line":286,"start_character":6,"end_line":292,"end_character":49},"in_reply_to":"3fa7e38b_5804a219","updated":"2019-12-19 14:52:04.000000000","message":"Depends on the driver. The driver can reject it early (like if you use networking generic switch).\n\nThere is the second thing, i.e. waiting for the event from neutron, or wait for port to go Active, like for the smart nic stuff, but that is in addition.\n\nI think the problem is if you don\u0027t run netowrking-baremetal, and you use flat, then biding_failed means success.","commit_id":"4e59c78bd3df272d6679347a7ca6a276f2fd1d5f"},{"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":"58171836f2df24ad9e36983ddfcfe83bc08ccf7d","unresolved":true,"context_lines":[{"line_number":295,"context_line":"    try:"},{"line_number":296,"context_line":"        neutron.update_neutron_port(task.context, vif_id, port_attrs)"},{"line_number":297,"context_line":"        # TODO(johngarbutt): is there still a case where we should not wait?"},{"line_number":298,"context_line":"        neutron.wait_for_port_status(client, vif_id, \u0027ACTIVE\u0027)"},{"line_number":299,"context_line":"    except openstack_exc.OpenStackCloudException as e:"},{"line_number":300,"context_line":"        msg \u003d (_(\u0027Could not add public network VIF %(vif)s \u0027"},{"line_number":301,"context_line":"                 \u0027to node %(node)s, possible network issue. %(exc)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"5e9caba6_8876d769","line":298,"updated":"2025-02-05 23:04:20.000000000","message":"I think this needs to also have the logic around the config as well?","commit_id":"ddfabc4497eb81ef828755df38d2646c4d527ded"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"77fca4a0b1f900439e4f89239881ef1b7727fb96","unresolved":false,"context_lines":[{"line_number":295,"context_line":"    try:"},{"line_number":296,"context_line":"        neutron.update_neutron_port(task.context, vif_id, port_attrs)"},{"line_number":297,"context_line":"        # TODO(johngarbutt): is there still a case where we should not wait?"},{"line_number":298,"context_line":"        neutron.wait_for_port_status(client, vif_id, \u0027ACTIVE\u0027)"},{"line_number":299,"context_line":"    except openstack_exc.OpenStackCloudException as e:"},{"line_number":300,"context_line":"        msg \u003d (_(\u0027Could not add public network VIF %(vif)s \u0027"},{"line_number":301,"context_line":"                 \u0027to node %(node)s, possible network issue. %(exc)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"33eb0eb5_c9eb5d51","line":298,"in_reply_to":"5e9caba6_8876d769","updated":"2025-02-06 12:42:50.000000000","message":"Acknowledged","commit_id":"ddfabc4497eb81ef828755df38d2646c4d527ded"}],"zuul.d/ironic-jobs.yaml":[{"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":"568850e136e486553112a3819f4d3161bd3fe4db","unresolved":true,"context_lines":[{"line_number":955,"context_line":"        IRONIC_RAMDISK_TYPE: tinyipa"},{"line_number":956,"context_line":"        IRONIC_VM_SPECS_RAM: 1024"},{"line_number":957,"context_line":"        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True"},{"line_number":958,"context_line":"        IRONIC_AUTOMATED_CLEAN_ENABLED: True"},{"line_number":959,"context_line":"        IRONIC_VM_EPHEMERAL_DISK: 0"},{"line_number":960,"context_line":"        SWIFT_ENABLE_TEMPURLS: True"},{"line_number":961,"context_line":"        SWIFT_TEMPURL_KEY: secretkey"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ab17dee2_44d20c0c","line":958,"updated":"2025-04-16 22:50:57.000000000","message":"So, the default is true. This is a noop change. We need to remove one of the IRONIC_AUTOMATED_CLEAN_ENABLED: false on any job that is currently running that has the neutron network interface enabled (preferably NOT using ovn)","commit_id":"5ea70e6e3543d47a2f2b356c3b605aa38578839d"}]}
