noonedeadpunk | I'm not sure this ^ will survive till release and won't be replaced by proxysql. I hope I will have time this month to finish work on it (as I've dropped almost ready role with misclick) | 08:18 |
---|---|---|
opendevreview | Jonathan Rosser proposed openstack/ansible-role-systemd_service master: Suppress 'Service' directive if ListenStream is specified https://review.opendev.org/c/openstack/ansible-role-systemd_service/+/824041 | 08:27 |
opendevreview | Jonathan Rosser proposed openstack/ansible-role-systemd_service master: Add 'load' boolean for services. https://review.opendev.org/c/openstack/ansible-role-systemd_service/+/824096 | 08:27 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-galera_server master: Convert xinetd clustercheck to systemd socket service https://review.opendev.org/c/openstack/openstack-ansible-galera_server/+/824042 | 08:30 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-galera_server master: DNM - Add support for centos-9 https://review.opendev.org/c/openstack/openstack-ansible-galera_server/+/823983 | 08:30 |
jrosser_ | noonedeadpunk: yes thats fine if it doesnt survive - i learned some more systemd on the way so thats cool :) | 08:30 |
noonedeadpunk | But I'd rather merge it anyway jsut in case :P | 08:31 |
jrosser_ | useful notes here https://mgdm.net/weblog/systemd/ and https://mgdm.net/weblog/systemd-socket-activation/ | 08:31 |
noonedeadpunk | jrosser_: once you're in systemd, can we discuss if https://review.opendev.org/c/openstack/ansible-role-systemd_service/+/816531 should be jsut abandoned due to complexity it brings? | 08:32 |
noonedeadpunk | as while it's very handy, I agree it brings weirdness because of extra level of iteration | 08:32 |
noonedeadpunk | or I just don't see more obvious and easy way | 08:33 |
jrosser_ | interesting - the @ notation is also used for socket activated services | 08:36 |
jrosser_ | btw | 08:37 |
jrosser_ | have you seen systemd.path? | 08:37 |
jrosser_ | i was going to see how much work it would be to convert using lsyncd to systemd.path + rsync | 08:37 |
noonedeadpunk | I think I'm not | 08:37 |
noonedeadpunk | well about lsyncd I think we need to review our whole concept... As currently multi-OS support is really broken :( | 08:38 |
jrosser_ | indeed | 08:38 |
jrosser_ | sort of similar problem to xinetd | 08:38 |
noonedeadpunk | And I don't see obvious way to fix that except using shared FS (like cephfs) or haproxy acls... | 08:38 |
jrosser_ | it's kind of legacy and not supported on all OS (centos in particular) | 08:39 |
jrosser_ | so in the short term, keeping the existing behaviour with more universal tools is good | 08:39 |
jrosser_ | but agreed in the long term something better is needed for multi OS / multi arch | 08:39 |
noonedeadpunk | well, considering systemd bits are coming from EPEL - what is universal ƪ(˘⌣˘)ʃ | 08:40 |
noonedeadpunk | but yeah, it's better then lsyncd that hasn't any release for years now | 08:40 |
noonedeadpunk | with super complicated config | 08:41 |
jrosser_ | what we need for multi os / multi arch is for each repo server to report back what OS / arch it is building for | 08:41 |
jrosser_ | in the haproxy healthcheck | 08:41 |
jrosser_ | i think we can probably make that drive an ACL or a map file | 08:42 |
jrosser_ | sort of autodiscovery rather than trying to work it all out at deploy time in the ansible | 08:42 |
noonedeadpunk | or we can jsut re-run haproxy after re-deployment and make that hardcoded into config. So when you re-setup controller, you anyway run containers creation before haproxy role. So haproxy knows which distro each backend is running | 08:43 |
jrosser_ | true | 08:43 |
jrosser_ | its there in the facts | 08:44 |
noonedeadpunk | but autodiscovery sounds nicer indeed. I dunno which option would require smaller changes to haproxy role itself, so not to make it opionated, but limit changes to service description | 08:44 |
noonedeadpunk | But ACL we can generate in group_vars I believe? | 08:46 |
jrosser_ | super ugly would be to make each repo server redirect to the next one if the thing you want isnt present | 08:46 |
noonedeadpunk | I wonder if we will get redirect loop in corner cases :p | 08:46 |
jrosser_ | absolutely | 08:47 |
noonedeadpunk | well, we can actually sync in other direction as well - ie sync to repo_all[0] for all others, but then it's no HA or you need +1 controller for multi-os deployment | 08:50 |
noonedeadpunk | *from all others | 08:50 |
noonedeadpunk | actually ACL is also no-HA solution. And even when you have 2 repo hosts of other OS (which is not repo_all[0]) things will break, as they won't be synced | 08:51 |
jrosser_ | it is a shame there are no trivial shared FS | 08:52 |
noonedeadpunk | it is :( | 08:53 |
noonedeadpunk | So what we did in R - we were building dynamic groups - https://opendev.org/openstack/openstack-ansible/src/branch/stable/rocky/playbooks/repo-build.yml#L33 | 08:53 |
noonedeadpunk | We likely need to return to that then | 08:54 |
jrosser_ | i never tried drbd which seems about as simple as can be done | 08:55 |
noonedeadpunk | I have vague bud memories about it's reliablility and recovery process. It was about a decade ago though hehe | 08:56 |
noonedeadpunk | it also requires smth like glusterfs I guess? | 08:57 |
noonedeadpunk | nah, it's jsut different thing :) | 08:58 |
jrosser_ | we were also part way through converting the plugins repo to a collection | 09:01 |
jrosser_ | i had a POC patch for keystone to show that it worked | 09:02 |
noonedeadpunk | ah, yes | 09:02 |
jrosser_ | this one https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/820999 | 09:02 |
noonedeadpunk | I think I'm the blocker here with descision on how to release it now? | 09:02 |
jrosser_ | something like that | 09:02 |
jrosser_ | we can just keep it 'internal' for now and install from git | 09:03 |
noonedeadpunk | btw, returning to previous topic - have you heard anything about https://github.com/bcpierce00/unison ? | 09:03 |
noonedeadpunk | `Unlike simple mirroring or backup utilities, Unison can deal with updates to both replicas of a distributed directory structure.` | 09:05 |
jrosser_ | its not clear if that can go >2 nodes | 09:05 |
noonedeadpunk | well, in doc it says it can, but in star topology :( | 09:06 |
noonedeadpunk | ok, so, plugins. | 09:14 |
noonedeadpunk | looking at what I've approved now - are we sure we want to spawn this namespace? https://opendev.org/openstack/openstack-ansible-plugins/src/branch/master/galaxy.yml#L2 | 09:16 |
noonedeadpunk | and not make it in openstack namespace? | 09:18 |
noonedeadpunk | also I think it makes sense to make plugins repo release-independent. Maybe ops repo as well? | 09:23 |
noonedeadpunk | (unison is probably not what we want indeed) | 09:27 |
jrosser_ | sure we can change the namespace, if we make it in openstack we do not collide with anything else | 09:31 |
jrosser_ | i guess really the patches currently are to show that it will work | 09:32 |
noonedeadpunk | currentlly in openstack namespace there's cloud and config_template only afaik | 09:33 |
noonedeadpunk | we can make it openstack.osa for example? | 09:33 |
jrosser_ | that depends if you want to keep it called plugins | 09:35 |
jrosser_ | currently the roles there can be used with "osa.plugins.db_setup" for example | 09:35 |
noonedeadpunk | it's always a torture to pick up a name for smth | 09:35 |
jrosser_ | becasue the namespace is osa but the collection name is plugins | 09:35 |
jrosser_ | it's always going to be namespace.collection-name.role-name | 09:36 |
noonedeadpunk | yes, totally | 09:36 |
noonedeadpunk | well, you can define collection in meta and jsut use role name as well :p | 09:37 |
jrosser_ | so openstack.osa.db_setup ? | 09:37 |
noonedeadpunk | like https://opendev.org/openstack/openstack-ansible-os_tempest/src/branch/master/meta/main.yml#L45 | 09:37 |
noonedeadpunk | but yeah, I was thinking about openstack.osa.db_setup. We can do openstack.openstack-ansible.db_setup as well I guess, but it's too long ? | 09:38 |
jrosser_ | yes too much typing | 09:38 |
noonedeadpunk | Also I'm really open to re-name or create new repo for that, but we failed to find name for it last time | 09:38 |
noonedeadpunk | as ansible-collections-openstack vs openstack-ansible-collection is confusing a bit... | 09:39 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-plugins master: Remove incorrect comment about role synchronisation https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824109 | 09:39 |
noonedeadpunk | maybe it's not that bad... | 09:42 |
jrosser_ | currently the collection name and repo name don't need to be coupled | 09:43 |
jrosser_ | it's more important to decide on what should be in the meta file | 09:43 |
noonedeadpunk | yes, true | 09:43 |
noonedeadpunk | openstack.osa.db_setup looks good te me tbh | 09:44 |
noonedeadpunk | *to | 09:44 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-plugins master: Switch collection to openstack namespace, rename to 'osa' https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824115 | 09:45 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_keystone master: Use common service setup tasks from a collection rather than in-role https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/820999 | 09:46 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_keystone master: Use common service setup tasks from a collection rather than in-role https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/820999 | 10:53 |
*** dviroel|out is now known as dviroel | 11:23 | |
jrosser_ | interesting job failure here https://zuul.opendev.org/t/openstack/build/f7abc6add81d4ad1a779b91cc6ac5eea/log/logs/host/haproxy.service.journal-10-58-10.log.txt#2554-2556 | 11:38 |
jrosser_ | galera backend goes bad -> keystone 504 -> tempest fail | 11:38 |
opendevreview | Merged openstack/openstack-ansible master: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/823971 | 11:44 |
noonedeadpunk | I'd suggest oom, but we have set -1000 score for galera? | 12:00 |
noonedeadpunk | `aio1 mariadbd[74212]: 2022-01-11 10:49:36 376 [Warning] Aborted connection 376 to db: 'nova' user: 'nova' host: 'aio1.openstack.local' (Got timeout reading communication packets)` | 12:04 |
noonedeadpunk | huh | 12:04 |
noonedeadpunk | oh, btw, in local aio I see issue with keystone apache pooling | 12:05 |
noonedeadpunk | it runs out of available connections becuase of keeping or not re-using them... | 12:05 |
noonedeadpunk | and specifically for keystone actually | 12:06 |
noonedeadpunk | it's not the case here though | 12:06 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible stable/xena: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824026 | 12:12 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible stable/wallaby: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824027 | 12:12 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible stable/victoria: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824028 | 12:12 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible stable/ussuri: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824029 | 12:13 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible stable/train: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824150 | 12:13 |
jrosser_ | its like the networking just went bad | 12:16 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_keystone master: Use common service setup tasks from a collection rather than in-role https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/820999 | 12:17 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-plugins master: Make plugins usable as part of collection https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824148 | 12:18 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-plugins master: Make plugins usable as part of collection https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824148 | 12:18 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible master: Do not duplicate packages installed with the venv build role https://review.opendev.org/c/openstack/openstack-ansible/+/824179 | 13:22 |
opendevreview | Jonathan Rosser proposed openstack/ansible-role-python_venv_build master: Add per-distro vars files https://review.opendev.org/c/openstack/ansible-role-python_venv_build/+/824180 | 13:28 |
opendevreview | Merged openstack/openstack-ansible-plugins master: Remove incorrect comment about role synchronisation https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824109 | 13:29 |
opendevreview | Merged openstack/openstack-ansible-plugins master: Switch collection to openstack namespace, rename to 'osa' https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824115 | 13:29 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible master: Use local repositories for ansible collections in CI https://review.opendev.org/c/openstack/openstack-ansible/+/821093 | 13:44 |
jrosser_ | noonedeadpunk: ^ the old var name now holds the initial collection list - if you have a better idea then we can change it | 13:45 |
noonedeadpunk | um, I think I jsut don't understand what `galaxy_collections_list_ci` does | 13:46 |
jrosser_ | it's the original list `galaxy_collections_list` with each element either as it was, or replaced with the local zuul repo | 13:47 |
noonedeadpunk | I see what it is, but not see where it's used? | 13:48 |
jrosser_ | right down the bottom of the file | 13:48 |
jrosser_ | in the definition of `galaxy_collections` | 13:48 |
noonedeadpunk | um... But aren't these vars only passed to the play? | 13:49 |
noonedeadpunk | or you mean galaxy_collections are not renderred yet? So it respects the set_fact inside the play while renderring galaxy_collections? | 13:49 |
jrosser_ | it's used in the copy module content, and lazy evaluation means it's only determined when the copy module is run | 13:50 |
jrosser_ | i can make this less horrible i think | 13:50 |
noonedeadpunk | I guess at least `galaxy_collections_list_ci: []` made me even more confused | 13:51 |
noonedeadpunk | why can't we set `galaxy_collections` jsut with set_fact inside the play? | 13:52 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible master: Use local repositories for ansible collections in CI https://review.opendev.org/c/openstack/openstack-ansible/+/821093 | 13:52 |
jrosser_ | perhaps i miss something easy | 13:53 |
noonedeadpunk | yeah, it's way better ow :) | 13:53 |
jrosser_ | but looping over foo.bar.some_list[] to append to the list is hard | 13:54 |
noonedeadpunk | yep, fair | 13:55 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-os_keystone master: Use memcached plugin from collection https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/824183 | 13:57 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible master: [WIP] Use plugins as collection https://review.opendev.org/c/openstack/openstack-ansible/+/824184 | 14:01 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible master: [WIP] Use plugins as collection https://review.opendev.org/c/openstack/openstack-ansible/+/824184 | 14:01 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-os_keystone master: Use memcached plugin from collection https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/824183 | 14:03 |
opendevreview | Jonathan Rosser proposed openstack/ansible-role-systemd_networkd master: Add centos-9 support https://review.opendev.org/c/openstack/ansible-role-systemd_networkd/+/823419 | 14:14 |
opendevreview | Jonathan Rosser proposed openstack/ansible-role-python_venv_build master: Fix conditional for installing required wheel build packages https://review.opendev.org/c/openstack/ansible-role-python_venv_build/+/824189 | 14:28 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible master: Do not duplicate packages installed with the venv build role https://review.opendev.org/c/openstack/openstack-ansible/+/824179 | 14:29 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-lxc_container_create master: Drop plugins from role requirements https://review.opendev.org/c/openstack/openstack-ansible-lxc_container_create/+/824195 | 14:44 |
opendevreview | Dmitriy Rabotyagov proposed openstack/ansible-role-systemd_mount master: Drop plugins from role requirements https://review.opendev.org/c/openstack/ansible-role-systemd_mount/+/824196 | 14:56 |
opendevreview | Dmitriy Rabotyagov proposed openstack/ansible-role-systemd_service master: Drop plugins from role requirements https://review.opendev.org/c/openstack/ansible-role-systemd_service/+/824197 | 14:57 |
opendevreview | Dmitriy Rabotyagov proposed openstack/ansible-role-systemd_networkd master: Drop plugins from role requirements https://review.opendev.org/c/openstack/ansible-role-systemd_networkd/+/824198 | 14:58 |
opendevreview | James Denton proposed openstack/openstack-ansible master: Add Ironic-related bridges to AIO https://review.opendev.org/c/openstack/openstack-ansible/+/823426 | 15:00 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible master: [WIP] Use plugins as collection https://review.opendev.org/c/openstack/openstack-ansible/+/824184 | 15:00 |
noonedeadpunk | #startmeeting openstack_ansible_meeting | 15:00 |
opendevmeet | Meeting started Tue Jan 11 15:00:16 2022 UTC and is due to finish in 60 minutes. The chair is noonedeadpunk. Information about MeetBot at http://wiki.debian.org/MeetBot. | 15:00 |
opendevmeet | Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. | 15:00 |
opendevmeet | The meeting name has been set to 'openstack_ansible_meeting' | 15:00 |
noonedeadpunk | o/ | 15:00 |
noonedeadpunk | #topic rollcall | 15:00 |
jamesdenton | o/ | 15:02 |
jrosser_ | o/ hello | 15:02 |
jrosser_ | we should be unblocked on master with the linters trouble now i think | 15:03 |
jamesdenton | did the second one merge? | 15:04 |
damiandabrowski[m] | hey! | 15:04 |
jamesdenton | or does it matter? | 15:04 |
noonedeadpunk | #topic office hours | 15:04 |
noonedeadpunk | So this is first meeting 2022 and we have plenty stuff to discuss I bet :) | 15:04 |
noonedeadpunk | I guess first thing is probably Rocky Linux support raised by NeilHanlon last week | 15:05 |
jrosser_ | there is a patch now i think | 15:05 |
noonedeadpunk | https://review.opendev.org/c/openstack/openstack-ansible/+/823573 | 15:06 |
NeilHanlon | i'm still poking at the DIB build root, too. double booked this morning but i'll try and respond here, too | 15:06 |
jrosser_ | NeilHanlon: i guess there is kind of intersection also with this https://review.opendev.org/c/openstack/ansible-role-python_venv_build/+/824189 | 15:06 |
noonedeadpunk | I will try to look into this patch and why zuul is unhappy | 15:06 |
jrosser_ | oh | 15:06 |
jrosser_ | wrong link | 15:06 |
jrosser_ | this https://review.opendev.org/c/openstack/openstack-ansible/+/820854 | 15:07 |
noonedeadpunk | actually I looked through ^ and didn't find anything that would hurt Rocky much. | 15:07 |
jrosser_ | noonedeadpunk: i think there is no rocky image in CI yet | 15:08 |
NeilHanlon | i believe zuul is unhappy b/c of the missing jobs, yea | 15:08 |
jrosser_ | which is why the many zuul errors | 15:08 |
noonedeadpunk | btw, NeilHanlon, maybe you know out of top of your brain - does ansible detect that it's Rocky for operating system? And family is still redhat? | 15:08 |
NeilHanlon | versions >2.10 i think should. and yea, family rh | 15:09 |
noonedeadpunk | because we're carrying some nasty stuff for centos 8 (non-stream) which is eoled by now | 15:09 |
NeilHanlon | we *try* to be as close to RHEL as we can | 15:09 |
jrosser_ | detecting stream vs. non-stream for 8 is nasty | 15:09 |
NeilHanlon | i bet :( | 15:09 |
NeilHanlon | do you know if there's any reliance on the centos advanced virtualiation sigs? or other SIGs | 15:10 |
noonedeadpunk | another more general question - is there any chances that Rocky will ship python38 selinux bindings? As CentOS does not which is a bit frustrating | 15:10 |
noonedeadpunk | We rely on RDO | 15:10 |
jrosser_ | sort of https://github.com/openstack/openstack-ansible-openstack_hosts/blob/master/vars/redhat-8.yml#L91-L106 | 15:10 |
noonedeadpunk | for some packages | 15:10 |
noonedeadpunk | ah, yes... | 15:11 |
jrosser_ | but "it depends" - there needs to be somewhere that the relevant versions of libvirt and whatever come from | 15:11 |
jrosser_ | and if they are there in the distro with no extra repo, then thats fine | 15:12 |
jrosser_ | so the long answer is we take RDO / distro / advanced virt / ... as necessary, and it can be a per distro choice | 15:12 |
NeilHanlon | adv virt might be problematic.. i may need to pick that up from CentOS and start building it | 15:13 |
noonedeadpunk | I think nova requirement has libvirt >= 6.0.0 now | 15:13 |
jrosser_ | we should have logs of this | 15:13 |
andrewbonney | https://docs.openstack.org/nova/latest/reference/libvirt-distro-support-matrix.html | 15:14 |
noonedeadpunk | jrosser_: btw why do we have advanced-virtualization in openstack_hosts.... Isn't it smth that should be only for nova-computes? | 15:14 |
jrosser_ | very good question | 15:14 |
jrosser_ | NeilHanlon: in the CI logs you can see what got installed https://zuul.opendev.org/t/openstack/build/4bbcf2f1b948415bba2c20acd6a29c5d/log/logs/redhat-rpm-list-installed-host-20-31-15.txt | 15:15 |
jrosser_ | it may be that repo is not required at all | 15:16 |
NeilHanlon | i'll give it a check/test. that repo is going away a/o jan 31st when CentOS rips the 8 content off the mirror | 15:17 |
NeilHanlon | https://lists.centos.org/pipermail/centos-devel/2021-December/098779.html | 15:17 |
noonedeadpunk[h] | I believe I got disconnected :( | 15:18 |
noonedeadpunk[h] | Ok, so for Rocky I think we're fine to add it's support considering it shouldn't really take much effort to support it comparing to CentOS and NeilHanlon is around hopefully to help out with some distro-specific questions :) | 15:19 |
noonedeadpunk | Another topic then. | 15:20 |
noonedeadpunk | I was wondering if we should add Backport_candidate label for our projects in gerrit? | 15:20 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-openstack_hosts master: Remove use of advanced-virtualisation repo for centos https://review.opendev.org/c/openstack/openstack-ansible-openstack_hosts/+/824202 | 15:20 |
jrosser_ | that would be a good idea | 15:21 |
jrosser_ | it is really easy to forget which things need to be backported | 15:21 |
noonedeadpunk | this would add nasty column, but I belkieve benefit is worth it. | 15:22 |
noonedeadpunk | Will figure out how to make this if no objections | 15:22 |
noonedeadpunk | as we really loose what needs to be backported | 15:22 |
jrosser_ | we need an update to the dashboard too | 15:23 |
jrosser_ | there is a bunch of other collection stuff getting in there | 15:23 |
noonedeadpunk | ah, I see now | 15:23 |
jrosser_ | i did read the zuul docs and was not sure what 'parent project' meant - if that was a useful construct to define "only openstack-ansible repos" to make the dashboard expressions much simpler | 15:24 |
jrosser_ | zuul/gerrit | 15:24 |
noonedeadpunk | um, I'm not sure that our projects are parented in gerrit | 15:25 |
jrosser_ | no they are not | 15:25 |
noonedeadpunk | and I haven't saw how to do that in project-config tbh | 15:27 |
noonedeadpunk | Well, it would require update as we would need to see backport label as separate table anyway, so will imporve regexp as well | 15:27 |
noonedeadpunk | dashboards in gerrit is nasty beast :( | 15:28 |
*** dviroel is now known as dviroel|lunch|errand | 15:29 | |
noonedeadpunk | ok, one more thing from me. We want to re-use journald-remote internally. But currently it's a playbook that hard to be re-used | 15:29 |
noonedeadpunk | Wdyt about making it an independent role? | 15:29 |
noonedeadpunk | Or maybe we should put it just to ops? | 15:30 |
noonedeadpunk | or as role to plugins repo (to be installable with collection) | 15:30 |
jrosser_ | i was just going to say that last one | 15:30 |
jrosser_ | neat thing with that is we can use it as a kind of staging area for things like this | 15:30 |
jrosser_ | and if it works out then it's little effort | 15:31 |
damiandabrowski[m] | but the one disadvantage i see, is that deprecated rsyslog would have a separate role and remote_journald won't | 15:32 |
damiandabrowski[m] | i'm not sure how important it is for You though | 15:32 |
noonedeadpunk | we should finally drop rsyslog roles :p | 15:32 |
jrosser_ | ^ this | 15:33 |
noonedeadpunk | They're still used for ceph I guess though? | 15:33 |
noonedeadpunk | worth having another look on that | 15:33 |
jrosser_ | becasue ceph writes it's own logs? | 15:34 |
noonedeadpunk | My concern was that outside of osa bringing in plugins collection is... a bit unclean, but we likely can survive that | 15:34 |
noonedeadpunk | Well last time I checked (which was several years ago) it wasn't able to fully leverage journald | 15:34 |
noonedeadpunk | It's anyway better then current playbook, and as you said - small effort to move to independent role if needed | 15:35 |
noonedeadpunk | I'm not sure how we will test role though, but we don't do it now as well, so... | 15:35 |
noonedeadpunk | I'm fine with adding it to plugins | 15:36 |
damiandabrowski[m] | maybe let's wait with the decision till February, when I'll put some effort to improve remote_journald playbook? | 15:37 |
jrosser_ | thats an easy first step agreed | 15:37 |
damiandabrowski[m] | after it's done, we can decide where we want to put it | 15:37 |
jrosser_ | if it's going to become a role, then things change a bit | 15:37 |
noonedeadpunk | damiandabrowski[m]: Erik already doing some work on it jsut in case | 15:37 |
jrosser_ | we have really nice patterns on python_venv_build / pki for this kind of utility role | 15:37 |
damiandabrowski[m] | ouh, didn't know about it, thanks | 15:37 |
opendevreview | Merged openstack/openstack-ansible master: Add openstack-ansible-plugins as a collection https://review.opendev.org/c/openstack/openstack-ansible/+/820998 | 15:39 |
jrosser_ | another topic - what do we do with the etcd role? | 15:40 |
jrosser_ | that is blocking centos-8 cleanup atm | 15:40 |
noonedeadpunk | to have this logged - I'm about to move openstack-ansible-plugins to release independent, which means it won't branch, but we will be creating tags for it. but eventually, we can leave things as is and just switch branches for ansible-collection-requirements... | 15:41 |
noonedeadpunk | I'm about to either fork it or move to opendev | 15:42 |
noonedeadpunk | not sure | 15:42 |
jamesdenton | i believe the etcd role is also being leveraged by OVN | 15:42 |
jrosser_ | does anyone see why the linters fix fails on victoria? | 15:49 |
jrosser_ | oh, we want <11.0.0 | 15:50 |
jrosser_ | but we have ended up with rich==11.0.0 | 15:51 |
noonedeadpunk | oh, weird | 15:53 |
noonedeadpunk | ah, we use functional test there, damn | 15:54 |
jrosser_ | yeah, it's tox installing things and not what the patch changes | 15:54 |
noonedeadpunk | but I'm not sure how that worked as we have ansible-lint in https://opendev.org/openstack/openstack-ansible/src/branch/stable/victoria/test-requirements.txt#L14 | 15:55 |
jrosser_ | comes from here eventually? https://opendev.org/openstack/openstack-ansible/src/branch/master/tox.ini#L140 | 15:57 |
noonedeadpunk | and for U that passes because there's no such requirement I guess | 15:57 |
jrosser_ | which starts out at https://opendev.org/openstack/openstack-ansible/src/branch/master/tox.ini#L12-L14 | 15:57 |
noonedeadpunk | yeah, I guess you're right. But we kind of need to fix that for functional repo as well I guess? | 15:58 |
jrosser_ | can we add it go global pins and then it does both together? | 15:59 |
jrosser_ | *to | 15:59 |
noonedeadpunk | yep, we can | 15:59 |
noonedeadpunk | it's probably not best place but considering it's only for V.... | 16:00 |
noonedeadpunk | but it will work, yes | 16:00 |
noonedeadpunk | #endmeeting | 16:01 |
opendevmeet | Meeting ended Tue Jan 11 16:01:19 2022 UTC. Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4) | 16:01 |
opendevmeet | Minutes: https://meetings.opendev.org/meetings/openstack_ansible_meeting/2022/openstack_ansible_meeting.2022-01-11-15.00.html | 16:01 |
opendevmeet | Minutes (text): https://meetings.opendev.org/meetings/openstack_ansible_meeting/2022/openstack_ansible_meeting.2022-01-11-15.00.txt | 16:01 |
opendevmeet | Log: https://meetings.opendev.org/meetings/openstack_ansible_meeting/2022/openstack_ansible_meeting.2022-01-11-15.00.log.html | 16:01 |
jrosser_ | it may be a good compromise - making the integrated linter work for V might be difficult | 16:02 |
noonedeadpunk | yeah, agree | 16:10 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible stable/ussuri: Remove opensuse jobs https://review.opendev.org/c/openstack/openstack-ansible/+/824206 | 16:21 |
*** sshnaidm is now known as sshnaidm|afk | 16:23 | |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-tests stable/ussuri: Remove opensuse jobs https://review.opendev.org/c/openstack/openstack-ansible-tests/+/824207 | 16:24 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_keystone master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/824209 | 16:31 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_barbican master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_barbican/+/824210 | 16:32 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_gnocchi master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_gnocchi/+/824211 | 16:33 |
jamesdenton | jrosser_ you mentioned yesterday something about the ironic role using openstack-ansible-tests? is that deprecated? Wondering how much cruft in the role could be cleaned up | 16:33 |
jamesdenton | like, is https://github.com/openstack/openstack-ansible-os_ironic/blob/master/tests/test.yml still relevant at all? | 16:33 |
jrosser_ | i think that the old patch you looked at the other day may have used openstack-ansible-tests | 16:33 |
jamesdenton | https://github.com/openstack/openstack-ansible-os_ironic/blob/master/manual-test.rc | 16:34 |
jamesdenton | i think that's what i referenced, can't recall | 16:34 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_gnocchi master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_gnocchi/+/824211 | 16:34 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_keystone master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/824209 | 16:35 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_barbican master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_barbican/+/824210 | 16:36 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_magnum master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_magnum/+/824212 | 16:37 |
jamesdenton | ahh yes, this guy https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/381049 | 16:38 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_rally master: Do not install python development packages https://review.opendev.org/c/openstack/openstack-ansible-os_rally/+/824213 | 16:38 |
jrosser_ | jamesdenton: i think in the new world it's all set up here https://github.com/openstack/openstack-ansible/blob/master/tests/roles/bootstrap-host/templates/user_variables_ironic.yml.j2 | 16:39 |
jrosser_ | it should do an AIO deployment including ironic by parsing the job name, and use whatever you put in there ^^ as extra user_variables | 16:40 |
jamesdenton | right, yes. | 16:40 |
jamesdenton | so this is prob outdated? https://github.com/openstack/openstack-ansible-os_ironic/blob/master/local_install.sh | 16:40 |
jrosser_ | almost certainly yes | 16:41 |
jamesdenton | ok - i'm just gonna purge a few things and see what happens :D | 16:41 |
jrosser_ | go for it | 16:41 |
jrosser_ | i expect there is cruft like this in all the roles | 16:42 |
opendevreview | James Denton proposed openstack/openstack-ansible-os_ironic master: [DNM] Delete Test Cruft https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/824214 | 16:45 |
jrosser_ | does anyone know what we use kmod-devel for? | 16:51 |
jrosser_ | https://codesearch.opendev.org/?q=kmod-devel | 16:52 |
spatel | kmod-devel is used by NFS i believe | 16:55 |
jamesdenton | but only for redhat? | 16:56 |
jrosser_ | aparrently so | 16:58 |
jrosser_ | i wonder how this has ever worked becasue it has to come from the powertools repo on centos-8-stream | 17:01 |
damiandabrowski[m] | guys, i think we need to always add recursive=True to the combine() filter when we work on systemd configs, as they often contain nested structure. What do You think? I can prepare fixes | 17:03 |
damiandabrowski[m] | https://paste.openstack.org/show/812036/ | 17:03 |
jrosser_ | damiandabrowski[m]: that does look broken doesnt it | 17:11 |
opendevreview | Merged openstack/openstack-ansible-os_ironic master: Update Ironic Documentation https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/822203 | 17:13 |
opendevreview | Jonathan Rosser proposed openstack/openstack-ansible-os_nova master: Replace genisoimage with xorriso for centos-9 https://review.opendev.org/c/openstack/openstack-ansible-os_nova/+/824217 | 17:15 |
*** dviroel|lunch|errand is now known as dviroel | 17:18 | |
damiandabrowski[m] | jrosser_: currently yes, at least in my opinion | 17:19 |
opendevreview | Merged openstack/openstack-ansible stable/wallaby: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824027 | 17:25 |
spatel | I am getting error numatopologyfilter returned 0 hosts. question can i see numatoplogy in placement resources? | 17:28 |
spatel | does placement has any info related numatopology ? | 17:28 |
jrosser_ | noonedeadpunk: do you remember why this happens? https://paste.opendev.org/show/812038/ | 17:32 |
jrosser_ | os_nova role calls the uwsgi role, but the uwsgi role loads the vars from os_nova, not its own | 17:32 |
opendevreview | Merged openstack/openstack-ansible master: Fix additional facts gathering in ceph-install.yml https://review.opendev.org/c/openstack/openstack-ansible/+/823796 | 17:42 |
opendevreview | Merged openstack/openstack-ansible master: Update ansible-lint version https://review.opendev.org/c/openstack/openstack-ansible/+/823979 | 17:42 |
noonedeadpunk | jrosser_: um, what... was it always like that? And how it worked then.... | 17:57 |
jrosser_ | i am really confused | 17:58 |
jrosser_ | theres the same thing in all the roles before nova | 17:58 |
noonedeadpunk | ah, when it can't find any local variable I guees | 17:58 |
jrosser_ | oh! | 17:58 |
noonedeadpunk | and it was smth realted to imports | 17:58 |
jrosser_ | i think what i mean is this has worked as i expect right up till the nova role | 18:01 |
noonedeadpunk | And you had created redhat-9 there? | 18:02 |
jrosser_ | no, i did not | 18:02 |
jrosser_ | i expected this to pick up redhat.yml https://github.com/openstack/ansible-role-uwsgi/blob/master/tasks/main.yml#L25 | 18:03 |
noonedeadpunk | Hm... So I think what happens is that for https://opendev.org/openstack/ansible-role-uwsgi/src/branch/master/tasks/main.yml#L20-L25 it checks all paths, with priority to current role but also including the one where it's included from | 18:03 |
jrosser_ | urgh | 18:04 |
jrosser_ | becasue you are right, i just have made a redhat-9.yml file and it does what we want | 18:04 |
noonedeadpunk | So if nova has redhat-9.yml, it's before "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml | 18:04 |
jrosser_ | /o\ | 18:04 |
noonedeadpunk | so it picks up first available and not goes down to "{{ ansible_facts['os_family'] | lower }}.yml" | 18:04 |
jrosser_ | thats very strange behaviour | 18:04 |
noonedeadpunk | does import/include_role breaks the same way? | 18:05 |
noonedeadpunk | Also I guess that's kind of reason why we have https://opendev.org/openstack/ansible-role-uwsgi/src/branch/master/vars for each ubuntu/debian | 18:06 |
noonedeadpunk | as "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml" is second in the list | 18:06 |
noonedeadpunk | not sure though | 18:06 |
noonedeadpunk | maybe because of libpython3.8 as well:) | 18:07 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_zun master: Ansible's combine() filter needs recursive=True parameter in order to recursively merge nested hashes. https://review.opendev.org/c/openstack/openstack-ansible-os_zun/+/824219 | 18:15 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_zun master: Ansible's combine() filter needs recursive=True parameter in order to recursively merge nested hashes. https://review.opendev.org/c/openstack/openstack-ansible-os_zun/+/824219 | 18:15 |
jrosser_ | damiandabrowski[m]: try to keep the first line of the commit message short | 18:16 |
damiandabrowski[m] | ah it's a mistake, thanks | 18:17 |
damiandabrowski[m] | will fix it and continue adding changes | 18:17 |
jrosser_ | https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure | 18:17 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_zun master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-os_zun/+/824219 | 18:19 |
opendevreview | Merged openstack/openstack-ansible stable/xena: Fix rich version for ansible-lint https://review.opendev.org/c/openstack/openstack-ansible/+/824026 | 18:20 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_tempest master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-os_tempest/+/824220 | 18:21 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_swift master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-os_swift/+/824221 | 18:21 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_nova master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-os_nova/+/824222 | 18:22 |
jrosser_ | noonedeadpunk: surprisingly, this fixes it https://paste.opendev.org/show/812043/ | 18:22 |
noonedeadpunk | oh | 18:22 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_neutron master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-os_neutron/+/824223 | 18:23 |
noonedeadpunk | It feels like we need to do that for all roles that are being included? | 18:23 |
jrosser_ | first_found has a bunch more functionality than we normally use | 18:23 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-os_cinder master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-os_cinder/+/824224 | 18:23 |
jrosser_ | but you don't seem to be able to pass those things when using it like we do | 18:23 |
opendevreview | Damian Dąbrowski proposed openstack/openstack-ansible-galera_server master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/openstack-ansible-galera_server/+/824225 | 18:24 |
opendevreview | Damian Dąbrowski proposed openstack/ansible-role-uwsgi master: Enable recursion in combine() filter https://review.opendev.org/c/openstack/ansible-role-uwsgi/+/824226 | 18:24 |
noonedeadpunk | well, fair, we haven't touched that bit for ages | 18:24 |
jrosser_ | it's the last example here https://docs.ansible.com/ansible/latest/collections/ansible/builtin/first_found_lookup.html | 18:25 |
damiandabrowski[m] | https://review.opendev.org/q/topic:%22combine-filter-recursion%22 is ready for review | 18:26 |
jrosser_ | i will make patches for this tomorrow becasue its total banana skin | 18:26 |
noonedeadpunk | I think {{ role_path }} is really vital there | 18:26 |
jrosser_ | oh yes, without that it still takes the os_nova vars | 18:27 |
noonedeadpunk | I'd say it's worth backporting https://review.opendev.org/q/topic:%22combine-filter-recursion%22 at least to X? | 18:27 |
jrosser_ | probably as far as we can given how its just broken? | 18:28 |
jrosser_ | my centos-9 AIO has got to neutron now | 18:29 |
jrosser_ | feels like this is going to work | 18:29 |
jrosser_ | maybe a few more package names to adjust but hopefully nothing more serious | 18:29 |
noonedeadpunk | sounds really promising! | 18:30 |
jrosser_ | we need to wait for real mariadb and rabbit packages | 18:30 |
jrosser_ | and no lxc yet either | 18:30 |
jrosser_ | i have hacks to use the distro mariadb and rabbit just now | 18:31 |
jrosser_ | so the version is not what we want | 18:31 |
jrosser_ | it's been good through, i have flushed out a whole load of legacy stuff doing this | 18:31 |
jamesdenton | if anyone has a sec to check this out, i'd appreciate it. https://review.opendev.org/c/openstack/openstack-ansible/+/823426 | 18:47 |
mgariepy | jamesdenton, looks good but i would like a small nit ;) | 18:55 |
jamesdenton | :D | 19:04 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-plugins master: Make plugins usable as part of collection https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/824148 | 19:15 |
noonedeadpunk | yeah, ideally 172.29.228.100 should be first, but well... | 19:18 |
noonedeadpunk | jamesdenton: feel free to self+W if you ok to leave as is | 19:19 |
jrosser_ | oh cool this passed https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/820999 | 19:22 |
jrosser_ | it proves the depends-on are working for plugins collection | 19:22 |
noonedeadpunk | yep, that's really good proof | 19:24 |
noonedeadpunk | What's not good - functional tests here https://opendev.org/openstack/openstack-ansible-lxc_container_create/src/branch/master/zuul.d/project.yaml#L25 :( | 19:24 |
noonedeadpunk | they make me sad | 19:24 |
jrosser_ | I expect an infra job is fairly close to those | 19:30 |
noonedeadpunk | just matter of defined variable I guess... so adding btrfs/zfs scenarios will be needed | 19:33 |
noonedeadpunk | I really love that https://review.opendev.org/c/openstack/openstack-ansible-os_keystone/+/820999 | 19:37 |
noonedeadpunk | Its so clean easy and neat.... | 19:38 |
noonedeadpunk | jrosser_: still around?:) | 19:54 |
jrosser_ | yeah :) | 19:55 |
noonedeadpunk | Regarding backport label | 19:55 |
noonedeadpunk | I'm not sure if we should create +2 for it? | 19:56 |
noonedeadpunk | Or just have +1 and -1 for all users? | 19:56 |
noonedeadpunk | -2 is fully useless here imo, regarding +2.... | 19:57 |
jrosser_ | hmm | 19:57 |
jrosser_ | feels. but more like a flag than a vote | 19:58 |
noonedeadpunk | I'd say I'd be fine that such review appear on board if any registered user marks it for backporting... At least it needs verification I'd say | 19:58 |
noonedeadpunk | yep, exactly | 19:58 |
opendevreview | James Denton proposed openstack/openstack-ansible-os_ironic master: Update Ironic Inspector for Metal Deployments https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/821503 | 19:59 |
noonedeadpunk | I'm jsut thinking -1 might be useful if we want to drop some patch from the board, we set -1 to it | 19:59 |
jrosser_ | we have 0 as well? | 20:00 |
noonedeadpunk | yep | 20:00 |
noonedeadpunk | 0 is default | 20:00 |
jrosser_ | simple sounds good for now | 20:01 |
noonedeadpunk | we can add extra if needed indeed | 20:01 |
noonedeadpunk | actually we can limit this only to cores and don't allow users to set it | 20:02 |
noonedeadpunk | (so +1 will be available only to cores) | 20:03 |
jrosser_ | let’s do that | 20:11 |
noonedeadpunk | doh.... its' functional dir job for lxc_containers https://zuul.opendev.org/t/openstack/build/b1224f5aff5840448b08841f1ebdc65e/log/logs/host/lxc-cache-prep-commands.log.txt | 20:33 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-lxc_container_create master: Use only supported functional jobs https://review.opendev.org/c/openstack/openstack-ansible-lxc_container_create/+/824234 | 20:47 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible-lxc_container_create master: Drop plugins from role requirements https://review.opendev.org/c/openstack/openstack-ansible-lxc_container_create/+/824195 | 20:47 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible master: [WIP] Use plugins as collection https://review.opendev.org/c/openstack/openstack-ansible/+/824184 | 20:56 |
opendevreview | Dmitriy Rabotyagov proposed openstack/openstack-ansible master: Use plugins repo as collection https://review.opendev.org/c/openstack/openstack-ansible/+/824184 | 20:57 |
*** dviroel is now known as dviroel|afk | 21:15 | |
opendevreview | James Denton proposed openstack/openstack-ansible-os_ironic master: [DNM] Delete Test Cruft https://review.opendev.org/c/openstack/openstack-ansible-os_ironic/+/824214 | 22:44 |
opendevreview | Merged openstack/openstack-ansible-haproxy_server master: Add default CA store to use when haproxy_backend_ca is true https://review.opendev.org/c/openstack/openstack-ansible-haproxy_server/+/821847 | 22:54 |
*** dviroel|afk is now known as dviroel | 23:05 | |
*** dviroel is now known as dviroel|out | 23:10 | |
opendevreview | Merged openstack/openstack-ansible-os_nova master: Reinstate ssh key distribution for all nova deployments https://review.opendev.org/c/openstack/openstack-ansible-os_nova/+/823785 | 23:41 |
opendevreview | Merged openstack/openstack-ansible-os_nova master: Revert "Disable shell for nova when tunneled migration not used" https://review.opendev.org/c/openstack/openstack-ansible-os_nova/+/823786 | 23:41 |
Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!