/srv/irclogs.ubuntu.com/2014/10/01/#juju-dev.txt

menn0perrito666: hi00:05
=== thumper-afk is now known as thumper
jcw4thumper: one more revision on http://reviews.vapour.ws/r/127/.  Addressed all your feedback.00:12
thumperjcw4: ack00:14
jcw4thanks thumper00:33
davecheneythumper: do you have 2 minutes for the ppc64 postgame ?00:48
davecheneymake that 1000:48
thumperdavecheney: sure, in a few minutes? just want to propose this branch00:48
davecheneykk00:49
davecheneyi'll jump in the standup hangout00:49
davecheneyi'll see you there when you're ready00:49
thumpermenn0,davecheney: http://reviews.vapour.ws/r/133/diff/00:56
davecheneythumper: worst, description, ever00:57
davecheneythumper: LGTM, i added some nits01:19
davecheneyyou can ignore them if they are inconveneint01:19
thumperta01:19
menn0thumper: I'm still looking at other reviews01:19
davecheneythumper: command looks good01:20
davecheneyi like the little touches like sorting unknown values in the error message01:20
davecheneyand printing a single return argument differently01:20
davecheneythis was clearly a labour of love01:20
davecheneyshit, winton-09 is completely screwed01:21
davecheneyi'm going to try a chroot to get back to a normal trusty install01:21
menn0cmars: I'm done reviewing the login PR (got interrupted by a furniture delivery, sorry)01:23
menn0cmars: looks pretty good except for what happened to the "maintenance in progress" handling which is now broken I think.01:24
thumperdavecheney: still needs a ship it :)01:26
thumperdavecheney: yeah, I like to care how it feels to run the command01:26
menn0thumper: I'm looking at the command now01:27
* thumper frowns01:31
thumperwhy isn't rb updating?01:31
thumpermenn0: is `rbt post -u` the right thing?01:31
menn0thumper: it often doesn't. I think it just uses the hash of the topmost rev on your branch to find the review to update01:33
menn0if you've rebased or added more commits I don't think it works01:33
menn0use -r instead01:33
davecheneythumper: rbt 0r NNN01:38
davecheneythumper: rbt -r NNN01:38
davecheneyotherwise you get a new review01:38
thumperyeah, I think I got a new review01:38
wwitzel3menn0: that script worked great btw, was able to replicate the errors, still don't have a fix yet, but trying to get there.01:39
menn0wwitzel3: well at least you can replicate it. that's half the battle :)01:39
wwitzel3menn0: at this point it was way less than half the battle, lol ;)01:41
menn0wwitzel3: :)01:41
menn0thumper: I have lots of feedback on that PR... still going01:41
thumpermenn0: really?01:41
menn0thumper: yep01:41
thumpergeez01:41
thumpermenn0: not sure what your review mentor is going to think :-)01:42
menn0thumper: :)01:42
menn0thumper: my issues are not huge but I think the code can be simplified a bit01:43
menn0thumper: done01:52
thumperta01:52
thumpermenn0: one reason I decided not to start with an example showing everything is because the output is really long01:54
thumperthe cacert takes up approx 25 lines01:54
menn0thumper: ok fair enough. Could you shorten the cacert output in the example?01:55
thumpersure... how?01:55
thumper... maybe01:55
menn0thumper: yeah or "start ... end"01:56
menn0substituting in what the start and end actually look like01:56
* thumper nods01:57
davecheneythumper: sniffing for getpagesize(3) didn't work03:41
davecheneyit turns out that libgo already asks the os for the page size when _allocation_ heap via mmap(2)03:41
davecheneyit jsut doesn't use the page size when returing memory via madvise(2) :(03:41
thumperdamn03:41
davecheneyso, there goes the easy route03:42
davecheneythumper: it might be easier to write a program that compiled under gccgo03:43
davecheneycan introspect it's own runtime03:43
davecheney'cos it's not really juju that's busted03:43
davecheneyits the libgo03:43
davecheneyie, write a test program that exercises libgo03:43
davecheneybut that sounds counter productive03:43
thumperare you able to ask it the right questions?03:44
davecheneyie, if you have to install something to test if you have a shitty libgo03:44
davecheneythen why not make the program dependon the _good_ libgo03:44
davecheneyand by installing it03:44
davecheneyfix the problem03:44
thumper:)03:44
davecheneythe test program would agrevate the libgo bug03:44
davecheneyallocate lots of random stucts full of pointers03:44
davecheneythen agressively try to free memory to agetate the scavenger03:44
davecheneycute excersise03:45
davecheneybut probably tangental to giving the charmers a tool they can use03:45
thumper:)03:48
* davecheney goes to make lunch03:48
cmarscalling it a night y'all. menn0, thanks for the review, let me know how it looks now if you get the chance.04:06
menn0cmars: ok good night. I'll try to have another look before I EOD04:07
axwericsnow: you tested backup downloads with a validating TLS client? last time I checked, the certs we use didn't support it04:22
ericsnowaxw: I'm pretty sure the trick is to explicitly set the root CA04:24
ericsnowaxw: Michael Foord sorted it out right before he handed backups over to me04:25
ericsnowaxw: it's certainly conceivable that I've missed something though :)04:25
axwhmm, thought I tested that. there was another error about IP SANs being missing, IIRC04:26
ericsnowaxw: I'll look into that first thing tomorrow04:26
axwthanks04:27
ericsnowaxw: thanks for bringing it up :)04:27
axwit matters for backups more than it does tools... it may matter for charms soon, though04:27
axwnps04:27
ericsnowaxw: FWIW, I see value in consolidating the HTTP request code that tools, charms, and backups have in common at some point in the future04:28
axwericsnow: agreed04:29
axwit grew a bit organically, needs some refactoring04:29
ericsnowaxw: I dabbled with in a month or two ago and revisited it today a tiny bit04:29
ericsnowanyway, I'm EOD04:32
axwericsnow: night, see you in Brussels04:32
axw(I'm leaving tonight)04:32
thumperOMG, trying SO hard not to fix everything in this file...04:34
* thumper makes a note to come back later04:34
davecheneythumper: did the best i could on a straight forward way to detect bad libgo's05:14
davecheneygiven it was time boxed and we're probably going to fix it with the dpkg hammer05:14
thumperok, cool05:14
davecheneyi've also been able to demonstrate that all shipping versions of trusty are broken out of the box05:15
davecheneywhich blows05:15
thumper:-(05:25
thumper(╯°□°)╯︵ ┻━┻05:40
thumperjust some casual flipping05:40
thumperwhy didn't I complain more before...05:40
* thumper blames himself05:40
wwitzel3┬─┬ ノ( ゜-゜ノ)05:40
thumper(╯°□°)╯︵ ┻━┻05:40
wwitzel3(╯°□°)╯︵ ┻━┻ ︵ ╯(°□° ╯)05:41
thumper:)05:42
thumper(╯°Д°)╯︵ /(.□ . \)05:42
* thumper EODs05:51
thumpernight all05:51
wwitzel3o/ thumper05:52
=== uru_ is now known as urulama
TheMuemorning07:35
=== urulama is now known as urulama-afk
dimiternjam, hey09:11
dimiternjam, it seems while we're trying to reach a consensus on how agent apis need to change, others are still adding stuff to the uniter facade :)09:12
dimiternjam, I might as well land my changes and at least finish with port ranges for now09:13
jamdimitern: well, I was hoping people would actually join the conversation, lack of objection means we need to do the versioning work09:13
dimiternjam, you mean enforce it somehow?09:14
jamdimitern: I mean actually bump the version09:14
dimiternjam, as it is now?09:14
jamdimitern: as in we need to split it up and start a new version for new content. At least, that is what I recommended and nobody said "lets not do that"09:16
dimiternjam, ok, I might as well do it, yeah09:17
fwereadedimitern, first thing that springs to mind on the uniter.Machine stuff is -- do we really need to use the remote-object model here? just an AllMachinePorts (or something) method would seem to be all we really need here09:19
fwereadedimitern, the only reason we have this *Unit style is because we didn't want to rewrite *everything* -- but I don't see a big win in writing new code in the saqme style09:20
dimiternfwereade, ok, I can agree with this09:22
dimiternfwereade, I was even thinking of having AllMachinePorts taking unit tags and returning all ports for each given unit tag's assigned machine09:22
dimiternfwereade, the more painful issue is what to do about api versioning? I was going to refactor the first PR so it has UniterBaseAPI (having GetOwnerTag which is replaced by ServiceOwner in V1), UniterAPIV0 (with everything but the new methods - AssignedMachine and AllMachinePorts), and UniterAPIV1 { UniterAPIV0 } (having the new calls)09:28
dimiternbasically what I did for the FirewallerAPI before the ports migration upgrade step09:29
fwereadedimitern, yeah, I think we really should be doing that, annoying though it may be09:30
dimiternfwereade, ok, I'm on with it already; and re AllMachinePorts taking unit tags? With this, I won't need to add AssignedMachine separately as well09:32
fwereadedimitern, that works for me, I think, but: gsamfira, are you doing an AssignedMachine call for reboot?09:32
fwereadedimitern, gsamfira: because finding out what machine you're on can just be one call when we bring up a uniter -- that's not going to change for the lifetime of the process, *whatever* happens ;)09:33
dimiternfwereade, well I'm calling it in NewHookContext, but I guess I could do that at uniter startup once09:34
gsamfirafwereade: yep, doing the same. If I can skip it, it would be great09:35
fwereadedimitern, gsamfira: ok, as long as one of you does it I'm easy :)09:36
fwereadedimitern, if you're already on that path it might be easiest for you?09:36
dimiterngsamfira, fwereade, yeah, I've just seen the AssignedMachine PR, well if mine lands before yours you can just use it :)09:36
dimiternan vv09:37
dimiternfwereade, right, so AllMachinePorts will take machine tags, as it is now, but it will be a top-level method09:38
fwereadedimitern, perfect09:38
fwereadedimitern, and would you make sure it includes per-relation ports? it's fine to have -1 for everything for now, but I'd prefer not to have to change the api when we introduce them09:39
dimiternfwereade, it does not even include network tags now, just unit tags and port ranges lists09:40
dimiternfwereade, per-relation ports are not in state yet, but when we later introduce them we can just add a few fields to the result09:41
dimiternfwereade, the point of having AMP() is to have a cache of all ports, regarless of network or relation, so we can verify against them each time open(close)-port is called09:42
dimiternalthough.. hmm.. yeah this only works because all ports are on the same network now09:43
fwereadedimitern, yeah, exactly09:44
dimiternfwereade, how about we return both []slice{UnitTag, NetworkTag, and PortRange} as result, and when per-relation ports are introduced, we add another api call to get the network of a relation endpoint?09:44
fwereadedimitern, but don't we need to know the *relation* for which a port has been opened? and to be able to infer the network from the relation, not vice versa?09:45
dimiternfwereade, I don't think it's the other way around09:45
dimiternfwereade, port conflicts occur on networks, the relation is just a way to determine the network to use09:46
dimiternfwereade, ah, so RelationNetwork() call can be added in the future, but right now I don't know for which relation a port was opened09:47
dimiternfwereade, perhaps I can add a RelationTag in addition to the UnitTag and PortRange to the result, but just leave it blank for now and put a comment09:48
fwereadedimitern, right, but opening the same port on two different relations is *not* necessarily a conflict, is it?09:48
dimiternfwereade, only if it's the same network09:48
fwereadedimitern, no, even if it's the same network it's not a conflict09:49
fwereadedimitern, I think we can trust a charm to handle its own potential collisions09:49
fwereadedimitern, but we need to track it to know when we *actually* need to open/close a port09:49
fwereadedimitern, consider mysql serving db over two different relations09:49
fwereadedimitern, we'll want to close the ports on one relation when that relation dies09:50
fwereadedimitern, but actually keep the ports open on that *network*09:50
fwereadedimitern, because there's another relation that wants them open09:50
dimiternfwereade, yeah, but if these 2 relations are on the same network it is a conflict to try open-port 80-90/tcp09:50
dimiternfwereade, what I don't get is how is that not a conflict09:51
fwereadedimitern, but it can't be, can it?09:52
fwereadedimitern, consider the mysql charm09:52
fwereadedimitern, if they conflict, how can you have more than one relation with its server endpoint?09:52
dimiternfwereade, wait, I'm trying to follow, but I still don't quite get it..09:53
dimiternfwereade, say mysql:db and mysql:cluster are both bound to juju-public; mysql listens on 80-90/tcp for db and tries to do the same for cluster09:53
dimiternfwereade, or you're saying in this case we let the charm handle this and trust it not to try opening 80-90/tcp for both relations?09:54
fwereadedimitern, I'd been thinking more about having two separate relations with db -- but, yeah09:54
fwereadedimitern, no, I'm saying that the charm must be allowed to open those ports for both its relations09:55
fwereadedimitern, and that we open a port on a given network when there's one or more relations on that network that have declared they use that port09:55
fwereadedimitern, and close it only when all relations on that network have closed it09:55
dimiternfwereade, *now* I get it :)09:56
fwereadedimitern, sorry unclear :)09:56
* fwereade lunch09:56
dimiternfwereade, cheers!09:56
TheMuedimitern: got a few seconds for me?09:58
dimiternTheMue, sure10:00
* TheMue fights with a race condition since yesterday10:00
dimiternTheMue, oh, what's the issue?10:00
TheMuedimitern: a test, this one https://github.com/TheMue/juju/blob/networker-mode-based-on-agent-api/cmd/jujud/machine_test.go#L104210:00
=== urulama-afk is now known as urulama
TheMuedimitern: IMHO the problem lies in the way a.Run() runs in the background. first I had the patching and the channel declaration outside the loop, but then the tests fails even more often10:02
dimiternTheMue, looking10:03
TheMuedimitern: thanks10:03
TheMuedimitern: hoped that the selecting on the unbuffered modeCh would be enough to ensure, that only one of the tests at a time runs10:05
dimiternTheMue, ISTM the default: case inside the patched func might be the problem10:05
TheMuedimitern: aaargh, sure, "hey, I cannot sent, no problem, will still continue"10:06
TheMuedimitern: will check, thanks10:07
jamTheMue: if you are going to do something like that, can you include a "<-time.After(testing.LongWait)" instead of default ?10:08
jamthe idea is that a test should fail rather than get hung10:08
jam(it should be <time.After(...): c.Fatalf()10:08
TheMuejam: yep, like for the receiving below10:08
jamyeah10:08
dimiternTheMue, apart from that I have a few comments re naming and logging10:10
TheMuedimitern: always happy about feedback10:11
dimiternTheMue, i.e. please don't include test #%d: in the description, do it in the loop; s/descr/about/; s/disable/managedNetworking/ ?10:11
TheMuedimitern: ok10:13
mattywumm, did review board just die?10:15
mattywnope - was just slooooow10:16
TheMuedimitern, jam:no talk today? ;)10:48
fwereadedimitern, just looking at that second review, I think what we discussed this morning applies re what we have to store -- even if we're doing everything with the implicit expose relation with id -1, I think the data changes follow quite naturally12:14
fwereadedimitern, does it need a deeper look now, or can it wait until we've got that stuff in place?12:14
fwereadedimitern, (not on the model side yet, I know)12:15
dimiternfwereade, I'm almost done with the first PR changes - api versioning, and I'll propose it soon, but the second PR should be mostly the same (except for a few changes), so I'd appreciate if you look into it12:16
fwereadedimitern, ok,cool12:16
TheMuedimitern: btw, the waitStopped() usage has been the solution12:18
dimiternTheMue, sweet!12:20
mattywericsnow, ping?13:19
perrito666mattyw: he usually arrives in the next half an hour13:24
mattywperrito666, ok - it's not urgent13:24
mattywperrito666, as you're normally happily to listen to my insanity....13:24
mattywperrito666, I think there's a problem with the review board clock: http://reviews.vapour.ws/r/138/13:25
mattywperrito666, look at the time the review was published and the time for the review comments13:25
perrito666mattyw: my account -> settings -> my timeszone13:29
mattywperrito666, got it13:29
perrito666hey, has anyone instelled 14.10?13:58
perrito666I am tempted to break my machine before traveling :p13:58
TheMueping *14:04
perrito666TheMue: I am not sure what to answer to that14:04
TheMueanyone with a fresh checkout of master able to do a test for me?14:04
TheMueperrito666: you answered, so catched you *lol*14:04
TheMueperrito666: has been a channel trap14:05
ericsnowperrito666, wwitzel3: standup?14:05
* perrito666 deflects TheMue with "I dont have a fresh copy" :p14:05
perrito666a couple of days old14:05
* TheMue grumbles and thinks a bout a new tactics14:06
TheMueperrito666: just a run of go test in .../juju/worker14:06
TheMueperrito666: I've got failing tests there and they don't look as they have anything to do with my changes. so I switched to a master branch and still have the error.14:07
perrito666TheMue: upgrading14:10
TheMueperrito666: thx14:10
perrito666TheMue: running14:11
jcw4TheMue: what is the error?14:12
dimiternjam, TheMue, fwereade, if you're still around, please take a look at the updated, versioned uniter API http://reviews.vapour.ws/r/123/diff/2/14:14
fwereadedimitern, cheers14:14
TheMuejcw4: multiple tests expect a string "setup"14:15
TheMuejcw4: oh, ic, may have to do with actions14:15
jcw4TheMue: running now14:15
jcw4TheMue: I often get errors in the peergrouper tests that seem to be only on my machine...14:17
perrito666TheMue: FAIL: filter_test.go:293: FilterSuite.TestConfigEvents14:18
perrito666TheMue: that is master with deps up to date14:19
TheMueperrito666: oh, this error is unknown to me, strange14:19
jcw4perrito666: that one is suspiciously close to actions stuff14:19
jcw4I was seeing it too, but only sometimes, and it didn't happen on the build server14:19
jcw4perrito666: are you using go 1.3.x14:19
jcw4?14:19
TheMueperrito666: mine are in notifyWorkerSuite and stringsWorkerSuite14:20
jcw4TheMue: can you pastebin the output?14:21
TheMuejcw4: it's always s.actor.CheckActions(c, "setup") that fails here14:21
jcw4TheMue: hmm; that isn't related to *our* Actions AFAIK14:21
TheMuejcw4: http://paste.ubuntu.com/8472971/14:22
TheMuejcw4: and it seems to be flaky, this time three fails, but also have seen four fails in other runs14:22
jcw4TheMue: are you using go 1.3.x too?14:23
jcw4I've seen tests behave more flaky in 1.3.x than the official 1.2.x that the build server uses14:23
jcw4other than that my only test failures are in workerSuite.TestSetMembersErrorIsNotFatal14:24
jcw4which I get often14:24
dimiternfwereade, btw the diff is split in 2 http://reviews.vapour.ws/r/123/diff/2/ - second page (in case you were wondering like me :)14:25
TheMueoh, 1.2.1, will update14:25
dimiternfwereade, oops I meant http://reviews.vapour.ws/r/123/diff/2/?page=214:25
jcw4TheMue: I think 1.2.1 is the official version that's supported14:25
natefinchmorning everyone14:29
jcw4hi natefinch :)14:31
dimiternmorning natefinch14:33
bodie_morning14:33
TheMueo/14:37
dimiternfwereade, re opening and closing all the pending ports in one API call.. I'd rather leave this as is and do a follow-up later that introduces a FinalizeHookContext API call to do all changes in one call14:46
dimiternit will be easier once the versioning code lands14:46
TheMuejcw4: same failures with 1.3.314:57
jcw4TheMue: that's really strange14:57
TheMueindeed14:57
jcw4I don't see an obvious connection, but sometimes I have half a dozen borked mongo instances running after the tests, and if I killall of them and re-run my tests run fine14:58
alexisbTheMue, I am on the hangout and ready when you are15:01
TheMuealexisb: ouch, missed it, omw15:02
alexisbno rush TheMue15:02
=== uru_ is now known as urulama
ericsnowcould I get a second pair of eyes on http://reviews.vapour.ws/r/132/ (katco was kind enough to review it first)15:53
katcoericsnow: i am enjoying reading your code. very nice. can't claim i understand all of it, but it's readable :)15:58
ericsnowkatco: achievement unlocked15:58
jcw4katco: +1, I reviewed and liked the code - didn't have any feedback to give other than nice.15:58
katcoericsnow: lol15:59
jcw4ericsnow: nice :)15:59
bodie_rick_h_, you around?16:33
bodie_we're nailing down actions api stuff and thinking forward to the golden spike16:34
rick_h_bodie_: how goes?16:49
bodie_rick_h_, goes well, I think we're pretty close to (or already have?) a first rendition API landed ( jcw4? ) and just need to hash out a few more details in the doc16:52
bodie_rick_h_, I'm just thinking about the sprint and organizing the next steps16:52
rick_h_bodie_: sure thing16:52
jcw4yep, the API has landed16:53
jcw4it's not implemented yet, but the outline is there16:53
rick_h_cool16:54
jcw4rick_h_: the one question I had...16:54
bodie_rick_h_, TheMue was saying maybe we could arrange a meeting of spirits next week, so I got thinking about paving the way to a demo16:54
jcw4It makes sense for information about available actions to be exposed through the CharmInfo16:54
rick_h_bodie_: you guys at the sprint or calling in?16:54
jcw4but IIRC that is all in YAML format16:54
bodie_we'll be remote16:55
jcw4rick_h_: we don't have any information for calling in16:55
rick_h_jcw4: right, but remember we need json for the gui.16:55
jcw4rick_h_: that was my question16:55
rick_h_jcw4: bodie_ ok, just curious what you're looking at setting up16:55
rick_h_jcw4: yea, so we don't currently have a JS yaml parser and json is the way to go for most things and we're still looking at trying to use jsonschema for the validation/ui part16:56
jcw4rick_h_: we thought about a special purpose bridge between the charminfo that exposes the actions json info through the actions API as JSON16:56
jcw4rick_h_: I'm not clear though if when you consume Juju API calls on the front end if it comes in as JSON anyway?  Sounds like not?16:57
rick_h_so right now we do it over the websocket and get json payloads in there I believe?16:57
jcw4thats what I was thinking16:58
jcw4so wouldn't that automatically convert the charminfo stuff to the json format you need?16:58
jcw4or am I missing a piece ?16:58
rick_h_jcw4: no idea, I'd have to look at the core side to see how it's turning that data into json over the websocket16:58
jcw4rick_h_: I'd like to dip my toe in the front end code myself16:59
rick_h_jcw4: ok, np.16:59
jcw4maybe I'll hit you up with some questions as I attempt to get started16:59
rick_h_jcw4: if you want we can setup a hangout sometime and I can show you where our client code is, how we debug over the websocket, etc16:59
jcw4that would be great16:59
rick_h_jcw4: I don't know where that lives on the -core side. frankban and Makyo have more of an idea but hopefully easy to find17:00
rick_h_jcw4: and in theory if you've got a build of juju you could test it out and load the gui/talk to it and get a feel for it17:00
bodie_I believe the web client connects to the API seamlessly, so it must just marshal things as json17:00
jcw4rick_h_: I think I can figure out the -core side.  Testing out the comms is what I want to attempt17:00
bodie_i.e., the websocket stuff is already dealt with17:00
jcw4rick_h_: the main repo is https://github.com/juju/juju-gui right?17:01
rick_h_jcw4: correct17:01
rick_h_jcw4: https://github.com/juju/juju-gui/blob/develop/app/store/env/go.js is our client17:01
jcw4cool17:02
bodie_rick_h_, what I have in my head is something really minimal: create a new action with some parameters, see what comes back.  we could spec up the calls for that, I think17:02
rick_h_jcw4: bodie_ and chrome can let you watch all the frames come in/out of the websocket17:02
rick_h_bodie_: sounds good to me17:02
bodie_ooo, nice17:02
bodie_rick_h_, perhaps using jeremy's json-schema ui builder17:02
bodie_anyway, these are all just ideas as yet -- just thinking about where to take it from here :)17:03
rick_h_bodie_: well you can try that out. Our big hurdle is that we need to write an integration between jeremy's stuff and our databinding layer we use for monitoring for changes to the environment17:03
rick_h_bodie_: happy to help move it forward with a proof of concept. Let me know what you need for me to help17:03
rick_h_bodie_: my plan next week is to ask for some time next cycle to add the actions feature to the gui in the next cycle of ubuntu work17:04
bodie_rick_h_, okay, awesome.17:05
=== uru_ is now known as urulama
thumpermorning20:24
perrito666thumper: morning20:25
urulamamorning, thumper :)20:25
thumperkatco: aargh... I had forgotten to publish my updates. thanks for the review, should have already addressed issues you raised, but I'll take another look21:10
perrito666thumper: shame, do you not see the green bar reminding yo to submit? green is the color of urgent and peding things you should have seen it21:11
katcothumper: doh! no worries, good to read through code :)21:11
thumperha... didn't look at it after doing the rbt command line stuff21:11
katcoi do that sometimes lol21:11
davecheneyalexisb: ping22:47
alexisbcrap davecheney sorry22:48
alexisbwas on another call and didnt get my calendar ping22:48
alexisbhoping over22:48
davecheneys'ok22:48

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