Tuesday, 2025-09-23

opendevreviewKaifeng Wang proposed openstack/ironic master: Fix incorrect arg while getting ports by portgroup  https://review.opendev.org/c/openstack/ironic/+/96204301:18
cardoealegacy: can we get what we need from neutron into neutron-lib?01:36
opendevreviewIury Gregory Melo Ferreira proposed openstack/ironic master: [WIP] iDRAC10 force Slot1 for VirtualMedia  https://review.opendev.org/c/openstack/ironic/+/96198903:01
opendevreviewMerged openstack/sushy stable/2025.2: Improve Dell Asynchronous task handling  https://review.opendev.org/c/openstack/sushy/+/96181804:00
rpittaugood morning ironic! o/07:08
abongalegood morning ironic 0/08:06
opendevreviewnidhi proposed openstack/sushy master: Add comprehensive PCIe device support to Sushy  https://review.opendev.org/c/openstack/sushy/+/96198208:08
*** jroll01 is now known as jroll008:29
kubajjHello, I have a question related to inspector. Is it recommended to do the migration with Caracal or rather first upgrade to Epoxy and then migrate Inspector?11:29
*** dking is now known as Guest2715811:50
dtantsurkubajj: both should be fine, but my gut feeling would be to move to Epoxy first. If you get any issues, it will be much easier to fix them.12:06
alegacycardoe: not sure I understand what you mean... from a standalone networking point of view we don't need anything from neutron, in fact part of the point of this is to decouple from neutron.12:07
kubajjdtantsur: sounds good, thanks12:08
cardoeYou had said you pulled in stuff from neutron. So I was saying rather than copying can we not share in their library12:13
alegacycardoe: maybe there was a misunderstanding... what I meant was that the new dependency on ironic from ngs to get the base class and exception types was similar to the existing dependency on neutron to get its base class and exception types.  completely different interfaces though.12:51
cardoeAh okay12:52
dtantsurI'd really appreciate a diagram :)13:05
*** Guest27158 is now known as dking13:08
dtantsurNow that we got rid of eventlet monkey-patching, importing Ironic as a library is technically possible, although you're going to get a lot of dependencies with it.13:13
opendevreviewVerification of a change to openstack/ironic master failed: Add cross-gating job with openstacksdk  https://review.opendev.org/c/openstack/ironic/+/96039313:33
TheJuliaI still need to look, unfortunately I'm also just not "awake" yet either14:03
alegacydtantsur: technically it is going to be ironic importing ironic since the standalone service is also a part of ironic.  Is your concern around unit testing or when the package is used (potentially) in another project?14:04
dtantsuralegacy: okay, now you properly confused me :) what's the problem with parts of ironic using each other?14:05
* dtantsur second lunch, brb14:06
alegacydtantsur: :) my concern is mostly a logistical one of getting the CI jobs to pass... I guess until my (not yet ready) ironic commit for standalone networking is merged, the ngs repo tox tests won't pass since it has a dependency on my ironic changes.  14:11
TheJuliaHave I mentioned how much I dislike miro ?14:13
dtantsurMiro is a crime14:22
dtantsuralegacy: you should be able to use Depends-On in your review14:22
TheJuliadtantsur: it is better than a cell in a spreadsheet....14:32
* TheJulia goes and walks the dog real quick before making a fresh batch of coffee to get back to code reviews14:39
opendevreviewMerged openstack/ironic master: Add cross-gating job with openstacksdk  https://review.opendev.org/c/openstack/ironic/+/96039315:32
JayFIf https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe_base.py#L357 blows up even with network_interface: noop, is that expected?15:39
JayFShouldn't we be not validating network-specific things in an inspection interface?15:40
JayFhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/inspector/interface.py#L122 -> https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe_base.py#L43615:40
dtantsurJayF: it's required to decide if managed inspection is possible15:40
JayFSo the old workflow, which worked on earlier ironic releases was:15:41
dtantsurYou get to https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe_base.py#L446 and that converts into unmanaged one15:41
JayF- Manually create neutron port for pxe boot15:41
JayF- Boot into inspection which sets up the real ports15:41
JayFI know this isn't technically supported, but I was a little surprised to find a codepath that was network-dependant that didn't toggle with network-interface15:41
dtantsurNetwork interface does not handle getting information from a BMC15:42
JayFin a noop network_interface case, managed inspection doesn't need hte macs 15:42
JayFright?15:42
dtantsurNot really15:42
dtantsurLookup still needs a MAC, especially if it's Redfish15:42
JayFhmm15:43
dtantsurAlso, you need a MAC address for PXE configuration15:43
dtantsurI think this is was the original reason15:43
JayFyou asked the right question to trigger my brain down the correct path15:44
JayFthe "lookup needs a MAC" is a question I don't have a good story for around how my downstream is working15:44
JayFso thank you for the pointer and I'll keep digging :D 15:44
dtantsursure thing :)15:44
dtantsurIf you use Redfish, we have a pre-inspection feature where we create ports from OOB information first, then go into in-band inspection15:44
dtantsurWon't help with IPMI or if this information is not available15:45
JayFyeah I have servers that don't have EthernetInterface populated on the system that  Ironic sees15:45
JayFlolsob15:45
dtantsursigh, why, why15:45
JayFI have a couple million (no joke) lines of JSON to sort through then I can show you15:45
JayF(JSON dumps from cursed hardware that I have to validate/redact if needed)15:46
dtantsuryeah, that's scary15:47
JayFdtantsur: https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/inspect_utils.py#L377 last mile node lookup matching is by bmc_address 15:48
JayFwe don't have any populated mac address (or switch) info until post-inspection15:49
dtantsurBMC address sometimes work, sometimes does not15:49
dtantsurAlso, how is your PXE going to work? We rely on MAC addresses there IIRC?15:49
JayFthey are making direct neutron port create calls with explicit IP/network/etc assignments15:49
JayFthey know what ports things are plugged into15:49
JayFthey /don't/ know the port:mac mappings15:49
JayFwhich is why we avoid adding in the metadata until lldp gives us all the needed info15:50
JayFport with no local_link_connection = angry neutron15:50
JayFno port = angry new inspection15:50
dtantsurThat does not really answer my question though? The right (i)PXE configuration is fetched from firmware using a MAC address.15:50
JayFhm15:50
JayFI think the high level thing is15:51
dtantsurhttps://opendev.org/openstack/ironic/src/commit/38605857ae6659cf44f31df20a1dcf7aa80f6901/ironic/drivers/modules/boot.ipxe#L10-L1115:51
JayFwe're doing something halfway between managed and unmanaged15:51
JayFand the line got drawn darker15:51
JayFand now we're in unhappy land15:51
JayFbecause I suspect the answer will be "oh we put it in our magic boot an agent for inspection vlan"15:51
dtantsurIt does sound so :) Cannot you actually go unmanaged, except that you don't have a separate dnsmasq, you just configure neutron manually?15:51
dtantsurIt's unmanaged from Ironic's perspective, but managed from neutron's?15:52
JayFI believe there's a desire to ensure the correct node<>BMC mappings15:52
JayFlike the node names/bmc addresses are associated pre-ironic15:52
JayFhmm we might still have the info to do this15:52
TheJuliaadamcarthur5: regarding bulk operations, you need to wrap your lines. See https://zuul.opendev.org/t/openstack/build/8b892eb616ab4bec83789c4158fd203f and/or run "tox -elinters" locally16:24
* TheJulia ponders https://review.opendev.org/c/openstack/networking-generic-switch/+/96203716:56
TheJuliaalegacy: thoughts on defining a couple of our own exception classes, and then in ironic check to see if the exception class defined in NGS is what is being triggered?17:03
opendevreviewJulia Kreger proposed openstack/ironic master: Fix incorrect arg while getting ports by portgroup  https://review.opendev.org/c/openstack/ironic/+/96204317:36
opendevreviewMerged openstack/ironic master: Add WSGI alias under ironic.wsgi.api  https://review.opendev.org/c/openstack/ironic/+/96175317:37
alegacyTheJulia: If I'm understanding correctly you mean have NGS throw its own exception (that don't inherit from Ironic's) and have Ironic catch those?  That locks Ironic in to directly knowing about NGS, and if another driver comes along (or many more) then Ironic needs to know about each of them rather than just the generic exception types.  Maybe I haven't grasped what you were selling there...apologies.17:50
TheJuliaWell, I'm thinking that because it allows ngs to be self contained and ironic can do whatever appropriate handling from a generic exception catch from there I guess more to the point, someone has to import something somewhere and its a common pattern to catch something in a library or helper we're calling in ironic, its a weirder pattern to define exceptions in ironic for use outside of ironic but then only ironic to 17:53
TheJuliacatch17:53
TheJuliaI guess the question, and its not in my mind right now, who has the running process because the wip appears to just be importing exceptions17:56
alegacydunno, I think it is more of a common pattern for many drivers to inherit from some common definition than it is for each of those drivers to expose their own stuff... that would break the abstraction layer.  maybe what's needed is an ironic-lib where we throw the driver base classes and exception so that driver implementations can be externalized.17:57
alegacyNGS currently imports the base class and exceptions.  The running process that would load that is the standalone networking process (what I'm calling ironic-networking... if I can finally finish cleaning it up and publish! ;) )17:58
iurygregoryfunny that we got rid of ironic-lib lol17:58
TheJuliayeah....18:00
alegacysorry, didn't finish that sentence ... "so that driver implementations can be externalized...without importing all of Ironic"18:01
TheJuliaalegacy: where is that process living code wise?18:01
alegacyironic18:01
TheJuliaso ironic will invoke the ngs code?18:01
alegacyThe main ironic process will invoke an RPC over to the ironic-networking process.  That process will invoke the NGS driver.18:02
alegacy...and that first RPC will be done thru the network driver which lives in the ironic repo.18:02
TheJuliaso then its an easy call to have try: ngs.magical()    except ngs.exception.sadnessfoo:    raise ironic.common.exception.sadnessfoo ?18:03
TheJuliaUnless I'm misunderstanding the direct mapping to the ngs code18:04
alegacyironic-networking loads whatever drivers match that entrypoint (ngs being one possible implementation).  ngs is loaded and becomes callable, but that detail is abstracted ... sort-of.18:05
TheJuliaahhhhh18:05
TheJuliahmmmmm18:05
TheJuliahmmmmmmmm18:05
TheJuliaJayF: https://review.opendev.org/c/openstack/ironic/+/952790 seems to be in good shape, just needs to webapi rst file changed changed18:22
JayFack18:23
JayFI'm only half here today18:23
opendevreviewJulia Kreger proposed openstack/ironic master: Add node.instance_name  https://review.opendev.org/c/openstack/ironic/+/95279018:23
TheJuliaThere i fixed it18:23
TheJulia:)18:23
JayFthanks for the birfday present, a patchset, just what I wanted!18:23
JayFoh goodness I joke but you /did/ save me from having to spell Gaz... without an example in the file18:24
JayFlol18:24
TheJulialol18:28
TheJuliaI had the release series doc open on the other screen because I had to look it up too18:28
TheJuliaSuper quick reviews: https://review.opendev.org/c/openstack/ironic/+/962043 https://review.opendev.org/c/openstack/ironic/+/961996 https://review.opendev.org/c/openstack/ironic/+/95580618:50
JayF-1'd one for a release note (on that patch as it's backportable), one landed18:56
JayFand the OCI doc I'll just let dmitry have a look 18:56
TheJuliaI'll whip a reno for that last one, it just doesn't make sense to cycle too much over it19:07
TheJuliaclif: w/r/t https://review.opendev.org/c/openstack/ironic/+/955625, I concur, the *right* way is to trigger an rpc action. Maybe...split the change into distinct parts and do the rpc stuffs the right way there later on?19:08
clifAs in split out controller logic into another change?19:09
opendevreviewMerged openstack/bifrost stable/2024.1: Do not pass empty values to instance_info  https://review.opendev.org/c/openstack/bifrost/+/95927819:12
opendevreviewJulia Kreger proposed openstack/ironic master: Fix inspection IB port client-id  https://review.opendev.org/c/openstack/ironic/+/95580619:13
TheJuliasplit out the physical network chnage enforcement to a seprate change, or build the substate before it on the rpc, and then layer this change on top19:13
clifwdym by 'build the substate'?19:15
TheJuliawell, so, your change is already kind of big19:16
TheJuliaoh wait19:16
TheJuliayour adding it all in one19:16
TheJuliaI guess the cleanest way is to add an RPC method to handle this change19:16
JayFthe thing that made me WTF looking at that code19:17
JayFis there are places where we work on objects directly19:17
JayFe.g. create_portgroup19:17
TheJuliaideally we would be doing this across several patches, but because its an all in one, it sort of has grown19:17
clifI'm happy to break it out into more than one if we can19:17
TheJuliaThe model is really "send the action which requires a lock to be held to the conductor"19:17
TheJuliaOh, you absolutely can, it just gets a little weird if your not used to the pattern19:18
clifpart of the reason I'm doing it here is because of previous reviews saying we need to enforce port consistency with the portgroup19:18
TheJuliaThen keep it all in one change then19:18
TheJuliaI'm just trying to come up with a way to help move things along faster so we're not churning as much19:18
cliffair, so ideally the consistency is enforced through a single rpc call?19:19
TheJuliayeah19:19
TheJuliathat way you can pull a task with a lock, update all the ports, and be done19:20
clifI'll pursue that route19:21
JayFso I think there's another thing here then, right?19:21
JayFcan someone create_portgroup with a physical network?19:21
JayFif so you'll have to RPC-itize that as well 19:21
JayFor specifically disallow it to punt the problem to later?19:22
clifseems like ideally yes19:22
clifhopefully I can design the rpc call to fit both create and update cases cleanly19:22
TheJuliaSeems reasonable to me19:23
clifthanks for taking a look19:25
opendevreviewMerged openstack/ironic master: Add SKU field to Redfish inspection  https://review.opendev.org/c/openstack/ironic/+/96046319:35
TheJuliacardoe: down to 30, but yeah, a lot of ironic-week-prio items open19:41
opendevreviewJulia Kreger proposed openstack/ironic master: Fix inspection IB port client-id  https://review.opendev.org/c/openstack/ironic/+/95580619:51
TheJuliaugh, typeo fix from codepell19:51
opendevreviewMerged openstack/ironic master: Fix : AsRockRack Management via Redfish  https://review.opendev.org/c/openstack/ironic/+/96055120:02
TheJuliamirrors are not super happy today20:34
iurygregoryTheJulia, do you think it's worth considering detecting if is idrac8/9/10 or only iDRAC10 on https://review.opendev.org/c/openstack/ironic/+/961989/2/ironic/drivers/modules/drac/boot.py ?21:12
iurygregoryI'm wondering in which cases it would be useful having such information 21:13
TheJuliaWe have a case where the version logic blows up on the redfish path because there is a firmware version check21:15
TheJuliaso, we basiclaly need to detect generation *or* idrac revision to navigate21:15
iurygregoryyeah for idrac9, in case we want to attempt using pure redfish21:16
iurygregorywe would endup with it complaining about the firmware 21:16
iurygregoryI will consider that, since it can be useful for the future in case new Dell can use pure redfish instead of idrac =)21:18
TheJuliaYeah, there are a few other issues we can fix in the driver with that context21:34
TheJuliaso it wouldn't be a bad idea to try and surface21:34
iurygregoryTheJulia, ack, working on the patch now, so people can review tomorrow22:59
TheJuliacool cool! Thanks!23:05

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