Tuesday, 2024-07-09

spatel@nooo02:47
cnileshjrosser++ noonedeadpunk++ thanks 05:20
noonedeadpunkmornings06:56
noonedeadpunkjrosser: `defalt` vs `default` everywhere06:56
noonedeadpunkthough it should not be needed....06:58
noonedeadpunklet me check....06:59
noonedeadpunklet's land https://review.opendev.org/c/openstack/openstack-ansible/+/923632 and https://review.opendev.org/c/openstack/openstack-ansible-openstack_hosts/+/923637 to fix zed (https://review.opendev.org/c/openstack/openstack-ansible/+/923619) which would fix 2023.107:01
jrossernoonedeadpunk: look at the linter results for the previous patch sets07:01
noonedeadpunkyeah, I'm checking patchset 7 now07:01
noonedeadpunkit was all success, except linters. which is weird07:02
noonedeadpunkor well, depends. have a guess07:03
jrosserif the linter does not load vars, then it will not see a declaration for install_method07:03
jrosserI make another typo :) ?07:03
noonedeadpunkyeah, and for that it should load correct inventory07:03
noonedeadpunkyup07:03
noonedeadpunkbut I'd stick with patchset anyway - better to fix linters here, imo07:04
jrosseroh well07:05
jrosserstick with which one?07:05
noonedeadpunksorry:D 707:06
jrosserbtw was talking with andrewbonney and it would be super helpful if we can backport the changes to plug-ins repo that affects mcapi07:06
jrossereven if we don’t use them in openstack-ansible repo07:07
noonedeadpunkyeah, sure we can do that07:07
jrosserotherwise we instantly make it not possible to use master version of mcapi on C07:07
noonedeadpunkthough - we're branching ops repo as well?07:11
noonedeadpunkso we'd need to backport things there as well?07:11
jrosserfor install_defaults I think you are right07:16
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: Use openstack.osa.install_defaults role instead of vars_files  https://review.opendev.org/c/openstack/openstack-ansible/+/92335807:16
noonedeadpunkthis should fix it ^07:17
noonedeadpunkfor linters07:17
noonedeadpunkspecifically https://review.opendev.org/c/openstack/openstack-ansible/+/923358/10/.ansible-lint07:17
jrosseroh! TIL :)07:18
noonedeadpunkbtw I was wondering recently, why in the world do we install haproxy+keepalived on bare metal instead of containers?07:18
noonedeadpunkjust historically?07:18
jrosserI think that because the container restart (that happens quite a bit) during playbooks would be kind of bad07:19
jrossersame for neutron agents I guess07:19
noonedeadpunkand... we need to restart containers that frequently?07:20
noonedeadpunkfor neutron agents I actually thought it was related to managing lxb from containers is not great...07:21
noonedeadpunkmaybe better with ovs/ovn though, but still07:21
noonedeadpunkok, but yes, I didn't thought about container restarts07:22
noonedeadpunkofr linters, probably, there's some way to pass inventory path... but dunno07:22
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Remove remove_container_journal common task file  https://review.opendev.org/c/openstack/openstack-ansible/+/92336607:32
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Remove dynamic-grouping common task file  https://review.opendev.org/c/openstack/openstack-ansible/+/92336707:32
opendevreviewMerged openstack/openstack-ansible-openstack_hosts unmaintained/yoga: Allow openstack_hosts role to configure git safe.directory entries  https://review.opendev.org/c/openstack/openstack-ansible-openstack_hosts/+/92363707:32
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Use haproxy_endpoint_manage role from osa collection rather than common-tasks  https://review.opendev.org/c/openstack/openstack-ansible/+/92336807:32
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: [doc] Update role maturity matrix  https://review.opendev.org/c/openstack/openstack-ansible/+/92371207:50
noonedeadpunkdo you think it's time for us to try to move default of hw_machine_type to q35? meaning: https://docs.openstack.org/nova/latest/admin/hw-machine-type.html08:35
jrosserwe do that already for some time as an override08:40
noonedeadpunkI assume you have that for arm/x86 differently?09:10
opendevreviewMerged openstack/openstack-ansible-plugins master: Modify install_defaults to be more overridable  https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/92339009:10
noonedeadpunkI'm just starring on this thing for couple of cycles already, but haven't applied it09:11
andrewbonneyYes, we have 'hw_machine_type: "x86_64=q35"'09:11
noonedeadpunkand that looks like a good thing as a default these days...09:11
noonedeadpunkand aarch64=virt?09:11
andrewbonneyWe don't appear to set anything explicit for aarch6409:12
noonedeadpunkas I guess you can do just define all arches at once...09:12
noonedeadpunkas, as it's already virt....09:12
noonedeadpunkmakes sense09:13
noonedeadpunkcrap, os_ironic patch keeps timing out on rocky upgrade job09:23
opendevreviewMerged openstack/openstack-ansible-lxc_container_create stable/2024.1: Respect dhcp_use_routes in lxc_container_networks  https://review.opendev.org/c/openstack/openstack-ansible-lxc_container_create/+/92364109:33
jrosserlooks also like the linters still fail09:42
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: [doc] Add Code Review policies to contributor documentation  https://review.opendev.org/c/openstack/openstack-ansible/+/92372509:53
noonedeadpunkwtf09:54
noonedeadpunk`Passed: 0 failure(s), 0 warning(s) on 4 files. Last profile that met the validation criteria was 'production'.` was locally09:54
noonedeadpunkhttps://paste.openstack.org/show/bw2yEzfrIDhYlWD3fjHd/09:56
noonedeadpunkoh, right09:57
noonedeadpunkit's now `ansible-playbook --syntax-check --list-tasks playbooks/setup-everything.yml`09:57
noonedeadpunkthat is reproducible...09:57
noonedeadpunkhuh10:04
noonedeadpunkthat actually feels like some ansible bug10:06
noonedeadpunkhttps://paste.openstack.org/show/bFLaOmhckgXj3MXNQSqV/10:06
noonedeadpunkbut, if I uncomment...10:06
noonedeadpunkhttps://paste.openstack.org/show/bsLDEevwTW50s6fXtz84/10:07
noonedeadpunkso like it tries to pre-check vars without actually loading them?10:07
jrosserdo we run the latest ansible-lint?10:08
noonedeadpunkit's not ansible-lint that's failing now10:08
noonedeadpunkI did just ansible-playbook test.yml 10:08
noonedeadpunkI wonder if ansible-core 2.17 covers that...10:10
noonedeadpunk(it does not)10:10
noonedeadpunkactually... include_role works....10:11
noonedeadpunkok, so probably your approach with default was good...10:19
noonedeadpunkas indeed, import somehow wants variable in advance....10:19
noonedeadpunkbut then - it also imports wrongly10:20
noonedeadpunkso, inventory/group_vars/ are not loaded/respected10:20
noonedeadpunkhttps://paste.openstack.org/show/btPzIg6mohQKVZNHH6fc/10:22
noonedeadpunkso, like... import does not respect group_vars?10:27
jrosserwell i had a total difficulty with this the first time round10:28
noonedeadpunkand eventually, the patch works overall _only_ because it's in user_varables: https://zuul.opendev.org/t/openstack/build/a2cd8e25b0fe4d92a3a0154cac7bb412/log/logs/etc/host/openstack_deploy/user_variables.yml.txt#5910:29
noonedeadpunkas if I will do `ansible-playbook test.yml -e @inventory/group_vars/all/all.yml` - it will work10:30
noonedeadpunkimo, that's an ansible bug....10:30
jrosserprobably worth making an issue if you think so as i have had good luck with replies recently, even if it's "thats not a bug"10:31
noonedeadpunkyeah, making one10:33
noonedeadpunkyeah, our CI is passing _only_ because it's all in extra-vars10:37
noonedeadpunkso indeed, worth adding default for now, I guess...10:37
noonedeadpunkcrap10:37
noonedeadpunkhttps://github.com/ansible/ansible/issues/8355510:59
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: Use openstack.osa.install_defaults role instead of vars_files  https://review.opendev.org/c/openstack/openstack-ansible/+/92335811:14
noonedeadpunkok, I'm out of guesses how to make https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/923594 pass12:31
noonedeadpunkit always timeouts specifically on rocky 2023.1 upgrade12:32
noonedeadpunkpretty much inclined to set this job to NV12:32
opendevreviewMerged openstack/openstack-ansible unmaintained/yoga: Skip installing curl for EL  https://review.opendev.org/c/openstack/openstack-ansible/+/92363212:39
jrosserit's pretty unclear to me why the rocky jobs takes sooo much longer consistently than the others12:42
noonedeadpunkthey are kinda not on master12:45
noonedeadpunkit's really couple of minutes there12:50
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Remove remove_container_journal common task file  https://review.opendev.org/c/openstack/openstack-ansible/+/92336613:52
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Remove dynamic-grouping common task file  https://review.opendev.org/c/openstack/openstack-ansible/+/92336713:58
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Use haproxy_endpoint_manage role from osa collection rather than common-tasks  https://review.opendev.org/c/openstack/openstack-ansible/+/92336813:58
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: [doc] Add Code Review policies to contributor documentation  https://review.opendev.org/c/openstack/openstack-ansible/+/92372513:58
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: Add a release note about install_method not respecting group_vars  https://review.opendev.org/c/openstack/openstack-ansible/+/92375414:09
opendevreviewAmy Marrich proposed openstack/openstack-ansible master: [doc] Add Code Review policies to contributor documentation  https://review.opendev.org/c/openstack/openstack-ansible/+/92372514:58
noonedeadpunk#startmeeting openstack_ansible_meeting15:02
opendevmeetMeeting started Tue Jul  9 15:02:36 2024 UTC and is due to finish in 60 minutes.  The chair is noonedeadpunk. Information about MeetBot at http://wiki.debian.org/MeetBot.15:02
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.15:02
opendevmeetThe meeting name has been set to 'openstack_ansible_meeting'15:02
noonedeadpunk#topic rollcall15:02
noonedeadpunksorry for being late 15:02
noonedeadpunko/15:02
noonedeadpunk#topic office hours15:08
noonedeadpunkso, I didn't have much progress during this week and was mainly absent previous one15:08
noonedeadpunkone of relatively importanti things - I've decided to write down policies for when we can land a change - please kindly review https://review.opendev.org/c/openstack/openstack-ansible/+/923725 and comment out there15:09
NeilHanlono/ i'm here 15:09
noonedeadpunkas that's kinda project governance thingy15:10
NeilHanlon++  will review15:10
noonedeadpunknext to that - unmaintained/yoga seems healthy. I clean forgot to update release patch to transition Zed to unmaintained as well15:10
jrossero/ sorry just in another meeting, here soon15:10
noonedeadpunksure15:11
noonedeadpunkbut now we'd need to land https://review.opendev.org/c/openstack/openstack-ansible/+/923619 to fix 2023.1 upgrade jobs15:11
noonedeadpunkwe also should have issued new minor releases last week with regards to CVE-2024-3249815:11
noonedeadpunkthough, I was waiting for os_ironic bugfix to land, though it keeps timeouting on rocky upgrade job15:12
NeilHanlon🙉15:12
noonedeadpunkI'm really about to set this job to NV specifically for Ironic...15:12
noonedeadpunkHave zero idea why it's that slow....15:13
jrosserit is curious indeed15:13
noonedeadpunkto be also fair - upgrade from 2023.1 takes way longer then from 2023.215:14
noonedeadpunkand like - 30m longer15:14
jrosseri hope it actually does the upgrade and we did not break that somehow15:15
noonedeadpunkI'm just checking last 4 rechecks for ironic, and for ubuntu upgrade from 2023.2 is 2h 11m; 2h 09m; 2h 15m 15:15
noonedeadpunkwhile from 2023.1 jammy is 2h 49m; 2h 35m; 2h 56m15:16
noonedeadpunkhehe15:16
jrosserlike if it upgrades to the same version that would be quicker /o\15:17
noonedeadpunkI think it does: https://zuul.opendev.org/t/openstack/build/c0680e7fcd124a8ea02ed9a1bfe29ce9/log/job-output.txt#6478-649015:17
noonedeadpunkand then https://zuul.opendev.org/t/openstack/build/c0680e7fcd124a8ea02ed9a1bfe29ce9/log/job-output.txt#20066-2028515:18
noonedeadpunkso we optimized something :D15:18
NeilHanlon:D15:19
noonedeadpunkI can recall you jrosser was puting some effort into that actually15:19
NeilHanlonoh hmmm15:19
NeilHanlonfatal: [localhost]: FAILED! => {"changed": false, "failures": [], "msg": "Depsolve Error occurred: \n Problem: problem with installed package curl-7.76.1-29.el9_4.x86_64\n  - package curl-minimal-7.76.1-29.el9_4.x86_64 from baseos conflicts with curl provided by curl-7.76.1-29.el9_4.x86_64 from @System\n  - package15:19
NeilHanloncurl-minimal-7.76.1-29.el9_4.x86_64 from baseos conflicts with curl provided by curl-7.76.1-29.el9_4.x86_64 from baseos\n  - conflicting requests", "rc": 1, "results": []}15:19
NeilHanlondid we miss a backport?15:20
noonedeadpunkI _think_ it just landed to yoga15:20
noonedeadpunkif you're talking about https://review.opendev.org/c/openstack/openstack-ansible/+/92361915:20
NeilHanlonyeah 15:20
noonedeadpunkit's re-checking right now15:20
NeilHanlonahh okay15:20
NeilHanlonsorry i misunderstood--thought that was the timeout one15:20
noonedeadpunkdoh, it failed :(15:21
noonedeadpunknah, timeout one is https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/92359415:21
jrosserthat is timeout during log upload?15:23
jrosseri feel like we have been there before15:23
noonedeadpunknah15:23
noonedeadpunktimeout is actually somewhere between tempest and rally15:23
noonedeadpunkso it's just being slow15:23
noonedeadpunkok, it succeeded just now in gates15:24
NeilHanlonof course15:24
noonedeadpunkso hopefully it will land now....15:24
NeilHanlonit's because it was being observed15:24
noonedeadpunksure, and it just got scared of you :D15:24
noonedeadpunkit always works like that - once you look at a thing it get scared and behaves15:25
NeilHanlonI believe in computer/technology "Mana"15:25
NeilHanlonif you don't have enough mana with something, it won't respect you15:25
NeilHanlonuntil someone with more mana comes aroud15:25
noonedeadpunkhaha, yeah, probably :D15:26
noonedeadpunkso, we still have ansible-core 2.17 and mariadb 11.4 thingy15:26
noonedeadpunkwill try to check on mariadb this week15:26
jrosseransible-core just needs a release note on ceph-ansible15:27
jrosserand a fix for the upgrade issues15:27
noonedeadpunkyeah15:27
noonedeadpunkwhich maybe worth doing as a follow-up?15:27
noonedeadpunkok, I guess it's time for another etherpad15:27
jrosserthat would be helpful yes15:28
noonedeadpunk#link https://etherpad.opendev.org/p/osa-epoxy-ptg15:29
noonedeadpunkI propose to start building up ptg one right away15:30
NeilHanlonthe name i vote for is never chosen... :P 15:31
noonedeadpunkfrankly - all names were terrible this time15:35
noonedeadpunkimo15:35
noonedeadpunkwe have actually 2 more things regarding new ansible-core15:37
noonedeadpunkfirst - we need to drop `ANSIBLE_COLLECTIONS_PATHS` - this raises the warning in 2.1715:37
noonedeadpunkhttps://paste.openstack.org/show/bomMOIV12Nki1ffQNstj/15:37
noonedeadpunkand the second - kinda time to think about what to do regarding DEFAULT_GATHER_SUBSET15:38
noonedeadpunkas that is /o\15:38
opendevreviewJonathan Rosser proposed openstack/openstack-ansible-openstack_hosts master: Manage apt repositores and keys using deb822_repository module  https://review.opendev.org/c/openstack/openstack-ansible-openstack_hosts/+/90743415:39
jrosseri have a patch for the collections path15:40
jrosserhttps://review.opendev.org/c/openstack/openstack-ansible/+/92192815:41
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible-rabbitmq_server master: Manage apt repositores and keys using deb822_repository module  https://review.opendev.org/c/openstack/openstack-ansible-rabbitmq_server/+/90783315:42
noonedeadpunkoh nice15:42
noonedeadpunksorry, I haven't reviewed all things from previous week yet :(15:42
noonedeadpunkhuh, I wonder if https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/923403 might help us with facts as well15:43
jrosseryeah i was thinking about something like that too15:44
jrosserthough the thing is DEFAULT_GATHER_SUBSET also affects all 3rd party codde we use, which is a super nice side effect15:44
noonedeadpunkyeah15:44
noonedeadpunkI wonder if it's worth rasing within Ansible community15:45
noonedeadpunkand what's the thinking behind that15:45
jrosserbut perhaps module_defaults on all playbooks will do the same?15:45
noonedeadpunkmaybe they just don't recognize the usecase...15:45
jrosserwould need to check if module_defaults will propagate down into a called role15:45
noonedeadpunkthat is _very_ annoying....15:46
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible unmaintained/yoga: Bump role SHAs for unamitained/yoga  https://review.opendev.org/c/openstack/openstack-ansible/+/92376815:49
noonedeadpunkthis is another thing that's probably needed for Zed upgrade job...15:49
noonedeadpunkas it needs more modern openstack_hosts role15:49
jrosseri'm not sure that the work i did on auto-handling stable/<> vs unmaintained/<> landed in all the branches either15:50
jrosserfixing the unmaintained branches is on my todo list but just no time15:50
noonedeadpunkwell, it pulls the right thing on Zed15:50
noonedeadpunkYoga does not have that patch though15:51
noonedeadpunkbut upgrades are NV there anyway15:51
noonedeadpunkactually about that15:51
noonedeadpunkmaybe we should just eol everything below Yoga?15:51
noonedeadpunkor Xena 15:51
noonedeadpunk(I'd keep Xena maybe...)15:52
jrosserwe do still get queries on the ML about upgrades from old stuff15:52
jrosserso yes we should EOL *really* old stuff15:52
noonedeadpunkso we have Victoria, Wallaby, Xena and Yoga15:52
noonedeadpunklike neither of them feel *really* old....15:53
noonedeadpunk(while they kinda are)15:53
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible unmaintained/yoga: Bump role SHAs for unamitained/yoga  https://review.opendev.org/c/openstack/openstack-ansible/+/92376815:54
noonedeadpunkand I highly doubt we'll backport anything below Yoga...15:54
noonedeadpunkThough I know couple of folks are still running Xena...15:55
opendevreviewJonathan Rosser proposed openstack/openstack-ansible-ops master: Add support for deploying mcapi control plane k8s on debian-12  https://review.opendev.org/c/openstack/openstack-ansible-ops/+/92358616:03
jrosserNeilHanlon: i have the starting point of making magnum cluster api work on rocky here https://review.opendev.org/c/openstack/openstack-ansible-ops/+/923447/816:04
NeilHanlonooh, nice!16:04
jrosserthough if it does not "just work" i'm not sure i have time to chase it16:05
jrosserso just fyi if you're interested in magnum stuff16:05
jrosserit will be kerrnel meets lxc meets bpf meets cilium == brok, most likely16:05
NeilHanlonalright cool, appreciate the heads up16:06
noonedeadpunk#endmeeting16:11
opendevmeetMeeting ended Tue Jul  9 16:11:02 2024 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)16:11
opendevmeetMinutes:        https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-07-09-15.02.html16:11
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-07-09-15.02.txt16:11
opendevmeetLog:            https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-07-09-15.02.log.html16:11
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Use UCA mirror in CI for ubuntu  https://review.opendev.org/c/openstack/openstack-ansible/+/92377616:37
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Use ceph mirror in CI jobs  https://review.opendev.org/c/openstack/openstack-ansible/+/92377716:39
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Use UCA mirror in CI for ubuntu  https://review.opendev.org/c/openstack/openstack-ansible/+/92377616:43
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Use ceph mirror in CI jobs  https://review.opendev.org/c/openstack/openstack-ansible/+/92377716:43
noonedeadpunkbtw - another ironic change that waits for merge/backport: https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/92323316:44
jrosserhuh interesting comment about new features in 2.17 on your github issue16:50
noonedeadpunkhuh17:04
noonedeadpunkindeed17:04
jrosseroh cool NeilHanlon look it worked \o/ https://zuul.opendev.org/t/openstack/build/0c6e8b4627564ce59d7d28f0c45ce95b/logs17:04
jrosserthats the back-end k8s cluster you need in the openstack control plane working for magnum on rocky17:05
jrosserwell i am super happy about that17:05
noonedeadpunk┳━┳ ヽ(ಠل͜ಠ)ノ17:06
jrosserit also worked now on debian-1217:07
noonedeadpunkthere was some patch in WIP for that iirc?17:07
jrosseryeah there are patches in the ops repo for it17:08
jrosserbut currently they only get tested in os_magnum as thats where the jobs are defined17:08
jrosserso there is a stack of things in the ops repo here https://review.opendev.org/c/openstack/openstack-ansible-ops/+/923586/317:10
jrosserand the tests are here (currently NV but i will change that once it completes) https://review.opendev.org/c/openstack/openstack-ansible-os_magnum/+/92317417:12
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: Add a release note about install_method not respecting group_vars  https://review.opendev.org/c/openstack/openstack-ansible/+/92375417:19
opendevreviewMerged openstack/openstack-ansible-os_ironic stable/2024.1: Add new RBAC parameters which are necessary from 2024.1  https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/92359417:31
noonedeadpunkfinally17:32
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible stable/2024.1: Bump SHAs for 2024.1 (Caracal)  https://review.opendev.org/c/openstack/openstack-ansible/+/92355917:33
noonedeadpunkcrap, I just realized that it was me who didn't review 92323317:34
opendevreviewMerged openstack/openstack-ansible master: Remove use of deprecated ANSIBLE_COLLECTIONS_PATHS  https://review.opendev.org/c/openstack/openstack-ansible/+/92192818:12
jrossernoonedeadpunk: is this right? https://review.opendev.org/c/openstack/openstack-ansible/+/923754/218:58
jrosseradd `public: true` then abandon?18:58
opendevreviewMerged openstack/openstack-ansible master: [doc] Add Code Review policies to contributor documentation  https://review.opendev.org/c/openstack/openstack-ansible/+/92372519:01
opendevreviewMerged openstack/openstack-ansible-os_ironic master: Fix Ironic IPA version for 2024.1  https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/92323319:29

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