/srv/irclogs.ubuntu.com/2015/01/21/#juju-dev.txt

thumperanastasiamac: yes00:00
thumperanastasiamac: we are moving everything that way00:00
anastasiamacthumper: i know of one level of super commands00:01
anastasiamacthumper: e.g. juju machine add00:01
anastasiamacthumper: could u point me to an example with 2 level super00:01
anastasiamacthumper: ?00:01
thumperwell, juju is a super, so juju machine is super of super00:02
thumperwhich is what I thought you ment00:02
anastasiamacthumper: i want (! :-D) `juju <1-super command> <2-super command> subcommand00:03
anastasiamacthumper: juju storage volume list00:03
anastasiamacthumper: params and options after `list`00:03
anastasiamacthumper: possible?00:03
thumpersure, don't see why not00:05
thumpermenn0: is there a reason that the StateSuite doesn't have a factory?00:20
* thumper wants one there00:20
* thumper adds one and runs all the tests00:25
axwmenn0: thanks very much for wading through all that code00:50
menn0axw: no worries. It was all pretty easy to follow so thanks for writing clear code.00:57
menn0thumper: there was a reason I didn't add the factory to state suite but that reason might not be valid now00:58
menn0thumper: I think it was due to circular imports in some places00:58
thumpermenn0: everything passes with me adding one00:58
thumperso I'll keep it there :)00:58
menn0thumper: yeah, I think that i rearranged things so it wasn't a problem00:59
thumpermenn0: slowly working my way through all this crap00:59
menn0thumper: certainly happy to have the factory there00:59
thumperwallyworld_: hey00:59
wallyworld_yo00:59
thumperwallyworld_: I have some questions about the image cache thing00:59
thumpergot 5 minutes for a hangout?00:59
wallyworld_shoot00:59
wallyworld_sure00:59
menn0thumper: maybe change the various StateSuite users that are creating their own factory to use the one from StateSuite?00:59
thumpermenn0: maybe... :)01:00
thumperwallyworld_: just use our 11! hangout01:00
thumper1:101:00
menn0thumper: there aren't many :)01:01
katcowallyworld_: i'm in the hangout early if you want to chat01:05
wallyworld_katco: just talking to tim. be there soon01:05
katcowallyworld_: no worries01:05
thumperwallyworld_: although...01:07
thumperwallyworld_: any reason we should server /images from the root of the API?01:07
thumperoh...01:07
thumpers'ok01:08
thumperI know01:08
wallyworld_ok01:08
thumperbefore the patch I landed just the other day01:08
thumperall agents would come in to the root01:08
thumpernm01:08
thumperall good01:08
thumperum...01:50
thumperwallyworld_:01:50
thumperwallyworld_: the image stuff isn't being used yet is it?01:50
wallyworld_thumper: otp. sec01:51
thumperwallyworld_: because before two days ago, none of the agents would have been able to access the api01:51
wallyworld_thumper: it worked for me01:53
wallyworld_i tested live with local and ec201:53
thumper??01:53
wallyworld_it doesn't work on upgraded environments because of the cert issue01:53
wallyworld_but a fresh trunk install worked01:54
thumperoh... I know why... but it is truly horrid01:54
thumperyou were serving the following url:01:54
wallyworld_thumper: what happens from the node is that wget is used01:54
thumper/environment//images/...01:54
wallyworld_it nakes a https get call01:54
thumperwith an empty :envuuid01:54
wallyworld_ah could be, can't recall now01:55
thumperit is01:55
* thumper tweaks01:55
wallyworld_ok :-)01:55
axwwallyworld_: can you please review my responses to your comments when you're free?02:09
wallyworld_axw: sure, i'll just finish this current review02:09
thumpermenn0: that's the rest of the apiserver fixed02:38
* thumper writes the merge description02:38
thumpermenn0: http://reviews.vapour.ws/r/776/02:44
menn0thumper: looking02:45
wallyworldaxw: just a question about machine vs machineid for index02:49
wallyworldi'm not sure why not machineid02:49
axwwallyworld_: I can change both to machineid now, I was thinking of doing that anyway02:53
wallyworld_stupid freenode :0(02:53
wallyworld_ok, machineid sounds good02:53
axwwallyworld_: I'll change storageinstance to storageinstanceid too ?02:54
wallyworld_i think so please, is consistent and arguably more accurate02:54
axwwallyworld_: fixed03:02
wallyworld_ty03:02
wallyworld_land that sucker03:02
axwcool03:02
menn0axw: man! every time wallyworld_ reviews something that i've already reviewed he always find a bunch of good stuff I didn't notice :)03:03
wallyworld_menn0: well, this is an area where our team knows the domain a bit better03:04
axwmenn0: that's cool, you raised good points too :)03:04
menn0wallyworld_: I suspect domain knowledge is part of it, but also that you're really good at reviewing03:05
wallyworld_sometimes, i miss stuff myself03:05
wallyworld_especially when i'm trying to race through 3 big reviews this morning :-)03:06
=== lp|outy5000 is now known as lazyPower
wallyworld_axw: when you had time, could we have a hangout about the registry?03:30
axwwallyworld_: sure, now's fine03:32
axwsee you in 1:103:32
katcowallyworld_: axw: would i be intruding if i joined?03:33
wallyworld_course not03:33
axwkatco: fine by me, let's make it standup then03:33
katcocool, tanzanite?03:33
axwyep, I'm there03:33
=== kadams54 is now known as kadams54-away
menn0thumper: so you didn't end up using StateSuite in this PR, even though you added Factory to it?03:38
thumpermenn0: I forgot to add the utils_test.go file03:39
thumperjust pushed it up03:39
thumpersorry03:39
menn0thumper: no worries03:41
menn0thumper: review done03:43
thumpermenn0: ta03:44
=== kadams54-away is now known as kadams54
* thumper waits to see if this branch will merge or not04:22
thumper...04:22
thumperit has been about 13 minutes...04:23
thumpershould be done soon04:23
* thumper sighs04:29
thumperanother intermittent test failure04:29
thumperbug 1413067 if anyone wants to fix it...04:32
mupBug #1413067: Intermittent test failure FilterSuite.TestConfigAndAddressEventsDiscarded <intermittent-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1413067>04:32
wallyworld_axw: sadly, doing this: VolumeSource(environs.Environ, *Config) (VolumeSource, error) - creates an import loop as apiserver/params references back to storage04:55
axwwallyworld_: how about just *environs/config.Config04:56
axwwallyworld_: alternatively we could duplicate the storage structures in apiserver/params ...04:56
wallyworld_i was leaning towards the latter04:56
wallyworld_but hadn't considered the former04:57
wallyworld_less work right now to do the former04:57
axwwallyworld_: I'm fine with either. we'll probably want to duplicate eventually, but it can wait04:58
wallyworld_yeah04:59
anastasiamacwallyworld_: axw: if u putting some things in apiserver/params05:09
anastasiamacaxw: wallyworld_: i'd like to know...05:10
anastasiamacaxw: wallyworld_::D05:10
wallyworld_anastasiamac: nothing at the moment05:10
anastasiamacwallyworld_: \o/05:10
=== kadams54 is now known as kadams54-away
wallyworld_axw: no rush. when you get a chance, http://reviews.vapour.ws/r/777/.07:04
dimiternmorning all07:25
wallyworld_o/07:28
dimiternhey everyone, fwereade just texted me to let you know he has problems with the internet connection07:44
dimiternhe's not sure when he'll be back online, but working on it07:44
wallyworld_axw: i have another branch ready to land once the registry one goes in - it sets up registration of default pools and provides the skeleton loop volume source for katherine09:28
axwwallyworld_: sweet. sorry, I'll take a look now. been trying to plough through the formatter09:28
wallyworld_np09:28
axwwallyworld_: why do we need to record a default storage provider if we're also going to have default pools?09:32
axwpool tells you what the provider type is, so... seems redundant09:33
wallyworld_axw: good question, i don't think we do09:33
axwok09:33
wallyworld_i'll remove the default business09:33
wallyworld_i'll make it record pool name instead09:34
axwwallyworld_: reviewed09:40
wallyworld_ty09:40
axwah, I think you updated while I was looking...09:41
wallyworld_yeah09:42
wallyworld_axw: IsProviderSupported - use case is when specifying pool name when deploying, get provider type from pool and then see if it is a valid type for the environment09:45
axwwallyworld_: ok09:45
axwwallyworld_: hmm. not sure it should be possible to create a pool that is invalid for the environment though...09:46
axwthat seems like asking for trouble09:46
wallyworld_axw: true, so you'd use the check when creating09:46
axwwallyworld_: true :)09:46
wallyworld_sorry, i'm speaing conceptually :-)09:47
wallyworld_speaking09:47
axwsure, I get it - we still need it but in another spot09:47
wallyworld_yeah. ok, so landing now, then i can propose the next one09:48
dimiternwallyworld_, axw, PTAL http://reviews.vapour.ws/r/778/ - updates deps for goamz09:52
axwdimitern: looking09:52
axwdimitern: LGTM09:52
axwthat was a hard one09:52
dimiternaxw, thanks! :)09:53
axwwoop10:19
axwwallyworld_: 2015-01-21 10:18:43 INFO juju.worker.diskformatter diskformatter.go:157 created filesystem on "/dev/xvdf1"10:19
wallyworld_whoot :-)10:20
axwno tests yet, but should be ready soonish10:20
wallyworld_great10:20
wallyworld_axw: this hopefully will allow katherine to get stuck into loop provider, plus there's the ability to register out of the box pools http://reviews.vapour.ws/r/779/. maybe take a look after you finish your fs one10:28
axwwallyworld_: cool. I need to go get dinner on, should be able to take a look later on10:29
wallyworld_ok, ty10:29
perrito666morning10:32
voidspaceinteresting10:46
voidspaceMaaS has an api call for getting mac addresses - it takes a mac address as a parameter10:47
voidspaceso given a mac address you can get the mac address back!10:47
voidspaceuseful10:47
perrito666lol10:48
voidspaceperrito666: o/ morning10:48
dimiternvoidspace, or for fun and games you can implement "guess my mac" game via the maas api :D11:03
voidspacedimitern: hah, yeah - I hadn't thought of that11:03
voidspacedimitern: I should implement that11:03
dimitern*lol*11:07
* perrito666 hates mornings11:21
dimiternholy sh*t! need to reboot - uptime: 13:25:03 up  3:08,  2 users,  load average: 21,34, 21,33, 21,1311:25
* dimitern needs to step out - back in ~1h11:45
=== Tribaal_ is now known as Tribaal
voidspacedimitern: ping12:50
voidspacedimitern: question, if a network interface is *not* associated with a network should I leave those details blank in the returned InterfaceInfo12:51
voidspacedimitern: or should I skip that interface?12:51
dimiternvoidspace, hmm.. let me think12:59
dimiternvoidspace, leave them out - it's a possibly valid case for maas12:59
voidspacedimitern: when you say "leave them out"13:01
voidspacedimitern: which of my two options do you mean?13:01
voidspacedimitern: as both options involve leaving something out...13:01
voidspaceand my mind reading skills are sadly lacking today I'm afraid :-(13:01
voidspacealthough I could deduce that the use of "them" (plural) indicates leaving out the missing details, but leaving the interface13:02
voidspacedid I get it right?13:02
voidspace*leaving the interface in13:02
dimiternvoidspace, :) ah, sorry - I meant keep the interfaces in the result, but leave the fields empty13:03
voidspacedimitern: cool, will do13:03
voidspacethat's how I've coded it anyway as it happens :-)13:03
dimiternvoidspace, thanks! :)13:03
mgzgsamfira: bug 139841513:04
mupBug #1398415: TestAddRemoveSet fails intermittently <ci> <intermittent-failure> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1398415>13:04
gsamfiramgz: thanks! :)13:05
mgztry it again, maybe... fifth time... lucky?13:05
voidspaceright, lunch13:07
voidspaceso NetworkInterfaces is kinda done, just need to test it13:08
voidspacewhich probably means extending the gomaasapi test server I bet...13:08
voidspace:-/13:08
voidspacemaybe not though13:08
dimiternvoidspace, enjoy! I'm mostly done with mine, so I'll help you if I can13:11
voidspacedimitern: will do13:18
voidspacedimitern: I'm wondering if the test server will support the "list_connected_macs" op and I'm assuming it probably won't...13:18
voidspacedimitern: hopefully I'm wrong13:19
gsamfiramgz: worked on the 3rd :)13:19
voidspaceanyway, really going on lunch13:19
dimiternvoidspace, thankfully it does - I added it at some point - ConnectNodeToNetworkWithMACAddress() :)13:22
=== axw_ is now known as axw
dimiternvoidspace, menn0, katco (if around, as OCRs): please take a look http://reviews.vapour.ws/r/780/13:55
perrito666is anyone already using vivid here?14:17
jamespageperrito666, I'm trying to14:32
jamespageinvalid series "vivid"14:32
jamespagehmm14:32
perrito666jamespage: I meant as a desktop :p14:33
jamespageperrito666, well I'm doing that as well14:33
perrito666I am thinking on moving to and fear to break my work env14:33
* perrito666 tries to trigger update14:36
jamespageperrito666, well I've been running vivid since a week into the cycle with systemd as default :-)15:07
jamespageonly minor niggles so far15:07
perrito666well in 10mins 7s Ill tell you how well it works on my laptop :p15:07
jamespageperrito666, awesome15:08
* perrito666 prepares the tablet for the standup just in case is not all that awesome :p15:09
wwitzel3ericsnow: I just finished the base tests for GetDisks and GetHardwareCharacteristics15:12
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
ericsnowwwitzel3: sweet!15:39
ericsnowkatco: PTAL https://github.com/juju/testing/pull/4815:40
katcoericsnow: ty, will try and get to it. just preparing for a meeting15:40
wwitzel3ericsnow: just wrapping up the last base test now15:40
ericsnowkatco: no worries :)15:40
ericsnowwwitzel3: you rock!15:40
katcoericsnow: wwitzel3: looking forward to reading through the GCE code15:40
ericsnowkatco: best consumed one bite at a time ;)15:41
* katco secretly uses Amazon's mechanical turk to farm out code reviews15:41
ericsnowkatco: lol great idea15:42
wwitzel3ericsnow: pushed15:44
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
voidspacedimitern: have you actually done the live tests?15:55
dimiternvoidspace, still doing them :) and it turned out more stuff will be needed15:55
voidspacedimitern: shall I review this PR as is, or wait?15:55
dimiternvoidspace, but even if it lands as is there won't be any harm15:55
voidspaceright, as it's not used yet...15:55
dimiternvoidspace, please do, i'll prepare follow-ups for what I found15:56
dimiternvoidspace, yes - not used yet, but once we start I found out some curious interactions between lxc-create, lxc-clone, and lxc-start wrt the generated lxc.conf15:57
voidspacedimitern: ah right15:58
voidspacesounds like fun15:58
* perrito666 has an epyphany and suddenly fixes his computers external microphone15:59
dimiternvoidspace, :D that's an understatement15:59
voidspace:-)15:59
dimiternvoidspace, so.. live tests on local at least show no regressions - bootstrapping on ec2 and maas now16:06
dimiternvoidspace, unfortunately all this is *not* enough to make the generated lxc conf take effect always16:08
dimiternvoidspace, e.g. with pre-existing lxc template (which is then cloned), with no template - getting/caching the template works fine, the config is there, but once you clone off that - no joy16:09
voidspaceyeah right, I wondered about cloning16:09
dimiternvoidspace, I was actually *quite* surprised lxc-clone does not allow you to pass new config16:09
voidspacedimitern: doesn't it mean we have to stop cloning16:09
dimiternvoidspace, oh, no :) i'm not giving up so easy16:10
voidspacehaha, ok16:10
dimiternvoidspace, already have a couple of pointers how it might work16:10
voidspaceI just assumed we'd have to stop cloning16:10
dimiternvoidspace, the benefits of cloning are too great - mostly performance-wise, but also disk footprint (with snapshots)16:11
voidspaceright16:11
voidspaceso clone and then reconfigure16:11
dimiternvoidspace, yep, something like that - I have to consult the lxc guys though16:11
perrito666wwitzel3: you laughed so you either where paying attention or became very good at the simulation thing16:14
wwitzel3perrito666: :)16:16
voidspacedimitern: container/lxc/lxc.go lines 605-61816:26
voidspacedimitern: why wouldn't the cidr already be in the expected format?16:26
voidspacedimitern: and why couldn't you use ipNet.String() to produce it?16:27
dimiternvoidspace, it might be empty or invalid - I'm being extra cautions there16:28
voidspacedimitern: can you adjust the comment to make it clear that you're just validating rather than actually changing format as the current comment implies16:29
dimiternvoidspace, good point about ipNet.String() - I can parse the cidr, then replace the ip part16:29
voidspaceyep16:29
dimiternvoidspace, ah, sure16:29
voidspaceah, the IPV4Address needs to be a CIDR16:29
voidspaceso you want to take the mask from the cidr and append it to the address16:30
dimiternvoidspace, yeah16:30
voidspaceso you really are extracting the mask16:30
voidspacenow I understand16:30
voidspaceseems odd that you go from a CIDR to a CIDR, seemed unnecessary16:30
voidspacemakes more sense now16:30
dimiternvoidspace, I'd appreciate suggestions for better comments there :)16:30
voidspaceslightly more anyway16:30
voidspacemaybe - LXC expects the IPv4 address formatted as a CIDR (e.g. 1.2.3.4/5)16:31
dimiternvoidspace, i'm not sure whether the cidr will be like x.y.z.0/M or x.y.z.t/M16:31
voidspaceand then the rest of your comment makes sense (so extract the mask from the cidr16:31
voidspaceright16:31
voidspaceand you need the actual address, not the 016:31
dimiternvoidspace, I'd *expect* it to have 0-s at the end, but then that's not really a hard rule it seems16:32
dimiternvoidspace, yeah16:32
voidspacedimitern: it all looks good, including the tests16:38
voidspacedimitern: modulo the fact that it doesn't actually work...16:38
dimiternvoidspace, not yet at least :/16:39
voidspacesure16:39
voidspacea good basis to iterate on16:39
dimiternvoidspace, cheers! live tests just finished ok on maas, ec2, and local16:39
voidspacecool16:42
dimiternvoidspace, thanks! no suggestions at all? :)16:45
voidspacedimitern: well only the comment change16:47
voidspacedimitern: you're taking a new parameter and rendering text templates from them16:47
voidspacedimitern: it's not rocket science16:47
dimiternvoidspace, ok, will change to clarify about the cidr16:48
dimiternvoidspace, i'll step away for a while now, but will have a look a bit later16:58
voidspacedimitern: ok chap, see you later16:58
voidspacedimitern: have a good evening.16:58
dimiternvoidspace, you too :)16:59
bodie_I have a very redundant method which I've now defined three times in different packages.  (it inserts new values in maps at arbitrary keys.)  Is there a common place such things should go?17:54
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
voidspaceg'night all18:47
perrito666nite18:47
voidspaceEOD18:47
voidspacebodie_: juju/utils18:47
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
sinzuinatefinch, can you ask someone to look into bug 1413245 found in rc1? I think I identified the issue with vivd19:26
mupBug #1413245: 1.21-rc1 does not support vivid <juju-core:Triaged> <juju-core 1.21:Triaged> <juju-core 1.22:Triaged> <https://launchpad.net/bugs/1413245>19:26
sinzuivivid19:26
natefinchsinzui: ok19:29
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
alexisbsinzui, is systemd on by default on vivid?20:14
* sinzui looks at his instance20:14
* perrito666 notices he would not know how to figure that out20:15
sinzuialexisb, yes it is there20:15
perrito666sinzui: how do you tell/20:15
perrito666?20:15
alexisbthen juju wont support it without tweaking until 1.2320:15
sinzuiperrito666, apt-cache policy systemd shows it was installed20:16
sinzuiperrito666, and I can see most of the system is using upstart still20:16
perrito666sinzui: says the same for upstart20:16
sinzuiperrito666, I can see a lot installed /etc/systemd on my instance has only a few core services in it20:19
=== alexisb is now known as alexisb_bbl
thumpero/20:21
perrito666thumper: morning20:22
katcohey hey thumper20:24
=== abentley_ is now known as abentley
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
freyeshi there21:24
menn0thumper: so to open an API connection for another env I take the agent's APIInfo, set a new environ UUID in it and pass that to api.Open?21:37
thumpermenn0: not quite21:56
thumperwell... hmm...21:56
thumperghit21:56
thumpershit21:56
thumpermenn0: we need to talk21:56
menn0thumper: yeah we do. i'm seeing other things that worry me.21:57
menn0standup hangout?21:57
thumperstandup hangout?21:57
thumpersnap21:57
=== kadams54 is now known as kadams54-away
thumpermenn0: heh, just noticed that we pretty much ignore bad credentials22:18
thumpermenn0: that is pretty bad22:19
* thumper writes a test...22:19
thumperoh good, it does fail22:21
* thumper reads more to work out why he thought it didn't22:21
* thumper misread != as ==22:22
menn0thumper: :)22:22
anastasiamacshould I worry too much? godeps: cannot update "...github.com/juju/names": fatal: reference is not a tree: f2761fa05db34fb5b4ceb44721a067ffd22d595622:52
katcoanastasiamac: i've never looked too much into why that happens; i just do a go get -u <package> and re-run godeps22:53
thumpermenn0: do you know off the top of your head if the JujuConnSuite has a machine in it by default?22:54
anastasiamackatco: thnx!22:55
anastasiamackatco:  i've ran go get -u github.com/juju/names22:56
anastasiamackatco: then godeps22:56
anastasiamackatco: but it still has the same issue22:56
thumpermake godeps22:56
thumperanastasiamac: do this...22:56
anastasiamacthumper: make godeps?22:56
thumperin the juju/names tree22:56
thumpergit checkout master22:56
jw4anastasiamac: I ran into that when my origin was my own fork of the repo22:56
thumpergit branch -u upstream/master22:56
katcoah22:57
thumperanastasiamac: then the default will work22:57
katcoty thumper22:57
thumperanastasiamac: I added make godeps when I got sick of it not working22:57
thumperyou need to make sure you have an environment variable set22:57
katconice22:57
thumperexport JUJU_MAKE_GODEPS=true22:57
thumperthen 'make check' does godeps first, then runs all the tests22:58
menn0thumper: sorry I don't know ... haven't used JujuConnSuite much22:58
thumperanastasiamac: the git commands are assuming you have origin set to your repo, and upstream set to the juju repo22:58
thumpermenn0: nm22:58
thumpermenn0: I'll find out :)22:58
anastasiamackatco: j4w: thnx for ur help!!!23:02
jw4anastasiamac: yw :)23:02
menn0thumper: I have the provisioner worker under EnvWorkerManager23:02
anastasiamacthumper: u r awesome -all works :D23:02
menn0thumper: but man do I have a lot of XXX's in this branch23:03
thumpermenn0: heh23:03
thumpermenn0: I have the check creds bit done, just writing extra tests now23:03
menn0thumper: cool23:04
anastasiamacjw4: katco: u r awesome 2 - m astonished with fast response.23:04
jw4anastasiamac: lol23:04
anastasiamacmenn0: u have XXX's in the branch?..23:05
wallyworld_thumper: 3 line review please for 1.21 release http://reviews.vapour.ws/r/783/23:06
* thumper looks23:07
thumperdone23:07
wallyworld_tyvm23:07
* thumper interrupts current branch for a different one23:08
thumpermenn0: I have a branch I'm just proposing that has factory.MakeMachine return the password so we don't have to keep making known ones in tests when we need to know what it is23:30
thumperjust running all the tests now23:30
=== alexisb_bbl is now known as alexisb
thumpermenn0: http://reviews.vapour.ws/r/784/23:37
thumperor wallyworld_23:37
* thumper goes to lunch23:38
alexisbthumper, wallyworld_ is busy for the next hour23:38
menn0thumper: looking23:49
sinzuiwallyworld_, alexisb, thumper, oil reported bug 1413424 we need to understand why they cannot use rc123:56
mupBug #1413424: ERROR failed to bootstrap environment: cannot start bootstrap instance: no matching tools available <oil> <juju-core:New> <https://launchpad.net/bugs/1413424>23:56
wallyworld_sinzui: on a call with alexisb, will talk soon23:56
thumpermenn0: all tests pass23:58
menn0thumper: review done23:59
thumpermenn0: ta23:59
menn0thumper: I've suggested another approach but I'm not wedded to it.23:59
thumperhmm...23:59

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!