[01:06]  * thumper goes to look for food for lunch
[01:07] <thumper> axw, wallyworld_: I have the last of juju-run up for review in three hunks
[01:07] <wallyworld_> ok, will look in a bit
[01:09] <axw> thumper: yup, was about to have a look
[01:24] <wallyworld_> thumper: dumb logging question
[01:24] <wallyworld_> thumper: i have a logger i have just created in the mock charm store
[01:25] <wallyworld_> if i log Infof, nothing is written. i have to log Errorf to see some output
[01:25] <wallyworld_> i'm not sure why in this once case the messages are being filtered like that
[01:26] <thumper> wallyworld_: got the code?
[01:26] <wallyworld_> this is in a test where i capture log output
[01:26] <wallyworld_> i'll pastebin
[01:26] <thumper> ok...
[01:26] <thumper> the default logging for the test is probably set to warning
[01:27] <thumper> what I do in test setups where I want more logging is this...
[01:27] <thumper> loggo.GetLogger("my.test.thing").SetLogLevel(loggo.TRACE)
[01:27] <thumper> the logging levels get cleared during the logging test suite setup
[01:27] <thumper> in testing/testbase
[01:29] <wallyworld_> thumper: https://pastebin.canonical.com/102760/
[01:29] <wallyworld_> the same code works elsewhere i think
[01:29] <wallyworld_> i can try setting the log level to trace
[01:29] <wallyworld_> when i say the same code works elsewhere, i mean that in non test code, log capture works as expected
[01:30] <wallyworld_> ie the logger is created in prod code and no SetLogLevel is required
[01:30] <wallyworld_> in my pastebin, if i change Infof to Errorf it works
[01:31] <thumper> have I mentioned recently that using logging to confirm things is a terrible idea?
[01:32] <wallyworld_> yes
[01:32] <wallyworld_> but it's not easy to do anything else
[01:32] <thumper> I bet your logger isn't using "juju." as the base
[01:33] <thumper> look at testing/testbase/log.go:48
[01:33] <wallyworld_> ah i changed it to juju and it worked
[01:33] <wallyworld_> didn't realise juju was special
[01:34] <thumper> juju is always special
[01:35] <wallyworld_> so with the log verification thing, the header value passed in has no effect on the mock store functionality, it is just a label so to speak. so very hard to verify that is has been passed through
[01:51] <axw> thumper: dunno if you saw, I put up a CL for destroy-env in manual. I've been doing testing of bootstrap on Windows, and found more problems (unrelated to my changes)
[01:51] <thumper> axw: ok
[01:51] <thumper> I'm just looking at your review
[01:51] <thumper> paste a link and I'll look next
[01:51] <axw> will carry on with that, and then get onto getting manual provisioning in non-null working
[01:52] <axw> thumper: did I miss anything at the end of the meeting yesterday? my wifi died
[01:55] <thumper> axw: not really
[02:08] <axw> thumper: "sure, although this is paranoia as there is no other return options." -- I was thinking about panics, mainly. not going to happen with the code as it stands, but someone else might come along and botch it up
[02:08] <thumper> axw: ah, interesting point
[02:08] <thumper> weird having a language that "kinda" has exceptions,
[02:08] <thumper> either you should, or shouldn't, but mixing them is weird
[02:09] <axw> like I said, it's me being paranoid; as the code stands, it's actually not necessary and your code works fine
[02:10] <thumper> I still changed it :)
[02:14] <thumper> axw: where is the code that removes the upstart job on SIGABORT?
[02:15] <axw> thumper: preexisting, in cmd/jujud/machine.go, uninstallAgent
[02:15] <axw> thumper: the same code that runs when destroy-machine is run, is exercised by this
[02:16] <wallyworld_> axw: i'm looking at your ssh fingerprint branch. two issues - 1.for me md5.Sum() is not valid. i need to use md5.New().Sum() and 2. the fingerprint is different to ssh-keygen -lf which is why I abandoned ny attempt to write a go version
[02:16] <thumper> axw: ok, nice
[02:16] <axw> wallyworld_: md5.Sum is not valid?
[02:17] <wallyworld_> not for me. my go src does not have it
[02:17] <axw> wallyworld_: if the fingerprint is different, why do all the tests pass?
[02:17] <thumper> :P
[02:17] <axw> wat
[02:17] <axw> maybe it's a 1.2 thing
[02:18] <wallyworld_> axw: perhaps the fingerprint is different when not using 1.2
[02:18] <axw> wallyworld_: if you changed it to use md5.New.Sum, I know why it's not working
[02:18] <axw> because the slice returned does not have len == md5.Size
[02:19] <wallyworld_> ah ok
[02:19] <axw> wallyworld_: are you on 1.1?
[02:19] <axw> does crypto/md5 have the Size constant?
[02:19] <wallyworld_> i think so yeah
[02:19] <wallyworld_> let me check
[02:19] <wallyworld_> firsly, i'm on go 1.1.2
[02:20] <axw> it would be nice if the docs had "since <version>" like the Python docs
[02:20] <wallyworld_> it does have the SIze constant
[02:20] <axw> thanks
[02:20] <wallyworld_> +1 to that
[02:21] <thumper> axw: you gocrpto ssh branch is kinda hefty
[02:21] <axw> thumper: yeah I'm going to split it
[02:21] <axw> that was silly
[02:22] <axw> I did want to get feedback on general direction tho
[02:25] <thumper> I'll look after my coffee
[02:25] <axw> I will write some fingerprint tests after my tea
[03:00] <thumper> hmm... looks like the bot is stuck maybe?
[03:01] <thumper> axw: what do you think we should do if the results aren't utf-8 capable?
[03:02] <thumper> axw: how about base64 encoding it and add a flag?
[03:03] <axw> thumper: json/yaml will do that for you if it's []byte
[03:03] <thumper> hmm...
[03:03] <axw> if you're running one command, I'd just write it directly to Stdout/Stderr as it is
[03:04] <thumper> axw: a key reason I didn't like keeping it as []byte is that it isn't easy to compare against
[03:04] <axw> then you cat binaries and whatever :)
[03:04] <thumper> axw: perhaps that doesn't matter...
[03:04] <thumper> except...
[03:04] <thumper> if you are running on multiple machines
[03:04] <thumper> even with smart
[03:04] <thumper> you'll get multip results
[03:04] <thumper> I'd prefer to have a string if I can, and be explicit if I can't
[03:05] <axw> doesn't smart go to json/yaml if there are multiple targets?
[03:05] <thumper> yaml
[03:05] <thumper> but if the stdout is []byte
[03:05] <thumper> it is unreadble
[03:06] <axw> yeah, so I'm just suggesting it be base64-encoded if it's not a valid utf-8 string
[03:06] <thumper> that I can do
[03:06] <axw> you might have to add an additional field tho
[03:07] <axw> so you can distinguish base64-encoded binary from something that was already base64
[03:07] <thumper> yeah, that was my thinking too
[03:07] <thumper> also, I do like the idea of supporting globs...
[03:07] <thumper> but perhaps not just yet
[03:07] <thumper> :)
[03:07] <thumper> let's get the basics out there
[03:08] <axw> yep fair enough
[03:09]  * axw wishes the bot would hurry up and merge destroy-env, so he can do a happy dance
[03:09] <thumper> axw: how do I check for valid utf8?
[03:10] <thumper> axw: bot is stuck
[03:10] <axw> thumper: utf8.Valid
[03:10] <axw> aw poop
[03:10] <thumper> is that encoding/utf8?
[03:10]  * thumper pokes the bot
[03:10] <axw> just utf8
[03:10]  * thumper tries to remember all the steps...
[03:14] <thumper> there was a lock file there
[03:14]  * thumper deleted it
[03:14] <thumper> and is watching the log
[03:14] <thumper> for some reason, chose mine first
[03:14] <thumper> it is running again
[03:15] <thumper> axw: unicode/utf8
[03:15] <axw> thumper: eh, yes, sorry
[03:16] <thumper> ctrl+. ctrl+p uft8
[03:18] <thumper> axw: example invalid utf8 for a test?
[03:19] <axw> umm
[03:19] <axw> 0xFF ?
[03:19] <thumper> kk
[03:20] <axw> thumper: MSB indicates there's more bytes coming after to make up the rune
[03:21] <wallyworld_> thumper: i commented on one of your branches - i disagree with the need to pass in apiConfig
[03:22] <thumper> while I agree only the datadir is needed right now, it seemed more reasonable to pass in the entire config interface than a single value
[03:22] <thumper> however I don't care strongly
[03:23] <wallyworld_> thumper: it's just that we have a method off agentConfig which extracts values
[03:23] <wallyworld_> so with your approach we are inconsistent
[03:23] <wallyworld_> we are extracting values off the config, and then passing the config in anyway
[03:24] <wallyworld_> and someone wrote that StateAPIInfo method or whatever it's called to get just the bits needed
[03:24] <wallyworld_> I'm neutral on the need for that method etc - just want to be consistent
[03:25] <thumper> wallyworld_: that was mostly to avoid rewriting too many tests...
[03:25] <thumper> but I can fix
[03:25] <thumper> I was trying to be lazy
[03:25] <wallyworld_> :-)
[03:25] <thumper> like all good programmers
[03:25] <thumper> yes I realised it was a little icky
[03:25] <thumper> but my fucks to be given was approaching zero
[03:25] <wallyworld_> can understand that
[03:26] <wallyworld_> but i twitched a lot reading the code
[03:26] <wallyworld_> my view - StateAPIInfo shgould return a struct
[03:26] <wallyworld_> not individual attrs
[03:27] <wallyworld_> and then you can add dataDir to that struct
[03:27] <wallyworld_> and we can extend easily if needed
[03:27] <wallyworld_> without changing method signatures etc
[03:52]  * axw happy dances
[03:52] <axw> manual provider is complete
[04:08]  * wallyworld_ -> shops for dinner food
[04:15] <thumper> wallyworld_: I actually took your advice and just passed through the datadir
[04:15]  * thumper runs the tests to see if all are still good
[08:22] <rogpeppe> mornin' all
[10:09] <fwereade> dimitern, hey, would you give the bot a little kick please? there are a few branches that are lying around approved
[10:10] <dimitern> fwereade, sure, looking
[10:48] <dimitern> fwereade, jam, standup
[11:12] <natefinch> when anyone gets a chance, very small change to fix the tests in trusty (or for anyone else with a newer version of git): https://codereview.appspot.com/49470047
[11:24] <natefinch> rogpeppe: ^^ this should help your tests on trusty
[11:27] <rogpeppe> natefinch: reviewed
[11:38] <natefinch> dimitern, mgz: bot appears out of disk space
[11:38] <natefinch> rMsg:"syncThread: 14031 Can't take a write lock while out of disk space", Healthy:true, State:5, Uptime:60, Ping:0}}}
[11:39] <dimitern> natefinch, hmm - I cleaned up /tmp/ - maybe it managed to get into a loop or something and exhaust it again
[11:39] <dimitern> (so soon anyway - it never happened like this before)
[11:40] <rogpeppe> this hopefully mean we can lose the forked http package from gwacl: https://codereview.appspot.com/48580043
[11:40] <dimitern> natefinch, it doesn't seem it runs out of space: http://paste.ubuntu.com/6726123/
[11:41] <hazmat> any simple streams experts around?
[11:41] <dimitern> natefinch, maybe you're looking at an earlier log/
[11:41] <dimitern> ?
[11:41] <dimitern> hazmat, wallyworld_  is your man
[11:42] <hazmat> wallyworld_, you around? got a user on irc  (private channel) having some issues getting set up with their private openstack cloud
[11:42] <wallyworld_> hey, i've had a few drinks but i'm here :-)
[11:42] <hazmat> their doing the juju-metadata generate-images but they still get errors against it
[11:43] <wallyworld_> log?
[11:43] <hazmat> wallyworld_, coming up via priv msg
[11:43] <wallyworld_> ok
[11:46] <natefinch> dimitern: it was from 15 minutes ago... but maybe somethnig else is going on
[11:47] <TheMue> fwereade: heya, would you mind another look at https://codereview.appspot.com/44540043/?
[11:48] <dimitern> natefinch, bizarre.. have you tried turning it off and on again? :) reapprove i mean
[11:52] <fwereade> TheMue, should get to it soon, but probably after lunch
[11:52] <fwereade> TheMue, (stuttering: tailer.FilterFunc reads better than tailer.TailerFilterFunc)
[11:56] <natefinch> dimitern: trying again
[12:16] <mattyw> fwereade, would you be ok if we resheduled the juju id meeting to monday?
[12:18] <fwereade> mattyw, sure :)
[12:20] <mattyw> fwereade, tue instead if that's ok
[12:21] <TheMue> back from lunch
[12:22] <TheMue> fwereade: ah, ok, will change that
[14:12] <wallyworld_> mgz: ping
[14:13] <mgz> wallyworld_: hey
[14:13] <wallyworld_> hi, there's a guy having trouble with openstack and juju
[14:13] <wallyworld_> he has his image metadata in a container, the perms seem correct, but he can't read the json files
[14:14] <mgz> is there a bug or mailing list thread I should be looking at?
[14:14] <wallyworld_> ie if he pastes the link in a browser, it says unauth
[14:15] <wallyworld_> mgz: i'll pm you the private irc channel details
[16:09] <rogpeppe> fwereade: i just left you a query on https://codereview.appspot.com/49470047/
[16:28] <natefinch> rogpeppe: I don't think you actually CC'd fwereade in this: https://codereview.appspot.com/49470047/#msg6
[16:28] <rogpeppe> natefinch: I pinger him above
[16:28] <rogpeppe> pinged
[16:29] <natefinch> rogpeppe: oh, missed it, ok.
[16:29] <rogpeppe> natefinch: i presume he sees the emails anyway
[16:32] <fwereade> natefinch, rogpeppe: sorry, I'm kinda focused on a weird bug
[16:32] <rogpeppe> fwereade: no probs
[16:32] <natefinch> fwereade: no rush, definitely
[19:08] <rogpeppe> natefinch: i'd appreciate a review of this, if you could. it's only a staging post, but I'm hoping that it implements the core part of the replica set maintenance algorithm reasonably: https://codereview.appspot.com/49920045
[19:08] <rogpeppe> fwereade: ^
[19:08]  * rogpeppe is now done for the week
[19:08] <rogpeppe> happy weekends all!
[19:16] <natefinch> rogpeppe: sure thing