Tuesday, 2024-04-02

opendevreviewAndrew Bonney proposed openstack/openstack-ansible-os_designate master: Fix designate upgrades when internal RPC version changes  https://review.opendev.org/c/openstack/openstack-ansible-os_designate/+/91485007:30
noonedeadpunkmornings08:15
jrossergood morning08:17
* noonedeadpunk spawning rocky aio to see what's up with lock dir permissions for glance08:22
farbodgood morning08:23
noonedeadpunko/08:23
admin1\o 09:22
opendevreviewJonathan Rosser proposed openstack/openstack-ansible-os_neutron master: Fix multiline yaml formatting in neutron systemd services  https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/91454409:34
jrosseri have seen this failure a few times now https://zuul.opendev.org/t/openstack/build/b381cc27e412493993792f01285ba278/log/job-output.txt#2544209:38
jrosservery odd indeed09:38
noonedeadpunkHuh `CommandError: An error occurred during rendering serial_console.html`09:44
noonedeadpunkI guess it's built only for ironic jobs or smth like that?09:44
noonedeadpunkugh09:50
noonedeadpunkjrosser: maybe in that case we should just had `>` vs `>-`09:50
jrosseroh wait - is horizon another case where we have a multiline error?09:52
noonedeadpunkcould be...09:52
noonedeadpunkI already regret about touching all that and not just ingnoring line legth09:53
noonedeadpunkIt looked like worthy thing to do for overall readability, but amount of crap which continue to appear is astonishing....09:54
jrosserwhat i don't fully understand is why that error only happens on one job09:56
jrosserif it were a real syntax error then we'd surely get more fail09:56
jrossersomehow feels like threading / race / wierdness09:57
noonedeadpunkbut why it even tries to build serial_console... or that is from vnc?09:57
jrosseri expect there is support in horizon for vnc / spice & serial?09:58
farbodHi I still have problem with glusterfs and here is a more verbose output of ansible playbook: https://paste.opendev.org/show/bWmTCQEXM8hWdK7eWulT/09:59
jrosserfarbod: have you tried manually writing a file in `/var/www/repo/constraints/` yourself, without ansible?10:02
farbodwhere is it?10:03
farbodinside repo container10:03
farbod?10:03
jrosseryes, thats right10:03
farbodyeah its ok10:04
farbodDisk space is OK. But how to check network connectivity?10:09
noonedeadpunkfarbod: well, if that's your current blocker, I guess what you can do - just define to have only a single repo container for now. Then you don't really need to have gluster as no need to sync content between repo containers10:15
farbodhow to have a single repo container in a 3 node infra deployment?10:17
noonedeadpunkit's all matter of defining inventory10:21
noonedeadpunkso defining `repo-infra_hosts` only for 1 of 3 infra nodes will make it spawn there10:22
noonedeadpunkBut you;d need to drop current containers and then remove them from openstack_inventory10:22
noonedeadpunkor via ./scripts/inventory-manage.py -r control01-repo-container-2dafc32110:23
noonedeadpunkalso a bit depends on how you've defined openstack_user_config...10:24
farbodSomething strange about it is that it tells it cant copy the files but the files are present inside repo container in /var/www/repo/constrains 10:26
farbodhttps://paste.opendev.org/show/bj5Q6NkaL647EJpyfEta/10:27
jrosserfarbod: did you try manualy creating a file in `/var/www/repo/constraints/` ?10:38
jrosseryou said the disk space was ok, but not sure about creating a file?10:38
farbodyes it was ok. I was able to create a file manually10:42
jrosserand do you see that file get replicated into the other repo containers10:43
farbodthats a good point10:43
farbodthe /var/www/repo/constrains is not present in other repo containers10:43
jrosserthen i think there is something still wrong with the glusterfs mount10:44
farbodhow to check these mounts?10:54
noonedeadpunkok, so lock patch for glance appears to be non-trivial11:01
jrosserfarbod: you can try things like `gluster peer status` and perhaps also look at the output of the `mount` command11:01
noonedeadpunkas proper path would depend on uwsgi/non-uwsgi11:01
noonedeadpunkand I can see how that's a problem for some other services like cinder-api/cinder-scheduler11:02
noonedeadpunkAs uwsgi defines as /run/lock/<service-name>/uwsgi11:02
noonedeadpunkotherwise it is /run/lock/<slice-name>11:03
noonedeadpunkor well, uwsgi - /run/lock/<service-name>/<slice-name>11:03
noonedeadpunkwhere slice-name is uwsgi11:03
farbodIt didn't mount /var/www/repo in other 2 infra repo containers and it only is present on infra1 repo container11:04
farbodhere is the output of `gluster peer status`: https://paste.opendev.org/show/bVYZipJrDP2kwaL9mza2/11:04
jrosserfarbod: really you need to do some debugging to find out why11:06
opendevreviewMerged openstack/openstack-ansible-haproxy_server master: Do not log content of copied static files  https://review.opendev.org/c/openstack/openstack-ansible-haproxy_server/+/91462311:17
opendevreviewMerged openstack/openstack-ansible stable/2023.2: Bump OpenStack-Ansible for 2023.2  https://review.opendev.org/c/openstack/openstack-ansible/+/91477011:18
opendevreviewJonathan Rosser proposed openstack/openstack-ansible master: Treat jinja spacing as an ansible lint warning rather than error  https://review.opendev.org/c/openstack/openstack-ansible/+/91485911:21
opendevreviewJonathan Rosser proposed openstack/openstack-ansible-os_neutron master: Fix multiline yaml formatting in neutron systemd services  https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/91454411:22
jrosserwhat a mess /o\11:23
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible-os_glance master: Define lock directory for oslo_concurrency  https://review.opendev.org/c/openstack/openstack-ansible-os_glance/+/91475211:28
noonedeadpunkHm. Let me take a look....11:30
noonedeadpunkAs I'd rather not to add to warn list at this point....11:31
noonedeadpunkhuh... why I can't reproduce linters11:44
noonedeadpunkok...11:48
jrosserit’s stupid because the resulting multi line string ends up with a space in it11:50
jrosserwhich is what’s needed to fix the bug11:50
noonedeadpunkWell, I'm jsut trying to paste var to a separate file - and I don't see a linter issue there11:55
noonedeadpunkso I'm a bit o_O right now11:56
noonedeadpunkhttps://paste.openstack.org/show/b8mHjD0IoRZ5zc8QjroN/11:57
noonedeadpunkso how my test-vars are different to a point that they're fine in terms of spacing, but not neutron vars....11:59
noonedeadpunkjrosser: I assume you run neutron as uwsgi?13:14
jrosseryes13:15
noonedeadpunkas interesting thing, is that neutron-server is not really affected in non-uwsgi from what I see13:15
jrosseriirc there is a workaround needed for uwsgi services that need more than one config file13:16
jrosserwhich is where that conditional comes from13:16
noonedeadpunkah, ok, yes, nevermind. I somehow brainfarting today13:18
noonedeadpunkSo what confused me how execstarts renders vs uwsgi_pyargv13:25
noonedeadpunkhttps://paste.openstack.org/show/bjKOMFOOvBgEuWYBqSmq/13:25
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible-os_neutron master: Fix multiline yaml formatting in neutron systemd services  https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/91488513:36
noonedeadpunkjrosser: I think this is actually bare minimal fix ^13:36
noonedeadpunkbut yes - once you wanna get rid of empty space at the end - you will get ansible-lint unhappy....13:37
noonedeadpunk#startmeeting openstack_ansible_meeting14:00
opendevmeetMeeting started Tue Apr  2 14:00:19 2024 UTC and is due to finish in 60 minutes.  The chair is noonedeadpunk. Information about MeetBot at http://wiki.debian.org/MeetBot.14:00
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.14:00
opendevmeetThe meeting name has been set to 'openstack_ansible_meeting'14:00
noonedeadpunkoops14:00
noonedeadpunk#endmeeting14:01
opendevmeetMeeting ended Tue Apr  2 14:01:21 2024 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)14:01
opendevmeetMinutes:        https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-04-02-14.00.html14:01
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-04-02-14.00.txt14:01
opendevmeetLog:            https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-04-02-14.00.log.html14:01
spotz[m]Why oops?14:01
* noonedeadpunk not adjusted to summer time14:01
spotz[m]ahh:)14:01
noonedeadpunkmeeting should be 15 UTC which is in an hour :(14:01
opendevreviewMerged openstack/openstack-ansible-os_skyline master: Add quotes for EL version in meta/main.yml  https://review.opendev.org/c/openstack/openstack-ansible-os_skyline/+/91443914:34
opendevreviewMerged openstack/openstack-ansible stable/xena: Switch SHAs to EOM  https://review.opendev.org/c/openstack/openstack-ansible/+/91341314:58
opendevreviewMerged openstack/openstack-ansible stable/wallaby: Switch SHAs to EOM  https://review.opendev.org/c/openstack/openstack-ansible/+/91341414:58
noonedeadpunk#startmeeting openstack_ansible_meeting15:00
opendevmeetMeeting started Tue Apr  2 15:00:08 2024 UTC and is due to finish in 60 minutes.  The chair is noonedeadpunk. Information about MeetBot at http://wiki.debian.org/MeetBot.15:00
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.15:00
opendevmeetThe meeting name has been set to 'openstack_ansible_meeting'15:00
noonedeadpunkok, now in time )15:00
noonedeadpunk#topic roll call15:00
jrossero/ hello15:00
noonedeadpunko/15:02
noonedeadpunk#topic office hours15:03
noonedeadpunkwe had couple of "bugs" during the weekend, though they were more "features"...15:03
noonedeadpunkspeaking of which was horizon deployment for aio scenario on metal15:04
noonedeadpunkcurrently we have inconsistency between lxc/metal with horizon15:04
jrosserthats not surprising, it was very difficult to get the horizon install to work on a metal deploy15:04
noonedeadpunkyeah, but I think it's solved for couple of years now?15:05
noonedeadpunkand that's just legacy?15:05
jrosserit should be solved, yes15:05
NeilHanlono/ 15:05
noonedeadpunkbut then - do we want to spend time on horizon at all...15:05
jrosserbut i don't know how many actually use it on metal, vs it being there as a CI fixture15:05
noonedeadpunkwe do have some horizon tempest tests when horizon role runs fwiw15:06
jrosseryeah15:06
jrosseri was interested in your patch that added skyline with horizon at /horizon15:06
jrosserand also to know if the opposite was possible15:07
noonedeadpunkI wasn't able to make /skyline15:07
noonedeadpunkBUT, it can be possible once we build with YARN15:07
noonedeadpunkI just lacked enough time/interest I guess as it was way less trivial15:07
jrosseri was considering the case of existing deployments where moving the horizon url might be tricky15:07
NeilHanlonyeah i think it's definitely possible but the skyline code makes some (IMO) bad assumptions about how it will be deployed15:08
noonedeadpunkwell, potentially there should be different regexp I guess and do like `skyline.region.one` instead...15:08
noonedeadpunkin haproxy mapping?15:08
noonedeadpunkNeilHanlon: in yarn build config I found the way to make static content generated with some /path15:09
jrosseri think also trying to undertstand the nginx setup better would be good15:09
noonedeadpunkbut it didn't help end result easily15:09
jrosseroh and also this https://review.opendev.org/c/openstack/governance/+/91424815:09
noonedeadpunkhuh15:10
NeilHanlonhm15:10
noonedeadpunkI also raised question in ML without reply obviously15:10
noonedeadpunkbut in fact I don't think I'll be able to invest many more time into getting skyline work under /skyline15:11
jrossermy interest is kind of depending on OIDC support really15:12
noonedeadpunkbut the variable is here: https://opendev.org/openstack/skyline-console/src/branch/master/config/webpack.prod.js#L4615:12
NeilHanlonyeah, i think the 'real' answer is that skyline should use root-relative URLs instead of absolute. 15:13
noonedeadpunk(we're using an in-house UI anyway)15:13
noonedeadpunkyeah, true... 15:13
* NeilHanlon will see if he can find some time, or find someone at $work to find an hour15:13
noonedeadpunkand then also how to make nginx config respect that is another question15:13
noonedeadpunkbut other then that, I guess skyline is in a pretty much usable shape then it ever was :)15:14
NeilHanlonthat's really great news :) 15:15
NeilHanlonA year ago it was definitely not in anywhere close to such a shape15:15
jrossermaybe this is things we can discuss with frickler depending how the skyline PTL stuff plays out15:15
noonedeadpunkbut I understand the question, if we should even suggest replacing horizon with skyline15:15
noonedeadpunkaccording to the code it's already a second term15:15
noonedeadpunkor well, third, sorry15:16
noonedeadpunkugh15:17
* noonedeadpunk needs to dig for some docs15:17
NeilHanlonideally, i guess we would have some flag to decide which UI should be "default"15:17
noonedeadpunkyeah, ideally I was thinking to place /horizon and /skyline and the flag to define redirect15:17
jrosser ^ this would be ideal, like i say the url can be hard to change15:18
noonedeadpunkyup...15:18
jrosserknitted into SSO provider setup blah blah15:18
noonedeadpunkok, so what's the suggestion kinda?15:19
noonedeadpunklike I don't know a way how to put /skyline today15:19
jrosserthat can wait i guess15:20
noonedeadpunkand that would require yarn build 100%15:20
jrosserbut when we design the logic / vars that control it, the option should be open for *15:20
noonedeadpunkwhich currently is not a default behaviour15:20
noonedeadpunk(and that's why it feels kolla also don't have option for /skyline)15:21
noonedeadpunk(as I'd assume they just install from pypi)15:21
jrosserso long as we leave the variables sufficiently open, even if they implementation is missing then we will be OK for the future15:24
noonedeadpunkI guess.... we have?15:24
noonedeadpunknot sure15:24
noonedeadpunkoh, or you mean to add logic to select default now?15:24
jrosserNeilHanlon: you might want to join #openstack-qa15:25
noonedeadpunk++15:25
gmann++ rocky job failing on stable/2024.1 but passing on master15:26
noonedeadpunkSO, basically we need to add variable `skyline_webroot` here https://review.opendev.org/c/openstack/openstack-ansible/+/859446/21/inventory/group_vars/skyline_all/haproxy_service.yml#3415:28
NeilHanlonack thanks jrosser15:28
noonedeadpunkor make a follow-up?15:29
jrossernoonedeadpunk: yes so i mean even if we can only deploy skyline to / today, having a var that "sets" that gives us a route for the future if it becomes configurable15:29
noonedeadpunkok, gotcha, can add it, sure15:30
jrosserrather than bake in an assumption that it can only be at / forever15:30
noonedeadpunkabout oslo_concurency for glance - this seems to almost work: https://review.opendev.org/c/openstack/openstack-ansible-os_glance/+/91475215:31
noonedeadpunkbut I've spotted quite some weird failures in related patches15:32
noonedeadpunkSo I'm not sure 100% now15:32
noonedeadpunkAnd also spawning an env right now to check for default volume type issues15:32
noonedeadpunkas feels like iscsi doesn't really work now according to output of https://review.opendev.org/c/openstack/openstack-ansible-os_glance/+/90118915:32
noonedeadpunkor well - https://zuul.opendev.org/t/openstack/build/757f078df8b6402797b7318c23d087cf/log/logs/host/cinder-volume.service.journal-12-45-13.log.txt#7706-773015:33
noonedeadpunkso trying to check on that now. And we have simmilar report about non-functional volumes from aio deployment15:34
noonedeadpunkand didn't work on proper octavia ovn test yet15:38
noonedeadpunkregarding PTG - will book a slot appropriate for UTC/EST timezones and will send a ML later today as well15:40
NeilHanlongreat! 15:41
opendevreviewDmitriy Rabotyagov proposed openstack/openstack-ansible master: [Feature] Add skyline deployment capability  https://review.opendev.org/c/openstack/openstack-ansible/+/85944615:43
noonedeadpunkjrosser: you though about smth like that? https://review.opendev.org/c/openstack/openstack-ansible/+/859446/21..22/inventory/group_vars/skyline_all/haproxy_service.yml15:43
jrossernoonedeadpunk: yeah like that15:48
noonedeadpunkok, will try to add smth to skyline role with a follow-up a bit later15:48
noonedeadpunkwho knows, maybe I will get it working :D15:48
jrosserhah :)15:48
noonedeadpunkfrom top of your head, would 302 redirect to /horizon work for SSO?15:49
noonedeadpunkor it must be / strictly?15:49
jrosseri don't know tbh15:49
jrosserthough this is something we can pretty easily check in an AIO15:49
noonedeadpunkyeah, ok, let's save that for a bit later probably...15:50
jrosserfor horizon part of this is all handled in apache mod_oidc15:50
jrosserand thats where i'm all a bit clueless about how that might be a thing for skyline15:50
jrosseranyway15:50
noonedeadpunkdespite we're about to run that, I have quite vague understanding15:50
noonedeadpunkwell. Potentially, Apache can replace nginx in these overrides once we understand them. Or ask chatgpt to covert :D15:51
NeilHanlon:D 15:51
NeilHanloni am pretty familiar with nginx and apache, so.. i can help double check the AI :P 15:51
NeilHanlontangent: Freezer meeting is in 7 minutes or so,right?15:53
noonedeadpunkI pretty much forgot since was not dealing with them much for last... 7 years?15:53
noonedeadpunkyeah15:53
noonedeadpunkso I will wrap this up now15:53
NeilHanlonwhat channel?15:53
NeilHanlonack. thanks for running as always!15:54
noonedeadpunkugh, that was video one as one folk asked for it15:54
NeilHanlonah I see. I will consult the mailing list then. thanks again 15:54
NeilHanlonI forgot to put details in my calendar lol15:54
noonedeadpunkI'll post in #openstack-freezer15:55
NeilHanlonty. thought I'd joined that too but apparently I'm losing more of my mind than I knew 15:56
noonedeadpunk#endmeeting15:57
opendevmeetMeeting ended Tue Apr  2 15:57:54 2024 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)15:57
opendevmeetMinutes:        https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-04-02-15.00.html15:57
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-04-02-15.00.txt15:57
opendevmeetLog:            https://meetings.opendev.org/meetings/openstack_ansible_meeting/2024/openstack_ansible_meeting.2024-04-02-15.00.log.html15:57
noonedeadpunkbtw, jrosser - have you ever looked at freezer ? :)15:58
jrosserno actually :)15:58
noonedeadpunkor do you theoretically feel any need for project like that15:58
noonedeadpunk(it's quite dead right now, but more or less thinking if it even worth trying to revive it)15:59
jrossercinder-backup having no scheduler is a real bummer16:00
jrosserbut i remember i looked at freezer and it talks also about agents so thats a bummer too16:00
noonedeadpunkagents is another part which is not required iirc16:01
noonedeadpunkit's when you want to have guest backups - like mysql or fs16:01
noonedeadpunkbut it can act as cinder-backup scheduler if only freezer-api is deployed16:02
noonedeadpunkafaik16:02
noonedeadpunk(not 100% - I played with it really 3y ago last time for "real")16:02
jrosserwell - the diagrams here are kind of architecturally opposite whats useful https://docs.openstack.org/freezer/latest/16:03
jrosser(for me)16:03
noonedeadpunkyeah, they're messy, but there're like 2 distinct usecases - with or without api16:05
jrossereven the scheduler os on the "node" though16:05
jrosser*is on16:05
noonedeadpunkSo, I _think_ that with API you set scheduler on API: https://docs.openstack.org/freezer/latest/#freezer-scheduler-with-api16:19
opendevreviewMerged openstack/openstack-ansible-os_skyline master: Define amount of gunicorn workers through config  https://review.opendev.org/c/openstack/openstack-ansible-os_skyline/+/91451616:27
noonedeadpunkSome time ago I also created a role: https://github.com/noonedeadpunk/openstack-ansible-os_freezer16:31
opendevreviewMerged openstack/openstack-ansible-plugins master: Leave only unique policies for __mq_policies  https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/91409216:46
opendevreviewMerged openstack/openstack-ansible-plugins master: Add support for the apply_to parameter for policies  https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/91194916:46
opendevreviewMerged openstack/openstack-ansible-os_neutron master: Create an openrc for nb/sb clients  https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/91358216:50
opendevreviewMerged openstack/openstack-ansible stable/zed: Bump SHAs for stable/zed  https://review.opendev.org/c/openstack/openstack-ansible/+/91478117:18
opendevreviewMerged openstack/openstack-ansible-os_horizon master: Detect OVN VPNaaS installation  https://review.opendev.org/c/openstack/openstack-ansible-os_horizon/+/91142117:20
opendevreviewMerged openstack/openstack-ansible-os_neutron master: Add variable to control distributed FIP choice  https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/90947017:21
opendevreviewMerged openstack/openstack-ansible-os_neutron master: [doc] Briefly describe VPNaaS plugin changes with OVN  https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/91098117:21
opendevreviewMerged openstack/openstack-ansible stable/2023.1: Bump SHAs for 2023.1  https://review.opendev.org/c/openstack/openstack-ansible/+/91478017:21
opendevreviewMerged openstack/openstack-ansible master: Define haproxy fact gathering vars at group rather than task level  https://review.opendev.org/c/openstack/openstack-ansible/+/91472217:25
opendevreviewMerged openstack/openstack-ansible master: Fix inventory defenition for Cloudkitty  https://review.opendev.org/c/openstack/openstack-ansible/+/91226917:25
opendevreviewMerged openstack/openstack-ansible master: Use container setup role from plugins repo  https://review.opendev.org/c/openstack/openstack-ansible/+/90500417:50
ThiagoCMCHey, folks! Quick question... Will OSA hold on to "OpenStack Inactive Projects" like Selin, at least for a few more releases? I'd like to explore Senlin, maybe make some videos explaining how to install and use it. Don't give up! lol19:21
noonedeadpunkThiagoCMC: well. we're not going to drop repos, but at the same time we really can't make new releases of these projects not to misguide about their state19:24
noonedeadpunkso we were going to attempt to prevent new deployments of inactive projects by removing env.d files and playbooks out of setup-openstack, for instance19:24
ThiagoCMCFor sure! Maybe OSA could also adopt the "inactive status" somehow?19:24
noonedeadpunkyeah, in some form we were disucssing that on previous meeting19:25
noonedeadpunkhttps://meetings.opendev.org/irclogs/%23openstack-ansible/%23openstack-ansible.2024-03-26.log.html#t2024-03-26T15:19:0319:26
noonedeadpunkThiagoCMC: but it's not much sense of making videos about it unless you're going to step in into it's maintenance...19:27
noonedeadpunkso exploring/evaluating for your org to sell its community support for management - it's more what makes sense doing :D19:27
ThiagoCMCCool! Well, my initial intention would be to try bring more attention to it. I think it's an important piece of OpenStack! As important as Heat.  =P19:28
noonedeadpunkThiagoCMC: yeah, true19:55
noonedeadpunkbut it could be marked as deprecated in a couple of weeks19:55
ThiagoCMCOh no ...19:57
noonedeadpunkThiagoCMC: https://etherpad.opendev.org/p/2024.2-leaderless#L5619:58
noonedeadpunkso it's pretty much urgent. ofc, you can revive project from deprecated state as well, but quite some headache needed19:59
ThiagoCMCSenlin seems dead... Not even on page: https://releases.openstack.org/caracal/index.html (due to be released tomorrow) - I'm not seeing much activity on its Git repo either20:47

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