[05:37] woot, my x220 arrived [05:37] boo, my 9mm ssd does not fit [05:38] whats the best way to obtain the machine_id outside of a hook context , e.g from a script running on cron so i can pass it to a cli app via --machine_id , is that available yet ? [06:57] davecheney, fwereade: mornin' [06:57] wrtp, heyhey [06:57] morning' lads [06:58] wrtp: i commited the environ/setconfig stuff last night [06:59] davecheney: yay! [06:59] so you should be cool to merge your PutBucket caching [06:59] davecheney: i'll do the madeBucket stuff next then [06:59] wrtp: jynx [06:59] also, my x220 came this afternoon [06:59] so I am in heaven [06:59] davecheney: great. it's beenh working well for me [06:59] davecheney: did you go for solid state? [07:00] i was going to move over the disk I had in my netbook [07:00] but it turns out you need a 7mm ssd [07:00] so i'll put my current one in my desktop and get another one for this [07:00] at the moment i'm in 7200rpm country [07:00] eww [07:01] wrtp: fwereade g+ says that gustavo is in +1 atm [07:01] is that true ? [07:01] davecheney: yeah [07:01] davecheney: he's in london [07:01] conference ? [07:01] davecheney: sprint of some kind [07:01] davecheney, wrtp speaks truth :) [07:01] i heard they are moving out of millbank towers [07:02] davecheney: yeah. don't know why though. [07:02] davecheney: maybe lease ran out or something [07:02] sounds like a long way to go for a working bee, but who am i to judge [07:02] davecheney, wrtp: as I understand it just not enough space there [07:02] fwereade: ah, makes sense [07:02] davecheney, wrtp: bit disappointed in myself that I never got round to visiting, apparently it was rather cool [07:03] fwereade: me too. [07:03] wrtp: i'm still getting that strange 'cant find cmd/jujud' test error [07:03] fwereade: didn't have an excuse though [07:03] it eventually sorts itself out [07:03] davecheney: have you still got it? [07:03] wrtp: happens any time I touch ~/go/src/pkg [07:03] it's clearly a bug in the go test support for main packages [07:03] but i'm thinking of just giving up and moving the agents out of main [07:03] davecheney: yeah. [07:04] davecheney: that's not the way forward though! [07:04] i'm on the fence if testing main packages is really the right solution [07:04] davecheney: i've been trying to home in on the bug, but haven't figured out a way of reliably reproducing it [07:04] davecheney: i don't see why not. [07:05] wrtp: cd ~/go/src && ./all.bash && rm -rf $GOPATH/pkg/launchpad.net/juju/* [07:05] will do it [07:05] * wrtp tries that [07:07] davecheney: doesn't seem to [07:07] oh, sorry, do a hg update [07:07] you need to have a different version of the std lib [07:07] % go version [07:07] go version weekly.2012-03-27 +1afae7555667 [07:07] ^ the last bit has to change [07:09] wrtp: if that doesn't work, then leave it with me [07:09] i'll figure out what is the cause [07:09] that upsets it === meetingology` is now known as meetingology [07:13] davecheney, btw, re Machine.Config()... my gut says this should just be a pair of SetInstanceId/InstanceId methods [07:13] davecheney: nope, that didn't work either [07:13] davecheney, I'm not sure we really want anyone outside to know/care what keys we're using under the hood [07:13] wrtp: ok, i'll figire out what i'm doing that shits it [07:13] i'm pretty sure it's related to the damaged I do to my ~/go [07:13] fwereade: fair call [07:14] it's not hard to change, the underlying content of the machine node is still a *ConfigNode [07:14] unless anyone has objections [07:14] davecheney, cool, thanks :) [07:14] davecheney, I'll not on the review for form's sake [07:14] note [07:15] fwereade: I won't change it tonight (can't be arsed merging) but consider your advice accepted [07:15] davecheney: why do you think testing main packages might not be good, BTW? [07:16] wrtp: well, 'cos it's buggy [07:16] davecheney: apart from that [07:16] davecheney, cheers [07:16] davecheney: (the bug will be fixed) [07:16] davecheney: i only see that bug *very* sporadically BTW [07:16] i think (although this is only a matter of personal taste) that main packages should be as small as possible, they should just import the stuff that they need, instanciate it [07:16] and off they go [07:16] it's just a personal preference [07:16] sort of based on the way that the go tool works [07:17] ie, most of the logic is in go/build and friends [07:17] davecheney: that's definitely not the way that the go tool is written! [07:17] shows what I know :) [07:17] anyway, it's not even a small objection [07:17] davecheney: there are >7000 lines in cmd/go/*.go [07:18] davecheney: bits which factor out nicely are done as packages, yeah [07:18] davecheney: but i'm not sure i agree about the principle that all the logic of command line program should be in external packages. [07:19] more guidelines [07:19] davecheney: i think packages should be useful... [07:19] i don't think of main as a package [07:19] davecheney: it's not [07:19] davecheney: well... it is strictly, but. [07:20] and that forms the basis of my preference, nothing more [07:20] wrtp, I see where davecheney's coming from, but in my case I suspect this is a prejudice based on unpleasant experiences with vast untestable mains in c/c++ :) [07:20] davecheney: but i'm thinking about the package that you hive off so that the main package can be minimal [07:21] davecheney: taking it to its logical conclusion you just get another package with a Main function... [07:21] wrtp: there are limits to any good intention [07:22] davecheney: and in Go (that bug notwithstanding) we *can* test main packages and their component pieces [07:22] wrtp: maybe I should just try to figure out why go test keeps fucking up, then there is no reason for main to be a 2nd class citizen :) [07:22] davecheney: indeed. [07:23] what time does aram come online ? [07:23] i was going to stick around for a chat [07:23] davecheney: as i said, i only see that bug about once a month or so [07:23] davecheney: i don't know when Aram comes on line, but soon I imagine [07:24] wrtp: i get it more frequently, i'm pretty sutre it's related to linker skew when I rebuild go [07:24] and I remember a bug with the go tool not checking the return code for the linker or go pack [07:24] which might be a clue [07:24] davecheney: we had the thought that we could try to have a G+ hangout with all of us today. do you think that might be possible? [07:24] remy_o had a CL [07:24] but it got superceeded by another [07:25] davecheney: doesn't linker skew result in an error (incompatible versions, or something)?: [07:25] wrtp: it _should_, but I think in this case the actual error is being eaten, so you don't get the .a on disk, then testing can't find it [07:25] which is my suspicion [07:26] davecheney: BTW if i touch the Go files, the problem goes away for me [07:26] yeah, if you rebuild things in just the right way, and face the right direction, then problem goes away [07:26] do you use go build or go get ? [07:27] davecheney: in the normal course of things? [07:27] alias gb='go install -v' [07:27] davecheney: for juju, i rarely use anything but go test [07:27] oh, that is weird [07:27] that isn't supposed to be like that [07:27] i thought I made it go install -v [07:28] davecheney: i use go test -i too [07:28] sorry, i thought it was go get -v [07:29] davecheney: why would you use go get? [07:29] davecheney: i suppose it gets dependencies automatically if they're not there [07:29] yup [07:29] turns out i don't need it :) [07:29] davecheney: but if they are there, then there's no difference. [07:29] i only use go get when i fetch something new [07:30] oh, i remember now, i used to alias gb='go build -v' [07:30] but that won't install intermediate pacakges [07:30] so I switch to to go install [07:31] davecheney: i don't use go build because it leaves the executables around [07:31] davecheney: and they make the tree dirty [07:31] yeah, and poos in your working copy [07:32] davecheney: so can you reproduce issue 3417 now, out of interest? [07:33] sporadically [07:41] davecheney: i meant right at this moment, by following your instructions above. [07:42] davecheney: but it doesn't matter - i was just interested [07:43] wrtp: actually it's happening to me right now [07:43] i wonder if it's timestamp related [07:43] davecheney: that's my thought [07:44] ctime <> mtime [07:44] davecheney: nah, not ctime [07:44] i run with noatime [07:44] but I don't think go can even look at that [07:44] davecheney: could you do an ls -ltR of $GOROOT and $GOPATH [07:45] u want it all ? [07:45] davecheney: i reckon. it won't be much gzipped and it's easier than just picking out the bits we need. [07:45] davecheney: in fact, don't worry about the -t bit [07:45] davecheney: better in alphabetical order [07:46] davecheney: if you could make it print the times in unix format, that would be better too [07:46] wrtp: i'll do it after dinner [07:46] davecheney: as numeric timestamps, i mean. i can't remember the option (if there is one) [07:46] davecheney: cool. [07:46] trying to finish up and send off my email [07:46] to see if I can get some review time with gustavo [07:46] davecheney: i've been waiting for the opportunity to arise again [07:47] trying to avoid another setconfig by keeping the changeset as small as possible [07:55] wrtp: bloody lbox, you can't add -req if you've already proposed, even in -wip [07:55] davecheney: no, it's a pain [07:55] reqs are a pain, full stop [07:55] davecheney: it's not lbox, it's launchpad [07:55] * davecheney shakes fist at lp [07:55] davecheney: you can't change the prereq of a merge [07:56] and you can't have more than on prereq O_o! [07:56] davecheney: you'll have to delete the merge request [07:56] s/on/one [07:56] davecheney: yeah, that too [07:56] DVCS for the fail [07:56] anyway, this is just end of day whinging [07:56] davecheney: lp is not the greatest [07:59] fwereade: // InstanceId returns the provider specific identifier for this machine. If no id has been asssinged by the provider, this value will be blank. [07:59] davecheney, SGTM [08:00] and it just panics if there is crap in the config node [08:00] actually, i'm not going to do this today, i'm going to call it an evening [08:00] it's 6pm [08:00] davecheney, yeah, have a rest [08:00] fwereade: but i'll address that first thing tomorrow [08:01] later lads [08:01] davecheney, not 100% sure about panicing [08:01] davecheney, take care [08:05] Morning, and good night davecheney [08:20] heya TheMue :) [08:21] fwereade: Moin [08:37] davecheney: see ya [08:59] Good mornings! [09:18] heya niemeyer [09:40] niemeyer: yo! [09:51] Hey guys [09:57] fwereade: LGTM on charm-store-backend [09:57] fwereade: Good stuff [09:58] niemeyer <- themue.moin() [09:58] niemeyer, thanks :) [09:58] TheMue: Moin :) [10:01] TheMue: i've been looking at doing the machine provider, and i realise that we haven't got a unit watcher yet. have you looked at that at all? [10:02] s/machine provider/machine agent/ [10:04] rogpeppe: You mean the watcher returned by watch_service_unit_state in the py code? [10:04] TheMue: i think so [10:04] * rogpeppe checks [10:05] rogpeppe: If so then yes, it's a not yet covered watcher. [10:05] morning. [10:06] Aram: heya [10:06] Aram: Moin. [10:06] Aram, heyhey [10:09] TheMue: actually the one i need is MachineState.watch_assigned_units [10:10] rogpeppe: That's also an open watcher. Machine is so far very small. [10:11] TheMue: i could do it assuming you're currently working on something else. [10:11] rogpeppe: Currently I'm working on State.AddRelation() (redesign after review). Then I can do the watcher. [10:11] rogpeppe: Oh, if you would like to then thank you. [10:31] fwereade: do you know if it's possible to have two units on the same machine using the same charm? by my very coarse reading, it looks like it might be possible and that it could cause problems. [10:37] niemeyer: ^ [10:41] rogpeppe, expand a little please... I can't think of an obvious way to do so, but there probably is one [10:42] rogpeppe, and it depends on the problems... is it the known will-try-to-use-same-ports deal, or something else that's worrying you? [10:42] fwereade: we could have two subordinate services with different service names but using the same charm, right? [10:42] fwereade: it's the shared directory that concerns me [10:42] rogpeppe: The same *charm* in the same machine? Of course [10:42] rogpeppe, hmm, ok, I haven't looked into subordinates in details... I *thought* distinct units got distinct dirs [10:43] rogpeppe, and wil therefore have 2 copies of the charm [10:43] niemeyer: it looks to me like a given charm will always be stored in the same directory, regardless of the service [10:43] rogpeppe: That's bogus [10:43] rogpeppe, that said I have occasionally spotted and fixed bugs along those lines so there could well be more I missed [10:43] niemeyer: yeah, i think so. i may be wrong though. [10:43] rogpeppe: If you mean expanded in the same directory, that is [10:43] rogpeppe, are you sure the charm isn't expanded to a unit-specific dir? [10:43] niemeyer: yes i do. or at least, that's how it looks. [10:43] fwereade: no :-) [10:43] rogpeppe: If different service units are living in the same directory, that's a bug [10:44] rogpeppe, do you have a reference in the python? [10:44] fwereade: unit/deploy.py [10:44] fwereade: download_charm [10:45] fwereade: charms_directory is always $units_directory/charms [10:45] rogpeppe, hmm, yeah, looks like crack to me [10:45] fwereade: ok, thanks [10:45] rogpeppe: service unit != charm, FWIW [10:45] rogpeppe, niemeyer: one thought: why is the machine agent responsible for this in the first place? [10:45] niemeyer: yeah, i thought so [10:46] fwereade: Probably historical, before we had subordinates [10:46] rogpeppe, niemeyer: it's always seemed odd to me that we have duplicated code for getting and unpacking charms in unit/machine agents [10:46] fwereade: Might make sense to have the unit doing it [10:46] niemeyer, +1 [10:46] fwereade: yeah, perhaps the unit agent should unpack all charms [10:46] fwereade: which makes the machine agent simpler, which sounds good to me right now :-) [10:47] rogpeppe, cool :) [10:48] fwereade: while you're here... [10:48] rogpeppe, yeah? [10:48] fwereade: in agents/machine.py, it looks to me like service_state_manager is never used. am i missing something superclassy? [10:49] * fwereade looks [10:50] rogpeppe, can't see any usage of it, can't see any reason to need it in the first place [10:50] fwereade: thanks [11:26] niemeyer: i think we've said that we want to build in upgrade from the beginning. is there a plan of how to do that, in particular how we want to tell the agents to upgrade themselves? [11:49] rogpeppe, do you recall any relevant details re plans for the dummy environ's zookeeper? [11:49] fwereade: more or less [11:50] rogpeppe, I think I need that soonish, so anything yu can transfer would be good [11:50] fwereade: i'll just have a peek to remind myself [11:51] fwereade: the idea is to start a zookeeper if the zookeeper attribute in the config is true [11:52] fwereade: it'll only happen the first time that an environ of the given name is opened, but that seems right to me [11:52] rogpeppe, the issue is that I'm pretty sure we don't want to start a new zookeeper every time we need a dummy environ for tests [11:52] rogpeppe, hm, I must be missing something [11:52] * fwereade looks again [11:53] fwereade: that's fine - don't set the zookeeper attr to true in those cases. [11:53] rogpeppe, I mean I think we'll want to share zookeepers... won;t we? [11:54] fwereade: hmm. that's potentially awkward, but should be doable [11:54] rogpeppe, I guess what I was really asking is "this feels awkward but necessary, has someone already come up with a nice plan?" [11:55] fwereade: i think it can all be done inside dummy with no visibility outside. i'd have a global instance that's used/started for the first zk after any Reset. [11:56] fwereade: (if someone opens two dummy environs at the same time, we don't want them to share zks) [11:57] fwereade: alternatively... we could just keep all zk instances around. probably simpler now i come to think of it. [11:57] rogpeppe, I fret that shutting them down will become complex [11:58] fwereade: i don't think that's too hard. we'd need to provide a Shutdown method or something. [11:59] fwereade: and we'd need to implement state.Close to return any zk instance that the state is using to the unused pool [11:59] rogpeppe, it's knowing when to call it that's the problem [11:59] rogpeppe: Nothing written down yet, but it's time to talk about it indeed [11:59] * niemeyer has to switch rooms [11:59] brb [12:00] fwereade: all in all i doubt that it should take more than about 30 lines of code [12:00] rogpeppe, hmm, actually, the existing model where we start up a shared ZK per test package may be a good way to go... we just need to inform the dummy environ of it at some point [12:01] rogpeppe, I'm not too bothered about starting multiple dummy environs at the same time... what's the use case? [12:01] fwereade: we do that in some places, but those cases probably don't need zk [12:02] fwereade: a panic if it happened would probably be fine. [12:02] fwereade: that's nicely simpler actually. [12:02] fwereade: then Reset can remove everything from the dummy's zk [12:03] fwereade: or maybe the tests should do that, i dunno [12:03] rogpeppe, probably one for the tests, but not sure... and, hmm, bootstrap can Initialize state, now I think of it :) [12:04] rogpeppe, if zookeeper is set, that is [12:04] fwereade: i think i like the idea of handing off the server to the dummy environ [12:04] fwereade: dummy.SetZookeeper(*zookeeper.Server) perhaps [12:05] rogpeppe, yeah [12:05] dummy.SetZookeeper(testing.StartZkServer()) seems nice [12:06] fwereade: then, yeah, have dummy.Reset do the ZkRemoveTree [12:07] fwereade: and have dummy.environConfig.Open check, if cfg.zookeeper is true, that we're not creating a new state. [12:08] fwereade: and panic otherwise [12:08] fwereade: or actually it can return an error [12:08] rogpeppe, sounds like a plan, I'll see what I can do [12:09] fwereade: sounds good. thanks. [12:45] niemeyer: lsb_release prints n/a when it can't find the current release [12:45] rogpeppe: The test still looks bogus.. why is it conflating an error with a return of a value [12:46] rogpeppe: Or do I misunderstand it? [12:46] niemeyer: it means the test will still run successfully even on a non-ubuntu platform [12:46] niemeyer: or a platform where lsb_release doesn't exist [12:47] rogpeppe: is what you are doing now related to what I asked you yesterday about hardcoding CurrentSeries and CurrentArch? [12:47] Aram: yes [12:47] rogpeppe: Ok, looks good then [12:48] rogpeppe: A comment would be nice [12:48] niemeyer: thanks. and thanks for the review. will do a comment. [12:49] rogpeppe: maybe I'm misunderstanding something fundamental, but where do you want to run lsb_release? [12:49] Aram: in the test. to make sure my parsing of /etc/lsb-release is sane. [12:50] Aram: see https://codereview.appspot.com/6260048/diff/2001/environs/tools_test.go#newcode276 [12:50] ah, ok. [12:50] in the test makes sense. [12:50] but then we can't run the test on every platform. [12:51] Aram: we can. and that's the point. [12:51] ok, let me look at the patch. [12:51] Aram: that was what we were just discussing [12:52] so the test runs without lsb_release, but its utility is reduced if lsb_release does not exist. [12:53] niemeyer: rather than full-blown unquote, i'm doing strings.Trim(line[len(p):], ` \t'"`) which should be sufficient i think [12:53] Aram: yeah [12:56] rogpeppe: Yeah, sounds good [12:56] rogpeppe: Thanks [12:56] niemeyer: i wouldn't mind leaving the "current Ubuntu release name" in. i remember being a little confused when i came across "series" being used all over the place in the charm packages, and didn't realise it was a synonym for "ubuntu release". if we're going to have a comment anywhere, perhaps this is a good place. [12:56] niemeyer: it doesn't appear to be a commonly used term even in the ubuntu community [12:57] s/ in./ comment in./ [12:57] rogpeppe: I'm not sure.. the whole code base trusts on the term [12:57] rogpeppe: That doesn't look like a special instance of it [12:58] niemeyer: yes, but nowhere do we actually say what it is. [12:58] niemeyer: as far as i've seen [12:58] niemeyer: this at least will show if someone does a recursive grep for Series [12:58] rogpeppe: My point is that this isn't a special place.. there are tons of places one will not understand, and this isn't documenting them [12:59] rogpeppe: why not copy some known existing lsb-release files and test against those, that way the test is meaningful on every platform? [12:59] rogpeppe: But sure, I don't mind too much either [12:59] and that way you don't need to care about lsb_release at all. [12:59] Aram: It is doing that [12:59] niemeyer: it's reasonably special i think. it's actually the only place AFAIK that connects the actual running release with the term. [13:00] rogpeppe: Nevermind.. comments is great, thank you [13:00] Aram: i did that. i could do with a few more samples though. feel free to add to the tests table. [13:00] oh. [13:00] niemeyer: thanks :-) [13:00] * Aram finds Rietveld hard to read. [13:02] * rogpeppe actually made up the quantal lsb-release contents BTW [13:08] ha, of course the tests fail when CurrentSeries="unknown" anyway [13:13] hmm, just saw this: [13:13] runtime: signal received on thread not created by Go. [13:13] FAIL launchpad.net/juju/go/state 8.131s [13:14] that's a little worrying [13:15] can't reproduce though [13:21] probably from zookeeper? [13:35] Ah, redesign looks nicer and builds, now adopt to tests. [13:56] Aram: Probably.. which means we'll solve it as a side effect, hopefully [14:04] Aram: Are you up to come on Thursday still? [14:08] niemeyer: I am not sure... I'd like to. I haven't heard anything from BTS though, I don't know what that means. [14:08] Aram: They've returned to me this morning [14:08] Aram: and we got approval just now [14:09] Aram: I've asked for a second option, though [14:09] Aram: Since the option they gave was coming early Thursday and returning early Friday [14:09] Aram: If you're returning early friday, may as well stay for the day [14:09] indeed. [14:10] early thursday -> late friday would be prefereable. [14:11] Aram: That's what I asked for.. let's see if they return and I'll put you back on the loop with a +1 [14:12] ok, assuming the feedback is positive, what's the plan? who buys the tickets, me or the company? [14:12] hi robbiew. [14:12] Aram: hey! :) [14:12] Aram: company buys the tickets.../me assumes he knows what this conversation is about [14:13] ok :). [14:15] robbiew: Yes :) [14:15] Aram: The agency will sort out for it === Guest__ is now known as smaddock [15:08] niemeyer: would it be good for me to come down too, if Aram makes it over? [15:09] rogpeppe: I'm not entirely sure.. let's see how the sprint here looks like [15:09] rogpeppe: Let's sync up on that again tomorrow [15:09] niemeyer: k [15:16] I believe I'm just waiting for the e-ticket confirmation now. [15:19] rogpeppe: do you happen to know if Maestro cards work in the UK? [15:20] work as in "being widespread", I'm sure if I try hard enough I'll find ATMs. [15:20] Aram: probably. [15:20] Aram: it's mastercard, right? [15:21] not really. it's owned by mastercard, but it's a different product. [15:21] here in austria mastercard is the only widespread card that works. good luck with visa/mastercard. [15:21] almost nobody accepts them, [15:21] s/mastercard/maestro/ [15:21] meh [15:21] I'll rephrase :) [15:22] here in austria *maestro* is the only widespread card that works. good luck with visa/mastercard. [15:23] Aram: ah, i've never had any problems with visa. but then again i haven't spent any time in austria :-) [15:28] Aram, fwiw I'm used to seeing maestro symbols on ATMs in the UK [15:28] greta [15:28] great [15:40] fwereade: you've got a couple of reviews [15:45] rogpeppe, sweet, tyvm [16:03] gn all, need to be off promptly tonight [16:03] take care :) [16:15] * Aram is away for an hour or so. [16:43] fwereade: ok. gn. [17:04] * rogpeppe is done for the day. see you tomorrow... [17:38] * Aram back. [18:08] niemeyer: Thx for LGTM, goes in now. [18:20] TheMue: Cheers! [18:20] and I really need some food now [18:20] I'll see you all later/tomorrow! [18:21] niemeyer: Enjoy. [19:00] rogpeppe: do you use upas? [19:15] rogpeppe, the extracted charm is separate for multiple units [19:16] the download directory is the same as its merely a cache