Earlier  
Posted Nick Remark
#openstack-nova - 2025-04-03
13:23:47 mnaser Ironic port groups?
13:23:48 sean-k-mooney and its implemtned i think in ironci directly via port groups?
13:23:57 sean-k-mooney ya prot groups are not a thing in nova or neutron
13:24:07 sean-k-mooney its a purely ironic only network construct
13:24:28 mnaser Yeah and the only place that l
13:24:42 mnaser "Bond" network data is generated is config drive
13:25:04 mnaser So otherwise if I use metadata ill have to do this manually after system boot
13:25:34 sean-k-mooney so ironic has it own enrechment of the stand metadta https://github.com/openstack/nova/blob/master/nova/virt/ironic/driver.py#L1045-L1106
13:25:37 sean-k-mooney for the network info
13:25:59 sean-k-mooney which is all custom for the ironic integration and not part of how this normally works
13:26:42 mnaser The enrichment relies on the get network metadata returning the right thing and that doesn't do that so that's how we end up where we are :p
13:27:39 sean-k-mooney right os most if not all other dirver use the commeon code that is shared with the api for generating this metadtaa
13:27:50 sean-k-mooney https://github.com/openstack/nova/blob/master/nova/api/metadata/base.py#L112
13:29:04 sean-k-mooney so they generate there enriched config driver here when calling provision https://github.com/openstack/nova/blob/master/nova/virt/ironic/driver.py#L1239-L1258
13:29:05 mnaser I think attach_interface is how ports are plugged?
13:30:06 sean-k-mooney so port bidnign is intened to happen in the compute manger and that is when the ip should be assigend
13:30:31 sean-k-mooney and then port pluggin is where we are ment to talk to the network backend to make sure the ports are conencted on the swtich
13:30:34 sean-k-mooney virutal or otherwise
13:30:58 sean-k-mooney and tha tis when we are ment to waith for the network-vif-plugged evnet
13:31:42 sean-k-mooney plug_vifs in the ironic driver is a noop
13:31:44 sean-k-mooney https://github.com/openstack/nova/blob/master/nova/virt/ironic/driver.py#L1567-L1638
13:32:42 sean-k-mooney that is breakign the virt dirver contract by how its delegating the attachment
13:33:07 dansmith sean-k-mooney: juicy OTU series just waiting for +Ws :) https://review.opendev.org/c/openstack/nova/+/944148
13:34:10 sean-k-mooney dansmith: yes... im aware. im slightly anooyed at you for askign for an os-traits release when i ask not to do that unlie we landed teh vdi traits but its on my list to look at before the ptg
13:34:52 mnaser Now I'm wondering where does it even get the ports from... Unless it doesn't and ironic does that stuff behind the scenes?
13:35:07 sean-k-mooney mnaser: so attach_interface is ment to be for adding/removing port after the "server" is created
13:35:21 mnaser That's what I thought...
13:35:30 dansmith sean-k-mooney: you did? I'm sorry
13:35:49 mnaser So that means the neutron vif plug happens when the spawn is called
13:35:50 sean-k-mooney dansmith: its fine, release are cheap
13:36:00 sean-k-mooney mnaser: ya internaly in ironic
13:36:16 mnaser So I think it might be impossible to get configdrive then
13:36:28 dansmith sean-k-mooney: yeah, I honestly never would have though it would be worth ever holding a release to batch up more than one
13:37:10 mnaser Because the plug happens after we call ironic to spawn with configdrive included.
13:37:17 mnaser I see what you mean about the whole callback thing now
13:37:20 mnaser Uuuuuugh
13:37:22 sean-k-mooney dansmith: well last time i ask peole said they woudl take a look at the traits patch and didnt. gibi did look this time to give them credit
13:37:51 sean-k-mooney mnaser: this is one of the large pices of technial debt with the ironic driver
13:37:59 sean-k-mooney its doign several things its not allowed to do
13:38:05 dansmith sean-k-mooney: link me
13:38:10 sean-k-mooney including changign the vnic type ot baremetal
13:38:33 sean-k-mooney dansmith: its no kind of blockd on use approving the specless blueprint which si now a ptg topic but sure on sec
13:39:21 dansmith sean-k-mooney: okay well if I had realized I would have argued not to block my thing on another blocked thing, especially since "releases are cheap" :)
13:39:25 sean-k-mooney dansmith: its https://review.opendev.org/c/openstack/os-traits/+/940418
13:40:08 sean-k-mooney dansmith: we can wait till melwitt has a chance ot respond or till the ptg
13:40:26 sean-k-mooney dansmith: anyway ill try and get to the OTU device tommorw or this evening
13:40:27 dansmith yeah, sounds like that's the best idea
13:41:01 sean-k-mooney mnaser: i think port bidning is still done in nova.
13:41:33 sean-k-mooney mnaser: if we can confirm that we may be able ot tweak plug_vifs to refesh the cache or soemthign like that to get the ip in teh defered case
13:41:46 sean-k-mooney mnaser: but its kind of building one hack on top of anohter
13:42:09 sean-k-mooney unless we can do that in a common way in the compute manger of coruse
13:43:00 mnaser hmm yea
13:43:49 mnaser Do other drivers rely on compute manager to bind the ports?
13:44:01 sean-k-mooney yes
13:44:08 sean-k-mooney virt drivers are not allowed to do it
13:44:19 sean-k-mooney tehy can do port pluging
13:44:33 sean-k-mooney btu that a diffent thing
13:45:19 sean-k-mooney as i said the ironic dirver or ironci its self is doing thing that its not technailly allowed to do like modifyiing cidner volume attachmetn or neutron ports
13:45:24 mnaser I see, so then technically we should have a bound port at some point when we generate the config drive
13:45:51 sean-k-mooney i dont thinke we will
13:46:10 mnaser Like I know this sounds stupid but as a workaround for me now a sleep and a refresh of network info can potentially make the ip arrive?
13:46:13 sean-k-mooney because im not sure any of the prot groups stuff for the bonds will be done when we bind but i might be wrong
13:46:35 mnaser It doesn't matter since all I need is for the IPs to be there on the neutron port
13:46:40 sean-k-mooney mnaser: ill point out that we never added supprot for l3 rounte network to the ironic driver in nova as far as i recall
13:47:08 sean-k-mooney we added some generic supprpot but it was never tested with ironic
13:47:21 sean-k-mooney and i doing think it was supproted in the nova spec
13:47:27 mnaser The ironic code even sorta handles the port group and maps it automatically
13:47:41 mnaser And updates the Mac address in the config
13:48:06 mnaser So I'm pretty sure if Nova manager binds it, we should be able to fix things if we wait?
13:49:28 sean-k-mooney i think we would have to call attach_interface to trigger that
13:49:53 sean-k-mooney port bidnign is the process of setting a binding:host on the neutron port to the hostname of the relvent host
13:50:02 sean-k-mooney that casuse the neutron ml2 driver to update the port
13:50:08 sean-k-mooney with extra data like the ip
13:50:53 sean-k-mooney however we dont know the mac adress of interface in nvoa unless we are looking that up form ironci or anytihng about the port groups again unless we are calling out to ironic
13:51:32 sean-k-mooney the ironic driver moved all fo that to ironic so they could have a singel code path for that in ironic for standaloen mode
13:52:07 sean-k-mooney mnaser: a simpler way to do this might be to modify ironic to just update the content of the config drive wehn it does all the networking setup
13:52:46 sean-k-mooney that doubling down on the wrong behavior but if they are modifying networkhing out of band then updating the metadta to reflect that makes sense
13:54:17 dansmith sean-k-mooney: https://meetings.opendev.org/irclogs/%23openstack-nova/%23openstack-nova.2025-04-01.log.html#t2025-04-01T14:09:06
13:54:50 dansmith sean-k-mooney: to be fair, you were talking to gibi not me.. I did show up a few minutes later (first thing in the morning) asking gibi a question about a gerrit review, but I obviously didn't read back the scroll there
13:55:16 sean-k-mooney ya thats fair.
13:55:50 sean-k-mooney i expected Uggla to rely that into the release patch
13:56:11 dansmith also, what's not fair is how hard it is to grep logs for something sean-k-mooney said.. "grep sean-k-mooney.*release 2025*.log" .. no results :D
13:56:41 sean-k-mooney :) there use to be a hound instnace that someone ran that had all the irc logs
13:56:48 sean-k-mooney liek 8-10 year ago
13:56:54 sean-k-mooney it was kind of nice to be able to find thing
13:56:56 dansmith sean-k-mooney: honestly, every time I add something to os-traits I get really upset about how incredibly silly the process is that we've designed for getting string constants into nova
13:57:09 sean-k-mooney ya
13:57:27 sean-k-mooney so that was added by mikal as a ptg topic
13:57:33 sean-k-mooney askign if we can avoid the dance somehow
13:57:34 dansmith write nova patch, write os-traits patch, merge os-traits, release os-traits, merge upper-constraints, bump requirements.. only then can you go back to the first step and run tests on the nova patch :(
13:57:46 sean-k-mooney we coudl have nova just create the standard traits on start up if not present
13:58:02 dansmith sean-k-mooney: I proposed this per gmann to cut out one step at least https://review.opendev.org/c/openstack/requirements/+/946183
13:58:31 sean-k-mooney hum that could help
13:58:45 dansmith feel free to +1 to show your support :D
13:58:46 sean-k-mooney we stil have an annoying coupleing dance with placeemtn too
13:59:06 sean-k-mooney this applies to os-ressouce classes too.
13:59:07 dansmith yes, honestly we should just squash placement and os-traits back into nova to solve it for good :D
13:59:40 sean-k-mooney well we solve it for us. but then we force neutorn et all to land a patch to nova to add a triat
14:00:07 sean-k-mooney what i was consdiring is allowing anytihng with a service role to add standard traits via the api
14:00:11 dansmith ...which is still less work than they have to do currently with os-traits, releases, requirements, etc :)

Earlier   Later