Tuesday, 2026-01-13

stevebaker[m]cool thanks. I'll dig into it00:00
*** darmach4 is now known as darmach02:07
opendevreviewJacob Anders proposed openstack/python-ironicclient master: Add support for node health status field  https://review.opendev.org/c/openstack/python-ironicclient/+/96705509:45
opendevreviewJacob Anders proposed openstack/python-ironicclient master: Add support for node health status field  https://review.opendev.org/c/openstack/python-ironicclient/+/96705509:49
dtantsurI remember we discussed allowing "abort" on DEPLOYWAIT, have there been any objections? https://bugs.launchpad.net/ironic/+bug/213831013:50
TheJuliadtantsur: I think the consensus was "just do it, it makes sense the more we think about it", but a lack of time to cycle back14:28
TheJuliaI remember we had a chorus teeth gnashing, but that quickly ceased when the whole idea sunk in14:29
dtantsurI can probably unleash claude on it. I'm quite annoyed by limited ways of getting out of states.14:42
* dtantsur unleashes claude and gets back to other business14:44
TheJuliaso, I talked to nobodycam recently and he basically expressed furstration that we don't have a force state reset14:48
dtantsurforce state reset is such a thing.. once you get into details, it all falls apart14:52
dtantsurlike the resistence that https://bugs.launchpad.net/ironic/+bug/2133499 saw14:52
* dtantsur looking for food, brb14:53
TheJuliaEh, I think the pushback there was more because it seems logic/workflow with similar effects, more than anything else. Not... "My machine got bricked in this weird state, its fixed now" recovery15:00
JayFMy biggest concern is if we get a reset state like Nova has is that it will be the hammer and operators will see everything as a nail.15:05
opendevreviewIury Gregory Melo Ferreira proposed openstack/ironic master: Fix firmware update failure when task remains in RUNNING state  https://review.opendev.org/c/openstack/ironic/+/97099815:18
opendevreviewJacob Anders proposed openstack/ironic master: Make post-firmware-update reboot conditional on component  https://review.opendev.org/c/openstack/ironic/+/96634415:20
opendevreviewIury Gregory Melo Ferreira proposed openstack/ironic master: Fix firmware update failure when task remains in RUNNING state  https://review.opendev.org/c/openstack/ironic/+/97099815:21
TheJuliaI wonder if we could "reset to prior or forward stable state" as options to force movement *instead* of just writing a blanket reset check15:28
TheJuliaMakes it harder to use as a giant hammer15:29
JayFOr I was thinking for say reset to a state like manageable15:41
JayFMaybe a choice between that or active?15:41
opendevreviewJacob Anders proposed openstack/ironic master: Fix firmware update failure when task remains in RUNNING state  https://review.opendev.org/c/openstack/ironic/+/97099815:53
opendevreviewJacob Anders proposed openstack/ironic master: Fix BIOS firmware not flashing when task completes before first poll  https://review.opendev.org/c/openstack/ironic/+/97099915:53
opendevreviewJacob Anders proposed openstack/ironic master: Fix BMC resource validation to catch all sushy exceptions  https://review.opendev.org/c/openstack/ironic/+/97100015:53
opendevreviewJacob Anders proposed openstack/ironic master: Fix heartbeat for steps with requires_ramdisk=False  https://review.opendev.org/c/openstack/ironic/+/97115215:53
opendevreviewJacob Anders proposed openstack/ironic master: Add retry logic for boot device changes during POST  https://review.opendev.org/c/openstack/ironic/+/97115015:55
dtantsurTheJulia: I quite literally suggested "reset to enroll" in that RFE :)16:03
dtantsurfrom there, it's two small jumps to "active"16:03
TheJuliaI'm not sure folks are even happy with two small jumps, tbh, but nobodycam is sort of in an edge case of trying to make the hardware better as well16:04
dtantsurI've wanted skip-step transitions for a long time, that would make it one :)16:05
dtantsurWithout all this, I have to write instructions for production usage that includes wiping the Metal3 database to unwedge a node, sooo... it's hard to make it worse16:06
TheJuliayeah, that is not ideal.16:06
dtantsurif you want to get horrified, my current case is something like: deploywait -> (abort) -> deployfail -> (set maintenance) -> (delete) -> enroll -> (manage) -> manageable -> (adopt) -> active16:09
dtantsurbut this is an odd case caused by OpenShift peculiarities. I don't necessarily want to implement $THAT in ironic.16:09
TheJuliaTaking a step back, why are we getting wedged in deploywait?16:12
dtantsurOpenShift (or really rather ACM) peculiarities :) The actual deployment is handled by another component in this case. If that component reports success and Ironic does not, you get in the situation where a node is deployed and is a part of the cluster, while Ironic is waiting for IPA to come back.16:13
dtantsurWhat I do want to have is a way out for hopelessly broken nodes or the process itself is hopelessly wedged (image download taking ages or something)16:13
JayFShouldn't the success signal to those other components be the success in ironic?16:18
JayFIt sounds like it would be impossible for that problem to happen unless you're trying to play around with having multiple sources of Truth16:18
dtantsurJayF: oh, well. I'm not drunk enough to have these discussion, but tl;dr for a long time Ironic and that other thing have been developing entirely independently16:18
TheJuliasome complicated history there16:18
dtantsurand for the past few years we're trying to find a way to integrate them16:18
dtantsuryeah16:18
JayFThis honestly is a case of the exact thing that I was worried about this tool being used for. Instead of fixing a base architectural issue, we're going to add a workaround to make it so that you don't have to16:19
TheJuliaI encourage the beverage and not discuss it at this point16:19
dtantsurheh16:19
TheJuliaWe can discuss another day when the brain is happier16:19
dtantsurJayF: I very explicitly said it's not the main use case for this tool16:19
dtantsurunless you have ideas how to make hardware never break..16:19
JayFTrust me, I work with people who know exactly how to make that happen, leading to all failures being caused by ironic /s /s 😂16:20
dtantsurheh16:20
JayFdtantsur: I have worked places where the presence of the Nova reset state tool was explicitly used to kick architectural issues with similar downsides down the road indefinitely16:20
JayFSo while I know that's not why you're building it now, I can't help but wonder if it already existed. Would someone have just used it and not worried about the larger problem16:21
dtantsurI'm literally in a conversation with a person right now, trying to find a way to fix this split-brain problem. But it won't help with "hardware went kaboom" issue, nor will it help customers who are already in a weird state now.16:21
dtantsurOh yeah. You know that Kubernetes has forced deletion of each and any resource? Imagine how much headache THAT causes for us? :)16:22
dtantsur"Cleaning is stuck for longer than I want to wait... force delete! Oh, why do things behave weirdly still? Why is something still happening to my machine??"16:22
dtantsurWhich is to say, in my world the option already exists, it just breaks ironic/metal3 relationship each time and causes bugs and escalations for me16:23
JayFyour story keeps parallelling mine so hard16:23
JayFexcept not k8s16:23
dtantsurheh, I'm not surprised16:23
dtantsurSide questions because I'm too lazy to look into the code: are deploy steps always abortable? or do they have an abortable flag like clean steps? Asking for claude16:24
JayFthey need to respect abortable16:24
JayFif they don't, it's a bug16:24
JayFI could do a firmware update in deploy steps16:25
dtantsurRight, okay. My initial reaction was "wait, they're always abortable". And then "wait, maybe not".16:25
TheJuliaIf I'm recalling correctly, not always abortable in that we can't necessarilly stop mid-stream on an update16:26
TheJuliabut we can abort additional I believe16:26
* TheJulia starts building vxlan test lab16:26
dtantsurI have doubts again, maybe I should just ask claude16:27
TheJuliaclaude knows our code surprisingly well16:27
dtantsurOh noes, deploy steps don't have an abortable flag.16:27
dtantsurI will add it. But I guess I'll need to default it to True for compatibility.16:30
dtantsur"You're absolutely right!" (before even checking anything lol)16:31
TheJulialol16:31
JayFdtantsur: this preference fixed the "you're absolutely right!" problem for me https://usercontent.irccloud-cdn.com/file/HP0WfLuo/image.png16:43
JayFI also have a preference somewhere else, for the claude.ai webapp, telling it to not personify itself16:43
JayFsomeone or something that never disagrees with you is maximally unreliable :)16:44
dtantsurI wonder where this configuration can be found in my case...16:56
dtantsur(this is a RH-managed account)16:56
JayFlogin to claude.ai, look under settings16:56
JayFit's an individual profile setting16:56
dtantsurI'm afraid our setup is much, MUCH more convoluted. I only have a google cloud login, where the thing is hosted.16:57
JayFoh, you're using like, API claude stuff then16:58
JayFnot the sub16:58
JayFI have the $100/mo max sub16:58
dtantsurWe have a massive corporate deployment here, I'm not sure how it even works16:59
TheJuliaYeah, it is... complicated16:59
* TheJulia tries her first local multinode stack with OVN and ngs and it will surely explode17:01
TheJuliaoh, nice, already did17:01
opendevreviewDmitry Tantsur proposed openstack/ironic master: Allow aborting deployments in "wait call-back" state  https://review.opendev.org/c/openstack/ironic/+/97327917:19
dtantsurThis ^^^ but I'll WIP it until I can review it with a fresh brain17:20
dtantsurcomments welcoem though17:20
JayFdtantsur: there is a way to put a claude.md in your homedir with some instructions, putting a line (or similar) in that palce for you might have a similar result17:43
dtantsurtrue, yeah17:44
JayFI know you can tell claude.ai to remember something17:47
JayFand it says it does17:47
* JayF going to check to see if it was cross-conversation17:47
* TheJulia wonders if I could get claude to sanity check my devstack configuration17:47
JayFdtantsur: maybe just try telling claude to remember it? https://usercontent.irccloud-cdn.com/file/RyW26Lzt/image.png17:48
dtantsurInteresting!17:54
opendevreviewDoug Goldstein proposed openstack/ironic master: feat: skip invalid mac addr interfaces in redfish inspect add speed  https://review.opendev.org/c/openstack/ironic/+/97328318:03
opendevreviewDoug Goldstein proposed openstack/python-ironicclient master: feat: add 'vendor' and 'category' for port object  https://review.opendev.org/c/openstack/python-ironicclient/+/97328618:25
cardoeclif: ^18:25
cardoeSo how do I nudge my 2025.2 to use API 1.01? Cause it seems to want to negotiate 1.96 with OSC no matter what. Yet 1.101 is what it reports back as the maximum version18:35
cardoeusing openstackclient 8.3.0 and I've pip installed python-ironicclient from master18:36
JayFpython-ironicclient has a max microversion const iirc18:37
JayFif it's not had something pushed for 1.101, that's it18:37
cardoeLAST_KNOWN_API_VERSION = 104 from python-ironicclient18:40
* TheJulia glares at neutron18:42
JayFcardoe: can you curl the 1.101 endpoint you want18:45
cardoeyeah gonna do that.18:45
* TheJulia senses a race condition in neutron's startup18:46
cardoeWell looks like a pyc got me18:50
cardoemaybe18:51
opendevreviewDoug Goldstein proposed openstack/python-ironicclient master: feat: add 'vendor' and 'category' for port object  https://review.opendev.org/c/openstack/python-ironicclient/+/97328618:52
cardoeSo baremetal port list --long --node <blah> shows me Category and Vendor but baremetal port show doesn't show me category and vendor18:53
cardoebaremetal port set --category blah <port> didn't spit an error but I don't see the value.18:53
TheJuliacardoe: quick question, on your setups, what is your default tenant network type?18:57
cardoevxlan18:57
TheJuliaHave you observed any reason why it refuses to fill in the available vni segments on first startup?18:58
cardoeLike the ranges?18:59
TheJuliayup19:00
cardoeWe don't use the ranges in the config file. Purely API driven.19:00
jandersfolks, I would really appreciate reviews on https://review.opendev.org/c/openstack/ironic/+/966344 as well as the patches chained with it (5 in total). Probably 3 of these already had +2s but I had to rebase the lot. Thanks in advance!19:00
TheJuliahmm19:00
TheJuliaWhat is super weird is if I reset my neutron-rpc-service It populates them with existing config19:01
TheJuliaI'm guessing I need to see if i need to do deferred networking setup19:01
* TheJulia has to find that flag again19:01
cardoeyes if you reset neutron-rpc-service it should populate them19:04
cardoebecause that's where the ml2 is running19:04
TheJuliaYeah, but super duper weird given its a clean/new stacking19:04
cardoehttps://docs.openstack.org/api-ref/baremetal/#show-port-details doesn't include details about category and vendor... where's the source to that so I can update that to?19:06
cardoethe latest python-ironicclient advertises the maximum supported is 1.96 when 1.101 shipped for 2025.2 so it seems we're a bit out of date there.19:07
cardoeyeah stable/2025.2 branch has 1.9619:08
cardoeSo that was the issue. I pip installed from stable/2025.219:09
cardoeBut clearly something I've got in https://review.opendev.org/c/openstack/python-ironicclient/+/973286 isn't right cause its not fully showing me the fields..19:11
TheJuliacardoe: did you find the api-ref stuffs yet in the repo?19:11
cardoeyeah19:11
TheJuliak19:11
cardoeyeah something is screw-y here.19:16
cardoecurl-ing the port end point with API 1.101 doesn't give me category or vendor19:16
cardoeWhat's funny is the endpoint I linked above that's the List Ports by Node which doesn't document those fields actually returns them19:18
cardoeBut the fields are documented on the Ports endpoints which don't return them19:18
TheJuliaare you asking for details or the default view? sounds like the default view19:22
cardoeI'm using --debug on openstack baremetal port show <uuid> which gives me the curl command19:28
TheJuliawhat gets offered by the client version wise?19:29
cardoeMaxium is 1.101 and I edited my local stable/2025.2 to use 1.0119:30
cardoehttps://docs.openstack.org/api-ref/baremetal/#list-ports doesn't show the fields.19:30
TheJuliado they show when you ask for detail?19:30
cardoeNope19:32
cardoehttps://docs.openstack.org/api-ref/baremetal/#create-port I can create a port with vendor and category as documented19:32
TheJuliaand if you show a port?19:32
cardoeNope19:32
* TheJulia blinks19:32
cardoeThey're invisible no matter the call19:32
cardoeI'm confirming that openstack baremetal port set and openstack baremetal port create work by MySQL commands19:33
TheJuliadetail on a port show?19:33
TheJuliahttps://github.com/openstack/ironic/blob/master/ironic/api/controllers/v1/port.py#L154-L17019:35
TheJuliatheres the problem19:35
cardoeThat'll do it.19:37
TheJuliawe need to create a bug, thats pretty annoying :(19:37
JayFI fed this chat to claude, I'll take a look at the bug19:39
JayFit's probably me or cid who wrote it19:39
TheJuliaoh, I found out why my networks were not creating properly, looks like it was my brige mappings19:40
opendevreviewDoug Goldstein proposed openstack/ironic master: fix: port endpoints did not return vendor and category and fix docs  https://review.opendev.org/c/openstack/ironic/+/97329419:47
cardoeThat makes sense19:47
cardoeJayF: https://review.opendev.org/c/openstack/ironic/+/973294 feel free to start with that19:48
JayFI'm already done19:48
JayFliterally about to push19:48
JayF:( 19:48
cardoeHuman defeats AI!19:49
JayFmore like we wasted half an hour19:49
JayFyou finish yours19:49
JayFwell not a half hour, just ten minutes19:49
JayFI just hate duplicate work19:49
cardoeI didn't realize you were working on it. I'd tabbed out when Julia linked the github link19:50
cardoeYou can eyeball the client changes here.. https://review.opendev.org/c/openstack/python-ironicclient/+/97328619:50
cardoeThey should also be backported.19:51
cardoeAnd I'll make a patch to stable/2025.2 to fix the API range it claims it supports.19:51
opendevreviewDoug Goldstein proposed openstack/python-ironicclient stable/2025.2: fix: report compatibility with 2025.2 release of Ironic  https://review.opendev.org/c/openstack/python-ironicclient/+/97329519:54
TheJuliaoooooooh ahhhh my stack is downloading ipa19:58
opendevreviewJulia Kreger proposed openstack/ironic-prometheus-exporter master: Swap i-p-e over to use dib ipa builds.  https://review.opendev.org/c/openstack/ironic-prometheus-exporter/+/97329820:02
cardoe^ retry limit?20:57
-opendevstatus- NOTICE: An update to one of our base jobs roles broke another base job role. This update has been reverted and jobs should be working again.20:58
opendevreviewJulia Kreger proposed openstack/networking-generic-switch master: devstack: Ignore error with file existing on restack  https://review.opendev.org/c/openstack/networking-generic-switch/+/97331021:09
cardoeSo with ironic-Prometheus-exporter can I still use rabbitmq notifications? I recall someone wanted to have multiple listeners in the past.21:12
TheJuliaso, i-p-e is basically modeled on tapping the data stream to a prometheus format for each conductor, I just don't remember in regards to rabbitmq notifications21:30
TheJuliaI think we discussed deprecating the sensor data stuffs out as well, but its all a blur21:30
cardoeJust sharing something stupid I had Claude do from my phone. We run Ironic in k8s so I said make me a CRD and a little side car to handle inspection rules and providing them to Ironic in a way it can consume them... https://github.com/openstack/ironic/compare/master...cardoe:ironic:claude/inspection-rules-crd-YQy1D21:44
TheJuliacardoe: I've got a partially stood up VM lab environment to do the needful with NGS, so I guess expect me to start focusing on those again soon, if we want to move the mech driver over to networking-baremetal soon, it might be good time wise.22:09
cardoeIf you can give me some hints how to duplicate your setup i would be interested as well. I assume you are virtualizing a switch?22:14
TheJuliatwo VMs, second network interface just attached to a shared vm bridge22:17
TheJuliaas an isolated network22:17
TheJuliaMy second VM is not the happiest, but NGS should still be able to give it orders for attachments22:18
TheJuliaThe base jobs will need to get swapped out to be more OVN-ey too, separate item ahead22:18
TheJuliaThere is some inner logic which is VM network based which... is overkill and doesn't make sense in the ngs devstack plugin too, but a few logical steps it should be better, overall.22:28
cardoehmm okay. Cause I'd be more than happy to duplicate a test setup so we can work the end to end.22:30
TheJuliaI might try to start stubbing out job configs tomorrow22:31
TheJuliaThe job expects a br-infra tunnel between the nodes as well, which we don't really have on local VMs22:32
cardoeWhat's emulating the switch?22:34
TheJuliain this case, I'm going to lean towards the testing idea I hinted at in the spec along with the last n-g-s patch I posted22:34
TheJuliahttps://review.opendev.org/c/openstack/networking-generic-switch/+/972765/1/networking_generic_switch/devices/netmiko_devices/ovs.py see line 32 :)22:35
cardoeah that's not a bad idea22:37
TheJuliaThat way we can focs nah, that way for my test VMs, I can just treat is as vlan and still validate behavior/flow22:38
TheJuliaand then, switch gears22:38
TheJuliaI'd likely start with SONiC  in software, but I don't remember if sonic or the cisco nexus 9k images support software vxlan stuffs either.  My brain first wants to just get NGS started then mech driver started and then independenly we can hammer out the best end shape for mech driver and or reconcillation stuffs for ports per the spec22:39
opendevreviewJay Faulkner proposed openstack/ironic master: Simplify ovn vtep microversion logic  https://review.opendev.org/c/openstack/ironic/+/97149422:48
opendevreviewDoug Goldstein proposed openstack/python-ironicclient master: feat: add 'vendor' and 'category' for port object  https://review.opendev.org/c/openstack/python-ironicclient/+/97328623:16
cardoehttps://review.opendev.org/c/openstack/openstacksdk/+/973321 as well23:22
cardoewell for some reason zuul is hung on a non-voting job with https://review.opendev.org/c/openstack/ironic/+/973294 but if someone can let me know if that's correct to be backportable I'd appreciate it. otherwise I'll fix it up.23:24

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