=== mohits1 is now known as mohits [07:19] if anyone who knows this is around, I would very much appreciate a brief state of the union on the initial-password thing [07:20] ISTM that as it stands we could lose passwords and thereby end up with broken agents [08:53] Howdy [09:05] davecheney, fwereade_, TheMue: mornin' all [09:06] rogpeppe: Hiya [09:10] rogpeppe: morning [09:11] rogpeppe: i think i got through all of your reviews [09:11] davecheney: thank you! [09:11] davecheney: there are still more branches pending, but i couldn't propose them because they depended on more than one other branch [09:11] no, thank you, it is looking good [09:12] davecheney: yeah, it's come together ok i think [09:13] *: anyone interested in reviewing https://codereview.appspot.com/6853075/ and https://codereview.appspot.com/6849102/? Both simple and small, the first is a prerequisite for the second. [09:16] * davecheney has a look [09:19] davecheney: Thx for the first one. ;) [09:23] rogpeppe, TheMue, davecheney, dimitern: hey all [09:23] fwereade_: yo! [09:23] fwereade_: hey [09:24] I have a question about the http module and httptest [09:24] fwereade_: Hi. [09:24] dimitern, oh yes? [09:24] * fwereade_ tries to load state... [09:25] there is a mentioning of "patterns" and I initially thought I could set up a Mux.Handle("/urlroot/", handler) and it'll handle also urls like /urlroot/somepath, but apparently not [09:25] it seems there has to be a separate handler for each unique url [09:26] dimitern, is there a HandleRegex or something? [09:26] fwereade_: not that I see - there is Handle and HandleFunc [09:26] dimitern, yeah, you're right, not sure where I got that from [09:27] dimitern, I guess it's a write-your-own situation then (but if you're doing unit testing, won't the paths be predictable anyway?) [09:27] fwereade_: so my initial understanding is correct then - I need to have a master handler and attach others as containers/objects are created on separate urls [09:28] dimitern, well, it doesn't have to be so complex, this looks sane: http://stackoverflow.com/questions/6564558/wildcards-in-the-pattern-for-http-handlefunc [09:29] dimitern, but I guess it depends on what you're actually implementing, so I'm not sure whether that will be helpful [09:29] fwereade_: 10x, I'll take a look [09:30] dimitern: you can do that [09:31] rogpeppe: can you give me an example? [09:32] dimitern: perhaps you could give me an example that fails [09:32] dimitern: you're right that ServeMux should let /urlroot/ handle everything under /urlroot [09:32] dimitern: as the documentation says at http://golang.org/pkg/net/http/#ServeMux [09:33] rogpeppe: hmm, I could not see how this works somehow - my handler is called only when the url matches exactly what was passed to Handle [09:35] rogpeppe: ah, it seems I'm wrong it does handle subpaths, but the root has to be a dir with / at the end [09:35] dimitern: ah, i wondered if that was the problem [09:35] dimitern: (i thought it probably wasn't because your snippet above *did* have the trailing slash) [09:36] rogpeppe: yeah, I though it will work in the morning :) after trying a bunch of things yesterday [10:05] So, both CLs are in for review again. [10:16] TheMue: Great [10:17] mramm: So far only a package for LXC, not yet the local provider. ;) [10:23] TheMue: understood [10:26] mramm: But step by step I'm coming nearer. [10:42] wallyworld, jam, mgz: https://codereview.appspot.com/6851112 - this is the swift double [10:42] dimitern: no mp for it? [10:43] jam: there is one in the mail - https://code.launchpad.net/~dimitern/goose/swift-testing-service/+merge/136362 [10:48] it's not perfect yet, some more testing with canonistack is needed to verify the responses/codes match every time [10:48] d [10:48] dimitern: do we actually get 501 Not Implemented when doing a GET on a container? [10:48] jam: no, but we don't have that API implemented in the client [10:49] dimitern: so looking a "swiftservice/service_test.go" it seems a bit confused as to whether it is testing the HTTP api or the direct function calls on the service. I would probably try to tease those apart a bit more. [10:49] * mgz has a look as well [10:49] You can set things up with direct calls, and then have a single HTTP request with asserts on the results, for example. [10:50] jam: I originally wanted to test them separately, but it took so much time to figure out how to do the server right, so i kinda mixed them together so I can have something to show [10:51] jam: yeah, the problem is not all of the direct calls have implemented API calls to test [10:51] dimitern: is there a reason to check HasSuffix before calling TrimRight? It seems like just calling TrimRight will always be correct (if it doesn't have the suffix, nothing gets trimmed) [10:52] jam: after spending a couple of hours struggling, i tend to get very picky about what to check :) but I suppose you're right - it can be simpler [10:57] jam: any idea why passing -gocheck.v when running tests makes it so no tests are run? [10:57] mgz: because "go test" isn't very good? [10:57] ./... is incompatible with passing argument [10:57] arguments [10:57] >_< [10:57] so '-gocheck.v' must be run in a package one-by-one [10:58] mgz: what you are missing is that it *is* running the 'goose' test suite, which doesn't have any actual test cases. [10:58] (cd http && go test -gocheck.v) style thing? [10:58] mgz: correct. [10:58] ta. [10:58] I'm very ready to add a Makefile [10:58] to work around this sort of thing. [10:58] -live has the same problem. [10:59] ah, I'd not connected up that issue with this one [11:04] mgz: -live *also* has the problem that not every test suite supports -live, so 'go test -live ./...' is trying to pass it to every sub suite. But there are some weird things about "go test ./... -gocheck.v" not acting the same as "go test -gocheck.v ./..." etc. [11:14] Gooood mornings/evenings [11:14] niemeyer: morning :-) [11:15] niemeyer, heyhey [11:15] morning/evening [11:16] niemeyer, I have a thought re Container, and our shared discomfort yesterday -- I'm getting surer and surer that the existing Container is not Container at all, but something more like Deployer (notwithstanding the confusion with the mooted worker of the same name) [11:16] niemeyer, the existing one deploys units onto the local system; one day there will be one that deploys units into isolated containers [11:17] niemeyer, either way we're interested in a with Add/Remove/List functionality [11:17] fwereade_: Agreed on the latter.. I think the former is a red herring at this point [11:18] niemeyer, the name, you mean? [11:18] fwereade_: I'd be happy to rename if it feels better to you [11:18] niemeyer, I'm ok with keeping it Container but only because I want to call the worker Deployer [11:18] niemeyer, I'd be happiest if we could come up with clear independent names [11:18] fwereade_: Actually, no, you're right.. Container is wrong [11:19] fwereade_: It doesn't really deploy a new container when we're deploying a subordinate [11:19] niemeyer, exactly [11:20] niemeyer, I've consider variations on Placer, Deployer, etc, nothing has really made me happy [11:21] wallyworld: eg: [11:21] // Ensure that it conforms to the interface [11:21] var _ IdentityService = identity [11:22] fwereade_: Installer? [11:22] i prefer deployer [11:22] * davecheney isn't helping [11:23] mgz: Although, that's rarely really necessary, since you'll end up using the interface somewhere in the code [11:23] mgz: An exception would be cases where you the interface is purely for the benefit of outsiders [11:23] s/you// [11:27] niemeyer, yeah, I'll try that [11:41] davecheney: https://codereview.appspot.com/6854098/ seems to have the same testing issue of the previous change [11:41] davecheney: Maybe we should talk about this in the meeting [11:42] jam, davecheney: thanks for the review [11:42] davecheney: I think the agenda is locked up for writing [11:43] is there an agenda google doc? [11:45] mramm: davecheney sent one to c-juju [11:46] got it [11:46] but yea, it's locked for me [11:57] ffs, google docs is supposed to be easy [11:57] fixed [11:59] davecheney: Good trick to define an agenda, though.. I'll keep that on the sleeve :_0 [11:59] :-) [12:01] fwereade_, rogpeppe, davecheney: Meeting time [12:03] jam: Meeting? [12:03] niemeyer: I didn't get the invite, I think [12:04] jam: https://plus.google.com/hangouts/_/6bf74b0f9014d194ecf62a78f75351a1876c5490?authuser=0&hl=en [12:40] this hangout is full [12:40] niemeyer: can you kick my ghost if he is still in the chat ? [12:41] davecheney: Can't, but it just went away [12:41] did everyone get kicket ? [12:41] davecheney: Nope, just your connection dropped [12:46] mramm2: common back buddy [12:46] trying [12:47] getting hangout full message when I try to reconnect [12:47] try again [12:47] so that answers the 15 person limit question... [12:47] your doppleganger has left [12:49] mramm2: do you want to give an overview of what you wanted for Juju 2.0 release plans? [12:50] Dave, can you talk people through the document we created? [12:50] I will keep trying to rejoin the meeting [12:55] I got kicked out as well and now it's saying hangout full [12:55] dimitern: wait a few mins [12:55] maybe 2 [12:55] probably it has to timeout the connection [12:55] davecheney: ok [12:55] then you're shadow leaves [12:55] dimitern: try now [12:55] it just dinged you leaving [12:55] dimitern: that is what happened to me [12:58] mramm2: you're frozen [12:59] mramm2: you can now get back in [12:59] your guy has left [13:01] My connection died.. [13:01] Perfect timing [13:02] davecheney: ping [13:02] We can pick up that discussion next week [13:02] lunch, bbiab [13:02] nothing particularly urgent about it [13:02] 0:01 mramm: flipping wifi [13:02] 20:02 mramm: sorry, the wifi dropped [13:02] 20:02 mramm: We can pick up that discussion next week [13:03] I tried switching over to my cell phone and 3g [13:03] but that took forever, and didn't work very well anyway [13:03] so sorry about all that [13:03] mramm: you're still in thailand? [13:04] yea [13:04] for another week [13:04] I will be on vacation tomorrow through friday again [13:04] * dimitern lunch as well === niemeyer_ is now known as niemeyer [13:10] Mr. Ramm³ [13:35] and now my wifi signal is back to zero packet loss [13:35] (spoke too soon, now back to loosing packets like mad) :( [13:35] mramm: G+ scorched the airwaves [13:36] yea [13:36] anyway, thanks everybody [13:39] niemeyer: ping [13:42] niemeyer: I've sent two news CLs for goamz regarding iam support [13:42] niemeyer: https://codereview.appspot.com/6858081/ [13:42] niemeyer: and https://codereview.appspot.com/6855104/ [13:42] niemeyer: have fun :-P [13:47] fss: Brilliant, thanks :) [13:52] niemeyer, got time to meetup today re charm collection? i had scheduled a meeting for a few minutes from now, but happy to relocate if you'd prefer [13:53] hazmat: It's about noon local time [13:55] niemeyer, meaning lunch time? would +1 hr work better? [13:57] hazmat: We can do it at 16UTC if that works for you [13:59] niemeyer, sounds good, thanks [13:59] hazmat: np [14:20] niemeyer: --ca-cert flag branch might be ready to roll now: https://codereview.appspot.com/6842088/ [14:21] rogpeppe: "the branch that adds that field has only just landed, and i've been trying to minimise prereqs." [14:21] rogpeppe: Ah, nevermind [14:22] niemeyer: it seemed a reasonable compromise because that was the only dependency. [14:23] rogpeppe: What about cmd/filevar.go? [14:23] niemeyer: i replied about that [14:23] niemeyer: it actually makes things harder [14:23] rogpeppe: Sorry, I've missed the comment when going through the review [14:23] rogpeppe: I see it now.. just a sec [14:24] rogpeppe: LGTM, thanks for the changes [14:24] niemeyer: cool, thanks. my only blocker to proposing the rest of the changes is now https://codereview.appspot.com/6782119/ [14:24] rogpeppe: Woot [14:24] rogpeppe: I'll get to that after lunch [14:25] niemeyer: that would be ace, thanks [14:36] Lunch, biab [15:22] rogpeppe, btw, I was meaning to ask [15:22] rogpeppe, what's the roadmap wrt --initial-password? [15:23] fwereade_: how do you mean? [15:23] rogpeppe, I can't see anywhere that the new password is stored -- how do we reconnect after we bounce? [15:23] fwereade_: ISTR it is stored, let me check. [15:24] rogpeppe, I'm probably just being dense then [15:24] fwereade_: oh i remember [15:24] fwereade_: it is stored, but not explcitly [15:24] rogpeppe, it is stored in the state, it is true, but AIUI one needs the password to access the state to read the password, IYSWIM [15:24] rogpeppe, ah go on [15:25] fwereade_: it's in the command line arguments stored in the upstart file [15:25] maybe [15:25] rogpeppe, I'm not sure I approve of agents rewriting their own upstart files [15:25] fwereade_: they don't need to [15:25] rogpeppe, I think that's their installer's responsibility alone [15:25] fwereade_: the initial password is just that - the initial password [15:26] fwereade_: when they start up, the agents create a new random password and save that [15:26] rogpeppe, where is it saved? [15:26] fwereade_: (check out openState in jujud/agent.go) [15:27] rogpeppe, GAH thank you [15:27] * fwereade_ is unsure how he missed that [15:27] fwereade_: a quick grep for WriteFile reminded me [15:28] rogpeppe, that file totally addresses all the things I've been confused about [15:28] rogpeppe, tyvm [15:28] fwereade_: np [15:28] fwereade_: i'd like a chat about some aspects of the transition to the API at some point [15:29] fwereade_: if you've a moment, perhaps we could do a G+ [15:29] rogpeppe, sure, just a mo [15:30] rogpeppe, invite away, I won't be more than a couple of mins [15:31] fwereade_: done [16:04] hazmat: ping [16:09] niemeyer, pong [16:10] niemeyer, need 5m.. in team meeting [16:10] hazmat: 'k [16:15] niemeyer, https://plus.google.com/hangouts/_/db47985b7be28b5f158ccd0912e0df10e7aa029f [16:16] hazmat: Just finishing a review [16:21] rogpeppe: Review mostly done [16:21] rogpeppe: Sent a few comments that need action [16:21] rogpeppe: Skimmed through the rest as hazmat wants to talk [16:22] rogpeppe: Will re-review once you repush [16:22] hazmat? [16:23] niemeyer: thanks! [16:24] niemeyer, ready.. at hangout url above [16:24] oh.. [16:24] hazmat: That's where I am [16:24] i guess i killed it [16:50] niemeyer: all done, i think. https://codereview.appspot.com/6782119 [16:51] rogpeppe: Checking [17:01] rogpeppe: That's done [17:01] rogpeppe: Very nice [17:01] niemeyer: cool! [17:02] niemeyer: thanks a lot. prepare for a few more CLs... [17:03] niemeyer: BTW the zero-case in your suggestion could never happen, because X509KeyPair would return an error in that case. [17:03] niemeyer: perhaps i should just change the check to >1 [17:03] niemeyer: because that case can actually happen, potentially. [17:04] niemeyer: although... your suggested error message is fine too. i'll just use that. [17:19] * TheMue also has the two CLs https://codereview.appspot.com/6853075/ and https://codereview.appspot.com/6849102/ open for further reviews, first feedback has been entered. [17:21] And tomorrow I'll start outlining the local provider. But until then have a nice evening. [17:47] 1 conflict resolved, 15 remaining [17:49] i just love it when a file looks like this: http://paste.ubuntu.com/1392259/ [17:50] and i need to choose bits from both source and tree [17:54] rogpeppe, oh, fun [17:55] fwereade_: i'm getting through it. "tree for this, source for that, ooh, a bit of source needed in that tree, ah, a bit of tree needed in that source." it's not too bad really, just a pain [17:57] I'm getting &http.badStringError{what:"malformed HTTP response", str:"0"} ("malformed HTTP response \"0\"") from the client, when the test server sends a perfectly valid HTTP 204 No Content response with no body [17:58] the "0" str is the end of the body (0\r\n delimiter, as per the transfer-encoding - chunked) [17:59] rogpeppe, niemeyer: any idea what I'm doing wrong? ^^ [18:00] dimitern: can you narrow the code down to a small test case? [18:00] there are no errors on the server part - did logging, sniffing with wireshark - all looks fine, just the client part is not liking what it's own server module serialized.. [18:01] rogpeppe: well, I'll try and post a paste [18:13] rogpeppe: I got it! [18:13] dimitern: often happens that way :-) [18:13] dimitern: what was the problem? [18:13] rogpeppe: http://paste.ubuntu.com/1392332/ [18:13] rogpeppe: don't know yet, but managed to isolate it - it happens every odd request [18:14] dimitern: cool [18:14] dimitern: i have a call to go down to eat - will take a look after food [18:15] rogpeppe: cool, 10x [18:21] niemeyer: ping [18:21] dimitern: Yo [18:22] niemeyer: hey, are you aware of some weird issues with sending responses with no body multiple times in a row ? see the paste ^^ and run it, if you have 5 mins [18:23] dimitern: Hmm [18:23] dimitern: I'm not aware, looking [18:23] niemeyer: that's an example of the error i'm getting in my module, stripped down === cmagina_ is now known as cmagina [18:23] niemeyer: if you run it, every odd request ends in an error, but the even ones pass - wierd [18:24] dimitern: Interesting, let me understand what this is doing [18:25] niemeyer: not much, it seems sending no body in the handler is enough to trigger this on the client side [18:27] niemeyer: it seems related to the fix proposed here: http://code.google.com/p/go/issues/detail?id=1388 - I get the error exactly on the line "if len(f) < 2" [18:30] dimitern: Interesting [18:31] niemeyer: it also happens with go-tip, just checked [18:31] dimitern: This is what goes in the wire, and why you see the odd/even behavior: http://pastebin.ubuntu.com/1392393/ [18:32] dimitern: That "0" shouldn't be there [18:32] niemeyer: yes, that 0 looked weird to me, until I checked the HTTP Transfer-Encoding header: http://en.wikipedia.org/wiki/Chunked_transfer_encoding [18:33] niemeyer: and it seems 0\r\n should be there when no body exists, in addition no Content-Length header is present - HTTP/1.1 stuff [18:34] niemeyer: what puzzles me is why it happens only every other request, if it's malformed - it should either pass or fail always [18:34] dimitern: Due to the 0 [18:35] niemeyer: maybe if I somehow force HTTP/1.0 with Content-Length - that's a possible workaround [18:35] niemeyer: yeah, the 0 borks it, but you see my point, right? [18:36] dimitern: Which of them? [18:37] niemeyer: the inconsistent result - it fails every second request, when the code is doing the same [18:37] dimitern: Because of the ero [18:37] zero [18:37] dimitern: it's being observed as a response [18:37] niemeyer: this looks like a bug in net/http for me [18:38] dimitern: It definitely is [18:38] dimitern: The example is trivial [18:39] dimitern: yeah, definitely looks like a bug [18:39] dimitern: you should raise an issue [18:40] dimitern: in the meantime, i guess the fix is just don't use that http status... [18:41] rogpeppe: or maybe using HTTP/1.0 instead? [18:41] dimitern: Just send a 200 status without content [18:42] dimitern: I'm pretty sure the bug is related to the 204 result [18:42] dimitern: Or do you need the 204 for some reason? [18:42] niemeyer: well, yes I need it - i'm trying to mimic Swift as much as possible, including response codes [18:42] dimitern: Cool, give me a moment then [18:43] dimitern: Write this before the WriteHeader line: [18:43] w.Header()["Content-Length"] = []string{"0"} [18:44] niemeyer: ok, I'll try that [18:45] niemeyer: works [18:45] dimitern: Super [18:45] niemeyer: so I'll file a bug in go then [18:45] dimitern: Thanks [18:46] dimitern: That disables chunked encoding, avoiding the code path [18:46] dimitern: It feels like the bug is in the reading side [18:46] dimitern: And it's not entirely surprising.. using chunked encoding with a zero length content is a bit weird [18:46] niemeyer: yeah, exactly my point [18:47] dimitern: So I honestly can't tell whose fault it is without diving in the spec.. [18:47] dimitern: Either way, the http package should be resilient to such mistreating [18:48] niemeyer: I expected so yeah, anyway - I'll do my good deed for the day filing the issue [18:52] niemeyer, dimitern: presumably: w.Header().Set("Content-Length", "0") would be an equivalent (and slightly nicer looking) workaround? [18:54] rogpeppe: indeed - works like that and looks better [18:57] niemeyer, rogpeppe: thanks for your help, I'm off [18:57] dimitern: np. have fun. [19:22] niemeyer: fairly trivial: https://codereview.appspot.com/6847114/ [19:27] rogpeppe: Looking [19:29] niemeyer: and this is the last significant step before actually enabling TLS: https://codereview.appspot.com/6854107/ [19:35] rogpeppe: Done [19:35] niemeyer: thanks [19:42] I'll step out for a while.. will be back later to tame the review queue a bit further [20:04] niemeyer: the final step: https://codereview.appspot.com/6856105/ [20:05] niemeyer: one issue that occurs to me: perhaps we should bump the major version number with this CL, because it's incompatible with the previous version. [20:06] niemeyer: it would give us a chance to see what it's like to bump the major version too [20:06] right, that's me for the night, a good place to stop i think [22:10] yay! the Installer does the Right Thing, and the machine can now clean up after its units [22:11] on a sour note, I suspect the mysql charm of pooing a "mysql.passwd" file into /var/lib/juju [22:11] hey ho [22:43] fwereade_: Woohay! [22:44] niemeyer, I have noticed a couple of minor stupidities in the branches still in the queue, but I think nothing unfixable; I'll updat ethem tomorrow [22:44] fwereade_: Sounds good [22:45] niemeyer, and will be able to propose this as well; assuming you feel the series is sane enough, I can start merging through from machine-string-ids onwards [22:46] fwereade_: Superb [22:52] fwereade_: What are the details you'd like to fix about? [22:52] fwereade_: Just so I know once I go over them [23:40] fwereade_: You've got a review.. [23:40] fwereade_: Great stuff