Thursday, 2023-01-12

JayFI'm not willing to try via git this time; it's my EOD and I don't think it's wise to push those changes when I'm going to bail afterwards00:00
JayFif there's another way to check outside of web or JFDI, I'm willing to try that, otherwise I'll find out if it works the hard way first thing tomorrow :D00:00
fungii'll be around00:00
fungijust give me a heads up00:00
JayFack; will-do. Will probably try to get on it early, like 7a/8a PST 00:01
ianwyeah, just to confirm i pulled the refs/meta/config on ironic-inspector and it's udpated00:01
ianwupdated even00:01
fungii'm on the opposite coast, so no problem00:02
ianw2023-01-11 23:55:19,365: manage_projects - INFO - Processing project: openstack/ironic-inspector00:02
ianw2023-01-11 23:55:22,594: manage_projects - INFO - Processing project: openstack/ironic-lib00:02
fungiperfect00:03
ianwso, let's say 5 seconds/project 00:03
fungifor ~2.2k projects if memory serves00:03
clarkbwe could also do them in batches00:03
clarkbby removing subsets of the cache file00:03
ianw$ cat manage-projects.yaml.log | grep 'manage_projects - INFO - Processing' | wc -l00:04
ianw232900:04
fungiyeah, ls-projects says 2331 but we don't update all of those00:04
ianwso, 4800 is going to be tight00:05
fungii think it includes the All-Projects and All-Users repos in ls-projects00:05
funginot so much "tight" as ~2.5x that long00:06
fungiwe could blow away slices of the checksums00:06
fungilet it reapply in smaller batches00:06
ianwor run manually00:07
Clark[m]The upside to only removing hashes is that it will reconcile the refs meta config without trying to do the other stuff too00:09
ianwi feel a bit vested in this because removing the deprecated copy conditions is going to be almost the same thing00:09
Clark[m]And I think only the refs meta config has this issue in jeepyb though before we rely on that reviewing it is a good idea00:09
Clark[m]Mostly I get scared making changes to jeepyb because the potential for pain is high but if we aren't changing jeepyb code we're probably fine00:10
fungimanage-projects is the only code we're still relying on in jeepyb right?00:10
Clark[m]And the lp sync stuff00:11
ianwi will write some thoughts at https://etherpad.opendev.org/p/760YNeM5OEFS1hlr7bE5 and we can come up with a checklist plan00:12
fungioh, yeah the bug updating scripts never did get replaced by zuul jobs00:28
fungithough it seems like they could be trivially converted00:28
ianwclarkb/fungi: https://etherpad.opendev.org/p/760YNeM5OEFS1hlr7bE5 is my summary of the situation.  no urgent but we can follow up on all the todos01:17
ianwnow  ... ipv6 issues :/01:17
Clark[m]ianw: left a couple of notes on the ehterpad but I think that captures it well01:29
ianwthx, will review01:47
opendevreviewIan Wienand proposed opendev/system-config master: iptables: handle hosts in allowed groups not having an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988602:49
opendevreviewIan Wienand proposed opendev/system-config master: nodepool-base: use ipv4 ZK addresses if we don't have an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988803:12
opendevreviewIan Wienand proposed opendev/system-config master: iptables: handle hosts in allowed groups not having an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988604:28
opendevreviewIan Wienand proposed opendev/system-config master: nodepool-base: use ipv4 ZK addresses if we don't have an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988804:28
opendevreviewIan Wienand proposed opendev/system-config master: infra-prod: save run logs even if being published  https://review.opendev.org/c/opendev/system-config/+/86989104:59
opendevreviewIan Wienand proposed opendev/system-config master: infra-prod: don't encrypt logs if they are being published  https://review.opendev.org/c/opendev/system-config/+/86989204:59
opendevreviewIan Wienand proposed opendev/system-config master: iptables: handle hosts in allowed groups not having an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988605:24
opendevreviewIan Wienand proposed opendev/system-config master: nodepool-base: use ipv4 ZK addresses if we don't have an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988805:24
*** ysandeep is now known as ysandeep|ruck05:32
*** marios is now known as marios|rover06:03
*** ysandeep|ruck is now known as ysandeep|ruck|brb06:54
*** soniya29 is now known as soniya29|afk07:16
*** ysandeep|ruck|brb is now known as ysandeep|ruck07:21
*** ysandeep|ruck is now known as ysandeep|lunch07:22
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981907:33
*** ysandeep|lunch is now known as ysandeep|ruck08:12
*** jpena|off is now known as jpena08:37
opendevreviewIan Wienand proposed opendev/system-config master: iptables: handle hosts in allowed groups not having an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988610:50
opendevreviewIan Wienand proposed opendev/system-config master: nodepool-base: use ipv4 ZK addresses if we don't have an ipv6 address  https://review.opendev.org/c/opendev/system-config/+/86988810:50
*** rlandy|out is now known as rlandy11:11
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981911:20
*** gthiemon1e is now known as gthiemonge11:36
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981912:04
*** ysandeep|ruck is now known as ysandeep|ruck|afk12:27
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981912:54
opendevreviewCedric Jeanneret proposed opendev/system-config master: Override default branch name  https://review.opendev.org/c/opendev/system-config/+/86997513:02
*** dasm|off is now known as dasm13:10
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981913:42
opendevreviewRiccardo Pittau proposed openstack/project-config master: Reduce virtualpdu tests  https://review.opendev.org/c/openstack/project-config/+/86997913:45
opendevreviewCedric Jeanneret proposed opendev/system-config master: Override default branch name  https://review.opendev.org/c/opendev/system-config/+/86997513:54
*** ysandeep|ruck|afk is now known as ysandeep|ruck14:02
funginot that i'm interested in changing directions with our keycloak work, but https://github.com/zitadel/zitadel just came to my attention as a recent alternative14:24
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981914:24
opendevreviewMerged openstack/project-config master: ARM64 nodes : rename larger types to be more descriptive  https://review.opendev.org/c/openstack/project-config/+/86843914:25
opendevreviewMerged openstack/project-config master: Add new linaro cloud  https://review.opendev.org/c/openstack/project-config/+/86844214:25
opendevreviewThierry Carrez proposed opendev/irc-meetings master: Rotate Large Scale SIG meeting schedule  https://review.opendev.org/c/opendev/irc-meetings/+/86998914:29
opendevreviewJeremy Stanley proposed opendev/irc-meetings master: Fix tox.ini for Tox v4  https://review.opendev.org/c/opendev/irc-meetings/+/87001114:44
opendevreviewMerged opendev/irc-meetings master: Fix tox.ini for Tox v4  https://review.opendev.org/c/opendev/irc-meetings/+/87001115:05
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981915:25
*** ysandeep|ruck is now known as ysandeep|dinner16:06
clarkbas a heads up I'm way behind on paperwork I need to get done by the end of theweek so I'm going to try and focus on that today16:16
clarkbI might even go do literal paperwork to help my avoid distractions on the computer16:16
fungiyeah, i'm in a similar situation16:20
opendevreviewCedric Jeanneret proposed opendev/system-config master: Correct (again) how ansible-galaxy proxy is configured  https://review.opendev.org/c/opendev/system-config/+/86981916:21
*** ysandeep|dinner is now known as ysandeep16:23
opendevreviewMerged opendev/irc-meetings master: Rotate Large Scale SIG meeting schedule  https://review.opendev.org/c/opendev/irc-meetings/+/86998916:32
*** marios|rover is now known as marios|out16:35
JayFrunning ironic-inspector bugfix branch cleanups now16:44
JayFcomplete16:46
fungiyay!16:46
JayFhopefully ironic moves from a starring role in zuul config errors16:48
JayFand goes more into being an extra lol16:48
fungithey're called "background actors" these days ;)16:49
*** ysandeep is now known as ysandeep|out16:55
*** jpena is now known as jpena|off17:28
corvusi have approved the nodepool openstack statemachine driver change, so i'll put the launchers in the emergency file now17:59
corvusalso the builders17:59
corvuscan we put a group name in there?  (like "nodepool")?18:01
corvusnope18:04
fungiyeah, not sure how that would work since it's already a group. i guess ansible doesn't do nested groups?18:37
corvusat least not that the simple and obvious way :)18:44
corvusokay change merged, i'm going to kick nl0119:10
corvusnl01 is running the new code19:15
corvusi note it's deleting some leaked servers, and they appear to be actually leaked (in that they were failed deletes from hours ago)19:16
corvusi see both create and delete statemachines completing19:18
fungithat sounds promising19:33
corvusgot a bunch of timeouts deleting servers, but considering the leaked deletes from earlier, i guess that's expected.19:35
fungiyes, it's unfortunately not all that uncommon in our providers19:37
corvusi'll grab some food then do some more rolling19:57
corvushttps://paste.opendev.org/show/b26RcjZ5PSO2aLfNOLxr/ is an interesting error from keystone, but appears to be a one-off20:05
ianwinfra-root: https://review.opendev.org/q/topic:linaro-ipv6-add are two fixes for the osuosl builder not having ipv4 addresses that i think are ready for review.  would be good to unbreak the base job. 20:12
corvuskicked nl02 which appears to be limestone/inmotion20:41
corvusinfra-root: before i restart nl03 -- i'm concerned with this exception (which is happening on the old code): https://paste.opendev.org/show/b3BVSjjwnTJIlY0AaTBU/20:56
corvusyeah, that's a syntax error in the config file20:57
corvusis nodepool going to actually start up with that?20:57
corvusi'm guessing so since it was last restarted 35 hours ago20:57
corvusso unless we messed up the syntax since then it must have worked20:57
ianwhrm, since linaro ins implicated we may have messed up the config since then, i think some additions may have merged20:57
ianwhttps://review.opendev.org/c/openstack/project-config/+/86844220:58
corvusoh the error is in clouds.yaml sorry i should have said20:58
ianwahh, i guess then 868442 might have started using the wrong clouds.yaml20:59
ianwwhat have i messed up :/?20:59
corvusi'll fix20:59
opendevreviewJames E. Blair proposed opendev/system-config master: Fix clouds.yaml syntax error for linaro  https://review.opendev.org/c/opendev/system-config/+/87003121:00
corvusianw: ^21:00
ianwit shoul dhave a value before metrics i guess21:00
corvusbut that was added in dec, so i'm guessing the launcher can still start21:00
corvusi think i'd like to go ahead and restart the launcher, and if it barfs, i'll manually fix up clouds.yaml on nl0321:01
ianwtrue, probably only if it references that, which it just started doing.  sgtm21:01
corvusrestarting now21:02
corvusit's in a restart loop.  it's a mystery to me why this didn't happen earlier21:03
corvuswill apply manual fix now21:03
ianwprobably last time it started it didn't have linaro in the config file, so i was ignoring the invalid entry21:03
corvusah gotcha21:04
corvusit's up now21:04
corvusftr, that change got a failed node request, but that was from me shutting down nl03 and not having any fallback regions; not related to running on the new code.21:06
ianwok; i'm not sure if images are uploaded and what is working or not in the new linaro cloud yet21:09
corvusrestarting nl0421:19
ianwwell nb03, which would upload the images, has the same bad config, so that's not happening21:21
corvusianw: i'm ready to restart builders -- should i fix nb03 manually and restart it first?21:24
corvuslooks like you beat me to the fix21:25
ianwyeah, but please restart, i'll watch the linaro side of things21:25
corvusit's currently in a restart loop with a pretty weird error: ModuleNotFoundError: No module named 'nodepool'21:26
corvusi'm just going to go ahead and pull the new image and restart it21:26
corvusthat error seems to still be present21:27
corvuscan be seen with docker logs21:27
clarkbthat makes me think of the tox issues with skipsdist. Though no tox should be involved here21:29
ianwvery weird, hard to think a container that does that could make it through publishing, so must be something quite odd21:30
corvusyeah, a simple docker run --rm -it zuul/nodepool-builder gets past that point21:31
corvusnb03 is an arm host?21:31
ianwyes21:31
corvusokay that explains the behavior difference at least21:31
clarkbprobably need to exec bash on that image and see what the python installation situation looks like?21:32
ianwyeah i am in it now ...21:32
corvusif i run that command on my desktop it works, but not if i run it on nb0321:32
ianw# python3 -m nodepool21:32
ianw /usr/local/bin/python3: No module named nodepool21:32
corvusso it seems like we have nodepool image building problems that are at least a few days if not weeks old21:33
corvusthere are a bunch of nodepool files in the image21:33
ianwno __init__ or nodepool.py though21:34
ianwno that's not true, __init__ is there21:34
corvus'/usr/local/lib/python3.11/site-packages' is not in sys.path on arm, but it is on x8621:34
clarkbhttps://zuul.opendev.org/t/zuul/build/1331b0fcc39147799528b6c731cbea7e/log/job-output.txt#709021:35
clarkbthats the build for the recent release note update (picked that one as a minimal change) and it seemsto clearly record nodepool being installed on arm6421:35
corvusarm: ['', '/usr/local/lib/python311.zip', '/usr/local/lib/python3.11', '/usr/local/lib/python3.11/lib-dynload', '/usr/local/lib/python3.11/dist-packages']21:35
clarkb(if you scorll up a bit that #24 step has aarch stuff in it)21:35
corvusx86: ['', '/usr/local/lib/python311.zip', '/usr/local/lib/python3.11', '/usr/local/lib/python3.11/lib-dynload', '/usr/local/lib/python3.11/site-packages']21:35
clarkbwow thats weird21:35
corvuschecking 8.0.021:36
corvusit had site-packages, but was also python 3.10.821:37
corvusnot 3.11.121:37
corvusso that could have happened with the python version bump?21:37
clarkbseems possible21:37
ianwour python builder is based on the upstream one, so that implies the bug there?21:38
corvusianw: that's my initial thought21:38
corvuswhat do folks think about a temporary PYTHONPATH env setting?21:39
corvusin the docker file21:39
clarkbcorvus: I'm good with that21:39
clarkbhttps://github.com/docker-library/python/issues is their bug tracker I'm trying to pullthat up and see if anyone has complained21:39
clarkbI'm not seeing anything related to that quickly scanning their issues list21:40
corvusdocker.io/opendevorg/python-base:3.11-bullseye on arm produces site-packages -- so it may either be our fault, or was very recently fixed21:41
ianwnothing obviously merged about it i can see21:41
clarkblooking at their dockerfiles I'm not seeing anything obvious that they do to manage python path. I guess this could be a bug in whatever is building python for those images21:42
clarkbbut ya we can force a rebuild on the opendev base images21:42
corvusto be clear, opendev base image looks correct21:42
clarkboh21:42
clarkbsorry I read that as the upstream image being correct not opendev. Opendev hasn't updated them in a little bit21:42
clarkbthats something that gets baked into the python install at a pretty base level right? I'm surprised if the opendev base image is fine that the nodepool build on top of that would somehow break it21:43
corvusi agree21:44
ianwroot@155a26dfa547:/usr/local/lib/python3.11/site-packages/nodepool# python3 -m site21:45
ianwsys.path = [21:45
ianw    '/usr/local/lib/python3.11/site-packages/nodepool',21:45
corvusokay with a locally applied dockerfile fix, it is up and spewing errors about deleting things21:46
ianwthat doesn't tally with print(sys.path) from the python interpreter21:46
corvusis that picking up the cwd?21:47
ianwahh, yes, good point21:47
corvusalso -- this didn't happen for the launcher21:49
opendevreviewJames E. Blair proposed opendev/system-config master: Override pythonpath in nodepool builder  https://review.opendev.org/c/opendev/system-config/+/87003421:49
ianwalthough we don't have an arm64 launcher21:50
corvusoh ok that explains that :)21:50
corvusi think i need color coded prompts or something to help keep track of what and where each of these hosts are :)21:51
ianwthis may be some interaction with -> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=96266521:51
clarkbin this case we use a compiled python on debian which seems to be part of the considering of that bug report21:52
corvusi'm going to restart the rest of the builders21:53
corvusianw: do you want to +w https://review.opendev.org/870034 ?21:54
corvus(i want to make sure to get back to a safe place to drop them from emergency)21:54
ianwok21:55
ianwso to summarise opendevorg/python-<base|builder>:3.11-bullseye both have site-packages in their sys.path by default21:58
corvuswhat's the status of nb04?21:58
corvusianw: yes that's what i saw too21:59
ianwnb04 isn't deployed yet21:59
corvusah ok :)21:59
ianwthat is an arm64 builder intended to replace nb0321:59
corvusi'll docker-compose down it22:00
ianwit has no ipv6, which tripped up some deployment bits, so it is waiting on https://review.opendev.org/q/topic:linaro-ipv6-add22:00
corvusgotcha22:00
opendevreviewMerged opendev/system-config master: Fix clouds.yaml syntax error for linaro  https://review.opendev.org/c/opendev/system-config/+/87003122:00
clarkbianw: fwiw I +2'd those changes for nb04 but didn't approve them as I'm forcing myself to do paperwork today :)22:03
clarkb(finally making progress on that portion of my todo list so yay)22:03
ianwyep firewall changes are ... special22:06
clarkbin this case if it breaks it won't add rules so its proably safe since ipv4 will stay up...22:08
corvusrestarted nb01 and nb0222:21
ianw# dpkg -S usr/lib/python3.11/site.py22:27
ianwlibpython3.11-minimal:arm64: /usr/lib/python3.11/site.py22:27
ianwi think that the "docker" python is picking up the site.py from the system python22:27
clarkbianw: oh is something installing system python?22:28
clarkbmaybe it is just listed in bindep? I wonder if we can avoid that by marking python as already installed in the base image22:28
ianwhrm, i dunno, that file is there on x86 too22:28
ianwremoving libpython3.11-minimal does seem to fix it -- but purges things like "dnf" that we need in the builder image22:30
*** dasm is now known as dasm|off22:31
clarkbah so we actually do need the sytem python for some system python apcakges22:31
ianwnow i'm wondering if that PYTHONPATH override will actually break arm64 builds :(22:48
opendevreviewMerged opendev/system-config master: Override pythonpath in nodepool builder  https://review.opendev.org/c/opendev/system-config/+/87003422:57
ianwroot@891a09c22653:/# ls -lh /usr/local/bin/python3.1122:57
ianw-rwxr-xr-x 1 root root 15K Nov 15 20:16 /usr/local/bin/python3.1122:57
ianwroot@891a09c22653:/# ls -lh /usr/bin/python3.1122:57
ianw-rwxr-xr-x 1 root root 6.6M Dec 31 10:23 /usr/bin/python3.1122:57
ianwi have no idea what they're doing differently ... one seems to include a lot more than the other22:58
clarkbianw: I believe the intent is to keep them separated sufficiently that both could coexist (there were old issues about this on their issue tracker)23:16
ianwwell it's not working :)23:19
ianwldd reports they both use the same libpython.so23:19
clarkbwut23:19
clarkbhttps://github.com/docker-library/python/issues/777#issuecomment-1358366197 for the intent23:20
ianw579   execve("/usr/local/bin/python3", ["/usr/local/bin/python3", "-m", "site"], 0xffffec9764f8 /* 14 vars */) = 023:20
ianw579   openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/libpython3.11.so.1.0", O_RDONLY|O_CLOEXEC) = 323:20
corvusianw: are you concerned with the PYTHONPATH being propogated into the dib execution?23:21
ianwcorvus: i am wondering if it will mean that tools that we isntall int he builder environment, like dnf for the minimal builds, will now not work23:23
ianw# strings /usr/lib/aarch64-linux-gnu/libpython3.11.so.1.0 | grep dist-package23:28
ianwdist-packages23:28
ianwlib/python3/dist-packages.23:28
ianwi think that the dist-packages default paths must be built into the .so -- it doesn't appear to even reference site.py or anything similar on startup23:29
ianwhrm, i wonder if ld library path override changes it ...23:29
ianw# LD_LIBRARY_PATH=/usr/local/lib/ /usr/local/bin/python323:30
ianw    '/usr/local/lib/python3.11/site-packages',23:30
ianw... it does ...23:30
ianwso it seems probably to be that /usr/local/bin/python3 is ultimately using the system .so23:31
*** rlandy is now known as rlandy|out23:31
ianwbut why only in the final image, not the builder?!?23:31
clarkbianw: except the system .so is 3.11 which isn't available on bullseye23:31
clarkbso that has to be the built python 3.11 not the distro python 3 .so23:31
clarkbbullseye has 3.9 on it23:31
ianwwell it's coming from ii  libpython3.11-minimal:arm64     3.11.1-2                       arm64        Minimal subset of the Python language (version 3.11)23:32
clarkbya that doesn't exist in debian23:33
clarkbso they are already shimming it in so that dpkg is aware23:33
clarkbmaybe we do that?23:33
ianwOOHHH ... we might have unstable as part of the Dockerfile to pull in podman etc ...23:33
clarkbhrm I thought we only installed specific packages from unstable though. But ya that could explain it23:34
corvusianw: okay, you mean that the same issue that we fixed for the builder process with PYTHONPATH may also affect other tools and all we've done is advance to the point that the build will fail because of that.  if so, i agree that's a risk, but also that it's probably no worse than just not attempting the builds at all, so we don't need to revert the pythonpath change.23:34
ianw2023-01-11 09:09:39.911744 | ubuntu-jammy | #29 55.47 Get:21 http://deb.debian.org/debian unstable/main arm64 libpython3.11-stdlib arm64 3.11.1-2 [1672 kB]23:35
corvus(or am i misunderstanding?)23:35
ianwcorvus: honestly, i don't know.  my intuition is that it will make centos-minimal builds on arm64 fail, but i'm just guessing.  i don't really understand23:35
ianw... well, i'm understanding a bit more ... but it still is all a big mess :)23:36
ianwit seems that we're installing the same python as in the builder, and the built python isn't self-contained enough to avoid using the system packages23:36
corvusianw: okay, but they will fail to build, so we won't be trying to boot them or anything, we just won't get new updates.  and the alternative is that we won't even attempt the build, so basically the same.  right?23:37
corvus(my primary concern here is trying to figure out if we're okay to remove the hosts from emergency)23:38
ianwi guess i'd agree with that, yes.  it's very unlikely to manage to create and upload a broken image23:38
corvuswe could also just shut down nb03 and leave it in emergency23:39
ianwi think maybe leave nb04 in emergency, but just re-enable nb0323:41
corvusokay, i will make it so23:41
ianwwe'll have to figure this out, one way or the other23:41
ianwi wonder if we can block python3.11 from installing23:42
Clark[m]We should be able to stop installing things from unstable and be specific about that? Or is dnf from unstable and that requires unstable python?23:42
ianwi don't know exactly why it's being pulled in23:42
corvusnodepool hosts other than nb04 are enabled again23:42
ianwit's pulled in by "binutils       curl       dnf       debian-keyring       dosfstools       gdisk       git       kp23:45
ianwartx       qemu-utils       vhd-util       procps       xz-utils       zypper       zstd       debootstrap/unstable"23:45
Clark[m]We do specify the default release is stable. Maybe that isn't working? Debootstrap doesn't seem to dep on python23:51
Clark[m]Dnf does depend on python3 which is supposed to find the release specific version I think23:53
ianwi feel like the python in the docker build should be using rpath to isolate itself 23:53

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