* thumper goes to look for food for lunch | 01:06 | |
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:07 |
axw | thumper: yup, was about to have a look | 01:09 |
wallyworld_ | thumper: dumb logging question | 01:24 |
wallyworld_ | thumper: i have a logger i have just created in the mock charm store | 01:24 |
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:25 |
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:26 |
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:27 |
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:29 |
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:30 |
thumper | have I mentioned recently that using logging to confirm things is a terrible idea? | 01:31 |
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:32 |
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:33 |
thumper | juju is always special | 01:34 |
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:35 |
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:51 |
axw | thumper: did I miss anything at the end of the meeting yesterday? my wifi died | 01:52 |
thumper | axw: not really | 01:55 |
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:08 |
axw | like I said, it's me being paranoid; as the code stands, it's actually not necessary and your code works fine | 02:09 |
thumper | I still changed it :) | 02:10 |
thumper | axw: where is the code that removes the upstart job on SIGABORT? | 02:14 |
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:15 |
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:16 |
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:17 |
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:18 |
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:19 |
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:20 |
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:21 |
axw | I did want to get feedback on general direction tho | 02:22 |
thumper | I'll look after my coffee | 02:25 |
axw | I will write some fingerprint tests after my tea | 02:25 |
thumper | hmm... looks like the bot is stuck maybe? | 03:00 |
thumper | axw: what do you think we should do if the results aren't utf-8 capable? | 03:01 |
thumper | axw: how about base64 encoding it and add a flag? | 03:02 |
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:03 |
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:04 |
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:05 |
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:06 |
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:07 |
axw | yep fair enough | 03:08 |
* 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:09 |
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:10 | |
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:14 |
thumper | axw: unicode/utf8 | 03:15 |
axw | thumper: eh, yes, sorry | 03:15 |
thumper | ctrl+. ctrl+p uft8 | 03:16 |
thumper | axw: example invalid utf8 for a test? | 03:18 |
axw | umm | 03:19 |
axw | 0xFF ? | 03:19 |
thumper | kk | 03:19 |
axw | thumper: MSB indicates there's more bytes coming after to make up the rune | 03:20 |
=== waigani_ is now known as waigani | ||
wallyworld_ | thumper: i commented on one of your branches - i disagree with the need to pass in apiConfig | 03:21 |
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:22 |
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:23 |
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:24 |
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:25 |
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:26 |
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:27 |
* axw happy dances | 03:52 | |
axw | manual provider is complete | 03:52 |
* wallyworld_ -> shops for dinner food | 04:08 | |
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 | 04:15 | |
rogpeppe | mornin' all | 08:22 |
fwereade | dimitern, hey, would you give the bot a little kick please? there are a few branches that are lying around approved | 10:09 |
dimitern | fwereade, sure, looking | 10:10 |
dimitern | fwereade, jam, standup | 10:48 |
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:12 |
natefinch | rogpeppe: ^^ this should help your tests on trusty | 11:24 |
rogpeppe | natefinch: reviewed | 11:27 |
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:38 |
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:39 |
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:40 |
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:41 |
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:42 |
wallyworld_ | log? | 11:43 |
hazmat | wallyworld_, coming up via priv msg | 11:43 |
wallyworld_ | ok | 11:43 |
natefinch | dimitern: it was from 15 minutes ago... but maybe somethnig else is going on | 11:46 |
TheMue | fwereade: heya, would you mind another look at https://codereview.appspot.com/44540043/? | 11:47 |
dimitern | natefinch, bizarre.. have you tried turning it off and on again? :) reapprove i mean | 11:48 |
fwereade | TheMue, should get to it soon, but probably after lunch | 11:52 |
fwereade | TheMue, (stuttering: tailer.FilterFunc reads better than tailer.TailerFilterFunc) | 11:52 |
natefinch | dimitern: trying again | 11:56 |
mattyw | fwereade, would you be ok if we resheduled the juju id meeting to monday? | 12:16 |
fwereade | mattyw, sure :) | 12:18 |
mattyw | fwereade, tue instead if that's ok | 12:20 |
TheMue | back from lunch | 12:21 |
TheMue | fwereade: ah, ok, will change that | 12:22 |
wallyworld_ | mgz: ping | 14:12 |
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:13 |
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:14 |
wallyworld_ | mgz: i'll pm you the private irc channel details | 14:15 |
=== hatch_ is now known as hatch | ||
rogpeppe | fwereade: i just left you a query on https://codereview.appspot.com/49470047/ | 16:09 |
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:28 |
natefinch | rogpeppe: oh, missed it, ok. | 16:29 |
rogpeppe | natefinch: i presume he sees the emails anyway | 16:29 |
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 | 16:32 |
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:08 |
natefinch | rogpeppe: sure thing | 19:16 |
=== gary_poster is now known as gary_poster|away |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!