*** fawadk has quit IRC | 00:08 | |
*** Aish has quit IRC | 00:21 | |
openstackgerrit | Michael Johnson proposed openstack/octavia: Adds documentation for the Octavia configuration https://review.openstack.org/294338 | 00:24 |
---|---|---|
*** woodster_ has quit IRC | 00:27 | |
*** fawadkhaliq has joined #openstack-lbaas | 00:27 | |
*** fawadkhaliq has quit IRC | 00:31 | |
*** piet has joined #openstack-lbaas | 00:31 | |
*** fawadkhaliq has joined #openstack-lbaas | 00:31 | |
johnsom | Anybody know how to get octavia.io to render a proposed patch? | 00:34 |
*** Alex_Stef has quit IRC | 00:41 | |
*** Alex_Stef has joined #openstack-lbaas | 00:56 | |
*** armax has joined #openstack-lbaas | 00:58 | |
openstackgerrit | Merged openstack/neutron-lbaas: Fix Python 3 issues https://review.openstack.org/288382 | 01:00 |
*** evgenyf has joined #openstack-lbaas | 01:01 | |
reedip | anyone here who has an idea about lbaas documentation? | 01:13 |
*** fawadkhaliq has quit IRC | 01:13 | |
sbalukoff | reedip: johnsom and I have been working on this. | 01:15 |
sbalukoff | reedip: What's your question specifically? | 01:15 |
reedip | sbalukoff : thanks for letting me know... I wanted to add information in the networking guide, rlated to LBaaS | 01:16 |
sbalukoff | reedip: In the openstack manual? If you want to try doing that, feel free-- but we've recently gone down that rabbit hole and found it to be... confusing, difficult and ultimately fruitless. Our plan was to get the docs sorted in our own repository first, then worry about getting some of this into the main manual. | 01:17 |
sbalukoff | There are a number of bugs for documentation opened in the Octavia launchpad right now. Several of them also have to do with neutron-lbaas docs (since these are so related) | 01:18 |
sbalukoff | So if you're looking for something to do, you might grab one or more of those. But if you have something specific in mind that you want to do, feel free. | 01:18 |
reedip | sbalukoff: I am trying to update the manual for https://bugs.launchpad.net/neutron/+bug/1521797 | 01:20 |
openstack | Launchpad bug 1521797 in openstack-manuals " Support for Name field in Members and HMs" [Low,Confirmed] - Assigned to Reedip (reedip-banerjee) | 01:20 |
reedip | sbalukoff: actually, post-mortem of Mitaka has marked this as Documentation Missing ... that was why I was wondering how to proceed forward | 01:21 |
sbalukoff | Right. That's exactly what I was talking about with "confusing, difficult and ultimately fruitless" which is why for now we're just going to get the docs into our own repo and sorted there. | 01:22 |
reedip | sbalukoff: Okay, so how can I update the docs in Lbaas? | 01:23 |
reedip | Reno ?? | 01:23 |
sbalukoff | Create an .rst file and put it in an appropriate place under the docs directory in the neutron-lbaas repository. | 01:23 |
reedip | Ohh, okay | 01:24 |
reedip | that I know | 01:24 |
sbalukoff | There's basically nothing there right now, mind you: We're still working out the structure / skeleton. | 01:24 |
*** armax has quit IRC | 01:24 | |
sbalukoff | But we'll probably start by copying much of what Octavia has done (which isn't all that much, we know). | 01:24 |
sbalukoff | Basically, there's a lot of work to do regarding documentation. But a lot of this can be started by copying what was available in the main openstack manual (older versions-- before a lot of our docs there got nuked by an update in December.) | 01:25 |
reedip | okay | 01:26 |
reedip | I see that the rst for this bug is missing here: https://review.openstack.org/#/c/245664/ | 01:26 |
reedip | which I posted earlier | 01:26 |
reedip | And for the rst structure, as you suggest, I would take a look in Octavia | 01:26 |
sbalukoff | Right. If we need to move it later, that's not a big deal. | 01:27 |
sbalukoff | Just getting something usable in there somewhere is the most important thing right now. | 01:27 |
reedip | sbalukoff: Okay, then let me create an rst with the Octavia defined structure in the LBaaS code | 01:27 |
sbalukoff | (In fact, I expect much of this to get re-organized by an actual technical writer at some later point.) | 01:28 |
reedip | sbalukoff: any plans of getting a Tech Writer onboard for Newton ? | 01:28 |
reedip | to complete this work by N1 ? | 01:28 |
sbalukoff | I've got three lined up, actually. | 01:28 |
reedip | oh ok, great :D | 01:28 |
sbalukoff | But we need to provide the content. They'll edit and organize it. | 01:28 |
reedip | oh, so the content is missing.... | 01:29 |
sbalukoff | Yes. | 01:29 |
reedip | okay, if you are ever a man short, let me know :) | 01:29 |
sbalukoff | We definitely are! Please have a look at the octavia bugs that mention "docs" in the title. Again, a bunch of these also apply to neutron-lbaas. | 01:29 |
reedip | okay, I will .. I have weekends generally a bit free | 01:30 |
sbalukoff | Nice! | 01:31 |
reedip | will help as much as I can | 01:31 |
*** yamamoto_ has joined #openstack-lbaas | 01:41 | |
*** madhu_ak has quit IRC | 01:42 | |
*** yamamoto_ has quit IRC | 01:45 | |
*** armax has joined #openstack-lbaas | 01:45 | |
*** bana_k has quit IRC | 01:50 | |
*** kevo has quit IRC | 01:51 | |
*** Purandar has quit IRC | 01:52 | |
*** yamamoto has joined #openstack-lbaas | 01:53 | |
*** piet has quit IRC | 01:53 | |
*** evgenyf has quit IRC | 02:02 | |
*** ducttape_ has joined #openstack-lbaas | 02:03 | |
*** yamamoto has quit IRC | 02:04 | |
*** yamamoto has joined #openstack-lbaas | 02:05 | |
*** ducttape_ has quit IRC | 02:11 | |
*** piet has joined #openstack-lbaas | 02:14 | |
*** alhu has quit IRC | 02:19 | |
*** SumitNaiksatam has joined #openstack-lbaas | 02:20 | |
*** ajmiller has joined #openstack-lbaas | 02:23 | |
*** ducttape_ has joined #openstack-lbaas | 02:31 | |
*** piet has quit IRC | 02:33 | |
*** yamamoto has quit IRC | 02:37 | |
*** links has joined #openstack-lbaas | 02:40 | |
openstackgerrit | Yang Yu proposed openstack/neutron-lbaas: Fix no such option defined for service_auth https://review.openstack.org/293352 | 02:48 |
*** ducttape_ has quit IRC | 02:51 | |
*** armax has quit IRC | 02:56 | |
*** cody-somerville has quit IRC | 03:01 | |
*** neelashah has joined #openstack-lbaas | 03:08 | |
*** Aish has joined #openstack-lbaas | 03:08 | |
*** Aish has quit IRC | 03:11 | |
*** ban has joined #openstack-lbaas | 03:14 | |
*** ajmiller has quit IRC | 03:15 | |
*** cody-somerville has joined #openstack-lbaas | 03:16 | |
*** armax has joined #openstack-lbaas | 03:18 | |
*** ducttape_ has joined #openstack-lbaas | 03:27 | |
*** neelashah has quit IRC | 03:28 | |
*** ducttape_ has quit IRC | 03:28 | |
*** bana_k has joined #openstack-lbaas | 03:33 | |
*** yamamoto_ has joined #openstack-lbaas | 03:34 | |
*** bana_k has quit IRC | 03:35 | |
*** Purandar has joined #openstack-lbaas | 03:41 | |
openstackgerrit | Lingxian Kong proposed openstack/octavia: Exit local.sh immediately when error occurs https://review.openstack.org/294381 | 03:52 |
*** alhu has joined #openstack-lbaas | 04:00 | |
*** alhu has quit IRC | 04:02 | |
*** anilvenkata has joined #openstack-lbaas | 04:13 | |
*** fawadkhaliq has joined #openstack-lbaas | 04:20 | |
*** fawadkhaliq has quit IRC | 04:24 | |
*** fawadkhaliq has joined #openstack-lbaas | 04:25 | |
*** cody-somerville has quit IRC | 04:26 | |
*** cody-somerville has joined #openstack-lbaas | 04:27 | |
*** fawadkhaliq has quit IRC | 04:30 | |
*** fawadkhaliq has joined #openstack-lbaas | 04:38 | |
*** fawadkhaliq has quit IRC | 04:42 | |
*** fawadkhaliq has joined #openstack-lbaas | 04:44 | |
*** fawadkhaliq has quit IRC | 04:55 | |
*** bharathm has quit IRC | 04:58 | |
*** pck has quit IRC | 04:59 | |
*** pck has joined #openstack-lbaas | 04:59 | |
*** bharathm has joined #openstack-lbaas | 05:01 | |
*** cody-somerville has quit IRC | 05:10 | |
*** Purandar has quit IRC | 05:14 | |
*** cody-somerville has joined #openstack-lbaas | 05:23 | |
*** anilvenkata has quit IRC | 05:34 | |
*** anilvenkata has joined #openstack-lbaas | 06:07 | |
*** amotoki has joined #openstack-lbaas | 06:14 | |
*** pcaruana has quit IRC | 06:18 | |
*** anilvenkata has quit IRC | 06:33 | |
*** rcernin has joined #openstack-lbaas | 06:37 | |
*** SumitNaiksatam has left #openstack-lbaas | 06:44 | |
*** prabampm has joined #openstack-lbaas | 06:47 | |
*** kevo has joined #openstack-lbaas | 06:47 | |
*** anilvenkata has joined #openstack-lbaas | 06:49 | |
*** numans has joined #openstack-lbaas | 06:51 | |
*** anilvenkata has quit IRC | 06:52 | |
*** anilvenkata has joined #openstack-lbaas | 06:53 | |
*** kevo has quit IRC | 07:03 | |
*** armax has quit IRC | 07:10 | |
openstackgerrit | Yang Yu proposed openstack/neutron-lbaas: Fix no such option defined for service_auth https://review.openstack.org/293352 | 07:38 |
*** prabampm has quit IRC | 07:51 | |
*** kevo has joined #openstack-lbaas | 07:52 | |
*** kevo has quit IRC | 07:55 | |
*** pcaruana has joined #openstack-lbaas | 07:57 | |
*** tesseract has joined #openstack-lbaas | 08:20 | |
*** tesseract is now known as Guest59954 | 08:21 | |
*** anilvenkata has quit IRC | 08:24 | |
*** Guest59954 is now known as new | 08:25 | |
*** new has quit IRC | 08:26 | |
*** tesseract- has joined #openstack-lbaas | 08:26 | |
*** anilvenkata has joined #openstack-lbaas | 08:38 | |
*** anilvenkata has quit IRC | 08:44 | |
*** anilvenkata has joined #openstack-lbaas | 08:56 | |
*** anilvenkata has quit IRC | 08:57 | |
*** anilvenkata has joined #openstack-lbaas | 08:57 | |
*** reedip is now known as outofmemory | 09:01 | |
*** armax has joined #openstack-lbaas | 09:15 | |
*** links has quit IRC | 09:37 | |
*** banszmar has joined #openstack-lbaas | 10:01 | |
*** links has joined #openstack-lbaas | 10:34 | |
*** rtheis has joined #openstack-lbaas | 10:35 | |
*** amotoki has quit IRC | 10:36 | |
*** anilvenkata has quit IRC | 10:41 | |
*** doug-fish has quit IRC | 10:41 | |
*** amotoki has joined #openstack-lbaas | 10:46 | |
ajo | amotoki, I have to check with latest version but, | 10:54 |
ajo | neutron quota-update --loadbalancer 100 | 10:54 |
ajo | sends {loadbalancer: true} via post | 10:55 |
amotoki | ajo: hmm.. | 10:55 |
ajo | and also, it sets the tenant id as "100" :) | 10:55 |
amotoki | ajo: it should be a bug. | 10:55 |
ajo | # neutron --version | 10:55 |
ajo | 4.1.2 | 10:55 |
ajo | ok, I will fill a bug | 10:55 |
ajo | amotoki, : https://bugs.launchpad.net/python-neutronclient/+bug/1559027 | 11:02 |
openstack | Launchpad bug 1559027 in python-neutronclient "neutron quota-update --loadbalancer 100 sets quota to 1" [Medium,New] | 11:02 |
ajo | there it goes | 11:02 |
amotoki | ajo: thanks. let me check tomorrow | 11:02 |
ajo | amotoki, of course | 11:02 |
amotoki | ajo: it is a good candidate of stable update. | 11:03 |
ajo | yes, not sure if it's a regression | 11:03 |
ajo | I wonder if it was there and nobody noticed it before | 11:03 |
*** amotoki_ has joined #openstack-lbaas | 11:17 | |
*** amotoki has quit IRC | 11:20 | |
ajo | ouch: https://asciinema.org/a/e0bt4sjxnby2wan7wegvhj7u5 | 11:20 |
ajo | cleaning up loadbalancers in error state doesn't quite work with octavia | 11:20 |
*** Alex_Stef has quit IRC | 11:21 | |
*** piet has joined #openstack-lbaas | 11:21 | |
*** anilvenkata has joined #openstack-lbaas | 11:26 | |
ajo | i guess lbaas db and octavia get out of sync | 11:26 |
*** amotoki_ has quit IRC | 11:27 | |
ajo | also loadbalancers don't exist, but ports are left | 11:27 |
*** amotoki has joined #openstack-lbaas | 11:27 | |
*** amotoki has quit IRC | 11:39 | |
*** piet has quit IRC | 11:43 | |
*** piet has joined #openstack-lbaas | 12:03 | |
*** ducttape_ has joined #openstack-lbaas | 12:13 | |
*** buttercup has quit IRC | 12:15 | |
*** piet has quit IRC | 12:26 | |
*** ducttape_ has quit IRC | 12:35 | |
*** yamamoto_ has quit IRC | 12:36 | |
*** diogogmt has quit IRC | 12:37 | |
*** doug-fish has joined #openstack-lbaas | 12:38 | |
*** doug-fish has quit IRC | 12:39 | |
*** anilvenkata_ has joined #openstack-lbaas | 12:40 | |
*** piet has joined #openstack-lbaas | 12:40 | |
*** doug-fish has joined #openstack-lbaas | 12:40 | |
*** doug-fish has quit IRC | 12:40 | |
*** doug-fish has joined #openstack-lbaas | 12:41 | |
*** diogogmt has joined #openstack-lbaas | 12:42 | |
*** anilvenkata has quit IRC | 12:42 | |
*** matt-borland has joined #openstack-lbaas | 12:46 | |
*** openstackgerrit has quit IRC | 12:48 | |
*** openstackgerrit has joined #openstack-lbaas | 12:49 | |
*** alejandrito has joined #openstack-lbaas | 12:56 | |
*** tesseract- has quit IRC | 12:59 | |
*** diogogmt has quit IRC | 12:59 | |
*** tesseract has joined #openstack-lbaas | 13:08 | |
*** tesseract is now known as Guest84688 | 13:08 | |
*** numans has quit IRC | 13:10 | |
*** neelashah has joined #openstack-lbaas | 13:14 | |
*** links has quit IRC | 13:22 | |
*** armax has quit IRC | 13:35 | |
*** yamamoto has joined #openstack-lbaas | 13:53 | |
*** yamamoto has quit IRC | 13:53 | |
*** yamamoto has joined #openstack-lbaas | 13:54 | |
*** yamamoto_ has joined #openstack-lbaas | 13:54 | |
*** yamamoto has quit IRC | 13:59 | |
*** rcernin has quit IRC | 14:01 | |
*** yamamoto_ has quit IRC | 14:05 | |
*** yamamoto has joined #openstack-lbaas | 14:05 | |
*** links has joined #openstack-lbaas | 14:09 | |
*** yamamoto has quit IRC | 14:10 | |
*** yamamoto has joined #openstack-lbaas | 14:10 | |
*** ducttape_ has joined #openstack-lbaas | 14:13 | |
*** diogogmt has joined #openstack-lbaas | 14:17 | |
*** ajmiller_ has joined #openstack-lbaas | 14:18 | |
*** ajmiller has joined #openstack-lbaas | 14:18 | |
*** ajmiller_ has quit IRC | 14:19 | |
*** yamamoto has quit IRC | 14:25 | |
*** yamamoto has joined #openstack-lbaas | 14:25 | |
*** amotoki has joined #openstack-lbaas | 14:25 | |
*** yamamoto has quit IRC | 14:30 | |
*** amotoki has quit IRC | 14:33 | |
*** pcaruana has quit IRC | 14:38 | |
*** yamamoto has joined #openstack-lbaas | 14:43 | |
*** Guest84688 has quit IRC | 14:48 | |
*** Purandar has joined #openstack-lbaas | 14:49 | |
*** amotoki has joined #openstack-lbaas | 14:53 | |
*** links has quit IRC | 14:54 | |
*** yamamoto has quit IRC | 14:58 | |
*** tesseract has joined #openstack-lbaas | 15:00 | |
*** tesseract is now known as Guest76883 | 15:00 | |
*** yamamoto has joined #openstack-lbaas | 15:11 | |
*** prabampm has joined #openstack-lbaas | 15:16 | |
*** amotoki has quit IRC | 15:18 | |
*** prabampm has quit IRC | 15:24 | |
*** haleyb has joined #openstack-lbaas | 15:30 | |
*** banszmar has quit IRC | 15:36 | |
*** yamamoto has quit IRC | 15:37 | |
*** yamamoto has joined #openstack-lbaas | 15:37 | |
haleyb | can someone take a look at https://review.openstack.org/#/c/294669/ (devstack plugin) and recommend whether I should start at master and cherry-pick? neutron stable/liberty is broken until something like this merges. thanks | 15:51 |
ajmiller | haleyb there is already a master and mitaka patch for this. | 16:02 |
ajmiller | https://review.openstack.org/#/q/Id16da90e195ede8a7565b3265374cb603b6eb898,n,z | 16:03 |
haleyb | ajmiller: thanks, i had searched for bugs but didn't find one. i'll cherry-pick that back | 16:03 |
ajmiller | Cool. | 16:04 |
*** yamamoto has quit IRC | 16:09 | |
*** jpomeroy has joined #openstack-lbaas | 16:10 | |
*** armax has joined #openstack-lbaas | 16:10 | |
*** armax has quit IRC | 16:11 | |
jpomeroy | does anyone know why i might keep getting this error when trying to create a load balancer (lbaasv2, octavia) | 16:11 |
jpomeroy | Could not connect to instance. Retrying. | 16:11 |
jpomeroy | have been trying for a couple days, can never get one to work | 16:11 |
jpomeroy | using latest devstack | 16:11 |
*** johnsom_ has joined #openstack-lbaas | 16:15 | |
*** jwarendt has joined #openstack-lbaas | 16:34 | |
*** pcaruana has joined #openstack-lbaas | 16:47 | |
xgerman | you are running vt-x? | 16:47 |
*** bana_k has joined #openstack-lbaas | 16:57 | |
openstackgerrit | Bharath M proposed openstack/octavia: Fix local.sh script for Keystone authentication https://review.openstack.org/294720 | 17:01 |
*** yamamoto has joined #openstack-lbaas | 17:10 | |
*** kevo has joined #openstack-lbaas | 17:12 | |
*** yamamoto has quit IRC | 17:17 | |
*** johnsom_ has quit IRC | 17:23 | |
*** bana_k has quit IRC | 17:28 | |
*** madhu_ak has joined #openstack-lbaas | 17:30 | |
jpomeroy | xgerman, i'm setting it up on an ubuntu 14.04 image. are you saying that image needs vt-x? | 17:32 |
xgerman | yeah we need vt-x enabled otherwise booting an amphora takes forever and the thing times out | 17:33 |
*** kevo has quit IRC | 17:43 | |
*** piet has quit IRC | 17:55 | |
*** bana_k has joined #openstack-lbaas | 17:55 | |
*** Aish has joined #openstack-lbaas | 17:58 | |
doug-fish | I notice that the validation example on https://wiki.openstack.org/wiki/Neutron/LBaaS/HowToRun doesn't actually work for me with the netcat one line server; the clients never seem to stop listening | 18:01 |
doug-fish | I have an idea how to improve, but before I change that wiki I wanted to double check that problem affects other people too | 18:01 |
doug-fish | it is good form for me to just edit the page? | 18:03 |
ajmiller | doug-fish, yes, wiki improvements are welcome | 18:07 |
doug-fish | ok, will do! | 18:07 |
*** ducttape_ has quit IRC | 18:07 | |
johnsom | doug-fish Yeah, the version in the repo is fixed. | 18:07 |
doug-fish | I was having trouble without a Contnet-Length header in my simple server - requests never get closed | 18:09 |
*** ducttape_ has joined #openstack-lbaas | 18:09 | |
ajmiller | doug-fish We've run into that issue before, and created a better sample webserver for tests. | 18:10 |
doug-fish | oh - is there something else I should just copy? | 18:10 |
ajmiller | the busybox implementation of "nc" in cirros is more sensitive to content length that the standard linux version. | 18:10 |
ajmiller | yes, I'll find it. | 18:10 |
doug-fish | seems that haproxy is sensitive to it as well though | 18:11 |
johnsom | https://github.com/openstack/octavia/blob/master/devstack/samples/webserver.sh | 18:11 |
*** kevo has joined #openstack-lbaas | 18:11 | |
*** doug-fis_ has joined #openstack-lbaas | 18:13 | |
doug-fis_ | laptop crash! I'm back. Did you miss me? | 18:14 |
*** Guest76883 has quit IRC | 18:15 | |
*** doug-fish has quit IRC | 18:15 | |
johnsom | doug-fis_ https://github.com/openstack/octavia/blob/master/devstack/samples/webserver.sh | 18:16 |
doug-fis_ | yeah, that's the same idea I had | 18:16 |
*** kevo has quit IRC | 18:18 | |
*** TrevorV|Home has joined #openstack-lbaas | 18:25 | |
doug-fis_ | updated. https://wiki.openstack.org/wiki/Neutron/LBaaS/HowToRun | 18:29 |
*** TrevorV|Home has quit IRC | 18:35 | |
openstackgerrit | Madhusudhan Kandadai proposed openstack/octavia: Octavia: Basic LoadBalancer Scenario Test https://review.openstack.org/172199 | 18:40 |
openstackgerrit | Madhusudhan Kandadai proposed openstack/octavia: [WIP]: Octavia: Basic LoadBalancer Scenario Test https://review.openstack.org/172199 | 18:41 |
*** piet has joined #openstack-lbaas | 18:54 | |
*** doug-fis_ has quit IRC | 19:07 | |
*** piet has quit IRC | 19:12 | |
*** chlong has quit IRC | 19:12 | |
*** banszmar has joined #openstack-lbaas | 19:15 | |
*** SumitNaiksatam has joined #openstack-lbaas | 19:16 | |
*** ducttape_ has quit IRC | 19:24 | |
*** ducttape_ has joined #openstack-lbaas | 19:25 | |
*** banszmar has quit IRC | 19:27 | |
*** piet has joined #openstack-lbaas | 19:34 | |
*** anilvenkata_ has quit IRC | 19:47 | |
*** rtheis has quit IRC | 19:47 | |
*** SumitNaiksatam has quit IRC | 20:00 | |
*** armax has joined #openstack-lbaas | 20:28 | |
*** alejandrito has quit IRC | 20:37 | |
*** matt-borland has quit IRC | 21:13 | |
*** armax has quit IRC | 21:15 | |
*** diogogmt has quit IRC | 21:21 | |
*** diogogmt has joined #openstack-lbaas | 21:24 | |
*** mestery has quit IRC | 21:25 | |
*** thomasem has quit IRC | 21:25 | |
*** mestery has joined #openstack-lbaas | 21:25 | |
*** thomasem has joined #openstack-lbaas | 21:25 | |
*** crc32|znc has quit IRC | 21:26 | |
*** pai15 has quit IRC | 21:26 | |
*** redrobot has quit IRC | 21:26 | |
*** crc32|znc has joined #openstack-lbaas | 21:26 | |
*** pai15 has joined #openstack-lbaas | 21:26 | |
*** redrobot has joined #openstack-lbaas | 21:29 | |
*** redrobot is now known as Guest98399 | 21:29 | |
*** Guest98399 is now known as redrobot | 21:37 | |
*** piet has quit IRC | 22:04 | |
*** ducttape_ has quit IRC | 22:31 | |
*** neelashah has quit IRC | 22:42 | |
*** ducttape_ has joined #openstack-lbaas | 23:28 | |
*** jpomeroy has quit IRC | 23:35 | |
*** madhu_ak has quit IRC | 23:40 | |
*** Purandar has quit IRC | 23:52 | |
*** piet has joined #openstack-lbaas | 23:56 | |
*** ducttape_ has quit IRC | 23:57 | |
*** Aish has left #openstack-lbaas | 23:59 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!