Wednesday, 2025-07-30

*** mdfr3 is now known as mdfr02:32
rpittaugood morning ironic! o/05:58
queensly[m]Good morning o/06:28
abongalegood morning !08:21
rpittaucardoe: if it's a fix, we can wait after teh bugfix branch and backport it09:50
iurygregorygood morning10:50
opendevreviewMerged openstack/ironic master: Clear `last_error` on power match/sync  https://review.opendev.org/c/openstack/ironic/+/95543212:21
jandershey folks o/ I am troubleshooting an issue with some machines apparently sending empty-string eTags. Example error in this paste (along with some other data I will touch on in a second): https://paste.openstack.org/show/bdiJfjC55LpJaG3ROsa9/12:36
jandersI wonder if you've seen this before and how do you think we should handle such cases12:36
janders1) when we get an empty-string eTag, should we try to send them back to BMC with PATCH requests (and possibly retry without eTag on failure) or 2) do we just plain-disregard them and send PATCH requests without eTags in such case?12:37
jandersit seems to me that some machines (more likely HPs of various models) have some attributes that have empty eTag fields (paste has some examples)12:38
jandersI'm working on unit tests reproducing this problem and code improvements to make them pass, before I go further I wanted to raise the issue and see if anyone experienced this and what you folks think about such case in general12:39
opendevreviewTakashi Kajinami proposed openstack/ironic master: Drop redundant geattr  https://review.opendev.org/c/openstack/ironic/+/95616112:44
opendevreviewMerged openstack/ironic master: Switch from local RPC to automated JSON RPC on localhost  https://review.opendev.org/c/openstack/ironic/+/95475512:48
rpittauiurygregory, TheJulia, cardoe, cid, when you have a moment can you please check https://review.opendev.org/c/openstack/ironic/+/953477 ? I'd like to include it in the bugfix branch13:13
TheJuliarpittau: there are two release notes there...13:19
iurygregoryrpittau, looking now13:22
TheJuliajanders: some folks have indicated they have observed some similar behavior, but also a variety of behavior from vendors in this area. I would think if there is an empty etag we would just ignore it. Also looks like this is in OEM regions of remote api surfaces so naturally YMMB13:25
TheJuliaerr YMMV13:25
sdmitriev113:38
TheJulia???13:41
rpittauTheJulia: I didn't think the 2 release notes were a problem13:54
TheJuliaI guess typically I would expect to see it a single file per change, not two13:56
TheJuliaI guess it should be okay13:56
alegacyfriendly reminder.  meeting to demo progress on standalone networking in 1 hour from now @ 1500UTC. meet.google.com/ijs-pwev-qhq13:56
alegacy 13:56
sdmitrievHey folks, sorry about the previous message, fat fingers. I wanted to ask a question related to "driver_info". Do I understand correctly that all password fields (e.g., "ipmi_password") are masked when sent to the Ironic Python Agent? So basically, IPA is not supposed to have access to them, right?13:58
sdmitrievContext: we're implementing a custom hardware manager that, unfortunately, requires access to the out-of-band interface (we need to query RestAPI) to perform hardware updates. Any suggestions on how to pass such sensitive information to IPA?13:58
sdmitrievIn the perfect world we would just use redfish driver for that, but our ODM provider has "specific" redfish scheme which does not implement all the required attributes, so we have to look into workaround like this   14:02
TheJuliasdmitriev: correct the values are not aware. Basically the best pattern we have is to use the secret token value to encrypt the data and enable IPA on the receiving side to decrypt it14:11
*** dmellado62 is now known as dmellado614:13
iurygregoryrpittau, I think it still requires some changes in https://review.opendev.org/c/openstack/ironic/+/95347714:15
iurygregorygoing do add some comments14:16
sdmitrievTheJulia: I see, thanks for the reply. Where would you place the encrypted info then? Into "driver_internal_info"? Any chance you could point me into the code example where similar approach is implemented?14:16
TheJuliasdmitriev: typically we would not save such value to a node object filed, we would be pushed in a call. I guess its a weird issue. Why do you need the driver info fields inbound on the host to run locally? We *generally* advise blocking all host->bmc access for security reasons (so someone can't force reset the bmc or do other naughty things with the BMC)14:20
TheJulia(granted, use cases will vary, but generally we lean towards a case where you might not trust your users.14:21
TheJulia)14:21
sdmitrievTheJulia: the hardware provider that we use do not implement full Redfish spec, so we can only enrol it with IPMI driver. At the same time, the only way this hardware BIOS/BMC firmware can be updated is with Redfish calls (so out-of-band). So we are trying to figure out the way how to include firmware update steps into the "clean" stage 14:25
TheJuliasdmitriev: so the existing firmware update interfaces in Ironic don't work for this specific piece of hardware for OOB updates of the BMC?14:26
sdmitrievTheJulia: Only Redfish driver supports firmware updates currently, and we can not use it unfortunately, we stuck with IPMI at least for now 14:28
TheJuliaYeah, IPMI will never support such functionality14:28
TheJuliasince really, ipmi should just not be used but... yeah14:28
TheJuliaSo, when you say required attributes, you mean the attributes inside of the ComputerSystem object?14:29
sdmitrievTheJulia: Can't say for sure which ones. It was tested by my coworkers before me, but the conclusion was that the some of the required Redfish calls would fail due to missing attributes, and ODM provider confirmed that the Redfish spec was not fully implemented for taht devices14:32
TheJuliaThat is very unfortuante14:32
TheJuliayour basically going to need some bit of code with enough information to grab the credentials, be able to identify or consolidate the necessary update information across to the agent as a step call which ironic would need to have code wrapped around to trigger, and then engage a step in the agent to identify the correct inband or potentially out of band (file yourself a security bug if they can do this in your 14:35
TheJuliaenvironment), At least to do to be able to perform the interaction. I'd almost wonder if maybe instead we need an "advanced" hardware type where you can, say invoke redfish management but ipmi power, but I don't know if that would bridge the gap enough for you to be able to have a functioning system14:35
TheJuliaiurygregory, janders, this may be of interest to you two14:35
TheJulia^^^14:35
iurygregoryif it's Cisco hardware I know our firmware upgrade won't work14:48
iurygregorynormally the only thing we do is a SimpleUpdate call to redfish.. so the UpdateService must be working, without much info is a bit complicated to see if we can provide something that would work for this hardware14:50
sdmitrievNot Cisco, it's Wiwynn. I guess we may need to go over what did not exactly work on our side with redfish driver first 14:52
TheJuliaThat wouldn't be a bad idea, generally if its something on our end or a pattern we're starting to see, we are generally fairly amenable to fixing/patching15:01
TheJuliastandalone networking demo?15:01
TheJuliameet.google.com/ijs-pwev-qhq !15:01
mumesan[m]Hey could I get another eye on this: https://review.opendev.org/c/openstack/networking-generic-switch/+/95579815:13
opendevreviewVerification of a change to openstack/ironic master failed: Drop redundant geattr  https://review.opendev.org/c/openstack/ironic/+/95616115:59
iurygregoryWiwynn never heard about it =( 16:58
TheJuliaa vendor split off from a fabricator that used to be Asus back in 2000 and now does oem stuffs.17:05
cardoeCan some sanity check me for a sec... node.properties... the "cpus" field... number or string?18:27
cardoeOn a box you've got.18:27
cardoebleh18:32
* cardoe table flips.18:32
cardoenvm. just another special redfish field.18:35
opendevreviewDoug Goldstein proposed openstack/ironic master: fix up redfish inspection mock ethernet interface data  https://review.opendev.org/c/openstack/ironic/+/95553619:05
opendevreviewDoug Goldstein proposed openstack/ironic master: fix redfish processor inspection  https://review.opendev.org/c/openstack/ironic/+/95553719:05
opendevreviewDoug Goldstein proposed openstack/ironic master: allow running inspection hooks on redfish interface  https://review.opendev.org/c/openstack/ironic/+/93306619:05
cardoeWell hopefully the first two are good enough to pass.19:06
rm_workTheJulia: for the record, he’s on my team 😆20:04
TheJuliahuh?!20:04
rm_workDiscussion above about firmware and wiwynn20:05
rm_workSo when he says “previous teammates” he means me mostly lol20:05
rm_workJust for context20:06
TheJuliaahhhhh!20:06
cardoeTheJulia: so that Ethernet mock change… is that okay-ish? I feel like that’s better than returning two different pieces of data for the same hardware. The tests put one value for the mock and then expect something different.20:08
rm_workHey if we’re relying on routed networks right now, is there something that equates to that at all in the ironic standalone networking stuff?20:09
cardoeThe processor change fails because we bumped the version of hacking and this is the first time someone is touching it. Despite me simplifying it.20:15
TheJuliacardoe: last I looked at it, it seemed okay to me20:16
TheJuliarm_work: routed networks with neutron?20:16
rm_workYes20:20
TheJuliaML2 plugins20:20
rm_workBut looking at running something more standalone ironic based for undercloud20:20
TheJuliaoh, so the standalone thing should align and ultimately support it20:20
rm_workOk, I just don’t know a lot about the standalone stuff20:21
rm_workIt doesn’t directly support ml2 plugins does it?20:22
TheJuliaI haven't seen the code, I think it is largely modeled around just re-use of what networking-generic-switch provides20:23
rm_workHmm 🤔 ok20:24
rm_workI’ll dig deeper20:24
TheJuliawe're expecing alegacy to post some initial code next week20:24
TheJuliarealistically though, if your using neutron, then the expected model is an neutron ml2 plugin which supports the baremetal vnic type20:27
TheJuliaand can manage switches20:28
TheJuliabut not all do that20:28
rm_workWhat do you mean by “manage switches”?20:29
rm_workLike literally do on-switch configuration?20:29
TheJuliayes20:29
rm_workOk, yeah I think that’s not workable for us 😰20:30
rm_workOur networking team won’t even give us read-access to switches lol20:30
TheJuliasome it is, some it isen't20:30
rm_workI’ve coined the term “adversarial development” since working here 😅20:30
TheJuliain the standalone stuff, the idea is to delienate it so they can own the service, and the configuration contrat is as small as possible to what is expected/needded20:30
cardoerm_work: so literally that’s what I’m working on but we’re doing it with neutron still. And trying to teach neutron to be an okay-ish baremetal API20:31
cardoeI’m not using NGS because we also don’t touch the switches.20:33
rm_workAh ok20:37
cardoeMuch like NGS has generic calls to switches, we’re looking to make another ML2 which could call NGS but can also call out to other network automation tools to make the changes20:37
cardoeAt this point we’ve got some I20:38
cardoeImplementations and running it. But we’ve got 3 outstanding neutron specs to make the use case documented and part of the test surface.20:39
cardoeWe’ve also used OVN to provide cloud-y like features.20:40
opendevreviewVerification of a change to openstack/ironic master failed: Drop redundant geattr  https://review.opendev.org/c/openstack/ironic/+/95616120:47
cardoeLike my patched up OVN/neutron natively joins the VXLAN fabric of our Cisco switches and is doing DHCP and DNS. I even got metadata agent to work. But I don’t know of anyway to ensure nobody could spoof.20:49
cardoeI can at least validate that the box is from the right tenant. But can’t ensure it’s not another box in that tenant spoofing the MAC.20:51
cardoeUltimately I hope this compliments the standalone groups work.20:55
opendevreviewQueensly Kyerewaa Acheampongmaa proposed openstack/ironic master: Add manual clean and automated verify steps to set BMC clock via Redfish Manager  https://review.opendev.org/c/openstack/ironic/+/95347721:09
opendevreviewQueensly Kyerewaa Acheampongmaa proposed openstack/ironic master: [docs] Update manual clean and verify steps  https://review.opendev.org/c/openstack/ironic/+/95573021:09
TheJuliacardoe: only way to prevent spoofing is to extend the metadata stuff to use the raw data or to operate with raw packet handling or to look at the mac address from which the request comes21:23
TheJuliaeven then, one could still spoof macs, so then it boils down to switch programming and all21:23
cardoeWell that's what I'm doing.21:24
TheJuliabut then if everything is sort of the next problem :)21:24
cardoeHow it's done on KVM is that they know the actual virtual port it came in on into OVS from QEMU and they label it there.21:24
cardoeI just know that the request was on the correct VXLAN VNI so I know this request came from that tenant network.21:25
cardoewith L2 VNIs I know that the packet is on the right VLAN but technically that tenant could have 2 boxes on the same VLAN in the same cabinet21:27
cardoewith L3 VNIs / routed stuff I have the same guarantee but then know that the request came in the tenant's VRF21:27
cardoeBut if I've got 2 servers on the same cabinet and one is using 00:11:22:33:44:55 and one is using aa:bb:cc:dd:ee:ff. And the 00....55 spoofs aa..ff. I don't know of a way to ensure that cause the packet's already on my VLAN or VRF.21:29
cardoeMaybe there's a way with security groups to limit it down to a specific MAC to a specific port. But then allowed_address_pairs gets busted for failover and if I allow that then I'd be right back at the same place.21:30
TheJuliaThere was some dsicsusion ages ago about maybe building a version of the agent which could run on the switch devices, but I don't know how practical that would really be21:30
cardoeMaybe there is a way to do it in the switches but I don't know. I'm not a network or switch person. I didn't even stay at a holiday inn express last night... just my RV.21:30
TheJuliain so much the agent would still need to be aware of it all and yeah21:30
TheJuliacardoe: RV's can have way better beds.21:31
TheJuliaand worse beds.21:31
cardoeAgreed21:32
cardoeMy wife is dragging me to look at fifth wheels tomorrow when we have the truck serviced.21:32
TheJuliaWe realized the pullout bed on our coach still has the factory plastic wrap on it... it was built in 201521:33
TheJuliaEnjoy!21:33
cardoeMy first goal with all this however is to make it actually all work nicely and get neutron to accept the use case and hopefully patches.21:33
TheJuliaits not a bad goal, maybe sometime next week we can get a discussion going with steve, although his current focus is getting security group stuff programmed into switches21:34
cardoeI'm setting up my own hardware and my ML2 will use NGS.21:34
cardoeYeah I was following his work there.21:35
cardoeHe's doing the calls exactly how I'd want to wrap stuff.21:35
TheJuliaHe is getting tons of time and space... ultimately we have a few customers who are pushing us to enhance these areas and we don't want to get it wrong21:36
TheJuliaof course we'll put some big warnings around it, because we're not the arbiter of switch performance.21:37
cardoeyeah that's the thing different models and different builds will behave totally different21:40
TheJuliayup21:58
opendevreviewJacob Anders proposed openstack/sushy master: [WIP] Improve handling of empty-string eTags.  https://review.opendev.org/c/openstack/sushy/+/95620422:52

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