)]}'
{"/COMMIT_MSG":[{"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":"51ceafaccad15b47d6ce4c35c9f66003c0afca5e","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-04-04 13:59:37 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: provide host_id to neutron early on"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic53c626afe641ce63d71a7858e65df1fb250e3c0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"32189b60_b6db595a","line":7,"updated":"2025-04-08 18:11:57.000000000","message":"needs full commit message, unwip, etc","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d142dbc44b34282305a56517be0629f4a41b55f5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-04-04 13:59:37 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: provide host_id to neutron early on"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic53c626afe641ce63d71a7858e65df1fb250e3c0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"92dfcd37_e8c8383d","line":7,"in_reply_to":"32189b60_b6db595a","updated":"2025-04-09 13:43:29.000000000","message":"Done","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"}],"/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":"d142dbc44b34282305a56517be0629f4a41b55f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7971723e_56846e8c","updated":"2025-04-09 13:43:29.000000000","message":"Looks like metalsmith\u0027s failure is legit.\n\nWhich highlights a use pattern where this breaks.\n\n\nApr 09 00:53:34.980137 np0040411706 ironic-conductor[73862]: ERROR ironic.drivers.modules.network.common [None req-d3d92d6e-92b0-4de7-b0af-a0a85de67147 None None] Could not seed network configuration for VIF 095380d7-6257-4045-8ac9-32ae23ae538eto node c462c538-5e1c-4292-88f4-ef1abd1585a8, possible network issue. ConflictException: 409: Client Error for url: https://200.225.47.39:9696/networking/v2.0/ports/095380d7-6257-4045-8ac9-32ae23ae538e, Unable to complete operation on port 095380d7-6257-4045-8ac9-32ae23ae538e for network 38189ce2-8598-49bf-8998-80b3cc7b0845. Port already has an attached device .: openstack.exceptions.ConflictException: ConflictException: 409: Client Error for url: https://200.225.47.39:9696/networking/v2.0/ports/095380d7-6257-4045-8ac9-32ae23ae538e, Unable to complete operation on port 095380d7-6257-4045-8ac9-32ae23ae538e for network 38189ce2-8598-49bf-8998-80b3cc7b0845. Port already has an attached device .\n\n.... in part because of how the port is created, with a bind outright.\n\n\nApr 09 00:53:32.533964 np0040411706 neutron-server[63831]: DEBUG neutron.api.v2.base [None req-3ab2a756-14f3-4550-b3ff-3543683628bc admin admin] Request body: {\u0027port\u0027: {\u0027network_id\u0027: \u002738189ce2-8598-49bf-8998-80b3cc7b0845\u0027, \u0027name\u0027: \u0027test-private\u0027, \u0027binding:host_id\u0027: \u0027c462c538-5e1c-4292-88f4-ef1abd1585a8\u0027}} {{(pid\u003d63831) prepare_request_body /opt/stack/neutron/neutron/api/v2/base.py:729}}\n\n[trim]...\n\nApr 09 00:53:32.771896 np0040411706 neutron-server[63831]:  {{(pid\u003d63831) report /opt/stack/neutron/neutron/api/rpc/callbacks/version_manager.py:183}}\nApr 09 00:53:32.781913 np0040411706 neutron-server[63831]: DEBUG neutron.scheduler.dhcp_agent_scheduler [None req-3ab2a756-14f3-4550-b3ff-3543683628bc admin admin] Network 38189ce2-8598-49bf-8998-80b3cc7b0845 is already hosted by enough agents. {{(pid\u003d63831) _get_dhcp_agents_hosting_network /opt/stack/neutron/neutron/scheduler/dhcp_agent_scheduler.py:276}}\nApr 09 00:53:32.782749 np0040411706 neutron-server[63831]: DEBUG neutron.scheduler.base_scheduler [None req-3ab2a756-14f3-4550-b3ff-3543683628bc admin admin] Resources bound (agent type, host, resource id):  {{(pid\u003d63831) schedule /opt/stack/neutron/neutron/scheduler/base_scheduler.py:57}}\nApr 09 00:53:32.785535 np0040411706 neutron-server[63831]: DEBUG neutron.db.l3_dvrscheduler_db [None req-3ab2a756-14f3-4550-b3ff-3543683628bc admin admin] Received port after_create {{(pid\u003d63831) _notify_l3_agent_new_port /opt/stack/neutron/neutron/db/l3_dvrscheduler_db.py:541}}\nApr 09 00:53:32.791759 np0040411706 neutron-server[63831]: DEBUG neutron.plugins.ml2.managers [None req-3ab2a756-14f3-4550-b3ff-3543683628bc admin admin] Attempting to bind port 095380d7-6257-4045-8ac9-32ae23ae538e on host c462c538-5e1c-4292-88f4-ef1abd1585a8 for vnic_type normal with profile  {{(pid\u003d63831) bind_port /opt/stack/neutron/neutron/plugins/ml2/managers.py:825}}\nApr 09 00:53:32.791925 np0040411706 neutron-server[63831]: DEBUG neutron.plugins.ml2.managers [None req-3ab2a756-14f3-4550-b3ff-3543683628bc admin admin] Attempting to bind port 095380d7-6257-4045-8ac9-32ae23ae538e by drivers openvswitch on host c462c538-5e1c-4292-88f4-ef1abd1585a8 at level 0 using segments [{\u0027id\u0027: \u002708f6f6af-0a0e-4803-823c-e1c84188c4c2\u0027, \u0027network_type\u0027: \u0027vxlan\u0027, \u0027physical_network\u0027: None, \u0027segmentation_id\u0027: 200, \u0027network_id\u0027: \u002738189ce2-8598-49bf-8998-80b3cc7b0845\u0027}] {{(pid\u003d63831) _bind_port_level /opt/stack/neutron/neutron/plugins/ml2/managers.py:850}}\n\nWhich... seems wrong, but hey... This is still a result of the post.\n\nAnd such an action is supported, and it is definitely metalsmith doing it.\n\nhttps://github.com/openstack/metalsmith/blob/master/metalsmith/_nics.py#L79-L80","commit_id":"e0ce573fffc0f2650f6dbd9720bf040d8b3348f0"},{"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":"4025beb4d504a859c748a9a52729c90716f1c21c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"46caea40_9908b85c","updated":"2025-04-09 22:12:21.000000000","message":"basic high level feedback, the idea still looks OK even if it\u0027s more painful because we may have to turn the port down first :(","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c04dcab43651e536a79679e72f3b34ef866963d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cf4b2bba_38eee1c6","in_reply_to":"46caea40_9908b85c","updated":"2025-04-09 22:21:56.000000000","message":"Yeah, basically turns it down and resets it to what we would expect the default state to be. Turns out metalsmith does bad thing and... since you can do it on port post it is *likely* not the only one doing it.","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"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":"ade750fd096d19e8c3e700a67dd7c62e944c7bca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0fdcce78_0c2c7f37","updated":"2025-04-09 22:39:12.000000000","message":"My issues are resolved, holding back +2 mainly because I want more folks to look at it.","commit_id":"4db3097df500a5762114dee84bef46d490248435"},{"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":"e3060484f10c9a28bb99338f57f7d5df8f3c7723","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1fe2ea87_d42104d7","updated":"2025-04-10 17:56:35.000000000","message":"My issues are resolved, holding back +2 mainly because I want more folks to look at it.","commit_id":"365a844b87fddec7e4a6d3675cf55f5acec17651"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9aef894a39ed44d48ee86331fdfb48e64d85c325","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7feeb066_ed8f8ee4","updated":"2025-04-15 17:54:40.000000000","message":"Apr 10 18:44:33.464932 np0040429539 neutron-server[64249]: DEBUG neutron.api.v2.base [req-e50dc6db-ff37-44fc-8ca2-8cf76d0b10b4 req-ec0a94d8-8406-4456-8285-bd08f1d2bf29 service ironic] Request body: {\u0027port\u0027: {\u0027binding:host_id\u0027: \u0027f39c8619-1a62-4d57-b4ee-03e1dbbc245b\u0027, \u0027binding:profile\u0027: {}, \u0027binding:vnic_type\u0027: \u0027baremetal\u0027}} {{(pid\u003d64249) prepare_request_body /opt/stack/neutron/neutron/api/v2/base.py:729}}\nApr 10 18:44:33.521130 np0040429539 neutron-server[64249]: DEBUG neutron_lib.callbacks.manager [req-e50dc6db-ff37-44fc-8ca2-8cf76d0b10b4 req-ec0a94d8-8406-4456-8285-bd08f1d2bf29 service ironic] Publish callbacks [\u0027neutron.plugins.ml2.plugin.SecurityGroupDbMixin._ensure_default_security_group_handler-596310\u0027, \u0027neutron.db.l3_db.L3_NAT_dbonly_mixin._prevent_internal_ip_change_for_fip-8736662121836\u0027] for port (9551389c-85d9-4f99-bd6c-421e8029b0bc), before_update {{(pid\u003d64249) _notify_loop /opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/callbacks/manager.py:184}}\nApr 10 18:44:33.564682 np0040429539 neutron-server[64249]: INFO neutron.plugins.ml2.plugin [req-e50dc6db-ff37-44fc-8ca2-8cf76d0b10b4 req-ec0a94d8-8406-4456-8285-bd08f1d2bf29 service ironic] Attempting to change VNIC TYPE from normal to baremetal on port 9551389c-85d9-4f99-bd6c-421e8029b0bc, this operation is not allowed because the port is bound\nApr 10 18:44:33.566281 np0040429539 neutron-server[64249]: INFO neutron.pecan_wsgi.hooks.translation [req-e50dc6db-ff37-44fc-8ca2-8cf76d0b10b4 req-ec0a94d8-8406-4456-8285-bd08f1d2bf29 service ironic] PUT failed (client error): There was a conflict when trying to complete your request.\nApr 10 18:44:33.566649 np0040429539 neutron-server[64249]: DEBUG neutron.pecan_wsgi.hooks.notifier [req-e50dc6db-ff37-44fc-8ca2-8cf76d0b10b4 req-ec0a94d8-8406-4456-8285-bd08f1d2bf29 service ironic] No notification will be sent due to unsuccessful status code: 409 {{(pid\u003d64249) after /opt/stack/neutron/neutron/pecan_wsgi/hooks/notifier.py:78}}\nApr 10 18:44:33.567852 np0040429539 neutron-server[64249]: INFO neutron.api.wsgi [req-e50dc6db-ff37-44fc-8ca2-8cf76d0b10b4 req-ec0a94d8-8406-4456-8285-bd08f1d2bf29 service ironic] 213.32.76.219,213.32.76.219 \"PUT /networking/v2.0/ports/9551389c-85d9-4f99-bd6c-421e8029b0bc HTTP/1.1\" status: 409  len: 434 time: 0.1475005","commit_id":"25638a2ecdbbb3c36a10362e18842364588423be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cab8dff2c156a3a555f49996e7008ed8f7f6cd3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bd606df9_520f0e13","updated":"2025-04-10 19:34:46.000000000","message":"Ugh, I need to dig into it more.","commit_id":"25638a2ecdbbb3c36a10362e18842364588423be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"daef450eee11436ab80a75f512923d7f78e3b8c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c88bb053_7609b752","updated":"2025-04-16 14:09:58.000000000","message":"Okay, looks like metalsmith may be the current source of it\u0027s own failure:\n\n\u001bM\n\u001b[K[\u001b[0;32m  OK  \u001b[0m] Finished \u001b[0;1;39mNetwork Manager Wait Online\u001b[0m.\n\u001b[K         Starting \u001b[0;1;39mCloud-init: Network Stage\u001b[0m...\n[  115.653910] cloud-init[904]: Cloud-init v. 24.4-5.el9 running \u0027init\u0027 at Tue, 15 Apr 2025 21:40:04 +0000. Up 115.14 seconds.\n[  116.086801] cloud-init[904]: ci-info: +++++++++++++++++++++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++++++++++++++++++++\n[  116.090312] cloud-init[904]: ci-info: +--------+------+-----------------------------------------+-----------------+--------+-------------------+\n[  116.092737] cloud-init[904]: ci-info: | Device |  Up  |                 Address                 |       Mask      | Scope  |     Hw-Address    |\n[  116.096614] cloud-init[904]: ci-info: +--------+------+-----------------------------------------+-----------------+--------+-------------------+\n[  116.098799] cloud-init[904]: ci-info: |  eth0  | True |                10.1.0.25                | 255.255.255.192 | global | 52:54:00:d6:81:0c |\n[  116.100815] cloud-init[904]: ci-info: |  eth0  | True |  fd9b:2ee7:bd48:0:5054:ff:fed6:810c/64  |        .        | global | 52:54:00:d6:81:0c |\n[  116.102919] cloud-init[904]: ci-info: |  eth0  | True |        fe80::5054:ff:fed6:810c/64       |        .        |  link  | 52:54:00:d6:81:0c |\n[  116.104832] cloud-init[904]: ci-info: |  eth1  | True | fd9b:2ee7:bd48:0:10e2:5772:85ed:74c2/64 |        .        | global | 52:54:00:a4:93:88 |\n[  116.106650] cloud-init[904]: ci-info: |  eth1  | True |       fe80::da8a:2f15:2b20:6a1e/64      |        .        |  link  | 52:54:00:a4:93:88 |\n[  116.108609] cloud-init[904]: ci-info: |   lo   | True |                127.0.0.1                |    255.0.0.0    |  host  |         .         |\n[  116.110600] cloud-init[904]: ci-info: |   lo   | True |                 ::1/128                 |        .        |  host  |         .         |\n[  116.112546] cloud-init[904]: ci-info: +--------+------+-----------------------------------------+-----------------+--------+-------------------+\n[  116.114502] cloud-init[904]: ci-info: ++++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++++\n[  116.116624] cloud-init[904]: ci-info: +-------+-----------------+----------+-----------------+-----------+-------+\n[  116.118773] cloud-init[904]: ci-info: | Route |   Destination   | Gateway  |     Genmask     | Interface | Flags |\n[  116.120678] cloud-init[904]: ci-info: +-------+-----------------+----------+-----------------+-----------+-------+\n[  116.122489] cloud-init[904]: ci-info: |   0   |     0.0.0.0     | 10.1.0.1 |     0.0.0.0     |    eth0   |   UG  |\n[  116.124474] cloud-init[904]: ci-info: |   1   |     10.1.0.0    | 0.0.0.0  | 255.255.255.192 |    eth0   |   U   |\n[  116.126419] cloud-init[904]: ci-info: |   2   | 169.254.169.254 | 10.1.0.1 | 255.255.255.255 |    eth0   |  UGH  |\n[  116.128947] cloud-init[904]: ci-info: +-------+-----------------+----------+-----------------+-----------+-------+\n[  116.130756] cloud-init[904]: ci-info: ++++++++++++++++++++++++++++++++Route IPv6 info++++++++++++++++++++++++++++++++\n[  116.132617] cloud-init[904]: ci-info: +-------+---------------------+---------------------------+-----------+-------+\n[  116.134495] cloud-init[904]: ci-info: | Route |     Destination     |          Gateway          | Interface | Flags |\n[  116.136430] cloud-init[904]: ci-info: +-------+---------------------+---------------------------+-----------+-------+\n[  116.138418] cloud-init[904]: ci-info: |   1   | fd9b:2ee7:bd48::/64 |             ::            |    eth0   |   U   |\n[  116.140398] cloud-init[904]: ci-info: |   2   | fd9b:2ee7:bd48::/64 |             ::            |    eth1   |   U   |\n[  116.142451] cloud-init[904]: ci-info: |   3   |   fe80::a9fe:a9fe   | fe80::f816:3eff:fe9a:9158 |    eth0   |   UG  |\n[  116.144464] cloud-init[904]: ci-info: |   4   |   fe80::a9fe:a9fe   | fe80::f816:3eff:fe9a:9158 |    eth1   |   UG  |\n[  116.146449] cloud-init[904]: ci-info: |   5   |      fe80::/64      |             ::            |    eth0   |   U   |\n[  116.148554] cloud-init[904]: ci-info: |   6   |      fe80::/64      |             ::            |    eth1   |   U   |\n[  116.150449] cloud-init[904]: ci-info: |   7   |         ::/0        | fe80::f816:3eff:fe9a:9158 |    eth0   |   UG  |\n[  116.152445] cloud-init[904]: ci-info: |   8   |         ::/0        | fe80::f816:3eff:fe9a:9158 |    eth1   |   UG  |\n[  116.154528] cloud-init[904]: ci-info: |   10  |        local        |             ::            |    eth1   |   U   |\n[  116.156469] cloud-init[904]: ci-info: |   11  |        local        |             ::            |    eth0   |   U   |\n[  116.158501] cloud-init[904]: ci-info: |   12  |        local        |             ::            |    eth0   |   U   |\n[  116.160456] cloud-init[904]: ci-info: |   13  |        local        |             ::            |    eth1   |   U   |\n[  116.162498] cloud-init[904]: ci-info: |   14  |      multicast      |             ::            |    eth0   |   U   |\n[  116.164478] cloud-init[904]: ci-info: |   15  |      multicast      |             ::            |    eth1   |   U   |\n[  116.166362] cloud-init[904]: ci-info: +-------+---------------------+---------------------------+-----------+-------+\n[  116.670760] cloud-init[904]: 2025-04-15 21:40:06,142 - main.py[ERROR]: failed stage init\n[  116.673607] cloud-init[904]: Traceback (most recent call last):\n[  116.675548] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py\", line 922, in status_wrapper\n[  116.677532] cloud-init[904]:     ret \u003d functor(name, args)\n[  116.678942] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py\", line 553, in main_init\n[  116.680752] cloud-init[904]:     init.apply_network_config(bring_up\u003dbring_up_interfaces)\n[  116.682410] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/stages.py\", line 1059, in apply_network_config\n[  116.684252] cloud-init[904]:     netcfg, src \u003d self._find_networking_config()\n[  116.685731] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/stages.py\", line 993, in _find_networking_config\n[  116.687661] cloud-init[904]:     if self.datasource and hasattr(self.datasource, \"network_config\"):\n[  116.689493] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceConfigDrive.py\", line 173, in network_config\n[  116.691461] cloud-init[904]:     self._network_config \u003d openstack.convert_net_json(\n[  116.692976] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/sources/helpers/openstack.py\", line 774, in convert_net_json\n[  116.695369] cloud-init[904]:     raise ValueError(\"Unable to find a system nic for %s\" % d)\n[  116.697448] cloud-init[904]: ValueError: Unable to find a system nic for {\u0027type\u0027: \u0027physical\u0027, \u0027mtu\u0027: 1450, \u0027subnets\u0027: [{\u0027netmask\u0027: \u0027255.255.255.192\u0027, \u0027type\u0027: \u0027dhcp4\u0027}, {\u0027netmask\u0027: \u0027ffff:ffff:ffff:ffff::\u0027, \u0027type\u0027: \u0027ipv6_slaac\u0027}], \u0027mac_address\u0027: \u0027fa:16:3e:43:18:30\u0027}\n[  116.700463] cloud-init[904]: failed run of stage init\n[  116.701873] cloud-init[904]: ------------------------------------------------------------\n[  116.703491] cloud-init[904]: Traceback (most recent call last):\n[  116.705005] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py\", line 922, in status_wrapper\n[  116.706838] cloud-init[904]:     ret \u003d functor(name, args)\n[  116.708381] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py\", line 553, in main_init\n[  116.709821] cloud-init[904]:     init.apply_network_config(bring_up\u003dbring_up_interfaces)\n[  116.711400] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/stages.py\", line 1059, in apply_network_config\n[  116.713045] cloud-init[904]:     netcfg, src \u003d self._find_networking_config()\n[  116.714624] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/stages.py\", line 993, in _find_networking_config\n[  116.716517] cloud-init[904]:     if self.datasource and hasattr(self.datasource, \"network_config\"):\n[  116.718038] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceConfigDrive.py\", line 173, in network_config\n[  116.720430] cloud-init[904]:     self._network_config \u003d openstack.convert_net_json(\n[  116.722377] cloud-init[904]:   File \"/usr/lib/python3.9/site-packages/cloudinit/sources/helpers/openstack.py\", line 774, in convert_net_json\n[  116.724393] cloud-init[904]:     raise ValueError(\"Unable to find a system nic for %s\" % d)\n[  116.725806] cloud-init[904]: ValueError: Unable to find a system nic for {\u0027type\u0027: \u0027physical\u0027, \u0027mtu\u0027: 1450, \u0027subnets\u0027: [{\u0027netmask\u0027: \u0027255.255.255.192\u0027, \u0027type\u0027: \u0027dhcp4\u0027}, {\u0027netmask\u0027: \u0027ffff:ffff:ffff:ffff::\u0027, \u0027type\u0027: \u0027ipv6_slaac\u0027}], \u0027mac_address\u0027: \u0027fa:16:3e:43:18:30\u0027}\n[  116.728394] cloud-init[904]: ------------------------------------------------------------\n\nSpecifically, the submitted MAC address is wrong.\n\nI guess what metalsmith has been doing is doing the bind to pre-bake the metadata, but then failing to account for ironic\u0027s own bind/unbind.\n\nA quick review of the metalsmith code seems to confirm this. It is generating all metadata by interacting with the neutorn API directly, as opposed to reconciling the metadata in advance utilizing Ironic\u0027s API (which is what nova does).\n\nhttps://github.com/openstack/metalsmith/blob/master/metalsmith/_network_metadata.py#L34","commit_id":"74916c06e143f2c563dfd95ddcc4294365faed88"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"267cf4f5cf4aac2b6e2808e6ac16a1bca416c184","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"74413341_f4660f83","updated":"2025-04-16 14:10:31.000000000","message":"So, this *does* break metalsmith at the moment. Ultimately, metalsmith is doing the wrong thing. Workflowing until I have a fix whipped up for Metalsmith.","commit_id":"74916c06e143f2c563dfd95ddcc4294365faed88"},{"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":"c49bacbabc09c01f97feb9c0f22973aa0a9f0faf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"dc1f103f_2d80b334","updated":"2025-05-05 22:34:54.000000000","message":"recheck snmp job failure","commit_id":"996ae7bcc9f5b54b5216e9fed27840da2b1c4ec7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ec9ad2ccc34af805d7e7573acd4a1b075e0804c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7b8319d0_09da2a86","updated":"2025-04-29 17:50:15.000000000","message":"recheck snmp job fixed","commit_id":"996ae7bcc9f5b54b5216e9fed27840da2b1c4ec7"},{"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":"40fa1495d43b9aad7a965977d0821b0c0f055f6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"deadfe7d_25f60f43","updated":"2025-05-13 21:03:35.000000000","message":"Reapplying previous approval; only change was removal of a Depends-On.","commit_id":"5146e0a0f85fa7202229ec1b063311afb9316810"}],"doc/source/admin/networking.rst":[{"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":"4025beb4d504a859c748a9a52729c90716f1c21c","unresolved":true,"context_lines":[{"line_number":166,"context_line":"   If the port was bound in *advance* of being submitted to Ironic,"},{"line_number":167,"context_line":"   and we must perform an initial bind, the port will be unbound and rebound."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Once we\u0027re handing the instance over to the user, Ironic sets the phsycial"},{"line_number":170,"context_line":"port\u0027s MAC address, and provides additional context, such as the physical"},{"line_number":171,"context_line":"switch and switchport metadata which may be used. This action effectively"},{"line_number":172,"context_line":"\"re-binds\" the port, and the port state in Neutron can change as a result"}],"source_content_type":"text/x-rst","patch_set":4,"id":"21fd0458_3fd088d0","line":169,"updated":"2025-04-09 22:12:21.000000000","message":"nit: spelling physical","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c04dcab43651e536a79679e72f3b34ef866963d2","unresolved":false,"context_lines":[{"line_number":166,"context_line":"   If the port was bound in *advance* of being submitted to Ironic,"},{"line_number":167,"context_line":"   and we must perform an initial bind, the port will be unbound and rebound."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Once we\u0027re handing the instance over to the user, Ironic sets the phsycial"},{"line_number":170,"context_line":"port\u0027s MAC address, and provides additional context, such as the physical"},{"line_number":171,"context_line":"switch and switchport metadata which may be used. This action effectively"},{"line_number":172,"context_line":"\"re-binds\" the port, and the port state in Neutron can change as a result"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d9383624_044699ac","line":169,"in_reply_to":"21fd0458_3fd088d0","updated":"2025-04-09 22:21:56.000000000","message":"Done","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"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":"4025beb4d504a859c748a9a52729c90716f1c21c","unresolved":true,"context_lines":[{"line_number":180,"context_line":"   physical network. Neutron port states indicating a failure when using the"},{"line_number":181,"context_line":"   ``flat`` interface is often more a sign of the ``networking-baremetal``"},{"line_number":182,"context_line":"   provided ML2 plugin to not be present. The ``neutron`` interface is far"},{"line_number":183,"context_line":"   more dynamic and the binding state can generally be relied upon if any"},{"line_number":184,"context_line":"   operator configured ML2 plugins are functional."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"If the host in in an *active* state:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"4744b274_d06a5e02","line":183,"updated":"2025-04-09 22:12:21.000000000","message":"I thought this wasn\u0027t true? That we were binding earlier than we were before?","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c04dcab43651e536a79679e72f3b34ef866963d2","unresolved":true,"context_lines":[{"line_number":180,"context_line":"   physical network. Neutron port states indicating a failure when using the"},{"line_number":181,"context_line":"   ``flat`` interface is often more a sign of the ``networking-baremetal``"},{"line_number":182,"context_line":"   provided ML2 plugin to not be present. The ``neutron`` interface is far"},{"line_number":183,"context_line":"   more dynamic and the binding state can generally be relied upon if any"},{"line_number":184,"context_line":"   operator configured ML2 plugins are functional."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"If the host in in an *active* state:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d32951a1_23a3128d","line":183,"in_reply_to":"4744b274_d06a5e02","updated":"2025-04-09 22:21:56.000000000","message":"I\u0027m not sure I understand your comment here. The attempt with this is to set the expectation around the port state for users, as requested.","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"df32779c8adbb8bc6446353716ac04627ceaffc9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"   physical network. Neutron port states indicating a failure when using the"},{"line_number":181,"context_line":"   ``flat`` interface is often more a sign of the ``networking-baremetal``"},{"line_number":182,"context_line":"   provided ML2 plugin to not be present. The ``neutron`` interface is far"},{"line_number":183,"context_line":"   more dynamic and the binding state can generally be relied upon if any"},{"line_number":184,"context_line":"   operator configured ML2 plugins are functional."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"If the host in in an *active* state:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0d3204b4_25f7e578","line":183,"in_reply_to":"bf211ee2_30a4d322","updated":"2025-04-16 15:43:27.000000000","message":"Done, text revised since the 9th to try and capture the reality here.","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"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":"eeb6287b01b845832dd5eb81317d8c1b21ee1bf6","unresolved":true,"context_lines":[{"line_number":180,"context_line":"   physical network. Neutron port states indicating a failure when using the"},{"line_number":181,"context_line":"   ``flat`` interface is often more a sign of the ``networking-baremetal``"},{"line_number":182,"context_line":"   provided ML2 plugin to not be present. The ``neutron`` interface is far"},{"line_number":183,"context_line":"   more dynamic and the binding state can generally be relied upon if any"},{"line_number":184,"context_line":"   operator configured ML2 plugins are functional."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"If the host in in an *active* state:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf211ee2_30a4d322","line":183,"in_reply_to":"d32951a1_23a3128d","updated":"2025-04-09 22:35:29.000000000","message":"I talked to Julia about this: essentially even though we *tell* neutron to bind the port early, it should *not* show as bound because the ML2 driver will not bind it. This means it\u0027ll only show as bound (in the neutron case) when the bind is successful. [or something along thse lines]","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"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":"f26f50f2edb0de5670a39f7f3155c7bf3583bd6e","unresolved":true,"context_lines":[{"line_number":186,"context_line":"   generally be relied upon if any operator configured ML2 plugins are"},{"line_number":187,"context_line":"   functional."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"If the host in in an *active* state:"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Ironic explicitly sets the physical port\u0027s MAC address for which the"},{"line_number":192,"context_line":"VIF will be bound, and is immediately attached to the host with any"}],"source_content_type":"text/x-rst","patch_set":13,"id":"63227112_bc99b1b5","line":189,"range":{"start_line":189,"start_character":7,"end_line":189,"end_character":17},"updated":"2025-05-06 08:58:07.000000000","message":"s/host in in/host is in/","commit_id":"996ae7bcc9f5b54b5216e9fed27840da2b1c4ec7"}],"ironic/common/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":"402da7cd023a8436bebdb4a9e6271a997d65b348","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        client \u003d get_client(context\u003dcontext)"},{"line_number":164,"context_line":"    try:"},{"line_number":165,"context_line":"        port \u003d client.get_port(port_id)"},{"line_number":166,"context_line":"        LOG.debug(port)"},{"line_number":167,"context_line":"        if not (port.binding_host_id is None or port.binding_host_id \u003d\u003d \u0027\u0027):"},{"line_number":168,"context_line":"            is_bound \u003d True"},{"line_number":169,"context_line":"    except openstack_exc.ResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3b337abf_61a4a1c3","line":166,"updated":"2025-04-18 19:42:56.000000000","message":"leftover from debugging?","commit_id":"4e661fd01a614de41389dd506c63975e949f8362"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"320f40d5d70f132ffb379ff2417bb50ea0f08908","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        client \u003d get_client(context\u003dcontext)"},{"line_number":164,"context_line":"    try:"},{"line_number":165,"context_line":"        port \u003d client.get_port(port_id)"},{"line_number":166,"context_line":"        LOG.debug(port)"},{"line_number":167,"context_line":"        if not (port.binding_host_id is None or port.binding_host_id \u003d\u003d \u0027\u0027):"},{"line_number":168,"context_line":"            is_bound \u003d True"},{"line_number":169,"context_line":"    except openstack_exc.ResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":12,"id":"f6b6eab2_11cd911a","line":166,"in_reply_to":"3b337abf_61a4a1c3","updated":"2025-04-21 14:51:15.000000000","message":"Yup, Doh!","commit_id":"4e661fd01a614de41389dd506c63975e949f8362"}],"ironic/drivers/modules/network/common.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"8b0f647b51f9fa67af3d560e730409ac77ccf869","unresolved":true,"context_lines":[{"line_number":621,"context_line":"        else:"},{"line_number":622,"context_line":"            # Sends *just* a host_id to trigger neutron to do the initial"},{"line_number":623,"context_line":"            # address work (if needed...)"},{"line_number":624,"context_line":"            update_port_host_id(task, port_like_obj)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def vif_detach(self, task, vif_id):"},{"line_number":627,"context_line":"        \"\"\"Detach a virtual network interface from a node"}],"source_content_type":"text/x-python","patch_set":2,"id":"00c38b50_35c34ea4","line":624,"range":{"start_line":624,"start_character":38,"end_line":624,"end_character":51},"updated":"2025-04-08 18:22:23.000000000","message":"looks like we need just vif_id,","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d142dbc44b34282305a56517be0629f4a41b55f5","unresolved":true,"context_lines":[{"line_number":621,"context_line":"        else:"},{"line_number":622,"context_line":"            # Sends *just* a host_id to trigger neutron to do the initial"},{"line_number":623,"context_line":"            # address work (if needed...)"},{"line_number":624,"context_line":"            update_port_host_id(task, port_like_obj)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def vif_detach(self, task, vif_id):"},{"line_number":627,"context_line":"        \"\"\"Detach a virtual network interface from a node"}],"source_content_type":"text/x-python","patch_set":2,"id":"97672743_7a61b887","line":624,"range":{"start_line":624,"start_character":38,"end_line":624,"end_character":51},"in_reply_to":"00c38b50_35c34ea4","updated":"2025-04-09 13:43:29.000000000","message":"Good point!","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"df32779c8adbb8bc6446353716ac04627ceaffc9","unresolved":false,"context_lines":[{"line_number":621,"context_line":"        else:"},{"line_number":622,"context_line":"            # Sends *just* a host_id to trigger neutron to do the initial"},{"line_number":623,"context_line":"            # address work (if needed...)"},{"line_number":624,"context_line":"            update_port_host_id(task, port_like_obj)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def vif_detach(self, task, vif_id):"},{"line_number":627,"context_line":"        \"\"\"Detach a virtual network interface from a node"}],"source_content_type":"text/x-python","patch_set":2,"id":"37a9568c_3dd012d5","line":624,"range":{"start_line":624,"start_character":38,"end_line":624,"end_character":51},"in_reply_to":"97672743_7a61b887","updated":"2025-04-16 15:43:27.000000000","message":"Done","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"04121a07da6561cf08100f48728e5b6e989b1a36","unresolved":true,"context_lines":[{"line_number":330,"context_line":"    # except if deferred addressing is the case, then that should"},{"line_number":331,"context_line":"    # trigger."},{"line_number":332,"context_line":"    port_attrs \u003d {\u0027binding:vnic_type\u0027: neutron.VNIC_BAREMETAL,"},{"line_number":333,"context_line":"                  \u0027binding:host_id\u0027: node.uuid,"},{"line_number":334,"context_line":"                  \u0027binding:profile\u0027: {}}"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7d8c9581_ad6bde8b","line":333,"updated":"2025-04-09 16:13:21.000000000","message":"Not this might fail if the port has already by bound in the past, and its currently in the wrong segment.\n\nNova has some scheduling logic to try and match pre-bound ports to places with the correct segment here:\nhttps://github.com/openstack/nova/blob/6e37eeaeb3cdc64d39d20e49ab71b559a5b5e87b/nova/scheduler/request_filter.py#L291","commit_id":"e0ce573fffc0f2650f6dbd9720bf040d8b3348f0"},{"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":"1ed717555082f7654da74205124b15e1723231f6","unresolved":true,"context_lines":[{"line_number":330,"context_line":"    # except if deferred addressing is the case, then that should"},{"line_number":331,"context_line":"    # trigger."},{"line_number":332,"context_line":"    port_attrs \u003d {\u0027binding:vnic_type\u0027: neutron.VNIC_BAREMETAL,"},{"line_number":333,"context_line":"                  \u0027binding:host_id\u0027: node.uuid,"},{"line_number":334,"context_line":"                  \u0027binding:profile\u0027: {}}"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5c2205cd_9690e6f0","line":333,"in_reply_to":"32bd30de_0bb012b4","updated":"2025-04-30 20:35:29.000000000","message":"Is this still an outstanding issue? Or is this patch good to go once CI cooperates","commit_id":"e0ce573fffc0f2650f6dbd9720bf040d8b3348f0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c309722b1868e67d88f585ba10fb53460bf4ca70","unresolved":true,"context_lines":[{"line_number":330,"context_line":"    # except if deferred addressing is the case, then that should"},{"line_number":331,"context_line":"    # trigger."},{"line_number":332,"context_line":"    port_attrs \u003d {\u0027binding:vnic_type\u0027: neutron.VNIC_BAREMETAL,"},{"line_number":333,"context_line":"                  \u0027binding:host_id\u0027: node.uuid,"},{"line_number":334,"context_line":"                  \u0027binding:profile\u0027: {}}"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1d17ca4f_8b10add7","line":333,"in_reply_to":"5c2205cd_9690e6f0","updated":"2025-05-05 18:26:46.000000000","message":"I *think* I\u0027ve resolved this. Pre-bound should no longer be an issue because we completely unbind the port now. Scheduling and ultimately the matching of the node should have taken place upfront with the physical network structure (at least, should be happening in placement if networking-baremetal is loaded up and it\u0027s agent is running.\n\nThis was noted when I was hitting failures with metalsmith.","commit_id":"e0ce573fffc0f2650f6dbd9720bf040d8b3348f0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de97cc62acc756b20d7d05ac4cb7025d08e47baf","unresolved":true,"context_lines":[{"line_number":330,"context_line":"    # except if deferred addressing is the case, then that should"},{"line_number":331,"context_line":"    # trigger."},{"line_number":332,"context_line":"    port_attrs \u003d {\u0027binding:vnic_type\u0027: neutron.VNIC_BAREMETAL,"},{"line_number":333,"context_line":"                  \u0027binding:host_id\u0027: node.uuid,"},{"line_number":334,"context_line":"                  \u0027binding:profile\u0027: {}}"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"32bd30de_0bb012b4","line":333,"in_reply_to":"7d8c9581_ad6bde8b","updated":"2025-04-09 17:44:42.000000000","message":"Yeah, it does, that why I -1\u0027ed it becuase metalsmith basically pre-binds it. \u003cinsert scream here\u003e. I the reality is we\u0027re going to have to detach and re-attach it, and yeah. Joy!\n\nI think, if it is somehow in the wrong segment though, it might be in case where there is nothing to be done because later binding can\u0027t really fix that. I think the key is going to be to raise an exception at that point.","commit_id":"e0ce573fffc0f2650f6dbd9720bf040d8b3348f0"}],"releasenotes/notes/initial-port-bind-5a1ffb083f6631d4.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":"51ceafaccad15b47d6ce4c35c9f66003c0afca5e","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    entering an ``ACTIVE`` state. The state may change later on as the port"},{"line_number":8,"context_line":"    is updated as part of any workflow actions with supplied port configuration"},{"line_number":9,"context_line":"    information to allow ML2 plugins to finalize any port binding actions, when"},{"line_number":10,"context_line":"    appropriate."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"24bd0b64_ae766f44","line":10,"updated":"2025-04-08 18:11:57.000000000","message":"I don\u0027t know how well documented this feature is generally, but if there\u0027s a doc about this, we should ensure to warn about the binding being active so early in the deploy process.\n\nPreserving feedback from review jam: a sequence diagram of traffic between ironic\u003c-\u003eneutron would make this much easier to understand.","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d142dbc44b34282305a56517be0629f4a41b55f5","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    entering an ``ACTIVE`` state. The state may change later on as the port"},{"line_number":8,"context_line":"    is updated as part of any workflow actions with supplied port configuration"},{"line_number":9,"context_line":"    information to allow ML2 plugins to finalize any port binding actions, when"},{"line_number":10,"context_line":"    appropriate."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"4e6867d9_53961bd9","line":10,"in_reply_to":"24bd0b64_ae766f44","updated":"2025-04-09 13:43:29.000000000","message":"I didn\u0027t end up doing a sequence diagram, but I fixed the docs. 😊","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"df32779c8adbb8bc6446353716ac04627ceaffc9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    entering an ``ACTIVE`` state. The state may change later on as the port"},{"line_number":8,"context_line":"    is updated as part of any workflow actions with supplied port configuration"},{"line_number":9,"context_line":"    information to allow ML2 plugins to finalize any port binding actions, when"},{"line_number":10,"context_line":"    appropriate."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ebf81f37_bc71853d","line":10,"in_reply_to":"4e6867d9_53961bd9","updated":"2025-04-16 15:43:27.000000000","message":"Done","commit_id":"529bb99217dc01b90f87a5b4a77be3fca33464d1"},{"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":"4025beb4d504a859c748a9a52729c90716f1c21c","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    appropriate. This logic *also* detaches any previously bound VIF which might"},{"line_number":11,"context_line":"    have been supplied to Ironic. To have done so in advance of attachment is"},{"line_number":12,"context_line":"    erroneous behavior, but was found in the wild and this patch handles that"},{"line_number":13,"context_line":"    case as such."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"a3c4b7d0_ea1d50a0","line":13,"updated":"2025-04-09 22:12:21.000000000","message":"Should this be bug: instead, and link to mnaser\u0027s bug?","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"df32779c8adbb8bc6446353716ac04627ceaffc9","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    appropriate. This logic *also* detaches any previously bound VIF which might"},{"line_number":11,"context_line":"    have been supplied to Ironic. To have done so in advance of attachment is"},{"line_number":12,"context_line":"    erroneous behavior, but was found in the wild and this patch handles that"},{"line_number":13,"context_line":"    case as such."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"cbefc479_e691a280","line":13,"in_reply_to":"8ebc29df_5ef6d416","updated":"2025-04-16 15:43:27.000000000","message":"Done","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c04dcab43651e536a79679e72f3b34ef866963d2","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    appropriate. This logic *also* detaches any previously bound VIF which might"},{"line_number":11,"context_line":"    have been supplied to Ironic. To have done so in advance of attachment is"},{"line_number":12,"context_line":"    erroneous behavior, but was found in the wild and this patch handles that"},{"line_number":13,"context_line":"    case as such."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8ebc29df_5ef6d416","line":13,"in_reply_to":"a3c4b7d0_ea1d50a0","updated":"2025-04-09 22:21:56.000000000","message":"doesn\u0027t entirely fix his bug, this is only a first step overall. Specifically, its not a bug in Ironic, its a bug in use pattern we can see in the wild which is not really anyone\u0027s fault. We just have to handle it.","commit_id":"04d3c015c84797f8d35d6263bb44dd98018a7aae"}]}
