*** BjoernT has joined #openstack-kolla | 01:40 | |
*** BjoernT has quit IRC | 01:43 | |
*** igordc has quit IRC | 02:52 | |
*** negronjl has quit IRC | 02:59 | |
*** goldyfruit_ has quit IRC | 03:05 | |
*** goldyfruit has joined #openstack-kolla | 03:06 | |
*** negronjl has joined #openstack-kolla | 03:07 | |
*** goldyfruit has quit IRC | 03:08 | |
*** goldyfruit has joined #openstack-kolla | 03:11 | |
*** goldyfruit has quit IRC | 03:12 | |
*** igordc has joined #openstack-kolla | 03:19 | |
*** radeks_ has joined #openstack-kolla | 04:21 | |
*** dave-mccowan has quit IRC | 04:41 | |
*** nawar has joined #openstack-kolla | 05:48 | |
openstackgerrit | Merged openstack/kolla stable/stein: build: enable Octavia for Ubuntu/binary https://review.opendev.org/687125 | 05:54 |
---|---|---|
osmanlicilegi | morning | 06:12 |
*** negronjl has quit IRC | 06:14 | |
*** negronjl has joined #openstack-kolla | 06:17 | |
*** cah_link has joined #openstack-kolla | 06:18 | |
yoctozepto | morning | 06:36 |
*** nawar has left #openstack-kolla | 07:11 | |
mnasiadka | morning | 07:13 |
openstackgerrit | Radosław Piliszek proposed openstack/kolla-ansible master: Implement IPv6 support in the control plane https://review.opendev.org/681573 | 07:24 |
*** lklimin has joined #openstack-kolla | 07:27 | |
openstackgerrit | Dincer Celik proposed openstack/kolla-ansible master: Remove /etc/hosts entries pointing hostname to localhost https://review.opendev.org/685233 | 07:45 |
hrw | elo | 07:55 |
mgoddard | morning | 08:11 |
*** k_mouza has joined #openstack-kolla | 08:13 | |
osmanlicilegi | guys, what's the proper way to set a variable to every build of kolla? I'd like to use apt proxy for every build and I've tried setting http_proxy in base_header but didn't work. do I need to set http_proxy for every image? | 08:20 |
hrw | osmanlicilegi: in base. all are based on base | 08:22 |
osmanlicilegi | so I'm not wrong but it didn't work :| | 08:22 |
hrw | osmanlicilegi: easiest way? replaces sources.list file in docker/base/ | 08:24 |
hrw | osmanlicilegi: http://apt-cacher-ng-ip:port/deb.debian.org/ way | 08:24 |
hrw | should work but not tried | 08:24 |
osmanlicilegi | I'll give it a try | 08:25 |
openstackgerrit | Mark Goddard proposed openstack/kolla-ansible master: Docs: improve Nova documentation https://review.opendev.org/686995 | 08:30 |
openstackgerrit | Mark Goddard proposed openstack/kolla-ansible stable/stein: Fix swift-proxy-server memcached configuration https://review.opendev.org/687236 | 08:31 |
hrw | osmanlicilegi: https://paste.debian.net/1105318/ | 08:31 |
openstackgerrit | Mark Goddard proposed openstack/kolla-ansible stable/rocky: Fix swift-proxy-server memcached configuration https://review.opendev.org/687237 | 08:31 |
openstackgerrit | Mark Goddard proposed openstack/kolla-ansible stable/queens: Fix swift-proxy-server memcached configuration https://review.opendev.org/687238 | 08:31 |
*** dswebb has quit IRC | 08:31 | |
openstackgerrit | Isaac Prior proposed openstack/kayobe master: Add ansible tag header to Host Configuration doc page [WIP] https://review.opendev.org/687240 | 08:34 |
*** dswebb has joined #openstack-kolla | 08:34 | |
*** rpittau|afk is now known as rpittau | 08:38 | |
*** k_mouza has quit IRC | 08:41 | |
mnasiadka | osmanlicilegi: Kolla-build picks up HTTP(S)_PROXY var from env and passes that to containers - that doesn't work? | 08:42 |
mnasiadka | osmanlicilegi: https://docs.openstack.org/kolla/latest/admin/image-building.html#building-behind-a-proxy | 08:42 |
*** k_mouza has joined #openstack-kolla | 08:44 | |
osmanlicilegi | mnasiadka: unfortunately it does not work for me. when I set the proxy at {% block base_header %} and unset them at {% block base_footer %}, only the base build goes to proxy. | 08:47 |
*** priteau has joined #openstack-kolla | 08:47 | |
hrw | osmanlicilegi: so do not unset it | 08:49 |
mnasiadka | osmanlicilegi: tried "export HTTP_PROXY=bla:port" and then kolla-build ? | 08:49 |
mnasiadka | or use kolla-build --build-args HTTP_PROXY=blah:port | 08:51 |
mgoddard | osmanlicilegi: if you want to unset, do it in 'block footer' | 08:56 |
mgoddard | that will always be in the last image | 08:56 |
hrw | that way it will be set for all images (due to base_header) and unset for all images (due to footer being in each image) | 08:56 |
mgoddard | you can also just use 'header' rather than 'base_header' | 09:00 |
osmanlicilegi | got it. guys you're great! you'll all have a cold beer whenever I see you \m/ u_u \m/ | 09:01 |
openstackgerrit | Merged openstack/kolla-ansible master: Use internal API for heat -> heat communication https://review.opendev.org/676716 | 09:03 |
mgoddard | osmanlicilegi: if you think the docs could be clearer (always possible), feel free to send a patch :) | 09:09 |
openstackgerrit | Alfredo Moralejo proposed openstack/kolla master: Remove designate-pool-manager container https://review.opendev.org/687253 | 09:09 |
*** ondrejduchon has joined #openstack-kolla | 09:17 | |
*** ondrejduchon_ has joined #openstack-kolla | 09:19 | |
*** ondrejduchon has quit IRC | 09:20 | |
*** ondrejduchon_ has quit IRC | 09:21 | |
stingrayza | happy tuesday folks o/ | 09:21 |
yoctozepto | stingrayza: is there some holiday somewhere? | 09:22 |
stingrayza | perhaps, not here though ;) | 09:24 |
stingrayza | just trying to brighten up your morning yoctozepto :D | 09:24 |
yoctozepto | well then, happy Tuesday | 09:24 |
openstackgerrit | Merged openstack/kolla master: Deprecate Almanach images https://review.opendev.org/686616 | 09:26 |
*** ondrejduchon has joined #openstack-kolla | 09:27 | |
ondrejduchon | mgoddard: Hello, could you please check modified logging.conf feature https://review.opendev.org/#/c/679812/5. Thank you | 09:28 |
mgoddard | hi ondrejduchon, we're in feature freeze now, so it will have to wait for the Ussuri cycle. I have quite a busy few days ahead | 09:29 |
*** pcaruana has joined #openstack-kolla | 09:30 | |
hrw | two weeks ago tuesday meant taco tuesday ;D | 09:33 |
*** dswebb has quit IRC | 09:36 | |
yoctozepto | hrw: you fancy tacos? | 09:39 |
*** Blinkiz has joined #openstack-kolla | 09:39 | |
hrw | yoctozepto: I was in San Diego. they have tacos every 50m | 09:39 |
yoctozepto | oh my | 09:41 |
hrw | in selected locations of course | 09:43 |
openstackgerrit | Radosław Piliszek proposed openstack/kolla-ansible master: Implement IPv6 support in the control plane https://review.opendev.org/681573 | 10:13 |
*** k_mouza has quit IRC | 10:16 | |
openstackgerrit | Isaac Prior proposed openstack/kayobe master: Add ansible tag headers to Host Configuration doc page https://review.opendev.org/687240 | 10:16 |
openstackgerrit | Isaac Prior proposed openstack/kayobe master: Add ansible tag headers to Host Configuration doc page https://review.opendev.org/687240 | 10:19 |
*** k_mouza has joined #openstack-kolla | 10:20 | |
openstackgerrit | Isaac Prior proposed openstack/kayobe master: Add ansible tag headers to Host Configuration doc page https://review.opendev.org/687240 | 10:22 |
openstackgerrit | Jan Vondra proposed openstack/kolla-ansible master: Added RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS option to rabbitmq-env.conf https://review.opendev.org/686369 | 10:35 |
*** k_mouza has quit IRC | 10:36 | |
*** k_mouza has joined #openstack-kolla | 10:37 | |
*** k_mouza has quit IRC | 11:01 | |
*** k_mouza has joined #openstack-kolla | 11:02 | |
*** vmixor has joined #openstack-kolla | 11:06 | |
*** gfidente has quit IRC | 11:09 | |
primeministerp | Hi Everyone, having a problem when trying to deploy with Ubuntu images built from source on 18.04 arm64. I've been able to reproduce w/ Debian images built from source on Buster arm64 also. | 11:11 |
primeministerp | RUNNING HANDLER [rabbitmq : Waiting for rabbitmq to start on first node] ****************************************************************************************************************************************** | 11:11 |
primeministerp | fatal: [localhost]: FAILED! => {"changed": true, "cmd": "docker exec rabbitmq rabbitmqctl wait /var/lib/rabbitmq/mnesia/rabbitmq.pid", "delta": "0:00:00.648651", "end": "2019-10-07 19:13:00.734522", "msg": "non-zero return code", "rc": 137, "start": "2019-10-07 19:13:00.085871", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} | 11:11 |
*** gfidente has joined #openstack-kolla | 11:11 | |
hrw | primeministerp: and you are on ipv4, right? | 11:12 |
primeministerp | yes | 11:13 |
primeministerp | seems that it connect to the rabbit ip | 11:13 |
primeministerp | ERROR: epmd error for host ampere01: address (cannot connect to host/port) | 11:13 |
primeministerp | that's in the startup_log | 11:13 |
primeministerp | ufw maybe/ | 11:13 |
yoctozepto | primeministerp: does hostname resolve to the api address? | 11:16 |
primeministerp | yes | 11:17 |
primeministerp | going to check /etc/hosts | 11:17 |
hrw | "host ampere01:" | 11:18 |
hrw | can any node resolve 'ampere01' to proper IP? | 11:19 |
hrw | I workarounded it with creating 10.101.*.* entries in one of my domains and using resulting names | 11:19 |
primeministerp | it's only one node | 11:20 |
primeministerp | I think it was a 127.0.1.1 address that was causing it the issue in /etc/hosts | 11:20 |
hrw | still matters as containers need to resolve name | 11:20 |
primeministerp | I'll know i a sec | 11:20 |
*** kplant has joined #openstack-kolla | 11:21 | |
hrw | primeministerp: 127.x.x.x == localhost anyway so you can not connect outside of host. and container != host | 11:21 |
primeministerp | hrw, yes I know. It was a residual from the installation. Looking much better now. | 11:22 |
primeministerp | hrw, fwiw, the issue w/ the libvirt not recognizing aarch64 didn't raise it's head after I reinstalled. I must have corrupted something somewhere before. | 11:23 |
hrw | ok | 11:27 |
*** dave-mccowan has joined #openstack-kolla | 11:28 | |
yoctozepto | primeministerp, hrw, BaptisteGer: the hostname issues in Ubuntu is what osmanlicilegi is working on atm | 11:35 |
yoctozepto | the 127.0.1.1 addressing | 11:35 |
yoctozepto | causing troubles for rabbitmq | 11:36 |
hrw | cool | 11:37 |
BaptisteGer | great! | 11:38 |
hrw | openstackgerrit: thanks to osmanlicilegi for working on rabbitmq hostname issue in kolla | 11:38 |
yoctozepto | xD | 11:38 |
yoctozepto | well, the workaround is to just manually remove the offending entry in /etc/hosts | 11:39 |
yoctozepto | and disable any cloud-init stuff that would overwrite it | 11:39 |
yoctozepto | BaptisteGer: you should just check your hostname if it resolves to the correct address | 11:41 |
yoctozepto | and adjust any source which makes it wrong | 11:41 |
yoctozepto | eh buggy ansible https://github.com/ansible/ansible/issues/63227 | 11:41 |
mnasiadka | yoctozepto: use 2.8.5 :) | 11:42 |
yoctozepto | mnasiadka: yeah, I reported that... | 11:43 |
* yoctozepto sends mnasiadka coffee | 11:43 | |
mnasiadka | Well, this issue will be fixed one year later - by Ansible dev standards | 11:44 |
mnasiadka | So that's why I said, what I said :) | 11:44 |
yoctozepto | that's why we shall upgrade minimum in Ussuri | 11:45 |
BaptisteGer | yoctozepto: It does resolve to the ipv6 address (since it is the topmost entry). Will look into it ! | 11:46 |
yoctozepto | and for train just in ipv6 docs | 11:46 |
yoctozepto | BaptisteGer: make sure it does not resolve to an IPv4 address | 11:46 |
primeministerp | yoctozepto, thanks for the info | 11:46 |
yoctozepto | or it will be preferred | 11:46 |
BaptisteGer | yoctozepto: yup! | 11:47 |
*** k_mouza_ has joined #openstack-kolla | 11:51 | |
*** k_mouza has quit IRC | 11:54 | |
*** k_mouza_ has quit IRC | 12:01 | |
*** k_mouza has joined #openstack-kolla | 12:03 | |
*** k_mouza has quit IRC | 12:06 | |
*** k_mouza has joined #openstack-kolla | 12:07 | |
*** k_mouza has quit IRC | 12:07 | |
*** k_mouza has joined #openstack-kolla | 12:08 | |
primeministerp | Guys, thanks for the help, everything seems to deployed now. | 12:15 |
*** jdwidari has joined #openstack-kolla | 12:22 | |
*** k_mouza has quit IRC | 12:28 | |
*** kplant has quit IRC | 12:28 | |
*** k_mouza has joined #openstack-kolla | 12:30 | |
primeministerp | So is there some specific metadata needed at the flavor and image level to get vms, to launch properly on aarch64? | 12:40 |
*** pcaruana has quit IRC | 12:53 | |
*** vmixor has quit IRC | 13:02 | |
*** vmixor has joined #openstack-kolla | 13:04 | |
*** vmixor has quit IRC | 13:24 | |
*** mixor has joined #openstack-kolla | 13:24 | |
*** goldyfruit has joined #openstack-kolla | 13:28 | |
*** cah_link has quit IRC | 13:34 | |
primeministerp | yoctozepto, so I'm still having issues launching images on aarch64 | 13:36 |
*** goldyfruit_ has joined #openstack-kolla | 13:36 | |
primeministerp | yoctozepto, virCapabilitiesDomainDataLookupInternal:735 : invalid argument: could not find capabilities for domaintype=kvm | 13:37 |
primeministerp | yoctozepto, any ideas? | 13:38 |
*** goldyfruit has quit IRC | 13:39 | |
hrw | primeministerp: two things: | 13:40 |
hrw | primeministerp: 1. master or stable/stein or older? | 13:40 |
hrw | primeministerp: 2. pastebin nova-compute/nova-libvirt logs when you create instance | 13:41 |
*** pbing19 has joined #openstack-kolla | 13:42 | |
primeministerp | master | 13:47 |
*** k_mouza has quit IRC | 13:48 | |
*** k_mouza_ has joined #openstack-kolla | 13:48 | |
primeministerp | hrw, nova compute log: http://paste.openstack.org/show/782100/ | 13:48 |
hrw | thx | 13:50 |
primeministerp | hrw, libvirt log: http://paste.openstack.org/show/782101/ | 13:50 |
hrw | 2019-10-08 12:49:58.096+0000: 28852: error : virStorageFileReportBrokenChain:4780 : Cannot access storage file './debian-10.1.0-arm64-netinst.iso': No such file or directory | 13:51 |
primeministerp | hrw, the bit at the end is me trying to use virtinstall against the containerized libvirt. It was successful against the local instance | 13:51 |
hrw | this is not from openstack | 13:51 |
hrw | primeministerp: ls -l /dev/kvm ? | 13:51 |
primeministerp | root@ampere01:/var/log/kolla/libvirt# kvm-ok | 13:52 |
primeministerp | INFO: /dev/kvm exists | 13:52 |
primeministerp | KVM acceleration can be used | 13:52 |
hrw | in nova-libvirt container? | 13:52 |
primeministerp | (nova-libvirt)[root@ampere01 /]# ls /dev/kvm | 13:52 |
primeministerp | (nova-lib | 13:52 |
primeministerp | it's ther | 13:53 |
primeministerp | e | 13:53 |
primeministerp | crw-rw---- 1 root 113 10, 232 Oct 8 08:44 /dev/kvm | 13:53 |
primeministerp | that's from in the container | 13:53 |
hrw | (nova-libvirt)[root@c8n1 /]# ls -l /dev/kvm | 13:54 |
hrw | crw-rw---- 1 root qemu 10, 232 Oct 2 15:11 /dev/kvm | 13:54 |
primeministerp | (nova-libvirt)[root@ampere01 images]# ls -l /dev/kvm | 13:54 |
primeministerp | crw-rw---- 1 root 113 10, 232 Oct 8 08:44 /dev/kvm | 13:54 |
primeministerp | (nova-libvirt)[root@ampere01 images]# | 13:54 |
hrw | weird | 13:55 |
primeministerp | you think it's metadata? | 13:55 |
primeministerp | do i need a architecture=aarch64 on the image? | 13:55 |
hrw | no need for any metadata since queens | 13:55 |
*** pbing19 has quit IRC | 13:55 | |
hrw | I rather wonder why /dev/kvm has wrong permissions | 13:56 |
*** pbing19 has joined #openstack-kolla | 13:56 | |
primeministerp | what should the permissions be? | 13:57 |
primeministerp | that's the same as the underlying host | 13:57 |
hrw | especially when /usr/local/bin/kolla_extend_start takes care of permissions. 660 root:qemu /dev/kvm | 13:57 |
hrw | primeministerp: that maybe also a reason why xml for your VM instance looks so basic | 13:58 |
hrw | https://paste.debian.net/1105368/ is my standard cirros one | 13:58 |
hrw | primeministerp: pastebin globals.yml please | 13:59 |
primeministerp | hrw, http://paste.openstack.org/show/782102/ | 14:00 |
hrw | thx | 14:01 |
*** pbing19 has quit IRC | 14:05 | |
*** pbing19 has joined #openstack-kolla | 14:13 | |
*** k_mouza_ has quit IRC | 14:14 | |
openstackgerrit | Merged openstack/kolla master: Remove designate-pool-manager container https://review.opendev.org/687253 | 14:16 |
*** k_mouza has joined #openstack-kolla | 14:18 | |
*** k_mouza has quit IRC | 14:19 | |
*** k_mouza has joined #openstack-kolla | 14:20 | |
yoctozepto | primeministerp, hrw: where are permissions wrong? looking good | 14:34 |
yoctozepto | looks like arm issue, hrw must help you, I can't really, only some rpi laying around ;p | 14:35 |
hrw | rebuilding images for deploy... | 14:44 |
*** pcaruana has joined #openstack-kolla | 14:46 | |
hrw | ERROR:kolla.common.utils.kolla-toolbox:error creating overlay mount to /var/lib/docker/overlay2/24a013caae532b0f020b0942346bb1693508c4e2e74d8067dfb3ddcd4e4740d2-init/merged: device or resource busy | 14:49 |
hrw | fscking docker shit | 14:49 |
openstackgerrit | Isaac Prior proposed openstack/kayobe master: Add ansible tag headers to Host Configuration doc page https://review.opendev.org/687240 | 14:50 |
*** k_mouza has quit IRC | 14:52 | |
*** k_mouza_ has joined #openstack-kolla | 14:52 | |
yoctozepto | hrw: no, it's just some busy resource | 15:01 |
yoctozepto | we are busy, resources are too | 15:01 |
*** ivve has joined #openstack-kolla | 15:03 | |
hrw | yoctozepto: it is a bug in docker. trust me ;d | 15:03 |
hrw | just do not want to go through browser history to find link | 15:03 |
yoctozepto | xD | 15:03 |
yoctozepto | ok | 15:04 |
hrw | overlay2 abuses overlayfs | 15:04 |
yoctozepto | a-busy-es :D | 15:07 |
hrw | yoctozepto: [18395.398800] overlayfs: lowerdir is in-use as upperdir/workdir | 15:30 |
*** ivve has quit IRC | 15:36 | |
yoctozepto | hrw: ah, that looks like a bug indeed | 15:40 |
hrw | I call it a day | 15:42 |
hrw | my build machine crashed nth time | 15:43 |
hrw | today | 15:43 |
*** rpittau is now known as rpittau|afk | 15:47 | |
yoctozepto | hrw: :< | 15:48 |
*** goldyfruit___ has joined #openstack-kolla | 16:02 | |
*** goldyfruit_ has quit IRC | 16:05 | |
*** ondrejduchon has quit IRC | 16:09 | |
*** pbing19 has quit IRC | 16:12 | |
openstackgerrit | Radosław Piliszek proposed openstack/kolla-ansible master: Implement IPv6 support in the control plane https://review.opendev.org/681573 | 16:15 |
openstackgerrit | Radosław Piliszek proposed openstack/kolla-ansible master: Implement IPv6 support in the control plane https://review.opendev.org/681573 | 16:18 |
*** pbing19 has joined #openstack-kolla | 16:25 | |
*** igordc has quit IRC | 16:25 | |
*** k_mouza_ has quit IRC | 16:32 | |
*** k_mouza has joined #openstack-kolla | 16:32 | |
*** k_mouza_ has joined #openstack-kolla | 16:33 | |
*** mixor has quit IRC | 16:37 | |
*** k_mouza has quit IRC | 16:37 | |
*** k_mouza_ has quit IRC | 16:37 | |
*** vmixor has joined #openstack-kolla | 16:40 | |
*** factor has quit IRC | 16:43 | |
*** k_mouza has joined #openstack-kolla | 16:53 | |
openstackgerrit | Radosław Piliszek proposed openstack/kolla-ansible master: Implement IPv6 support in the control plane https://review.opendev.org/681573 | 16:56 |
*** ivve has joined #openstack-kolla | 16:57 | |
*** k_mouza has quit IRC | 16:58 | |
*** priteau has quit IRC | 17:07 | |
openstackgerrit | Radosław Piliszek proposed openstack/kolla-ansible master: Implement IPv6 support in the control plane https://review.opendev.org/681573 | 17:17 |
*** kplant has joined #openstack-kolla | 17:23 | |
kplant | is it still a possibility that the prometheus roles are being removed from k-a? | 17:25 |
*** dave-mccowan has quit IRC | 17:28 | |
bline | anyone seen this error from magnum: https://pastebin.com/vFJMAciM | 17:31 |
bline | fresh install; creating swarm mode cluster | 17:32 |
bline | kolla from latest git checkout, stein binary centos | 17:35 |
*** igordc has joined #openstack-kolla | 17:46 | |
*** dave-mccowan has joined #openstack-kolla | 17:48 | |
*** negronjl has quit IRC | 17:53 | |
*** negronjl has joined #openstack-kolla | 17:55 | |
yoctozepto | kplant: I doubt | 18:09 |
*** gfidente is now known as gfidente|afk | 18:10 | |
yoctozepto | bline: nope, and no magnum experts around, better get more info at #openstack-containers | 18:11 |
yoctozepto | bline: last git checkout would be train though, so make sure you are on the stable/stein branch in kolla-ansible too | 18:12 |
yoctozepto | not sure if there are any relevant changes between releases | 18:13 |
yoctozepto | probably not | 18:13 |
*** vmixor has quit IRC | 18:28 | |
*** ianw_pto is now known as ianw | 18:59 | |
*** dave-mccowan has quit IRC | 19:10 | |
*** kplant has quit IRC | 19:44 | |
*** pbing19 has quit IRC | 19:52 | |
*** pbing19 has joined #openstack-kolla | 19:54 | |
*** dave-mccowan has joined #openstack-kolla | 19:59 | |
*** jdwidari has quit IRC | 20:06 | |
*** pcaruana has quit IRC | 20:35 | |
*** gfidente|afk is now known as gfidente | 20:50 | |
*** igordc has quit IRC | 20:59 | |
*** igordc has joined #openstack-kolla | 21:00 | |
*** jbadiapa has quit IRC | 21:03 | |
*** gfidente is now known as gfidente|afk | 21:19 | |
*** ivve has quit IRC | 22:03 | |
*** goldyfruit_ has joined #openstack-kolla | 22:05 | |
*** pbing19 has quit IRC | 22:07 | |
*** goldyfruit___ has quit IRC | 22:07 | |
bline | thanks yoctozepto, I was using master, going to try with the stable/stein branch and see if that fixes it | 22:13 |
*** crindi has joined #openstack-kolla | 22:23 | |
*** goldyfruit_ has quit IRC | 22:39 | |
*** k_mouza has joined #openstack-kolla | 23:05 | |
*** k_mouza has quit IRC | 23:09 |
Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!