Thursday, 2024-05-09

opendevreviewJulia Kreger proposed openstack/ironic stable/2023.2: Fix spurious CI job failures around partition images  https://review.opendev.org/c/openstack/ironic/+/91864600:00
opendevreviewMerged openstack/ironic stable/2024.1: Fix spurious CI job failures around partition images  https://review.opendev.org/c/openstack/ironic/+/91864503:15
opendevreviewMichal Nasiadka proposed openstack/ironic-python-agent master: Add LVM based image support to MD scenario  https://review.opendev.org/c/openstack/ironic-python-agent/+/81668508:50
opendevreviewMichal Nasiadka proposed openstack/ironic-python-agent master: Add LVM based image support to MD scenario  https://review.opendev.org/c/openstack/ironic-python-agent/+/81668509:01
opendevreviewMichal Nasiadka proposed openstack/ironic-python-agent master: Add LVM based image support to MD scenario  https://review.opendev.org/c/openstack/ironic-python-agent/+/81668510:22
opendevreviewMichal Nasiadka proposed openstack/ironic-python-agent master: Add LVM based image support to MD scenario  https://review.opendev.org/c/openstack/ironic-python-agent/+/81668510:32
iurygregorygood morning Ironic11:30
cid\o12:05
mnaserhmm, shouldn't the root disk partition be the last one on the disk so growpart can work?12:08
mnaserI'm ending up with uefi boot fs part, bios boot part, root os part, then configdrive part12:08
mnaserand this is using a whole disk image because that's what seems to be recommended by the ironic team12:09
mnaserthis is kinda what I end up with https://usercontent.irccloud-cdn.com/file/ISfCtkPn/image.png12:10
iurygregoryI couldn't access the url (504 HTTP) .-.12:12
iurygregoryhow did you create the wholedisk image? 12:13
mnasernever mind... https://usercontent.irccloud-cdn.com/file/6gVt92xo/image.png12:13
mnaseroh looks like irc cloud is popping the bed12:13
mnasersorry screenshots are annoying because im in a no-internet no-nothing env lol12:13
iurygregoryomg =(12:13
mnaserbut pretty much it seems to be related to multipath12:13
iurygregoryI'm about to run after reading this word ...12:14
iurygregorymultipath is funny...12:14
iurygregorythis reminds me I should go back to https://review.opendev.org/c/openstack/ironic-python-agent/+/902012 :facepalm:12:14
mnaseriurygregory: https://imgur.com/tvppCtz12:14
mnaserand https://imgur.com/1WxdMUG12:15
mnaserI feel like I don't know why the root is not using the /dev/mpath12:15
iurygregoryI like the fact it complains about not having a dir ..-part3 but it says it ran successfully 12:16
mnaserloool12:17
mnaserand also12:17
iurygregorymnaser, in the df -h I don't see /dev/mpath...12:17
mnaserwell believe t or not12:18
mnaser /dev/mpatha exists but that long string of things does not12:18
iurygregoryI can totally imagine 12:18
iurygregorymultipath works in another schema of the universe 12:18
mnaseryeah :(12:19
mnaserso we need to figure out what is making those names change12:19
mnaserand make it cnsistent12:19
mnaserat least so that it makes cloud-init happy12:19
iurygregoryyeah, let me see if I can find something12:19
iurygregorymnaser, can you chack what lsblk shows for the disks?12:24
iurygregorynot sure what you already tested, I'm just looking at the logic we have in IPA to see if helps12:25
opendevreviewMerged openstack/ironic stable/2023.2: Fix spurious CI job failures around partition images  https://review.opendev.org/c/openstack/ironic/+/91864613:04
TheJuliamnaser: I think the tl;dr is cloud-init is not the end solver of non-cloud edge cases like multipath IO expecting to be working exactly like static disk devices13:14
TheJuliamnaser: I know steve wrote a tool for RHOSP called growvols to do targetted disk partition size expansion as well to address some of that disconnect13:15
mnaserTheJulia oh right. I tried to build an image with that but it didn’t extend. I forgot to dig into why/how it didn’t do its thing13:17
TheJuliamnaser: so we actually trigger it because it turns out people have preferences for how much13:18
mnaserI think in this case the root volume is being mounted without a user friendly name and then config drive later is.. or something renames them down the line.13:18
TheJuliaafter deploy that is, and that is outside of ironic13:18
TheJuliaa... user... friendly name with multipath?!13:18
mnaserI should dig into growvols again I think maybe that might be the best approach13:18
TheJuliawhat is this heracy!13:18
mnasermpatha isn’t so bad13:18
TheJulianope, its not13:18
iurygregoryI would be happy if there was a user friendly name with multipath lol13:22
iurygregorywe already don't have standards for the output =P13:23
TheJuliaIt would be nice if multipath-tools had a json output which had a static data model that wouldn't change13:28
iurygregorythat would be perfect13:32
mnaseriurygregory: sorry, I got sucked out into a few other things15:24
mnaserand a lot more of these https://usercontent.irccloud-cdn.com/file/xkOgQziP/image.png15:25
mnaserseriously, irc cloud still down?15:25
TheJuliaWorked for me :)15:42
JayFit was a 502 when I clicked it before15:43
JayFnow it's a 504 timeout15:43
mnaserok boo16:21
mnasereven if I disable user friendly names16:21
mnasercc_growpart just doesn't support multipath, it assumes dm => encrypted vols16:21
mnasergrowvols is only for lvm but the lvm element is 3 yrs old and can't build me an ubuntu image16:21
mnaserthe choices are slowing down lol16:22
* JayF has never worked with multipath I/O and wishes you luck :/16:22
JayFI will say DIB elements are relatively simple to write, and easy to downstream16:23
mnaseryeah, I am thinking a custom growpart might be the thing here16:23
JayFso if you know what needs to be done, you might be able to write something to plop a grow script in rc.local (or as a oneshot systemd unit, etc)16:23
clarkbmnaser: how is lvm failing with ubuntu? you might need to use ubuntu-minimal instead? In particular ubuntu starts from the upstraem cloud images which may not play nice with custom disk management like lvm16:24
clarkbubuntu-minimal is built up from scratch using debootstrap and that may work nicer with disk management16:24
mnaserclarkb: it failed with an assertion error wrt disk space pretty much16:24
mnaserhttps://usercontent.irccloud-cdn.com/file/ZdojFOtD/image.png16:25
mnaserapologies for screenshots, once again crappy vdi env I can't copy out of :<16:25
mnaserubuntu-minimal maybe a good idea, but the lvm element hasn't been touched for 3 years either so I felt maybe it may have bitrotted16:25
clarkbor its been stable. The things that tend to need changes are "$distro uses this network tool now instead of that one" stuff like filesystems and disks are very stable16:26
clarkband thats in the block device code which is relatively well exercised16:26
clarkbI believe opendev uses it for some of our images (arm?)16:26
mnaserclarkb: so arm uses block-device-uefi-lvm ?16:27
clarkbmnaser: not lvm but a custom partition setup: (and it was debian not arm) https://opendev.org/openstack/project-config/src/branch/master/nodepool/nodepool.yaml#L228-L24516:29
clarkbmnaser: looks like we're using mbr in that partition scheme and you're failing in gpt. Did you provide a custom layout in DIB_BLOCK_DEVICE_CONFIG. Looks like the error is beacuse you haven't provided sufficient space for the layout16:30
clarkbbasically I think this isn't an lvm error. This is a sanity check when trying to write out the disk and its saying there isn't enough disk to handle the content. Trying to work backward to determine how the disk size is set16:33
mnaserI think I will have to investigate a bit more on this16:42
mnaserthe other fun thing now is figuring out how I can stand up trunked ports (but ideally natively through openstack directly)16:42
JayFI know all the metadata is plumbed through neutron/ml2 drivers for it16:45
JayF(the network config you're after is what we ran for OnMetal, vlans on top of a bond)16:45
clarkbreading the code that your screenshot shows failing what it is doing is indicating the size of your gpt partition is larger than free disk size. The local_loop portion of the config (you can see it in my example block) can specify a disk size. If you don't you get a default size. It will either log "Image size [$size]" or "Using default image size [%s]"16:45
clarkbmy read of that is that either you've specified a size that simply isn't big enough or the default isn't large enough for your gpt parition (because you've specified a gpt partition size that is larger than the default base loopback device size)16:46
mnaserJayF: yeah I wonder if just creating a trunk and ports inside using neutron will just ~make it happen~ but I doubt it lol16:46
JayFif you have ml2+ngs setup ... 16:46
JayFthere is a nonzero chance16:46
mnaserclarkb: yeah, I think that ism next thing to tune, it feels like it had a little bit more space16:46
mnaserJayF: nah, ml2/ovn but also using lace fallback to get IPA to work, so when the bond is up, I can use "the new config" 16:47
JayFoh, are you using our OVN VTEP switch support landed last cycle?16:48
mnaserso provisioning network = unlacp-d, then when it finishes deploying it goes into the lacp'd state when it first boots into a trunk port16:48
JayFor something else16:48
mnaserno no, nothing fancy, things are static on the switch side, im just using the fact no lacp up = provisioning/cleaning network, lacp up = final network (all bms live on the same network)16:49
opendevreviewJulia Kreger proposed openstack/metalsmith master: Error with clarity when a bad upgrade was encountered  https://review.opendev.org/c/openstack/metalsmith/+/91866416:49
JayFThat significantly reduces the security you gain from using a separate provisioning/cleaning network16:49
mnaserI agree, but this is a very single tenant environment and there's no way I can ever login to the switches there ever :)16:50
JayFI figured, just wanted to make sure it was said out loud :D 16:53
JayFin this case... it should just work, right?16:53
JayFwhy wouldn't it just work? cloud-init supports that kinda metadata16:53
mnaseryeah but I'm wondering if when creating the vlans what will "inject" all of these things16:54
mnaserlike it would be nice if I created a trunk port in neutron and created the nova instance and it ... magically showed up in the configdrive16:54
JayFas long as it's all structured properly in neutron16:54
JayFit will be correct in network_data.json16:54
JayFand should configure on the machine -- I know bonds with vlans on top are generally supported16:54
JayFif it's truly 100% static on the switch16:55
JayFthis is one of those bits where: if it's like you've described, you might be surprised as how smoothly it works16:55
mnaserJayF: I just wasn't sure how ironic mutated the config since I noticed the the bond was in the network_data.json16:55
mnaserso wasn't sure if like.. ironic was slurping it and mutating it somehow16:55
clarkblooks like default image size is based on the size of the content that will go in the image + some small amount of extra room by default (66% more). If the actual image is small but you've requested a largish gpt partition I could see this happening. For example a 600MB image would add up to about 1GB of image space but then if you are requesting a GPT partition of say 20GB16:55
clarkbyou'd fail because you're well over the 1GB that was provisioned16:55
clarkbso anyway I don't think ubuntu vs ubuntu-minimal is the problem or even lvm. Its just a matter of getting the numbers to align16:56
TheJuliamnaser: we don't mutate it at all, we just pass it through16:56
JayFNah, Ironic just passes it through. 16:56
mnaserso where is this magic coming from lol https://usercontent.irccloud-cdn.com/file/Pt92g4Za/image.png16:57
JayFnova assembles the configdrive16:58
JayFlemme find the code16:58
mnaserahh so nova ironic virt driver detects there is a port group I guess16:59
JayFhttps://opendev.org/openstack/nova/src/branch/master/nova/virt/ironic/driver.py#L112416:59
JayFit's in the network metadata16:59
JayFthis isn't even really ironic-specific afaict16:59
JayFhttps://opendev.org/openstack/nova/src/branch/master/nova/virt/ironic/driver.py#L1043 well, we assemble it ourselves17:00
mnaserok cool cool17:00
JayFlike I said, you're using an identical setup to what onmetal used17:00
mnaseryeah so nova's ironic driver takes that and feeds it to to ironic that doesn't touch it17:00
JayFand I'm pretty sure we dotted all the i's and crossed the t's upstream :D 17:00
JayFyep exactly17:00
JayFif you're using Ironic standalone, you can pass in JSON instead of a full configdrive and we do some assembly IIRC17:01
JayFbut that's not the case for nova integration17:01
cidI'm trying to setup ironic-tempest-plugin testing locally, is that possible?19:08
cidDevstack is already running and I have my patches (ironic and ironic-tempest-plugin) localized as well. I know a systemctl restart|stop&start devstack@ir-.*\.service will pick up my local changes(?).19:08
cid 19:09
cid  19:09
cidBut just running itp at this point skips with a “Neutron not available” reason.19:09
cid 19:11
cidAlso, I doubt the possibility of getting the ironic patch on ironic-tempest dependence feature locally?19:11
opendevreviewTony Breeds proposed openstack/bifrost master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/bifrost/+/91882519:22
iurygregorycid, so you added the patches in the local.conf correct?19:24
iurygregoryrestart | start stop won't pickup code changes (even if you apply in the repos if I recall)19:25
cidiurygregory, No, not in local.conf19:26
cidChanges to that will require rebuilding devstack, I think 19:27
iurygregoryyeah it would19:27
iurygregoryafaik is the only way to pick-up changes that are not merged19:28
iurygregorylet me see if I can find the link19:28
opendevreviewTony Breeds proposed openstack/ironic master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic/+/91889619:28
opendevreviewTony Breeds proposed openstack/ironic-inspector master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-inspector/+/91889719:28
opendevreviewTony Breeds proposed openstack/ironic-inspector-specs master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-inspector-specs/+/91889819:28
opendevreviewTony Breeds proposed openstack/ironic-lib master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-lib/+/91889919:28
opendevreviewTony Breeds proposed openstack/ironic-prometheus-exporter master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-prometheus-exporter/+/91890019:28
opendevreviewTony Breeds proposed openstack/ironic-python-agent master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-python-agent/+/91890119:29
opendevreviewTony Breeds proposed openstack/ironic-python-agent-builder master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/91890219:29
opendevreviewTony Breeds proposed openstack/ironic-specs master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-specs/+/91890319:29
opendevreviewTony Breeds proposed openstack/ironic-tempest-plugin master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/91890419:29
opendevreviewTony Breeds proposed openstack/ironic-ui master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/ironic-ui/+/91890519:29
cidThat means JayF, must have done some magic at least once19:29
iurygregorycid, https://docs.openstack.org/ironic/latest/contributor/devstack-guide.html#downloading-an-unmerged-patch-when-stacking 19:29
iurygregoryfrom what I remember this would be the way do have a patch that is not merged running in a local devstack19:29
iurygregoryit's been a long time I've deployed devstack (maybe something changed?)19:30
JayFDo not assume that whatever I did to get it working in a hurry was the right thing. I think iurygregory pointed you to the official way. Maybe you can teach me the right way19:32
cidThis link will go a long way.. 19:32
opendevreviewTony Breeds proposed openstack/metalsmith master: [DNM] Testing docs bump with new Sphinx  https://review.opendev.org/c/openstack/metalsmith/+/91893719:33
iurygregorynot sure how much unstack.sh works, but basically you would run unstack.sh, update your local.conf to point to the changes in ironic and ironic-tempest-plugin and run stack.sh19:34
JayFThere are other, more manual ways to do it. I suspect learning how to use devstack to do it as the better path long term though19:35
cidiurygregory: "...update your local.conf to point to the changes in ironic and ironic-tempest-plugin and run stack.sh" can this be the local repo19:38
iurygregorycid, you mean the cloned repo from ironic and ironic-tempest-plugin?19:38
cidyes19:38
iurygregoryI mean, it could work for the tempest-plugin I think.., from what I remember about devstack is that it will clone the upstream repos from the master branch (unless you tell a specific stable/branch, or a patch that you need)19:40
cidok, thanks19:45
cidI will poke around, I'm looking to do a lot of the testing locally.19:46
cidgood night \o19:46
JayFyeah the code itself is in /opt/stack19:48
JayFso what I did originally was just go into /opt/stack/ironic after spinning up a master-branch devstack and manually issue the changes, and then restarted devstack@ir-api & devstack@ir-cond19:48
JayFthat's always been my workflow with devstack, but it may not be the best choice for everyone as I'm a bit more comfortable on linux systems than some developers19:49
cidYeah, that's the approach I was trying to reference earlier :D19:50
JayFI was on mobile having lunch or I would've expounded then :D19:50
opendevreviewIgor Kádson de Souza Oliveira proposed openstack/bifrost master: Update deprecated config in troubleshooting  https://review.opendev.org/c/openstack/bifrost/+/91894820:58
opendevreviewMerged openstack/bifrost master: Update deprecated config in troubleshooting  https://review.opendev.org/c/openstack/bifrost/+/91894821:20
iurygregoryJayF, was fast =P I almost didn't have time to give my +221:21
JayFIf I'm having a conversation in IRC between work items, and I see a change pop up, I try to get someone a quick review :D 21:21
JayFjust like when I land something really, really old sometimes ... those are cool moments in OSS (when someone instareviews your stuff, or lands something you wrote years old) so I like enabling those for other people21:21
iurygregoryi totally understand 21:21
iurygregoryI was helping igor to get his first contribution :D he found that issue while deploying bifrost21:22
JayFtoo late, I already helped him21:30
JayFturn over your gold star ;) 21:30
JayFGuess what work I'm currently distracted from (writing those presentations lol)21:32
iurygregory:D21:34
iurygregoryyeah21:34
iurygregoryit was funny to see an old machine not working because the image was wrong XD21:34
JayFwhoops, that was in the wrong channel21:34
JayFWell I'm glad he found+fixed it21:35
mnaserboo21:43
mnaserit seems `vlan_mac_address` and all the other vlan friends are actually not generated/passed/anything in nova..21:44
mnaserit's in nova's network_data schema.. but I can't find anywhere that it generates with that21:44
JayFI suspect that's a bug? I'm not sure though.21:46
mnaserhttps://codesearch.opendev.org/?q=vlan_mac_address&i=nope&literal=nope&files=&excludeFiles=&repos=21:47
mnaserBifrost uses it.. some airship/etc stuff use it, but nova does not21:47
mnaserbooo21:47
mnaserthat may bring me many steps back now sadly to relying directly to ironic and drop nova to get what I need done21:48
JayFI'd strongly suggest filing a bug with your use case and specific missing fields 21:50
JayFit's 100% in the schema as located in the nova api doc21:50
JayFso if they should be passing some metadata thru and are not, this would seem like a bug for me21:51
JayF(at least using vlan_mac_address as an example)21:51
clarkbthe former network person in me is struggling with the idea of a vlan mac address22:05
clarkbmac addresses are for interfaces not networks22:05
TheJuliaSame…22:05
JayFclarkb: linux will happily spoof a different mac for each vlan22:05
clarkbJayF: ya but thats still an interface address22:06
JayFbut in this case, I think it's more to ID VLAN<->physical IF mappings22:06
JayFe.g. the vlan_mac_address isn't saying "this is the mac address to set for this VLAN", it's saying "this is the mac address for the interface this VLAN lives on" iirc22:06
clarkbah that makes more sense22:06
mnaserYeah also it seems all the vlan stuff don’t really get passed down like vlan_id etc22:21
mnaserI can’t find anything that generates that in the network data :(22:21
JayFjohnthetubaguy: Do we use bonded interfaces with VLANs on top downstream? I think so, yeah? We don't have any patches for it do we?22:23
JayFmnaser: I have a hypothesis, with no data yet, that it may be an OVN v OVS kinda thing22:23
JayFmnaser: but I believe this is possible, and if it's not, it's something that's not acceptable and I'd prioritize fixing22:24

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