Tuesday, 2026-10-06

cardoeJayF: clif: The issue is that https://www.irccloud.com/pastebin/lKP1f6dV/ won't actually work. Looking for some ideas on how to make this work.01:48
cardoeSo lets say I have 2 ports with category = network and 1 port group with both of those and its category is network and I run the following01:49
cardoeopenstack baremetal node vif attach 784e38e1-62c8-4d0f-8c0b-210eecb3a270 f7dac560-6533-4729-b8fa-b8c05cae0405 --port-uuid 56f0e289-8f4a-44d9-82e5-083c1da3153901:49
cardoewhere 56f0e is ONE of the two ports in the port group. It will actually bind the port group first and then it will attempt to bind the port and fail. Since with TBN that all happens in 1 API call, the end result is a failure.01:51
cardoeI see two issues here. It attempted two bindings. The second issue is that it didn't respect my request.01:51
cardoeNow I turn that around the other way and do01:51
cardoeopenstack baremetal node vif attach 784e38e1-62c8-4d0f-8c0b-210eecb3a270 06edec49-b86b-4359-b61a-32e996c44c9e --portgroup-uuid 17ad8171-5e62-4332-890e-bb552c98283e01:52
cardoeIt does indeed bind to the port group but then it attempts to bind to the individual port and once again it fails the vif_attach() call.01:52
cardoeSo yes, there's residual binding info like you suggested JayF. Just it's actual binding info. 01:54
opendevreviewDoug Goldstein proposed openstack/ironic master: Only execute the first matching TBN action on VIF attach  https://review.opendev.org/c/openstack/ironic/+/100889702:19
opendevreviewDoug Goldstein proposed openstack/ironic master: Raise an error for unhandled TBN actions on VIF attach  https://review.opendev.org/c/openstack/ironic/+/100889802:19
* cardoe table flips.02:32
cardoehttps://review.opendev.org/c/openstack/ironic/+/1005807 results in a 500 error in the TBN path. 'Proxy' object has no attribute 'close' (HTTP 500)02:32
opendevreviewNuutti Hakala proposed openstack/ironic-python-agent-builder master: Disable Glean DHCP fallback by default  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/100891704:44
opendevreviewRiccardo Pittau proposed openstack/bifrost stable/2026.2: [CI] Upgrade non-SLURP 2026.2 from 2026.1  https://review.opendev.org/c/openstack/bifrost/+/100785507:39
*** amorin_ is now known as amorin07:45
opendevreviewRiccardo Pittau proposed openstack/bifrost stable/2026.2: [CI] Upgrade non-SLURP 2026.2 from 2026.1  https://review.opendev.org/c/openstack/bifrost/+/100785509:48
opendevreviewElod Illes proposed openstack/ironic-python-agent-builder unmaintained/2023.1: DNM: CI health test  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/100902010:57
TheJuliagood morning13:32
opendevreviewThomas Goirand proposed openstack/ironic master: Mock cache_firmware_components() in redfish tests  https://review.opendev.org/c/openstack/ironic/+/100904613:34
* cardoe flips a table at TheJulia.13:37
TheJuliacardoe: what did I do?13:37
TheJuliaShields currently reading 98%13:37
cardoeI dunno. Your name was on 100580713:37
TheJuliauhhh, good, bad, or ugly?13:38
TheJuliain other words, do you call the FSM or Cthulhu upon me?13:39
JayFWe should figure out what we need to do in CI to cause it to fail properly13:40
JayFIt seems like TBN is pretty breakable given our current testing approaches13:40
zigoo/13:41
zigoGood morning Ironic.13:41
TheJuliaOkay, I feel like I'm missing context to the discussion13:41
TheJuliaOH13:41
zigoCan someone have a look at my patch above?13:41
zigoNot sure we should keep all the comments I wrote in the test suite though...13:42
TheJuliacardoe: I get it now, I'll dig at it13:42
iurygregory_good morning13:43
TheJuliazigo: sorry about that!13:44
opendevreviewClif Houck proposed openstack/ironic stable/2026.2: Don't raise if an object's attribute is None in _retrieve_attribute  https://review.opendev.org/c/openstack/ironic/+/100775713:49
TheJuliacardoe: I've got one annoying emergent thing going on first thing htis morning, once that is sorted I'll be on top of that issue13:49
opendevreviewJulia Kreger proposed openstack/ironic master: Add configurable namespace for Kubernetes console provider  https://review.opendev.org/c/openstack/ironic/+/100905313:51
TheJuliastevebaker[m]: ^^^^13:52
TheJuliaMay that be useful based on the discussion your going to wake up to.13:52
TheJuliacardoe: do your two patches from yesterday completley suppress that issue, or is more needed?13:58
* TheJulia needs more coffee but thinking its chicken/egg13:59
opendevreviewElod Illes proposed openstack/ironic-python-agent-builder unmaintained/2024.1: DNM: CI health test  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/100905613:59
cardoeI had to delete client.close() in the vif_attach14:04
TheJulia....14:05
cardoeJayF: yeah the CI not catching this stuff is what's concerning to me14:05
TheJuliaoh my14:05
TheJuliawell, we don't drive CI testing with TBN which is more so an issue14:05
TheJuliacardoe: did you just have that one bit of error text, or get an entire backtrace?14:06
cardoeThat's actually all I got back.14:08
cardoeah hang on it's in the api logs14:09
TheJuliak14:10
TheJuliaI'm digging on it now that I don't have a epic sinus headache and have sprint planning14:10
cardoehttps://www.irccloud.com/pastebin/Y43AiDRl/Logs-2026-10-06%2009_09_36.txt14:11
TheJuliaI guess the whole idea behind close() is more so make it explicit so we're just "done", instead of hoping gc eventually frees it14:11
cardoeWell we call get_client() so many times and don't pass the client around. I'm not understanding why.14:12
TheJuliaDiffering times, plus just the evolution14:12
TheJuliasomehow you got a bare client on the proxy, funky...14:13
cardoeSo I'm running stable/2026.1 plus https://review.opendev.org/c/openstack/ironic/+/1008516 and https://review.opendev.org/c/openstack/ironic/+/1008897 plus the delete of client.close()14:14
cardoebut that could be that we didn't put the wrapper into 2026.1 yet.14:14
TheJuliaI think it should be, but... ugh14:15
cardoeah yes it's not been backported14:16
cardoeSo that's on me locally backporting14:16
cardoeI didn't backport that wrapper locally but when I grabbed those 2 patches it included client.close() which it should not have.14:16
TheJuliaokay, yeah, claude just sort of came to that conclusion with what I had given it so far14:19
TheJuliaAhhh!, okay14:20
*** elodille1 is now known as elodilles14:23
cardoeI intended to take 1/2 days this week since we're in Florida and so just trying to juggle my time so I did a bad job backporting it.14:28
cardoeSo I'm hoping that someone else can look at https://bugs.launchpad.net/ironic/+bug/2169647 and agree if my conclusion is correct?14:34
cardoeReading the TBN docs we've got 3 different pages. They roughly all say the same thing but not fully and refer to each other. I'd like to merge those.14:35
TheJulia++14:39
opendevreviewElod Illes proposed openstack/ironic-python-agent-builder stable/2025.1: DNM: CI health test  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/100906514:41
opendevreviewMerged openstack/ironic master: Mock cache_firmware_components() in redfish tests  https://review.opendev.org/c/openstack/ironic/+/100904614:42
JayFclif: ^^ cardoe's bug 14:42
clifO14:44
clifI'll take a look14:44
clifI thought the methods I wrote filter out attached stuff, but maybe I didn't filter out attached vifs14:45
TheJuliathats my reading of the other issue noted and the basic gist of one of cardoe's changes14:46
clifoh does cardoe already have a change up to address attached vifs being reconsidered/attached more than once?15:10
clifI see it now15:11
cardoeclif: yeah does it make sense?15:27
cardoeOnly attach once? but multiple rules can match15:28
cardoeI still don't know if this is a bug or not but if I had a port group created for a node and it has 0 ports assigned to it... it'll attach the port group15:28
clifit does, but it also means that things like 'min_count' and 'max_count' are essentially nonsense when it applies to attach_{port,portgroup}15:29
clifbecause of the way TBN has been hammered into the existing flow15:29
clifseems like a bug? probably15:29
clifshould empty portgroups exist?15:29
cardoeWell I'm cool with us attaching multiple times in on vif_attach() flow but we'd need to now understand that this $THING is already attached and skip that. Which would mean we'd have to re-evaluate the rules or actions after each action.15:30
cardoeWell you have to create a port group empty via the API first and then attach ports to it. TBN's dynamic creation even does that.. So an empty port group can exist.15:31
cardoeThe other "I dunno if that's a bug" is if I as the user want to attach to a port and not a port group, the existing documented way is to pass "--port-uuid" to the vif attach but TBN ignores those inputs entirely.15:32
clifcardoe: the way it is structured now we can't attach muiltiple times in vif_attach because we agreed that it should only consider one vif at a time15:32
cardoeoh true15:32
cardoeSo then we should do my patch to remove the for loop.15:33
clifprobably15:33
clifit is right given the current state of things15:33
opendevreviewJulia Kreger proposed openstack/ironic master: Close neutron client connections on error paths  https://review.opendev.org/c/openstack/ironic/+/100907815:34
TheJuliacardoe: ^ some cleanup on the handling but more structural handling than anything else15:34
clifbut I'm not really happy with it because I feel we should reach a state where TBN can plan everything at once, considering all ports and vifs avaiable against the applicable traits15:34
clifcurrently feels like a shadow of what it was meant to be15:35
JayFThe best laid plans are run into the rocks by having to be stuffed through the teeny tiny API interfaces invented back when "cloud" was still a word people said with the same disdain they say "AI" now15:35
JayFspaghettification of features as it crosses the event horizon of the API15:36
cardoeclif: I agree. I'd like a attach_all_vifs()15:37
cardoeBut right now vif_attach() just takes 1 VIF only.15:38
clifyep15:38
cardoeLike if I have 4 VIFs, I would like to pass them all in 1 go.15:38
clifagreed15:39
JayFI think that's reflective of an API issue, yeah?15:39
JayFlike the API is "attach one vif" shaped(?)15:39
* TheJulia is worried about spaghettification and who is running the temporal loom...15:40
clifJayF: yea15:41
clifthat's what we ran into trying to hook TBN into the existing flow15:41
cardoeSo I propose roughly... let's get the existing flow working properly through TBN.15:43
clifyep, I'm just cranky15:44
* JayF checks off the "[x] getting cranky about API interfaces" box from the path to core bingo card for clif 15:44
opendevreviewMerged openstack/ironic stable/2026.1: Fix TBN Portgroup creation accessing nonexistent vendor field  https://review.opendev.org/c/openstack/ironic/+/100888815:50
cardoeLet's get to the point that we can deprecate the old flow and run everything through TBN.16:01
cardoeOnce we're comfortable enough there then we can add an attach_all_vifs() API which will realize the true TBN goals?16:02
JayFTBN doesn't even work with non-neutron networks, fwiw16:04
JayFso we need to figure that out if you wanna make it the one path16:04
cardoeJayF: maybe my suggestion doesn't make sense then... I was just thinking getting to the place that we can reduce the matrix down.16:08
cardoebefore expanding it again16:08
JayFI'm just saying there are bridges to build before we get there16:09
JayFand saying "neutron's default behavior is now encoded in a default TBN config" might be a more achievable goal16:10
cardoeYeah that makes sense.16:30
JayFhttps://zuul.opendev.org/t/openstack/build/43c277ae07884b088447c0ee34888105 https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/1007320 17:13
JayFis complaining there's no yum-utils in debian17:13
JayFI think there might be some real upstream failure issue that I am not digging into right now17:13
opendevreviewJay Faulkner proposed openstack/ironic master: Reject Glance encrypted images during validation  https://review.opendev.org/c/openstack/ironic/+/100831417:16
opendevreviewJay Faulkner proposed openstack/ironic master: Reject Glance encrypted images during validation  https://review.opendev.org/c/openstack/ironic/+/100831417:17
cardoeanother possible TBN oddity... I need to run to join the family cause PTO and all... but17:50
cardoeopenstack server create failed and the port group didn't have category = network set on it but the ports did17:50
cardoethe vif_attach() from nova worked but then we hit https://github.com/openstack/ironic/blob/stable/2026.1/ironic/drivers/modules/network/neutron.py#L19417:51
cardoeI'll see if I have cycles to look more tonight17:51
cardoeA quick glance at the code... TBN allows the ports as part of a port group to be considered17:54
cardoeBut the plug_port_to_tenant_network() explicitly removes ports that are part of a port group from consideration17:54
cardoeso vif_attach() worked by attaching to an individual port and not the port group because category wasn't set. But then the build failed later because plug_port_to_tenant_network excluded the ports part of a port group.17:55
cardoeSo we probably need to decide which direction is correct.17:55
JayFwe should not be considering members of a static portgroup as individual ports in TBN18:06
JayFbecause we can't double dip18:06
opendevreviewMerged openstack/ironic stable/2026.2: Don't raise if an object's attribute is None in _retrieve_attribute  https://review.opendev.org/c/openstack/ironic/+/100775718:32
cardoeJayF: agreed. I'll file a bug to that effect.19:24
cardoeSo another question... "port group" or "portgroup" can we decide on terminology?19:24
opendevreviewJulia Kreger proposed openstack/ironic master: Change image_server_auth_permit_unknown_hosts default to False  https://review.opendev.org/c/openstack/ironic/+/99990720:08
opendevreviewJulia Kreger proposed openstack/ironic master: Guard checksum URL host and cap checksum file size  https://review.opendev.org/c/openstack/ironic/+/100911420:08
TheJuliacardoe: I can see the difference, but is there an example to ground discussions upon ?20:11
cardoewell the CLI command is "baremetal port group". Some functions are blah_port_group() and some are blah_portgroup()20:13
cardoeTBN uses portgroup in its config and docs. And then inspection rules use "port group".20:14
cardoeI was just trying to fix up the docs. Any user facing things I would likely make some aliases to the one pattern we'd get behind.20:15
TheJuliaso, cli is for cli reasons20:16
TheJuliaunder the hood, acting on portgroups themselves, since they are specific api resource, and all, I think ought to be consistent on portgroup20:17
opendevreviewDoug Goldstein proposed openstack/python-ironicclient master: Add --instance option to baremetal node list  https://review.opendev.org/c/openstack/python-ironicclient/+/100911520:20
opendevreviewDoug Goldstein proposed openstack/python-ironicclient master: Fix baremetal port group create --node with node names  https://review.opendev.org/c/openstack/python-ironicclient/+/100911620:20
opendevreviewDoug Goldstein proposed openstack/python-ironicclient master: Add baremetal port group add and remove commands  https://review.opendev.org/c/openstack/python-ironicclient/+/100911720:20
opendevreviewJulia Kreger proposed openstack/ironic master: trivial: note that it is any shim, not red hat shim.  https://review.opendev.org/c/openstack/ironic/+/100912220:34
opendevreviewJulia Kreger proposed openstack/ironic-python-agent-builder master: Don't require epel for dib build  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/100912521:01
shermanmpossibly a silly question, but if I'm running into what I think are bugs in the nova ironic driver, should I ask about it here or in the nova irc?21:13
TheJuliaLikely both places, whats up?21:28
shermanmI'm running into issues where if a user deletes their instance during provisioning, or if the ironic conductor gets restarted, we start seeing nodes left in state "active" or "deploy_failed" with instance_uuid still set, but no matching nova instance, and it never gets resolved until an operator calls undeploy.21:29
shermanmI filed https://bugs.launchpad.net/nova/+bug/2169200 already for why nova doesn't clean it up eventually, but I think I've found a few different cases that can trigger the problem21:30
TheJuliashermanm: so the first is likely we never got the abort request across or the abort happened when its locked out21:30
TheJuliathe latter issue on that yeah, it requires reconciling somewhere since somewhere along the way we didn't get or couldn't process the undeploy reqeust21:31
TheJuliainstance_uuid still being set is the big give away, I'm assuming what is happening is the node is just locked for a long while processing... something.21:32
shermanmthanks, I'll mention over there too, and I can add extra info to the bug report now that I keep finding different ways to trigger the problem21:36
TheJuliaThe root issue is ironic has a lock held for a while, We don't know what or why, but nova-compute's ironic driver is supposed to try for a long time to remove it21:36
shermanmwell I found at least one place where I don't think nova's driver retries at atll21:36
TheJuliathat is obviously failing, so you sort of need to find a solid example of what is happening (or three) and we need to go from there21:36
shermanmI think I can whip up a reproducer21:37
cardoeshermanm: I’m happy to try and get some patches in.21:37
TheJuliashermanm: did the cleanup get chagned or is it just gone now21:38
TheJulia(read the bug you opened)21:38
shermanmthe cleanup broke when sharding was added21:38
TheJuliaahh.21:39
shermanmbecause once the instances are removed from the nova side, they're not in the cache anymore21:39
shermanmhttps://opendev.org/openstack/nova/src/commit/b5c2fded48f03fd5887256e3a2dd151a4819e73d/nova/virt/ironic/driver.py#L816-L83221:40
TheJuliayup, makes sense now21:40
shermanmthe problem I think is figuring out how to make only the correct shard attempt the cleanup21:40
shermanmwithout breaking anything else that reads that cache21:40
TheJulia... I think the fix is almost going to need to look at deleted instances from the last x time which mapped to it and mapped to nodes to do reconcile21:42
TheJuliawhich deja vu, I think i floated to saga ages ago21:42
shermanmdoes it have to look at deleted instances, or can it just check what exists *now* on the ironic side and check whether each has a match in nova?21:43
TheJuliaGreat question21:43
shermanmmy workaround for the moment is a cronjob that basically does that via the ironic and nova apis21:44
shermanmbut we're in a single conductor, all nova-managed case, so there's clearly a bunch of edge cases not accounted for21:44
TheJuliathinking outloud: If I'm surfacing all nodes which map to my nova-compute, and I don't have any other users to conflict with, perhaps. But the key why you want to look at the deleted instances is to verify it was an orpahned instance and can be released21:44
shermanme.g. instance_uuid used to map to something, instead of being totally bogus?21:45
TheJuliathat deleted instance's UUID would still be stamped on the node21:45
TheJulianow, you left with nodes in deploy_fail also shouldn't really happen21:45
TheJuliashermanm: it has always mapped to something21:45
TheJuliathe key is if there is a record of the same uuid in nova's instances records21:45
shermanmright, I mean that if instance_uuid is set, and doesn't map to anything in nova now, when do we care if/when it used to map to something21:46
TheJuliaironic itself has no way of knowing/reconciling that short of something like deferred actions getting recorded to nuke the deployment later or we figure out why your its not getting cleared out to begin with21:47
cardoeTheJulia: https://bugs.launchpad.net/ironic/+bug/2169761 thoughts? feels?21:48
TheJuliacardoe: so, static portgroup exists, you attempt to deploy but tbn is choosing ports in that portgroup right now?21:49
cardoeYes22:24
TheJuliaYeah, I'd concur with that then22:30
JayFshermanm: I'm not working right this second, please file a bug with details against both nova and ironic, please cc or assign me22:56
shermanm@JayF +1, will do22:57
opendevreviewMerged openstack/ironic master: trivial: note that it is any shim, not red hat shim.  https://review.opendev.org/c/openstack/ironic/+/100912223:28
opendevreviewMerged openstack/ironic master: Only execute the first matching TBN action on VIF attach  https://review.opendev.org/c/openstack/ironic/+/100889723:55

Generated by irclog2html.py 4.1.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!