nicolas_o | @mordred my irc connection is flaky, I recorded my issue here: https://storyboard.openstack.org/#!/story/2004715 | 00:00 |
---|---|---|
nicolas_o | let me know if you need more information. much appreciated. | 00:01 |
openstackgerrit | Bruno HALEBLIAN proposed openstack/openstacksdk master: implement Proxy unassign_project_role_from_user https://review.openstack.org/629073 | 00:08 |
*** nicolas_o has quit IRC | 02:01 | |
*** bobh_ has joined #openstack-sdks | 02:04 | |
*** bobh_ has quit IRC | 02:08 | |
*** dims has quit IRC | 04:47 | |
*** dims has joined #openstack-sdks | 04:48 | |
*** dims has quit IRC | 04:56 | |
*** dims has joined #openstack-sdks | 04:56 | |
*** bobh_ has joined #openstack-sdks | 05:19 | |
*** bobh_ has quit IRC | 05:26 | |
*** radeks has joined #openstack-sdks | 05:48 | |
*** ykarel has joined #openstack-sdks | 06:03 | |
ykarel | mordred, hi | 06:05 |
ykarel | mordred, remember thread.error: can't start new thread i mentioned sometime back | 06:05 |
ykarel | in openstacksdk python2 and i proposed https://review.openstack.org/#/c/615543 | 06:06 |
ykarel | mordred, looks like it's fixed in master, as test passing during package build https://review.rdoproject.org/r/#/c/16824/ | 06:07 |
ykarel | mordred, can u confirm the fix, and get a new release from master | 06:08 |
*** radeks has quit IRC | 06:11 | |
*** radeks has joined #openstack-sdks | 06:20 | |
*** Luzi has joined #openstack-sdks | 06:44 | |
*** gkadam has joined #openstack-sdks | 07:48 | |
*** slaweq has joined #openstack-sdks | 07:49 | |
*** gkadam is now known as gkadam-afk | 07:50 | |
*** ykarel is now known as ykarel|lunch | 07:51 | |
*** slaweq has quit IRC | 07:53 | |
*** slaweq has joined #openstack-sdks | 07:55 | |
*** bobh_ has joined #openstack-sdks | 08:02 | |
*** bobh_ has quit IRC | 08:07 | |
*** ssbarnea has joined #openstack-sdks | 08:15 | |
*** ssbarnea|bkp2 has quit IRC | 08:16 | |
*** e0ne has joined #openstack-sdks | 08:16 | |
*** gkadam-afk is now known as gkadam | 08:24 | |
*** tosky has joined #openstack-sdks | 08:37 | |
*** jpena|off is now known as jpena | 08:50 | |
openstackgerrit | Johannes Kulik proposed openstack/openstacksdk master: Use pagination detection by default https://review.openstack.org/629110 | 08:58 |
*** jpich has joined #openstack-sdks | 09:03 | |
*** gtema has joined #openstack-sdks | 09:05 | |
*** bobh_ has joined #openstack-sdks | 09:15 | |
*** dtantsur|afk is now known as dtantsur | 09:21 | |
*** ykarel|lunch is now known as ykarel | 09:22 | |
openstackgerrit | Bruno HALEBLIAN proposed openstack/openstacksdk master: implement identity v3 Proxy "unassign_project_role_from_user" https://review.openstack.org/629073 | 10:06 |
*** bobh_ has quit IRC | 10:19 | |
*** jpich has quit IRC | 10:53 | |
*** jpich has joined #openstack-sdks | 10:54 | |
*** cdent has joined #openstack-sdks | 11:18 | |
*** d0ugal has quit IRC | 12:01 | |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Compute location properly in server https://review.openstack.org/626380 | 12:18 |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Skip block-storage tests when service is not found https://review.openstack.org/628969 | 12:18 |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Skip block storage v2 functional tests for a minute https://review.openstack.org/629162 | 12:18 |
*** d0ugal has joined #openstack-sdks | 12:22 | |
mordred | ykarel: awesome! there have only been two patches landed in master that aren't in 0.22.0. I'm not sure which of them might have been related | 12:28 |
mordred | ykarel: but - I'll be happy to get a new sdk release cut - I'd like to land a couple of the patches in flight - perhaps a release by tomorrow? | 12:29 |
*** gkadam has quit IRC | 12:29 | |
ykarel | mordred, ok for me | 12:30 |
ykarel | and Thanks | 12:30 |
mordred | jkulik: thanks for the patch - looks great, those test failures are unrelated and I've got a couple of patches up to deal with them | 12:32 |
jkulik | mordred, the other one seems more important to me: https://review.openstack.org/628977 | 12:34 |
jkulik | especially if pagination detection should become default | 12:34 |
mordred | jkulik: yes! very much so | 12:36 |
*** jpena is now known as jpena|lunch | 12:37 | |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Skip v2 block-storage tests when service is not found https://review.openstack.org/628969 | 12:50 |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Skip v2 block-storage tests when service is not found https://review.openstack.org/628969 | 12:50 |
mordred | Shrews: if you have a sec when you're up, ^^ and the one before it (the one before it is a hack workaround to unblock the gate - but then I think I actually figured out the real problem in the second patch) | 12:51 |
dtantsur | mordred: so, maybe leave only the 2nd patch? :) | 13:24 |
mordred | dtantsur: yeah ... but I also might be wrong :) | 13:24 |
mordred | I thought I had it figured out yesterday too ... but oh I was so wrong | 13:25 |
dtantsur | mordred: okay, +2 on the 1st patch | 13:25 |
dtantsur | will wait for the CI on the 2nd | 13:25 |
mordred | ++ ... and thanks! | 13:25 |
mordred | this also reminds me we really need to get the v3 volume support patch updated and landed | 13:26 |
dtantsur | indeed | 13:26 |
*** zigo has joined #openstack-sdks | 13:28 | |
*** jpena|lunch is now known as jpena | 13:34 | |
*** ykarel is now known as ykarel|away | 13:35 | |
mordred | cmurphy, lbragstad: I'm seeing some errors in the osc functional tips job that are keystone related and that I have **no clue** what's up: http://logs.openstack.org/80/626380/9/check/osc-functional-devstack-tips/dcf2d3a/testr_results.html.gz | 13:37 |
mordred | makes me think maybe there is a devstack something missing? or something something? | 13:38 |
mordred | Shrews, dtantsur: woot! https://review.openstack.org/#/c/626380/ is green which means it's worth reviewing - it's not NEARLY as much test case carnage as I thought it would be | 13:40 |
cmurphy | mordred: oops that's probably because of https://review.openstack.org/#/c/626007 | 13:44 |
cmurphy | lbragstad will know what to do | 13:44 |
mordred | cmurphy: neat! I like it when people know what to do | 13:44 |
mordred | dtantsur: replied to your comment - and thanks! | 13:58 |
dtantsur | ah, cool | 13:58 |
mordred | dtantsur: I keep looking at the code and thinking I'm going to go through and rename all of those uses of "session" which are not actually sessions | 14:00 |
mordred | dtantsur: I then keep giving up because life is too short | 14:00 |
dtantsur | heh, right | 14:00 |
*** d0ugal has quit IRC | 14:02 | |
mordred | ooh! the update to the volume tests hit a whole new issue. I'm guessing that one needs admin credentials | 14:03 |
*** d0ugal has joined #openstack-sdks | 14:04 | |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Extract getting connection from proxy into method https://review.openstack.org/629193 | 14:04 |
openstackgerrit | Monty Taylor proposed openstack/openstacksdk master: Skip v2 block-storage tests when service is not found https://review.openstack.org/628969 | 14:06 |
mordred | look at all these exciting patches | 14:07 |
lbragstad | cmurphy mordred interesting | 14:07 |
mordred | uhoh :) | 14:08 |
lbragstad | that's failing because the user making the request in those tests isn't defined as a system administrator | 14:09 |
lbragstad | they probably only have a role assignment on the project | 14:09 |
lbragstad | and in keystone we've changed those policies to require a system admin in order to access the registered limits APIs | 14:09 |
*** d0ugal has quit IRC | 14:12 | |
lbragstad | cmurphy mordred https://review.openstack.org/#/c/621016/ was probably the breaking change | 14:13 |
*** bobh_ has joined #openstack-sdks | 14:16 | |
mordred | lbragstad: ok. so we should likely update the osc tests for that to use an admin auth context rather than an end-user one | 14:17 |
*** bobh_ has quit IRC | 14:21 | |
mordred | lbragstad: hrm. it looks like osc is already using the devstack-admin account (it's doing domain deletion operations already and stuff) | 14:21 |
*** ykarel|away has quit IRC | 14:21 | |
Shrews | mordred: the osc-func-tips job is pretty sad in 380 | 14:23 |
Shrews | non-voting but probably worth looking into? | 14:23 |
mordred | Shrews: yah - that's the convo with lbragstad | 14:33 |
mordred | lbragstad: perhaps the devstack-admin account in devstack isn't being granted the system admin role? | 14:34 |
Shrews | mordred: pfffft... who has time to read scrollback?? | 14:36 |
lbragstad | mordred it should have it | 14:37 |
lbragstad | keystone-manage bootstrap does that for you | 14:37 |
lbragstad | which i'm pretty sure devstack executes | 14:37 |
lbragstad | but, i think the tests need to ask for a system-scoped token instead of a project-scoped one | 14:37 |
lbragstad | and use that for those requests instead | 14:37 |
lbragstad | https://developer.openstack.org/api-ref/identity/v3/index.html?expanded=token-authentication-with-scoped-authorization-detail#id30 | 14:39 |
mordred | oh goodie | 14:40 |
mordred | lbragstad: I honestly have no idea how to get a system-scoped token with osc - or if it's even possible | 14:41 |
lbragstad | does osc use ksa? | 14:41 |
mordred | yeah - but I don't know if we've got 'scope' plumbed through in either config or cli args | 14:42 |
mordred | lbragstad: how does one get a system scoped token with ksa? | 14:42 |
lbragstad | looking for an example | 14:43 |
mordred | cool. fwiw, we're still using keystoneclient for keystone things | 14:44 |
*** Luzi has quit IRC | 14:45 | |
lbragstad | mordred if you set system_scope=all with password authentication, it should work https://docs.openstack.org/keystoneauth/latest/plugin-options.html#password | 14:47 |
* dtantsur has been around for 5 years and still does not understand token scopes well. nor the whole Identity API. | 14:48 | |
lbragstad | :( | 14:49 |
lbragstad | we did overhaul some docs to try and make things more clear | 14:49 |
lbragstad | https://docs.openstack.org/keystone/latest/admin/tokens-overview.html | 14:49 |
frickler | "openstack --os-system-scope system registered limit create ..." works for me with the devstack-admin user and unsetting all OS_PROJECT/TENANT env | 14:51 |
mordred | ah - --os-system-scope | 14:52 |
mordred | neat | 14:52 |
frickler | would be nice to give a warning when it still does project-scope, instead of silently ignoring the system-scope request in that case | 14:53 |
mordred | I think it would be better if --os-system-scope overrode the project settings -- unsetting env vars is a bit of a pita | 14:54 |
dtantsur | lbragstad: this actually helps. I don't think i saw it when I started rust-openstack. | 14:54 |
mordred | frickler: because the osc test cases are all run with env vars set ... | 14:56 |
frickler | mordred: yeah, having cli options override other env vars would be neat, too, but not so easy I fear | 14:57 |
lbragstad | frickler it does.. but since the registered limit and limit apis are still experimental, we didn't deprecate the policies | 14:57 |
lbragstad | https://gist.github.com/lbragstad/ad744f1a5acb4f4dc3387383514ab33f is an example of defining different scopes in clouds.yaml | 14:58 |
lbragstad | if you had different users with different roles on the system (one of them being a read-only role) | 14:58 |
frickler | mordred: maybe setting things like --os-project-name="" to set overrides to the env via cli might work in the meantime | 14:58 |
lbragstad | dtantsur if you have questions about how all that works, you should bug me :) I'm happy to help | 14:59 |
mordred | frickler: yeah, I'll try that | 14:59 |
dtantsur | lbragstad: thanks! I will when I start extending authentication support there | 14:59 |
frickler | lbragstad: I'm not talking about policies, a simple "openstack --os-system-scope system token issue" will still issue a project-scope token without warning when e.g. OS_TENANT_NAME is set | 14:59 |
lbragstad | ahh | 14:59 |
lbragstad | got it - i misread that | 14:59 |
cmurphy | lbragstad: it seems like this is pointing out an issue in our backwards compatibility? | 15:00 |
lbragstad | with the policies or with osc? | 15:00 |
cmurphy | with the policies | 15:00 |
lbragstad | they are backwards compatible when we deprecate them - due to the logic in the oslo.policy library | 15:01 |
lbragstad | the only reason we didn't with the registered limit and limit policies is because the api is experimental | 15:01 |
cmurphy | oh I see | 15:01 |
cmurphy | I assumed we went through the same process with those | 15:02 |
openstackgerrit | Monty Taylor proposed openstack/python-openstackclient master: Set system-scope parameter for registered_limits tests https://review.openstack.org/629203 | 15:02 |
mordred | ok - there is a stab ... I'm not sure that'll fix it or not | 15:03 |
lbragstad | cmurphy wxy brought it up here - https://review.openstack.org/#/c/621016/2 | 15:03 |
cmurphy | got it | 15:03 |
mordred | what we might need to do is add support for registered_limit in sdk and have the sdk force the system-scope auth regardless of what parameters are otherwise set then update osc to use sdk for these calls | 15:03 |
mordred | but - let's see if that works first | 15:04 |
*** ykarel|away has joined #openstack-sdks | 15:04 | |
frickler | mordred: doesn't work in my local tests, you cannot use an empty string at that location | 15:07 |
mordred | blerg | 15:08 |
mordred | a potentially easier fix would be to update the test runner to not source the env vars but instead to add an --os-cloud command line option to self.openstack in the tests | 15:08 |
mordred | frickler: do you have the ability to test if --os-project-id='' works if the project-id is coming from clouds.yaml instead of from env vars? | 15:09 |
mordred | oh - you know what? | 15:09 |
frickler | mordred: but that sounds ... modern | 15:09 |
*** ykarel|away is now known as ykarel | 15:09 | |
mordred | we could make a new devstack user in clouds.yaml - devstack-system - that would not have project stuff set in teh first place and have system-scoped: all | 15:09 |
frickler | mordred: also, you could simple use a different cloud ... yeah | 15:09 |
mordred | I think that sounds like the best bet to me | 15:10 |
mordred | I'm going to start by changing the func test setup to use --os-cloud instead of env var | 15:10 |
mordred | and then work on getting an additional clouds.yaml entry for devstack | 15:10 |
frickler | mordred: the different cloud user should probably be in devstack by default | 15:10 |
mordred | yah | 15:10 |
mordred | totally agree | 15:10 |
mordred | I think it'll be a nice addition to devstack for folks | 15:11 |
frickler | o.k., I'm away for a bit, I can do reviews later | 15:11 |
lbragstad | frickler mordred yeah - that's what i do | 15:14 |
lbragstad | super handy for switching profiles | 15:14 |
lbragstad | i used it a bunch in a demo, trying to explain scopes https://youtu.be/A1vP6be1U5U?t=353 | 15:15 |
* mordred is tempted to make a v2 clouds.yaml format a little inspired by the kubectl file - I really like how they have clusters and users as separate objects, and then 'contexts' which are combos of clusters and users ... but that would require *WAY* too much thinking for today | 15:19 | |
openstackgerrit | Merged openstack/openstacksdk master: Skip block storage v2 functional tests for a minute https://review.openstack.org/629162 | 15:19 |
*** ykarel is now known as ykarel|away | 15:21 | |
mordred | gtema: did you see dtantsur's comment on https://review.openstack.org/#/c/621153/ - it came on a +A and was a suggestion for followup, just wanted to make sure you didn't miss it | 15:22 |
gtema | mordred: yupp, have seen but have a "disaster" at work which I need to take care of | 15:22 |
mordred | gtema: ugh. "disasters" are the worst. have fun with that | 15:22 |
gtema | thanks | 15:23 |
mordred | gtema: is the "disaster" caused by someone else's lack of planning? I really love those | 15:23 |
*** markvoelker has joined #openstack-sdks | 15:23 | |
gtema | no, it is caused by someone leaving the company and others on a long vacation and suddenly certificates stoped working | 15:24 |
*** markvoelker has quit IRC | 15:26 | |
*** markvoelker has joined #openstack-sdks | 15:27 | |
*** markvoelker has quit IRC | 15:27 | |
mordred | gtema: oh double ugh | 15:31 |
mordred | lbragstad, frickler: remote: https://review.openstack.org/629235 Add a devstack-system cloud for system scoped actions | 15:31 |
lbragstad | mordred nice, thanks | 15:37 |
openstackgerrit | Monty Taylor proposed openstack/python-openstackclient master: Use devstack-system cloud for limit tests https://review.openstack.org/629203 | 15:46 |
openstackgerrit | Monty Taylor proposed openstack/python-openstackclient master: Use os-cloud instead of OS env vars for functional tests https://review.openstack.org/629243 | 15:46 |
mordred | lbragstad, frickler: ^^ and there's the OSC update to use clouds.yaml - and then to use devstack-system for the limits tests | 15:46 |
* lbragstad hands mordred a coffee *and* a donut | 15:47 | |
mordred | mmm. donuts. is there nothing they can't do? | 15:48 |
*** e0ne has quit IRC | 15:56 | |
*** bobh has joined #openstack-sdks | 15:59 | |
openstackgerrit | Bruno HALEBLIAN proposed openstack/openstacksdk master: implement identity v3 Proxy "unassign_project_role_from_user" https://review.openstack.org/629073 | 16:01 |
*** bobh has quit IRC | 16:06 | |
* dtroyer is slowly catching up… re the CLI options and env vars… we use —no-* in commands to unset things, would —no-os-project-name be a worthwhile addition? | 16:08 | |
dtroyer | to temporarily unset an env var | 16:09 |
*** ykarel|away has quit IRC | 16:17 | |
*** ykarel|away has joined #openstack-sdks | 16:17 | |
*** e0ne has joined #openstack-sdks | 16:25 | |
frickler | dtroyer: I've been testing whether that works, so the idea sounds plausible, but I'm not sure whether it would be worth the code complexity. maybe a global --ignore-environment option instead? but then, using all these options should be deprecated in favor of --os-cloud anyway, so probably let's just work with the latter | 16:52 |
*** jpich has quit IRC | 16:52 | |
dtroyer | frickler: my reasoning for the precedence we have (cli options > env vars > clouds.yaml) is because of exactly this case, where you generally want your environment to contain the "normal" setup and can override on the command line for the exceptions. | 17:07 |
dtroyer | I'm not sure a global 'ignore env' is right, I might only want to change one or two things, project being the one I run into myself most | 17:07 |
*** e0ne has quit IRC | 17:08 | |
mordred | dtroyer: I thinkm --no-project would be a great addition | 17:09 |
mordred | dtroyer: although ultimately I'd like for people to be able to use these limit commands without needing to always set --os-system-scope --no-os-project-id --no-os-project-name --no-domain-id --no-domain-name ... because that just seems like we're abusing people :) | 17:10 |
mordred | that'll be a longer effort though | 17:10 |
mordred | be I definitely think being able to blank out specific things is a good idea | 17:11 |
dtroyer | mordred: I think I am behind on the keystone/ksa stuff around system scope, is that a thing we can (or should?) just assume for commands like this? | 17:12 |
mordred | dtroyer: I think for _this_ one it is? like - from this morning's interaction I'm pretty sure we want to make the sdk automatically system-scope these calls | 17:25 |
mordred | dtroyer: but - it's also fairly new information - so I could be totally wrong about it | 17:25 |
dtruong | mordred: Have you seen an issue with openstacksdk reporting too many files open? https://bugs.launchpad.net/senlin/+bug/1809691 | 17:44 |
openstack | Launchpad bug 1809691 in senlin "Memory leak with senlin-engine sdk drivers" [Undecided,New] | 17:44 |
mordred | dtruong: yeah - I think that's been reported by someone else too? there's one leak that exists that we added a connection.close() method to handle (although there is a patch in flight that should make the need for that go away) | 17:47 |
mordred | dtruong: that was a thread leak though | 17:47 |
mordred | but maybe it's the same cause | 17:48 |
dtruong | the person who reported this bug in senlin proposed a patch set to set 'Connection' to 'Close' in the session header: https://review.openstack.org/#/c/627215/7/senlin/drivers/sdk.py | 17:49 |
dtruong | Is that the correct way to work around the issue? | 17:50 |
*** gtema has quit IRC | 17:50 | |
openstackgerrit | Merged openstack/openstacksdk master: Fix pagination key detection https://review.openstack.org/628977 | 17:57 |
mordred | hrm. that I do not know about ... I'm not sure what that does - but seems to be a manipulation of the low-level requests session | 17:57 |
mordred | cmurphy, lbragstad: ^^ any chance you know? | 17:57 |
*** ykarel|away has quit IRC | 17:58 | |
mordred | dtruong: it seems like that will close the remote connection, yeah - so that could certainly help with a connection/socket leak | 17:59 |
mordred | I'm a little surprised that would be needed because requests is supposed to be doing connection pooling | 17:59 |
openstackgerrit | Merged openstack/openstacksdk master: fix typos https://review.openstack.org/627258 | 18:18 |
openstackgerrit | Merged openstack/openstacksdk master: Fix the misspelling of "configuration" https://review.openstack.org/627477 | 18:18 |
*** cdent has quit IRC | 18:22 | |
*** e0ne has joined #openstack-sdks | 18:23 | |
openstackgerrit | Monty Taylor proposed openstack/cliff master: Pin cmd2 back to <0.9 on all versions https://review.openstack.org/629283 | 18:30 |
*** jpena is now known as jpena|off | 18:30 | |
mordred | dhellmann: ^^ there's the cliff patch with a depends-on | 18:30 |
openstackgerrit | Merged openstack/openstacksdk master: Add possibility to override base_path for resource operations https://review.openstack.org/621153 | 18:34 |
openstackgerrit | Merged openstack/openstacksdk master: Rework orchestration to add update preview https://review.openstack.org/621154 | 18:34 |
*** dtantsur is now known as dtantsur|afk | 18:45 | |
dhellmann | mordred : see the "conflicts with" list there; it looks like someone else proposed a similar change and it failed a test. let's see how yours does... | 18:46 |
dhellmann | oh, he's lacking the depends-on so that's probably why | 18:47 |
*** lbragstad has quit IRC | 18:52 | |
*** lbragsta_ has joined #openstack-sdks | 18:52 | |
*** lbragsta_ is now known as lbragstad | 18:55 | |
mordred | dhellmann, dtroyer: also - dmsimard was asking about an osc-lib release the other day | 18:59 |
dhellmann | there are some changes in that list that I don't recognize, so I'm not sure if they're backwards compatible or not | 19:19 |
dhellmann | http://paste.openstack.org/show/740694 | 19:19 |
dhellmann | "default to using public interface for all clients" | 19:19 |
dhellmann | mordred : ^ | 19:20 |
mordred | dhellmann: yah - that's to deal with underlying keystoneclient still defaulting to admin interface - even though that's a deprecated concept in general | 19:21 |
dhellmann | ok, so that sounds like a bug fix? | 19:22 |
* dhellmann is trying to figure out semver for this one | 19:22 | |
dhellmann | oh, first release for stein so it has to be a feature bump anyway | 19:23 |
mordred | ++ | 19:24 |
mordred | dmsimard: ^^ | 19:25 |
dmsimard | Yay, thanks. | 19:39 |
*** e0ne has quit IRC | 19:39 | |
*** e0ne has joined #openstack-sdks | 19:43 | |
*** bobh has joined #openstack-sdks | 20:03 | |
*** bobh has quit IRC | 20:10 | |
*** tosky has quit IRC | 20:49 | |
*** radeks has quit IRC | 21:02 | |
*** slaweq has quit IRC | 21:28 | |
*** slaweq has joined #openstack-sdks | 22:23 | |
*** e0ne has quit IRC | 22:27 | |
*** d0ugal has joined #openstack-sdks | 22:56 | |
*** tosky has joined #openstack-sdks | 23:01 | |
openstackgerrit | Monty Taylor proposed openstack/python-openstackclient master: Use os-cloud instead of OS env vars for functional tests https://review.openstack.org/629243 | 23:33 |
openstackgerrit | Monty Taylor proposed openstack/python-openstackclient master: Use devstack-system-admin cloud for limit tests https://review.openstack.org/629203 | 23:33 |
Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!