Wednesday, 2023-09-13

opendevreviewVerification of a change to openstack/ironic master failed: CI: Remove ubuntu focal job  https://review.opendev.org/c/openstack/ironic/+/89401402:25
opendevreviewMerged openstack/ironic master: CI: Remove ubuntu focal job  https://review.opendev.org/c/openstack/ironic/+/89401405:18
johnthetubaguyJayF: I can be available later to give you a hand09:33
opendevreviewAlex Welsh proposed openstack/bifrost master: Improve downloaded deployment image support  https://review.opendev.org/c/openstack/bifrost/+/88488809:44
JayFjohnthetubaguy: I'd appreciate that. I'll be starting in about an hour13:14
opendevreviewDmitry Tantsur proposed openstack/ironic master: [WIP] Generic API for attaching/detaching virtual media  https://review.opendev.org/c/openstack/ironic/+/89491813:20
samcat116I'm trying to do an L3 deployment using virtual media. My servers here need to use an 802.3ad bond to the switches, so I'm trying to use the --network-data feature to create those bonds. However the IPA doesn't seem to be grabbing it. I can see the json I've created on the node properties, however the IPA doesn't seem to grab it at all. Is there a location on the IPA where this should be set? I can see on the IPA journal logs that13:26
samcat116the first thing it says is it cannot find a config drive, so I am assuming thats part of it. Do I need to do anything special to enable that?13:26
TheJuliagood morning13:30
opendevreviewAlex Welsh proposed openstack/bifrost master: Improve downloaded deployment image support  https://review.opendev.org/c/openstack/bifrost/+/88488813:31
opendevreviewAlex Welsh proposed openstack/bifrost master: Improve downloaded deployment image support  https://review.opendev.org/c/openstack/bifrost/+/88488813:39
TheJuliaAnyone have the ptg etherpad link handy? And can we please add it to the whiteboard13:41
TheJuliafound in the eavesdrop logs, added13:43
samcat116Am I correct in that the --config-drive argument affects the end user image and not the ramdisk/IPA image?14:01
samcat116And that if I specify something with --network-data the conductor will build a config drive for the IPA for me, and then I can use --config-drive to send cloud-init data to the final end user image14:02
opendevreviewAlex Welsh proposed openstack/bifrost master: Improve downloaded deployment image support  https://review.opendev.org/c/openstack/bifrost/+/88488814:09
TheJuliasamcat116: give me a little bit and I can look, I woke up with a migraine this morning14:11
samcat116Sure no worries at all14:12
TheJuliaso my understanding is that is exactly how it works. There are likely rough edges because the person doing the work was successful, did some presentations, and after it was initially released, but really before folks started looking to use it, they became ill14:21
TheJuliaso IPA might not be grabbing it for a couple different reasons, and it really is not IPA, we set the stage for it. Is simple-init included in your IPA?14:22
TheJuliathe DIB element simple-init ?14:22
dtantsursamcat116, all sounds correct to me14:25
samcat116I built an ipa and made sure to add the flag to include glean14:28
samcat116Which is what the spec says network-data needs14:29
TheJuliasamcat116: were you able to capture the boot log from the host?14:29
TheJuliaperhaps over IPMI serial over lan?14:30
samcat116I just had a crash card hooked up to the server in the data center14:31
TheJuliaand the screen is going to scroll *really* fast14:31
samcat116I think my next step is to throw ironic into debug mode and see if it catches anything there, as it sounds like it would be something on that side not building the iso correctly with the config drive14:31
samcat116Yep that was annoying14:31
TheJuliayeah, that is likely a good first step14:31
TheJuliaI'd also see if you can get an ipmi SOL console and capture that output to a text file14:31
TheJuliathat way you can see what the agent is doing/reporting14:31
TheJuliaas well as glean/simple-init14:32
TheJuliait might be there is a silly syntax error or something that is not being spotted14:32
TheJuliathat it finds when it attempts to do the needful.14:32
samcat116I’ll try that as well14:32
TheJuliaBetween the two, that *should* give you all the information needed to figure out what is going on14:35
TheJulia... in theory :)14:35
TheJuliaWell, I'm on an etherpad roll today. 6 new items so far today14:58
JayFTheJulia: can you spare 10 minutes for me please?15:26
JayFTheJulia: relatively urgent and I have johnthetubaguy on the zoom15:26
TheJuliagive me a couple of minutes, to get to a stopping point15:26
TheJuliaJayF: link?15:30
opendevreviewJay Faulkner proposed openstack/ironic master: [CI] Support for running with shards  https://review.opendev.org/c/openstack/ironic/+/89446015:37
JayFFYI: Nova sharding is being reverted due to several issues https://etherpad.opendev.org/p/nova-sharding-rca17:30
dtantsursadpanda17:45
JayFwould be a sadder panda if we had landed it broken17:53
iurygregoryperfect... I was able to upgrade using the firmware interface, but....18:39
iurygregory| last_error             | Node b1bbbbbb-84b1-5856-bfb6-6b5f2cd3dd11 failed step {'interface': 'firmware', 'step': 'update', 'args':  |18:39
iurygregory|                        | {'settings': [{'component': 'bmc', 'url': 'http://10.19.130.157:8080/ilo5281.bin'}]}, 'abortable': False,  |18:39
iurygregory|                        | 'priority': 0}: Failed to set node power state to power on. 18:39
iurygregory.-. need to figure out this now...18:39
samcat116So getting back to my network-data troubleshooting, I can see the network data being built into the ISO under /openstack/latest/network-data.json. I don't know how that file on the iso gets mapped into a config drive as that's what glean is expecting from what I can tell. Working on getting the ipa logs next19:23
samcat116Ok definitely an error from Glean, however the error is just `Error: <mac-address I have in the file>`20:05
TheJuliawell, that is vague20:07
TheJuliaany chance you can share what you set for the network-data ?20:07
samcat116https://paste.opendev.org/show/bBOWUBSEHA5cSPd04PJo/20:14
TheJuliaoh... it is literally just "Error: 00:11:22:33:44:55"20:15
TheJuliaI've seen this before20:15
samcat116heres the glean logs20:15
samcat116https://paste.opendev.org/show/bX30K9ODurwpuNQoe9AH/20:15
JayFsamcat116: omit the mac for bond020:16
JayFsamcat116: note I say that with more confidence and authority than I have; but I would 100% believe glean can't differentiate because they have the same mac across 3 links20:16
JayFbut that's mostly a guess20:17
TheJuliabingo most likely,a ctually20:17
TheJuliayeah, two interfaces with the same mac20:17
samcat116i was thinking that too and will try it, but it seemed like it errored on both interfaces with the opposing mac, which made me suspicious20:17
* TheJulia wonders if glean happilly handles bonding20:17
samcat116I cmd + F'd the glean source and found a bunch of instances,so, hopefully?20:18
samcat116in my mind thats like feature number 2 after setting a static IP20:18
samcat116Looking again it definitely does20:19
samcat116it doesn't validate any of the bond settings it seems, just happily passes them along20:20
JayFmakes sense20:20
JayFthis format was originally specified at the request of a user who had bonded networks w/vlans on top of the bond20:20
JayF(it me)20:21
JayFhttps://review.opendev.org/c/openstack/releases/+/894228 probably last chance to look at cycle highlights if folks wanna take another look20:29
samcat116JayF so i removed the mac for bond0, but not im getting a json validation error20:32
samcat116'Invalid network_data: {''id'': ''bond0'', ''type'': ''bond'', ''bond_links'': [''eno1'', ''eno2''], ''bond_mode'': ''802.1ad'', ''bond_xmit_hash_policy'': ''layer3+4'', ''bond_miimon'': 100} is not valid under any of the given schemas  (HTTP 400)'20:32
JayFI wonder what happens if you have the key but set the value to null20:32
samcat116let me try that20:33
JayFyours is right per the original spec, fwiw https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html#rest-api-impact20:34
JayFI've only ever used this with cloud-init interpreting the user-data, not glean, so I'm not sure exactly where the edges are20:34
JayFwhat OS samcat116 20:34
samcat116centos20:35
samcat116I found the json schema for this the other day but can't find it again20:41
JayFlikely the link I just pasted to nova-specs?20:41
JayFsamcat116: I can find no reason your original wouldn't have worked20:44
JayFsamcat116: and I just read the glean codepath it (should) be taking20:44
samcat116null or empty string aren't accepted there20:44
JayFSep 13 15:05:41 localhost python-glean[764]: DEBUG:g lean: Interface matched: eno2 (08:94 :ef:a:7b:9f)20:44
JayFSep 13 15:05:41 localhost puthon-glean[764]: Error: '08:94 :ef:aa:7b:9e' 20:44
JayFare those spaces added by you?20:44
JayFoh, this is SOL output20:45
JayFisn't it20:45
samcat116yes it is20:45
samcat116i dont have sol so its a screenshot then macos ocr20:45
samcat116but messed that bit20:45
JayFyeah it's nbd, just making sure the bungled output was in teh transmission20:45
JayFdon't wanna go digging for breakages if you have a bad stick o'ram20:46
samcat116does that list of interfaces need to be exhaustive?20:47
JayFany unmatched ones get a dhcp iirc20:48
samcat116k20:48
TheJuliaJayF: so, trying to get a unit test to verify Node.list in the sdk seems... elusive :\20:48
JayFso idk how python-y you are20:48
JayFTheJulia: I am sorta off that category of thing for the day, need fresh brain20:48
JayFsamcat116: https://opendev.org/opendev/glean/src/commit/528f7216c64b459c2028a2ba81149548862b58b5/glean/__main__.py#L2420:49
TheJuliaI don't blame you, just thought I'd share since it has sort of stumped by hurting brain too20:49
JayFsamcat116: so what that tells me is something raised an unexpected exception20:49
JayFwhat would have an e.message = mac address20:49
JayFhttps://opendev.org/opendev/glean/src/commit/528f7216c64b459c2028a2ba81149548862b58b5/glean/cmd.py#L1233 I wonder what e.message is on that IOError20:50
JayFit never printed Writing Output Files that run, so it never got that far20:51
JayFsamcat116: I'd suggest filing a public bug against glean  with the config and the error; it's a bug at a minimum that we don't return a better err20:53
JayFsamcat116: I just can't figure out what's throwing the unexpected exception :(20:53
TheJuliaI do believe that is where I've seen things go sideways with glean before20:54
TheJulia#PatchesWelcome20:54
JayFsamcat116: if you could hack in an import traceback; traceback.print_exception(e) after that exception catch20:54
JayFsamcat116: you'd get a MUCH better error that likely we could pinpoint the error on20:54
JayFhttps://opendev.org/opendev/glean/src/commit/528f7216c64b459c2028a2ba81149548862b58b5/glean/__main__.py#L25 at line 24 and a half ;)20:55
samcat116im not sure if i can build glean from source for dib?20:55
samcat116i guess i can try it live on this booted host20:55
JayFglean expects to be run from udev; not sure how well that'll work20:56
JayFwhat I'd do if it were me20:56
JayFand by NO MEANS is this an endorsement of this, I know it's a hack20:56
JayFI'd try to mount up that IPA ramdisk, navigate to the IPA venv, and just edit the code inside lib/site-packages/glean/[]20:56
JayFif it's not in the IPA venv, it's a package, probably same would apply20:56
JayFsamcat116: 'import traceback; traceback.print_exc()' is an even shorter slug20:57
samcat116Ok i'll give that a whack21:00
samcat116im also trying with just a random mac for the bond21:00
JayFAfter reading the code, I have some nonzero confidence you were already doing the right thing21:01
JayFbut try all the permutations you can manage :D21:01
samcat116no glean commits in over a year or bugs filed in several years :(21:02
TheJuliawe should fix that21:02
samcat116I wish i could just use regular cloud-init here and not network_data and glean21:03
TheJulia.. i thought cloud-init could use the network metadata21:03
JayFsamcat116: you likely can, if you configured cloud-init to only do network21:05
JayFsamcat116: and I have personally used a more complex config than this against cloud-init21:05
JayFsamcat116: the downside here for cloud-init over glean for IPA use cases is that cloud-init wants to do *all the things* and all you need is networking21:05
JayFHmm also you may need to let cloud-init somehow know where to find the configdrive21:05
JayFbut I'm unsure how we shape that for network data on ipa21:05
TheJuliawe label the ISO as config-221:06
JayFso it should just work21:06
TheJulia... so sort of cheating, kind of :)21:06
samcat116JayF whats the best way to mount the ipa.initramfs so I can edit it like you said?21:29
JayFsamcat116: file ipa.initramfs21:30
JayFI hope it's a qcow, nbd, or raw. If it's a squashfs it's harder. It probably is a squashfs tho21:31
samcat116ipa.initramfs: gzip compressed data, from Unix, original size modulo 2^32 78116147221:33
JayFyeah it fits21:33
JayFhttps://github.com/openstack/ironic-python-agent-builder/blob/master/dib/ironic-ramdisk-base/cleanup.d/99-ramdisk-create#L6321:33
JayFit's a compressed CPIO archive21:33
JayFsamcat116: https://linuxconfig.org/how-to-uncompress-and-list-an-initramfs-content-on-linux something like this, in an isolated dir, then modify the command from ^ Line 63 to recreate it21:34
JayFsamcat116: full disclosure: I'm not 100% sure this will work but it'll be fun to see :D 21:34
samcat116oof21:34
JayFyeah21:34
JayFI was hoping it wa sa straight image21:34
JayFyou can loopback mount those21:34
JayFwhich makes it 1000x easier to do something like this21:34
JayFsamcat116: if you're already using cloud-init, I encourage going down that path21:35
JayFsamcat116: it's likely easier than getting this working at this point21:35
samcat116so how do i send cloud init from ironic to the ipa21:35
JayFso the data is the exact same21:35
samcat116Oh i see21:35
JayFthey both are tools that read configdrives+network data21:35
JayFjust when you install cloud-init in your IPA image, you'll likely need to put some config alongside to say "don't install e.g. an ssh key"21:36
JayFbut I'm not sure what that full set is; but there's no technical reason I can posit it wouldn't work21:36
samcat116ah so i need to use dib manually to include that and ipa, and likely cant use the ironic-python-agent-builder21:36
JayFsamcat116: https://github.com/openstack/ironic-python-agent-builder/blob/master/ironic_python_agent_builder/__init__.py#L49 you can pass -e to ipa-builder to add elements of your own21:37
JayFsamcat116: so you should be able to keep ipa-b as the way you execute it, just create a sidecar element (in one of your own repos) that has your custom bits21:37
JayFthis is more or less how we've done it everywhere I've worked that had custom IPA images -- you sorta end up with a meta-builder repo with a couple of bash scripts and a custom element or three21:38
samcat116I found the dib element to build glean from source, so I might try that too21:40
opendevreviewJay Faulkner proposed openstack/ironic master: [releasenotes] Prelude for 2023.2/bobcat  https://review.opendev.org/c/openstack/ironic/+/89500721:57
JayFsamcat116: oh nice, yeah, that would certainly work especially if you forked it to your own repo and made that one change21:58
JayFsamcat116: there are magic DIB variables for pointing those things at your own git repos instead of the upstream21:58
JayFsamcat116: I think it's reasonably well doc'd but if you can't find it I'll help you look21:58
TheJuliaHi, Delta, why you say one of my flights is on a C-212 Aviocar?!? #IHaveConcerns21:59
JayFit's run by a surprising number of civil aviation services22:03
TheJuliaAnd now it says it is an A22022:07
TheJulia.... *weird*22:07
JayFat this rate, it'll be an A380 or 787 by the time you leave22:08
JayFif you booked it three months ago, it would've said "carrier pidgeon"22:08
TheJulialolz22:20
opendevreviewJulia Kreger proposed openstack/ironic master: Enable OVN CI  https://review.opendev.org/c/openstack/ironic/+/88508722:38
TheJuliaJayF: w/r/t https://review.opendev.org/c/openstack/networking-generic-switch/+/888051 <-- any thoughts on disabling the DLM test until we can sort through what is going on there?23:34

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