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

thumperaxw, wallyworld: a review plz? https://codereview.appspot.com/55840043/02:08
davecheneycan I bootstrap trusty environments yet with juju02:42
davecheneyserious question02:42
davecheneyi'm having trouble getting a working debootstrap'd chroot02:42
waiganihttp://www.amazon.com/Haribo-Gummy-Candy-Sugarless-5-Pound/dp/B000EVQWKC03:06
waiganiaxw,wallyworld,thumper http://www.buzzfeed.com/michaelrusch/haribo-gummy-bear-reviews-on-amazon-are-the-most-insane-thin03:08
bigjoolsis it intentional that the parameter for --config= gets appended to `pwd` ?06:15
bigjoolsoh ha, it looks for a leading / otherwise assumes it's relative.  Which fails when I start my path with ~06:16
dimiternfaçadeName string ??07:00
dimiternc'mon guys :)07:00
dimiternshould I start using cyrillic in variable names as well?07:01
jamdimitern: I had not seen that. While go is fully UTF-8, I'm pretty sure we want to stick to ascii07:14
dimiternjam, i though so as well07:14
jamespagedavecheney, I have been bootstrapping trusty with juju08:33
jamespagenot sure what your schroot problem is - I'm not seeing that (indeed I build the juju-core with gccgo in a sbuild schroot OK)08:33
rogpeppewallyworld_: i just tried to get utils/ssh tests to pass with cgo disabled. they failed because user.Current doesn't work. i wonder whether a better approach than user.Current might be to set the owner to the same as the owner of the parent directory.08:50
rogpeppetrivial review, anyone, BTW? https://codereview.appspot.com/5595004308:51
dimiternrogpeppe, LGTM08:51
dimitern(was looking already :)08:51
rogpeppedimitern: thanks08:51
rogpeppedimitern: i thought that was quick!08:51
dimiternrogpeppe, just link the bugs to the branch please08:52
dimiternrogpeppe, and mark them as appropriate08:52
rogpeppedimitern: what do you mean by "mark them as appropriate"?08:53
dimiternmgz, are you about?08:53
dimiternrogpeppe, i mean fix committed and assign them to yourself?08:54
rogpeppedimitern: i'd only mark one of them as fix committed08:54
dimiternrogpeppe, right, the other once is just skipped08:54
rogpeppedimitern: i seem to be unable to link the bugs to the branch08:54
dimiternrogpeppe, error?08:54
rogpeppedimitern: actually, one just succeeded - the search was failing. it worked eventually.08:55
dimiternrogpeppe, good :)08:55
dimiternmgz, if you're not working on goamz's vpc support i might pick it up now08:56
jammgz: did you get a chance to look into status? Should I ?09:14
rogpeppedimitern: ping09:33
dimiternrogpeppe, hey09:33
rogpeppedimitern: i'm investigating a problem with provisionerSuite.TestLifeAsMachineAgent09:33
rogpeppedimitern: it tries to destroy a state manager machine09:34
rogpeppedimitern: i'm can't see quite why it wants to do that09:34
dimiternrogpeppe, to test life changes?09:34
rogpeppedimitern: (it was succeeding before now because of a bug in Machine.Destroy)09:34
dimiternrogpeppe, what bug?09:35
rogpeppedimitern: it allowed destruction of a machine with JobManageState09:35
dimiternrogpeppe, well, for the environ provisioner, there should be a way to test Life() and the only way to do that is to call EnsureDead/Destroy on it09:36
dimiternrogpeppe, at least in tests09:36
rogpeppedimitern: the odd thing is that we making the machine dead that we're connecting as09:37
dimiternrogpeppe, because that's how authentication works, right? you need an existing manager machine to login as09:38
rogpeppedimitern: yes, but why does it need to be dying?09:38
rogpeppedimitern: sorry, dead09:38
dimiternrogpeppe, so Life() will return something else than alive09:39
rogpeppedimitern: i don't quite get what exactly we're trying to test here.09:40
rogpeppedimitern: what provisioner functionality are we testing by having the authorized agent dead?09:40
dimiternrogpeppe, we're testing the api, not the worker09:41
rogpeppedimitern: because we *can't* test in exactly the same way as currently, because it's not valid to destroy a state server machine. so i'm trying to work out the best way to fix the test.09:41
dimiternrogpeppe, you mean the state/api/provisioner tests, right?09:41
rogpeppedimitern: no, state/apiserver/provisioner09:41
rogpeppedimitern: that's the only suite that has TestLifeAsMachineAgent09:42
dimiternrogpeppe, ah, it easier there - there's no requirement to add a JobManageState machine for the test, because we can override the authorizer to think the logged in user is an environ manager09:42
rogpeppedimitern: i don't want to change the tests too much, but i'd like to know what provisioner facade functionality we're testing by setting machines[0] to dead09:43
dimiternrogpeppe, the Life() method09:43
rogpeppedimitern: isn't that checked by seeing the return from the other dead machine?09:44
dimiternrogpeppe, i think the fix is to just delete line 53 in provisioner_test09:45
rogpeppedimitern: i don't think that works09:45
dimiternrogpeppe, we don't really care if machine 0 has JobManageState09:45
rogpeppedimitern: because we want to test:09:46
rogpeppe// 2. Environment managers can access any machine without09:46
rogpeppe// a parent.09:46
dimiternrogpeppe, yes?09:46
dimiternrogpeppe, it won't have a parent09:46
rogpeppedimitern: so if machine 0 isn't an environment manager (which it won't be if we delete line 53) then we won't have an environment manager to call Life as09:47
dimiternrogpeppe, why are you concerned with line 53?09:47
dimiternrogpeppe, if we add 3 machines with JobHostUnits, and use EnvironManager: true in the authorizer, it should work09:48
rogpeppedimitern: ah yes, i see that now. i thought that we needed to use machines[0] because it was the environ manager09:48
rogpeppedimitern: but we're bypassing all that09:49
dimiternrogpeppe, exactly09:49
dimiternrogpeppe, i would be more concerned if we had a similar case for the client-side api tests09:49
dimiternrogpeppe, because there we can't play with a fake authorizer09:50
rogpeppedimitern: unfortunately that breaks another test, sigh.09:50
dimiternrogpeppe, which one?09:53
rogpeppedimitern: TestAPIAddresses and TestStateAddresses, which both require a state server09:53
rogpeppedimitern: i'm changing the tests to add a state server machine and 3 others, then renumbering everything09:54
dimiternrogpeppe, is this still in the apiserver tests?09:54
rogpeppedimitern: yes09:54
dimiternrogpeppe, ah, I see - yeah for these two the set up will be a bit different09:55
rogpeppeoh bugger it, i'll make another test suite09:56
fwereadedimitern, mgz: meeting10:03
jamfwereade: so my machine is acting *really* choppy, can you try to run the meeting?10:04
* dimitern lunch11:00
=== gary_poster|away is now known as gary_poster
TheMuerogpeppe: around?13:14
rogpeppeTheMue: yup13:14
TheMuerogpeppe: could it be that in case of stopping an application with ctrl-c a defer doesn't run?13:15
rogpeppeTheMue: that's definitely true13:15
rogpeppeTheMue: unless you specifically arrange for it13:15
rogpeppeTheMue: same as calling os.Exit13:15
TheMuerogpeppe: ok, then I have to do it13:15
rogpeppeTheMue: in the tests?13:16
TheMuerogpeppe: how would you do it? by runtime.SetFinalizer?13:16
rogpeppeTheMue: no, that won't work13:16
rogpeppeTheMue: is this in the tests, or the production code?13:16
TheMuerogpeppe: no, debug-log will be stopped by ctrl-c, and in this case the severside logger isn't stopped13:16
rogpeppeTheMue: that's easy to arrange; i don't think you want to rely on explicit shutdown for that13:17
TheMuerogpeppe: if there's a nice way I'm happy13:17
rogpeppeTheMue: you can register the server side logger as a resource that will be stopped when the connection goes away13:18
TheMuerogpeppe: so far I had a defer, but that showed troubles13:18
TheMuerogpeppe: it is registered13:18
rogpeppeTheMue: so why isn't it stopping when the client drops the connection?13:19
TheMuerogpeppe: but calling debug-log another time later shows troubles (will make a paste next time)13:19
rogpeppeTheMue: is this code that's already in trunk?13:19
TheMuerogpeppe: the logged content somehow looks self-contained (older api call and response data contained in new ones)13:19
TheMuerogpeppe: no, it's under development13:20
TheMuerogpeppe: let me just make a fix at one of the branches that is already in review, found my mysterious bug there today, and later I can post the successor13:21
TheMuerogpeppe: first one is the server side, second one the new debug-log command (in a very initial stadium)13:21
TheMuerogpeppe: but yeah, I now get my debug log filtered via the api :D13:22
TheMuerogpeppe: if you wonna see some of the head-aching shit I get: http://paste.ubuntu.com/6802890/ :/ scroll right and you'll see13:26
rogpeppeTheMue: wow!13:27
rogpeppeTheMue: that's some serious backslash escaping13:27
TheMuerogpeppe: yeah, absolutely, the responses contain other responses13:28
TheMuerogpeppe: btw, what I wonna change now is really weird too. we've got code like watcher, ok := resources.Get(Id).(state.Watcher)13:29
TheMuerogpeppe: if not ok we report that the id is unknown13:30
rogpeppeTheMue: BTW I find launchpad.net/rjson/cmd/rjson useful for unpacking json requests into something readable13:30
TheMuerogpeppe: but in my case the id has been ok, but the interface hasn't been implemented13:30
TheMuerogpeppe: thx for the hint, will take a look at it13:30
rogpeppeTheMue: oh, of course i see why you're seeing responses inside responses13:30
rogpeppeTheMue: because you're using the API to get the log stream13:31
rogpeppeTheMue: I think that's actually not a good idea13:31
TheMuerogpeppe: sure, that has been the idea and my task13:31
rogpeppeTheMue: i think it would probably be quite a bit better if the log streamed out through a normal http GET request13:32
rogpeppeTheMue: in a similar way to the way that charms are currently uploaded.13:32
rogpeppeTheMue: does that make sense?13:33
TheMuerogpeppe: beside the command the UI guys want the API13:34
rogpeppeTheMue: the GUI guys can issue a GET request easily too13:34
TheMuerogpeppe: has been a task by jam and william already started reviewing it13:34
TheMuerogpeppe: could you tell me what's wrong with a watcher?13:35
rogpeppeTheMue: watchers are not idea for streaming large quantities of data when you can't drop messages13:35
rogpeppeTheMue: they're designed for watching a stateful system (the juju state)13:36
rogpeppeTheMue: when streaming the log, we want as much bandwidth as possible, otherwise we're limited by network latency13:36
TheMuerogpeppe: where is the limit?13:36
rogpeppeTheMue: TCP is ideal for that, and that's what a GET request gives you13:36
rogpeppeTheMue: the limit on what?13:37
TheMuerogpeppe: using watchers. sure TCP may be used with higher bandwidth, but if this is no requirement.13:37
rogpeppeTheMue: of course it's a requirement - the log is huge amounts of data. it's really good if clients can keep up.13:38
* TheMue has troubles with changing a concept and implementation, where multiple people already agreed on, after a short discussion here on irc13:38
rogpeppeTheMue: i understand that, sorry13:39
rogpeppeTheMue: i have suggested this implementation multiple times in the past13:39
TheMuerogpeppe: the log is filtered and limited on server-side, that's the job of the tailer13:39
rogpeppeTheMue: that's fine - you can still do that13:39
TheMuerogpeppe: so you start with initially let's say 10 lines and get deltas, filtered for the entity (machine/unit) you want13:40
rogpeppeTheMue: you'll just send the output to the http.ResponseWriter rather than using the stringswatcher13:40
TheMuerogpeppe: that reduces the bandwith roblem13:40
rogpeppeonly if you're actually filtering13:41
TheMuerogpeppe: would you mind to discuss this as a design decision with jam and william?13:41
rogpeppeTheMue: i would be happy to, if either of them was around13:41
TheMuerogpeppe: can do so later13:41
TheMuerogpeppe: so I'll continue with the current way, there are right now many stakeholders expecting it that way13:42
rogpeppeTheMue: the other advantage of this approach is that you don't have to worry about exponentially repeating log requests13:42
rogpeppeTheMue: ok. but you know what i'll say in the review :-)13:43
TheMuerogpeppe: you can do so, no prob. then there will be a good discussion. the review is around since a longer time and william and dimitern took a look at it (only comments by william so far)13:44
rogpeppeTheMue: what's the link for the review?13:45
TheMuerogpeppe: will post it here again after the next update to not interfere, have to do one change there before13:45
TheMuerogpeppe: doesn't last long, I've already tested it in the successor branch13:46
mgzsinzui: two things: I retargetted a bunch of bugs, yell at me if you have issues; please review https://codereview.appspot.com/5602004413:52
sinzuimgz, I saw. I was going to retarget them to 1.17.2 myself13:52
* sinzui has to create it first though13:52
mgzrenaming the milestone would also work as a trick, no?13:52
mgz(I don't rely like th13:54
mgz*really like the workflow of targetting at next minor dev release, and bumping and bumping)13:54
mgz(but it does work kinda with the landing bot flipping the fix committed bit itself)13:54
sinzuimgz: We are getting pressure from users who want o to bleed. We need to release more often...I don't think we will ever know how many point releases are needed to get to stable. maybe we target to 18, and pull the few bugs we care about into the point release.14:18
mgzsinzui: that would be better I think14:24
mgzour bleeding users need to love destroy-environment though, dev releases need to break things14:26
rogpeppefwereade: ping14:42
fwereaderogpeppe, meeting, reping in 15 please?14:42
rogpeppefwereade: ok14:43
rogpeppedimitern: i think i've discovered a bug in worker/firewaller; can i run through it with you please?14:53
dimiternrogpeppe, sure, what is it?14:53
rogpeppe(i'm not sure it was the one i'm looking for that causes the cmd/jujud tests to hang up, but it still looks buggy)14:53
rogpeppedimitern: in Firewaller.startMachine, if we get an error calling fw.unitsChanged, we return immediately14:54
rogpeppedimitern: but we've just added a new machined to the machineds map14:54
rogpeppedimitern: so it hasn't got a running watch loop14:54
rogpeppedimitern: so when the firewaller tries to quit later, it'll wait forever for that machined14:54
rogpeppedimitern: does that make sense to you?14:55
dimiternrogpeppe, is this something i changed with the api introduction or?14:55
rogpeppedimitern: i dunno14:55
rogpeppedimitern: perhaps the API introduced some other error which triggered this issue14:56
rogpeppedimitern: yes, it looks like it's a recent change14:56
dimiternrogpeppe, some parts of the code had to be changed, because all api methods return an error as well14:57
dimiternrogpeppe, so I had to change a few places to either return the error or kill the tomb and return14:57
rogpeppedimitern: actually it looks like the bug was still there before14:58
rogpeppedimitern: i'll see if fixing it fixes my problem14:58
dimiternrogpeppe, whew at least it's not my doing14:58
rogpeppedimitern: :-)14:59
dimiternrogpeppe, and i did test it thoroughly on ec2 after merging the api changes14:59
rogpeppedimitern: (i know that feeling very well)14:59
dimiternrogpeppe, actually i had to stop myself from tearing most of the firewaller tests apart and getting rid of 50% duplicated code, i'm sure the main code can be improved in such a manner as well15:00
jamespagefwereade, sorry to be a pita but can I bring bug 1271941 to your attention15:03
jamespagehttps://bugs.launchpad.net/juju-core/+bug/127194115:03
hatchyesterday I built juju-core from trunk and it doesn't looks like it works to deploy locally on precise. After bootstrapping and deploying the GUI I only get a list of two machine names when I do juju status -e local15:03
hatchhas the functionality of status been changed?15:04
hatchversion is 1.17.115:06
natefinchhatch: status is mostly the same.... what information is it missing?15:08
hatchnatefinch https://www.evernote.com/shard/s219/sh/e97b60b5-20e8-4d3e-bded-3c0f62efa179/23d15a7ed70c5bdade557146fc08e37715:08
hatchnatefinch so...all of it? ;)15:09
hatchlxc-ls shows two machines15:09
hatchI can tear it down and try again but I wanted to check here first15:10
natefinchhatch: heh, that does seem somewhat... spartan15:10
natefinchhatch: it definitely should have all the same information15:10
hatchok thanks I'll tear it down and try again, if I get the same issue I'll file a bug15:10
fwereadejamespage, I'm going to bounce that one straight over to thumper (I'll mail him) -- last time I saw him he said he was going to look into lxc on trusty, and this is highly likely to be related15:10
jamespagefwereade, I confirmed with lxc upstream folks that the way autostart is specified has changed15:11
jamespageis now lxc config for the container15:11
fwereadejamespage, ok, that makes sense, thanks15:11
fwereadejamespage, I see that's already in the bug, double-thanks15:12
sinzuifwereade, jam, I was planning on 1.17.1 release today. Are we tracking mramm's request to update goose with a bug?15:30
mrammsinzui: I think mgz said he had that fix in, but was working on a follow up.15:31
fwereadesinzui, mramm, mgz: sorry, I'm not clear what *updating goose* gives us15:32
fwereadesinzui, mramm, mgz: my understanding was that it was a prerequ for the forthcoming branch15:32
mrammfwereade: right, it requires both goose and juju changes15:32
mrammor at least that's what I understood as well15:32
mgzthat's it.15:33
mgzif we do 1.17.1 today, the networking fix is not making it15:33
sinzuimgz, I can delay till tomorrow.15:34
fwereademgz, and your ETA for reviewable code was later today?15:35
* sinzui want to stop explaining to people daily builds wont get them fixes15:35
fwereademgz, sinzui: tomorrow sounds smart then15:35
mgzokay, sounds like a plan.15:36
* rogpeppe goes for lunch15:39
TheMuefwereade: any chance to take the next look at my branch?15:40
fwereadeTheMue, if not by EOD, I'll do it before bed16:02
TheMuefwereade: EOD or tomorrow, don't destroy your evening16:06
TheMuefwereade: I'm currently on the client side and it looks good so far, only one weird behavior left16:07
TheMuefwereade: but rogpeppe has a different idea about the design, not using API watchers but HTTP requests16:08
TheMuefwereade: I asked him to discuss it with jam and you16:09
fwereadeTheMue, added a couple of comments, please let me know your responses, expect mine slow, I'll be meeting in a sec16:23
rogpeppefwereade: dammit, missed you again :-)16:24
rogpeppefwereade: ok, so i think i said this before: i think the logging streaming would be better done outside the main RPC-oriented API interface16:25
rogpeppefwereade: either as a long lived http GET request or a unidirectional websocket connection, or whatever is most appropriate16:25
rogpeppefwereade: the API is well designed for state-oriented watchers, but not so much for streaming large quantities of data16:26
rogpeppefwereade: so I'm suggesting we go for an approach similar to the charm upload stuff (except the other direction, of course)16:27
TheMuerogpeppe: btw, where is the log in a HA environment? would be in interesting aspect for the implementation too16:27
fwereaderogpeppe, elaborate on the impact please?16:27
rogpeppefwereade: the impact of what?16:27
rogpeppefwereade: as far as implementation goes, i think this makes both server and client simpler16:28
rogpeppefwereade: as far as runtime performance goes, the download speed will not be latency-limited16:28
rogpeppefwereade: (and you'll win quite a bit by losing JSON encapsulation16:29
rogpeppe)16:29
fwereaderogpeppe, I guess what I'm asking is at what point you think the current implementation would actually hurt us, weighed against the benefits of providing an implementation that works for the CLI (probably whole-env) and the GUI (almost certainly unit-/machine-specific)16:35
rogpeppefwereade: yes, i think that it will actively affect the efficacy of debug-log in real environments16:36
rogpeppefwereade: GUI connections tend to be very high-latency16:36
rogpeppefwereade: plus i don't think it would actually be at all difficult to implement - there's actually less logic required than when using a watcher16:37
TheMuefwereade: thx for review, added notes16:43
rogpeppeTheMue, fwereade: just looking at the apiserver/debugger implementation. it's really not right, i'm afraid.16:59
rogpeppeTheMue: there is absolutely no need to drop data on the floor16:59
TheMuerogpeppe: we already agreed on not doing that17:00
TheMuerogpeppe: see comments17:00
rogpeppeTheMue: you don't need to return an error either17:00
rogpeppeTheMue: we can just wait until the client is ready to read.17:00
TheMuerogpeppe: if a client doesn't drop the connection but also doesn't call Next()?17:00
rogpeppeTheMue: yes17:01
TheMuerogpeppe: but the tailer fill its buffer during this time17:01
rogpeppeTheMue: with a separate websocket connection, we can drop all the logic from that file17:01
rogpeppeTheMue: why does that matter?17:01
TheMuerogpeppe: too much memory consumption?17:02
rogpeppeTheMue: what? the data is in a file, no?17:02
rogpeppeTheMue: surely all that's needed here is NewTailer(logfile, websocketConnection, ...) ?17:03
TheMuerogpeppe: the tailer polls out of it and write to the writer17:03
TheMuerogpeppe: so you now also want to change the tailer?17:03
rogpeppeTheMue: there's no need to change the tailer17:03
rogpeppeTheMue: the tailer does not use unlimited memory if a call to Write blocks, does it?17:04
TheMuerogpeppe: afaik not, yes17:04
TheMuerogpeppe: it simply calls Write() of the writer17:05
rogpeppeTheMue: exactly17:05
rogpeppeTheMue: and that writer can be a websocket17:05
TheMuerogpeppe: ok, and how would the client side (cli and ui) would look like?17:06
rogpeppeTheMue: so in that case you don't need any of the logic in debugger/logtailer.go at all17:06
rogpeppeTheMue: the client side would just make a websocket connection exactly the same as it does for the current API17:06
rogpeppeTheMue: you would need a little bit of extra logic to allow the client to adjust the filter17:07
jcastronatefinch, hah, I was doing "juju status foo"17:07
jcastroI forgot the -e!17:07
rogpeppejcastro: i saw that!17:07
TheMuerogpeppe: a second, different way beside the current way. in in an HA env? where do they connect to17:07
natefinchjcastro: I was thinking "hey yeah, that would be useful...." and then I was like.... "wait a minute..."17:07
rogpeppeTheMue: it's similar to the way that the charm upload currently works17:08
jcastroI was like "man that is a great idea let me try it." but it always returned "local" no matter what17:08
natefinchjcastro: sounds like the bug is that we don't complain about extra parameters17:08
jcastronatefinch, it's nice when you ask for things and someone else has thought of it and it's like nearly finished or done by the time you ask, heh.17:08
TheMuerogpeppe: sounds relative ok so far (only having another way beside the api doesn't convince me). but to change that john, william, gary (who is waiting for the api access) and curtis have to agree17:10
rogpeppeTheMue: i've chatted with gary and the gui team. they think it's a reasonable idea (except they don't want to delay things)17:11
TheMuerogpeppe: currently cannot estimate the effort17:11
rogpeppeTheMue: i'm quickly putting together an example so you can see what i'm talking about17:11
TheMuerogpeppe: thanks17:12
* TheMue is off for today, dinner. will take a look in again later17:14
hatchI'm trying to build juju-core on another machine and after following the steps in the readme, when I get to using `go install` it throws a few errors saying it can't find crypto, openpgp, websocket, clearsign... any ideas on how to resolve this?17:22
hatchfor example `cannot find package "code.google.com/p/go.crypto/ssh"`17:27
mgzargh. arghargh.17:42
mgzrogpeppe: have a moment? by what mechanism is coretesting.CACert treated as valid by the default go http stuff?18:01
mgzI want a not-valid cert to add a test for an error path18:02
rogpeppemgz: it's added to the valid root certificates in the request18:02
rogpeppepwd18:02
mgzwhere?18:02
rogpeppeg18:03
rogpeppeone mo18:03
mgz:)18:03
rogpeppemgz: look in state/api/apiclient.go:/^Open18:03
mgzspecifically, if I get http.DefaultClient, that doesn't complain i18:04
mgzona18:04
mgzon an http request against a tls-created server18:04
mgzI think I'm missing a core idea here18:04
rogpeppemgz: https request, right?18:05
mgz...probably not, that may well be the issue18:06
mgzit's pretty confusing http: scheme works against tls servers at all18:06
rogpeppemgz: yeah18:07
rogpeppeTheMue: https://codereview.appspot.com/56100043/18:07
rogpeppeTheMue: see state/apiserver/log.go which implements all the logic18:07
rogpeppeTheMue: at least, it might do - i haven't actually run the code18:07
rogpeppeTheMue: but i *think* that's about all that's needed18:08
mgz...this is no longer a simple change18:08
rogpeppeTheMue: it allows the client to asynchronously change the filtering, and it use a websocket with one frame for each line of the log18:08
rogpeppemgz: what error path are you trying to check?18:09
rogpeppefwereade: this is what i was thinking of for the logging interface: https://codereview.appspot.com/56100043/18:10
mgzrogpeppe: well, that gets me on to an obscure https error "local error: record overflow"... possibly not from inside our code18:16
rogpeppemgz: ha18:16
rogpeppemgz: what *are* you doing :-)18:16
rogpeppepwd18:16
mgztrying to write some tests for LoadStateFromURL after making it do the right thing18:17
rogpeppemgz: can't you just use a different CACert to connect?18:19
mgzthe code for the server (which may be at fault?) is in environs/httpstorage/backend.go18:20
mgzrogpeppe: I could, at the moment I'm using the same one from coretesting both sides and it's not happy18:20
rogpeppemgz: you can't use CACert on the server side18:20
mgzcan I get a better traceback for this error18:21
mgzrogpeppe: ah. that's what some existing testing did.18:21
rogpeppemgz: find out where "record overflow" is generated and add a log print18:21
mgzrogpeppe: I'm pretty sure it's from inside net/http18:21
rogpeppemgz: that's ok, just bung a log print in there18:22
mgzfair enough18:22
rogpeppemgz: (use the standard log package)18:23
rogpeppemgz: the reason CACert doesn't work on the server side is that it hasn't got the private key in there. you need to use CAKey18:23
mgzthe server gets setup with both18:24
rogpeppemgz: ah, well that should be fine18:24
rogpeppemgz: BTW for your debug print, i often find this package useful: code.google.com/p/rog-go/exp/runtime/debug18:24
rogpeppemgz: log.Printf("something; callers: %s", debug.Callers(0, 20))18:25
rogpeppemgz: it'll print the current stack trace on a single line (just file/line numbers)18:25
mgzta18:26
=== BradCrittenden is now known as bac
mgzrogpeppe: proposing what I have in case you have any insight from looking at it18:52
rogpeppemgz: ok. i'm afraid i've got no more time tonight18:53
rogpeppemgz: i'm trying to get a branch proposed before supper happens in 10 minutes :-)18:53
mgz:D18:53
mgzI think it's just our testing stuff is too naive around tls somewhere. but it's not clear to me how18:54
rogpeppemgz: it's entirely possible18:54
mgzproposed, I may have inspiration going back to it later.19:03
rogpeppeif anyone cares for a review, there are lot of files in this one, but the change is quite simple: https://codereview.appspot.com/54230044/19:04
rogpepperight, that's me19:04
rogpeppei smell fooood19:04
rogpeppeg'night all19:04
hatchis there anyone besides dimitern who is familiar with the PutCharm code? In testing the GUI implementation I am getting a 405 (Method not allowed) when trying to post the charm on a trunk build of juju-core19:17
natefinchhatch: I don't know anything about putcharm, unfortunately.  However, the log might have more useful information19:31
hatchnatefinch is there a separate log from the ones in /var/log/juju which may contain more information? (I've already checked those)19:34
natefinchhatch: no, that's where I'd look..... 405 sounds like the server isn't liking the request19:38
hatchyeah which is odd because that's what it's supposed to do :) oh well no problem I'll chat with Dimiter when he gets in tomorrow thanks anyways19:39
natefinchif you overlap with ian, it looks like he's had his fingers in there semi-recently too19:42
_thumper_fwereade: around?20:06
=== _thumper_ is now known as thumper
natefincho/ thumper20:07
thumperhi natefinch20:07
thumperwaigani: https://bugs.launchpad.net/juju-core/+bug/127194120:14
natefinchthumper: is there an environment variable that describes where the upstart directory is, or is it just always /etc/init?20:22
thumpernatefinch: always /etc/init20:22
thumperpretty sure20:22
natefinchdang... trying to mock out upstart stuff so I can test the code I wrote (which interacts with upstart)20:23
axwnatefinch: I'm pretty sure in the juju-core/upstart package you can specify the init dir20:26
axwnot sure if that helps you or not20:26
axwyeah - the local provider in trunk changes it in testing (I'm about to change all that though)20:27
natefinchaxw: you can change it per-service that gets created, but that doesn't help from outside a function that I want to test. There's no global override.  Which pretty much means I have to make one.... not the end of the world, but kind of ugly to expose20:27
axwah ok20:27
axwyep20:27
natefinch....wow, I can't believe that worked on the first try20:35
natefinchthumper: I made a bunch of changes and then realized I was on the wrong branch.  Nothing committed yet. How can I switch branches and keep the local edits?20:59
thumpernatefinch: I think if you just do 'bzr switch' it should just work21:00
natefinchthumper: ahh, cool21:00
thumperalternatively, use 'bzr shelve' change, then 'bzr unshelve'21:00
natefinchthumper: thanks, bzr switch just worked21:02
thumpercoolio21:02
wallyworldthumper: https://pastebin.canonical.com/103503/21:46

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