Thursday, 2022-01-13

opendevreviewMerged openstack/ironic master: Use driver_internal_info methods for ilo driver  https://review.opendev.org/c/openstack/ironic/+/81850702:35
opendevreviewMerged openstack/ironic master: Use driver_internal_info methods for drac driver  https://review.opendev.org/c/openstack/ironic/+/81850602:38
*** pmannidi is now known as pmannidi|AFK06:04
arne_wiebalckGood morning, Ironic!07:39
opendevreviewAija Jauntēva proposed openstack/ironic master: Fix prepare ramdisk for 'wait' states  https://review.opendev.org/c/openstack/ironic/+/82331108:29
opendevreviewAija Jauntēva proposed openstack/ironic master: Fix Redfish RAID for non-immediate controllers  https://review.opendev.org/c/openstack/ironic/+/82331208:29
rpittaugood morning ironic! o/08:31
*** mnasiadka_ is now known as mnasiadka08:43
opendevreviewRiccardo Pittau proposed openstack/ironic bugfix/18.1: Use stable/xena upper-constraints  https://review.opendev.org/c/openstack/ironic/+/82445108:48
*** sshnaidm|afk is now known as sshnaidm08:49
opendevreviewAija Jauntēva proposed openstack/ironic master: Fix validating input for redfish update_firmware  https://review.opendev.org/c/openstack/ironic/+/82370109:04
opendevreviewRiccardo Pittau proposed openstack/ironic bugfix/19.0: Fix Redfish RAID deploy steps  https://review.opendev.org/c/openstack/ironic/+/82442509:07
opendevreviewAija Jauntēva proposed openstack/ironic master: Fix validating input for redfish update_firmware  https://review.opendev.org/c/openstack/ironic/+/82370109:11
opendevreviewRiccardo Pittau proposed openstack/bifrost master: Follow up to "Run bifrost on CentOS Stream 9"  https://review.opendev.org/c/openstack/bifrost/+/82418609:13
arne_wiebalckhey rpittau o/09:22
rpittauhey arne_wiebalck :)09:22
arne_wiebalckdtantsur: TheJulia: re missing/dropping quotes on etags (which is against the http standard), we have followed up with the vendor/manufacturer and they confirm this is indeed a bug which will be fixed in the upcoming release of their firmware09:24
rpittauthat's good news. hopefully it'll be ready soon :)09:26
dtantsurmorning ironic09:33
dtantsurarne_wiebalck: \o/09:33
dtantsurTheJulia: sorry, I have to leave early on Wednesdays09:34
arne_wiebalckrpittau: end of March it seems09:34
opendevreviewMerged openstack/ironic bugfix/18.1: Add dhcp options for each ip_version once  https://review.opendev.org/c/openstack/ironic/+/82401509:51
opendevreviewMerged openstack/ironic bugfix/18.1: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416709:52
opendevreviewAija Jauntēva proposed openstack/ironic master: Add more sources to redfish firmware upgrade  https://review.opendev.org/c/openstack/ironic/+/82278110:07
opendevreviewDmitry Tantsur proposed openstack/ironic master: Do not fail inspection on invalid MAC  https://review.opendev.org/c/openstack/ironic/+/82452310:33
opendevreviewVerification of a change to openstack/ironic bugfix/19.0 failed: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416610:35
opendevreviewVerification of a change to openstack/ironic bugfix/19.0 failed: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416610:54
iurygregorygood morning Ironic o/11:26
opendevreviewMerged openstack/ironic stable/xena: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416311:48
opendevreviewMerged openstack/ironic stable/wallaby: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416411:56
opendevreviewVerification of a change to openstack/ironic stable/victoria failed: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416511:56
*** outbrito_ is now known as outbrito12:02
opendevreviewMerged openstack/ironic bugfix/18.1: Clarify driver load error message  https://review.opendev.org/c/openstack/ironic/+/81967812:03
opendevreviewMerged openstack/ironic bugfix/19.0: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416613:35
*** emilien-oftc is now known as EmilienM13:35
opendevreviewMerged x/sushy-oem-idrac master: Migrate constants to enums  https://review.opendev.org/c/x/sushy-oem-idrac/+/81702813:43
rpittauthis https://review.opendev.org/c/openstack/ironic/+/824451 should provide a definitive fix for 18.1 branch CI, at least from dependencies perspective13:44
iurygregoryI will review after the meetings I have in my plate =)14:23
TheJuliagood morning14:39
iurygregorygood morning TheJulia =)14:49
dtantsurTheJulia: morning14:54
rpittaugood morning TheJulia :)14:54
TheJuliadtantsur: no worries15:00
TheJuliadtantsur: when you have a moment, could you take a glance at https://review.opendev.org/c/openstack/python-ironic-inspector-client/+/824247 ? We've issues being driven by wsgi + haproxy + python3 + eventlet which we need to route aroudn as it has ground much of downstream work to a halt15:01
dtantsurI will, just let me have the (overdue) lunch first15:02
TheJuliaokay, no worries15:02
TheJuliaThanks!15:02
TheJuliao/ stendulker 15:11
stendulkerTheJulia: o/15:15
dtantsurTheJulia: is there a reason we don't have to do https://review.opendev.org/c/openstack/python-ironic-inspector-client/+/824247/3/ironic_inspector_client/common/http.py in ironicclient/openstacksdk/etc?15:41
TheJuliadtantsur: we actually return bodies in almost everything else15:41
TheJuliainspector is unique in empty bodies afaik15:41
dtantsurmmm, not PUT /states/...?15:41
TheJuliawe return a body in ironic15:41
TheJuliaremember a while back where I was like, why don't we just change inspector to return an empty dict :)15:42
dtantsurheh15:42
dtantsurTheJulia: https://docs.openstack.org/api-ref/baremetal/?expanded=change-node-power-state-detail#change-node-power-state doesn't mention any body though15:43
TheJuliahttps://github.com/openstack/ironic/blob/master/ironic/api/controllers/v1/node.py#L1121-L1122 <-- has me wondering why we do that15:59
dtantsurTheJulia: I think HTTP ACCEPTED *should* (even *must*? dunno) have a Location15:59
TheJuliaI *think* it is multi-cases16:00
TheJuliaerr, multi-cased16:00
TheJuliadifferent frameworks perhaps, I wonder what exactly we return as headers16:01
dtantsurhmm, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location16:01
TheJuliagot a running ironic someplace?16:01
dtantsuryep16:01
TheJuliaI did read someplace in some browsers can honor 204 with location. Or maybe it was 20216:02
dtantsurI would expect 202, but MDN does not mention it16:02
TheJuliasounds a lot kike content-length support16:02
TheJuliaapparently the only thing that *doesn't* support is is Safari's engine16:02
dtantsurokay, what to check in my ironic?16:03
TheJuliadtantsur: if you wouldn't mind16:04
TheJuliabut https://github.com/openstack/ironic/blob/aed88ed93e5147f2d4ab5efc3c7fcd93076fae93/ironic/api/method.py#L63-L8116:04
TheJuliaI could have sworn that that endpoint returns an emtpy {}16:05
TheJuliaInspectors wsgi framework is different though16:06
dtantsurTheJulia: https://paste.opendev.org/show/812095/16:06
TheJuliaContent-Length: 0 is what prevents it from happening on the encoding issue16:10
TheJuliabut the framework overrides that16:10
TheJuliaand prevents it from being set I believe16:10
dtantsurwait, we don't return Content-Length in inspector? Oo16:11
TheJulianope, the framework prevents it16:12
TheJuliait also likes to make the encoding chunked16:13
dtantsurokay, I think that's the actual bug we should really, really fix16:13
TheJuliayeah, but we're literally dead in the water downstream16:13
dtantsurmmm?16:13
TheJulianone of our QA folks are able to use inspector period16:13
dtantsurI guess you can cherry-pick this inspector patch if in hurry, but what about other clients?16:14
dtantsurI think not returning content-length may upset many potential consumers16:14
* dtantsur is really curious WHY16:14
TheJuliait is content length or encoding pattern16:14
TheJuliaunfortunately 202 and 204 seem to be the super weird edge case16:14
dtantsur"A user agent SHOULD send a Content-Length in a request message when no Transfer-Encoding is sent and the request method defines a meaning for an enclosed payload body. For example, a Content-Length header field is normally sent in a POST request even when the value is 0 (indicating an empty payload body)."16:15
dtantsurA server MUST NOT send a Content-Length header field in any response with a status code of 1xx (Informational) or 204 (No Content).16:16
dtantsuroh heck16:16
TheJulialol16:16
dtantsurHTTP is a bloody disaster, who even thought restful APIs were a good idea?16:16
TheJuliamaybe that is why we're getting flask injecting chunked encoding16:16
dtantsur"A server MUST NOT send a Transfer-Encoding header field in any response with a status code of 1xx (Informational) or 204 (No Content)." :)16:17
* TheJulia tosses wet cats at everything16:17
rpittau"wet" cats? :D16:18
TheJuliaYes, mordred used to claim to toss wet cats at people16:18
TheJuliaalthough, for all the times he said it to me, they never appeared. Curious ;)16:18
*** sshnaidm is now known as sshnaidm|afk16:18
dtantsuryeah, I've also not seen it myself16:19
TheJuliaat one point, I believe after he shifted to mostly sdk stuff, he stopped using the expression16:19
rpittauno more cats to throw16:20
TheJuliaLast photo I saw of him on facebook I believe had 8 or 9 kittens in it16:20
rpittaufantastic :D16:20
dtantsurah, right, he started mass-fostering16:20
dtantsurTheJulia: have you figured out if it's flask or mod_wsgi?16:22
TheJulianot sure yet16:22
TheJuliacurrently looking at werkzeug16:22
TheJuliaso one conudnrum is content encoding16:24
TheJuliathe transfer-encoding is a hop to hop flag, so things are allowed to modify it along the path16:24
TheJuliaso I see the 204 being excluded16:25
dtantsurI don't think it's 100% correct16:25
dtantsuryou cannot switch from transfer-encoding to content-length and whole body16:25
dtantsur(unless you really want to cache the whole body first)16:25
TheJuliayou can if you download the entire thing into a proxy and modify it16:26
TheJuliahttps://github.com/pallets/werkzeug/blob/f7b53ee8a81f015c6c85659959004328237a3c8c/src/werkzeug/middleware/http_proxy.py#L132-L139 Hmm16:28
TheJuliabut that shouldn't be int he code path16:28
dtantsurI don't think we use ProxyMiddleware16:32
TheJuliayeah, that is what I meant not in the code path16:32
dtantsurah right16:32
* TheJulia peers into the depths of mod-wsgi16:32
dtantsurTheJulia: I assume I won't be able to reproduce the bug on bifrost because of no WSGI?16:33
TheJuliaunlikely16:33
TheJuliaactually, if you've got inspector, what do your headres look like since you just have a bare process16:34
rpittaubye everyone, I'm off tomorrow, see you on monday! o/16:34
dtantsurhave a good weekend rpittau 16:35
dtantsurTheJulia: for which API call?16:35
TheJuliaany of the empty body response api calls16:35
TheJuliathe popular one is introspection rule delete16:35
dtantsurokie, let me just figure out the basic auth :D16:36
TheJuliaseeing shell code compiled into a c program makes my head hurt16:37
dtantsurTheJulia: https://paste.opendev.org/show/812098/16:38
dtantsurffs16:38
dtantsurit does violate the RFC16:38
dtantsurI think we must fix that as a top priority16:39
TheJuliahmm16:39
TheJuliawhich means it is flask, or werkzueg 16:40
* TheJulia goes back to flask16:40
dtantsurTheJulia: I really wonder if we do something weird in _generate_empty_response16:40
TheJuliaharold tried reverting it to what we did before16:40
TheJuliaand still the same thing happened16:40
TheJuliawith what we did before, mod_wsgi was claiming the request had failed16:41
TheJuliawhich should have been a hint to the encoding16:41
TheJuliabut.... 16:41
TheJuliaI'm trying to remember on what exactly apache was barfing on16:42
TheJuliahmmm so werkzug does force a content-type response16:48
* TheJulia unlocks the work computer to see if a test env is still up16:50
TheJuliaoohhh ahhh16:51
dtantsurI'll try to reproduce the issue on a minimal flask installation16:59
TheJulialikely good, I just tried something I was hoping unfortuantely doesn't fix it16:59
dtantsurhmm, I cannot reproduce it on a simple example17:04
dtantsurwhat the hell17:06
TheJuliahow did you generate the response?17:08
dtantsurTheJulia: https://paste.opendev.org/show/812101/17:09
TheJuliawth indeed17:12
dtantsurinterestingly, my simple example uses HTTP 1.0, I wonder why17:12
TheJuliayour response body?17:13
dtantsurTheJulia: this is very different from what I see in bifrost: https://paste.opendev.org/show/812102/17:13
TheJuliawtf17:14
dtantsurI wonder if it's something in wsgi_service17:17
TheJuliathat feels unlikely, but... hmm17:20
TheJuliaoh....17:20
dtantsuryep, this is it17:21
dtantsurTheJulia: minimal reproducer: https://paste.opendev.org/show/812103/17:22
dtantsurI wonder if it's coming from eventlet17:24
dtantsuryeah, it's even eventlet. it's ALWAYS eventlet.17:26
dtantsurTheJulia: a new, even minimaler reproducer: https://paste.opendev.org/show/812104/17:28
TheJuliaheh17:28
TheJuliayup, I'm reading through the eventlet wsgi code and it looks like it is entirely modeled around chunked encoding transfers17:28
dtantsurbloody eventlet. I wonder why ironic is not affected.17:29
TheJuliaand it explicitly adds it if content-length is not in the header list17:29
dtantsurwell, at least for 204 it's a violation of the RFE. wanna report it?17:29
TheJuliayeah, I'll open it, got a link to the RFC doc ?17:30
dtantsurTheJulia: https://httpwg.org/specs/rfc7230.html#header.transfer-encoding17:31
TheJuliaThanks17:31
TheJuliaso Ironic returns a content-length header which bypasses the eventlet logic17:46
TheJuliaI'll likely have to do the same in since it is the lesser evil17:46
dtantsurTheJulia: fwiw I tried that17:47
TheJuliahmm, I did notice we do it in a very particular way with ironic17:48
TheJuliaI need to go find that again17:48
dtantsuryeah, my naive approach with response.headers did not work17:48
arne_wiebalckbye everyone, see you tomorrow o/18:04
dtantsuro/18:07
opendevreviewMerged openstack/ironic stable/victoria: Ensure 'port' is up2date after binding:host_id  https://review.opendev.org/c/openstack/ironic/+/82416518:50
opendevreviewJulia Kreger proposed openstack/ironic-inspector master: Return a content-length on HTTP204 to prevent client failures  https://review.opendev.org/c/openstack/ironic-inspector/+/82464320:02
stevebaker[m]good morning20:06
TheJuliagood morning stevebaker[m]!20:07
TheJuliayou'll love https://review.opendev.org/c/openstack/ironic-inspector/+/824643 20:08
stevebaker[m]TheJulia: I've just got through the backscroll20:12
stevebaker[m]wow20:13
stevebaker[m]TheJulia: so I bet even the latest eventlet does this20:14
TheJuliahttps://github.com/eventlet/eventlet/issues/74620:15
TheJulia0.33 released like 45 minutes ago20:15
stevebaker[m]well good sleuthing20:23
TheJuliaThank Dmitry, I didn't realize the headers were verboten on 20420:35
stevebaker[m]I think having to run "strace grub2-install" inside a diskimage-builder chroot is a strong sign that your day has gone wrong :(22:15
stevebaker[m]TheJulia: it looks like grub on centos9 detects whether the system is efi by reading /sys/firmware/efi/fw_platform_size, and refuses to install legacy grub. But the mounted sysfs comes from the host22:21
stevebaker[m]oh an explicit --target=i386-pc helps22:33
stevebaker[m]oh there is already code to handle this, but it needs a tweak22:36
TheJulia:)22:36
TheJuliathat explains another recent discussion22:37
stevebaker[m]TheJulia: this block should handle it but this conditional is a bit off https://opendev.org/openstack/diskimage-builder/src/branch/master/diskimage_builder/elements/bootloader/finalise.d/50-bootloader#L9922:39
TheJuliayeah, not surprising22:49

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