/srv/irclogs.ubuntu.com/2013/02/19/#juju-dev.txt

thumperhi davecheney00:17
davecheneythumper: ack00:17
thumperdavecheney: unsurprisingly I suppose my branch has conflicts with trunk00:17
thumperjust fixing now00:17
thumperthen it may be worth proposing00:17
davecheneykk00:17
davecheney+100:18
* thumper sighs00:18
thumpergo get lbox thingy still running00:18
davecheneyyou may find those improvements also apply to jujuc, the hooks00:18
thumperI'm so going to prepare some slides for the sprint about this00:18
* thumper nods00:18
davecheneythumper: GTFO, you're going to prepare an agenda00:18
davecheneythat is rocket surgery shit00:18
thumperit is the merging of jujuc and jujud that conflicts mostly00:18
davecheneyyeah, that doesn't surprise me00:19
thumperdavecheney: we fly by the seat of our pants?00:19
* davecheney has no comment00:19
davecheneythumper: also got word by the grape vine, book your tickets to ATL00:19
thumperack00:19
thumperwaiting for them to get back to me about flights00:20
davecheneymine were much cheeper than I thought00:20
davecheney1200 EUR00:20
davecheneyI was expecting to have my pants pulled down00:20
thumper:)00:20
davecheneyno word on where we are staying00:20
davecheneybut _that_ is par for the course00:20
thumpermine are around 1800 - 190000:21
davecheneyflying delta, which is unfortunate00:21
thumperDL is delta?00:23
davecheneyyup00:23
thumperme too, at least for one part00:23
davecheneyDL16/1700:23
thumperI'm going to be arriving late saturday night00:23
thumperthat was one of my options00:23
thumperbut nope00:24
thumperit's funny00:24
thumperbut if I go "go test ./..."00:24
thumpergo tells me to run "go test -i ./..." to make stuff go faster00:24
thumperbut when I try that00:24
thumperit barfs00:24
davecheneypaste ?00:25
thumperit is way off the screen00:25
thumpersomething about there being no files there00:25
thumperdavecheney: so... how does lbox propose work then?00:28
davecheneyit creates the merge proposal on LP, the makes a call to rietveld and sends the diff there00:29
davecheneyI don't really know how it works under the hood apart from automating a few bits and duplicate the code under review00:29
thumperdavecheney: here is a work in progress proposal I created already https://code.launchpad.net/~thumper/juju-core/command-set-flags/+merge/14918300:31
thumper(using normal LP tools)00:31
thumpermainly so I could get a good look at the diff00:32
davecheneythumper: understood, a diff -u is the most useful thing for me00:32
thumperalso, it seems that lbox gets the description and commit message all bungled up00:33
thumperfor me, the description should describe the what and why you did something00:33
thumperthe commit message is normally much more terse00:33
thumperok, lets manage the hoop jumping then...00:37
thumperI can delete that merge proposal now I know it looks ok00:37
thumperand 'lbox propose'... what other bits to I need there?00:37
davecheneythumper: make sure you do a go fmt ./... before proposing00:39
davecheneyor people will freak out00:39
thumperdavecheney: I have go fmt as a pre-save hook in emacs00:39
davecheneynoice00:39
davecheneyif you like you can run the .lbox.check precommit hook00:39
davecheneyit might work00:39
davecheneyprobably needs environment vars from BZR00:39
thumperwork for what?00:40
davecheneythat is the checks that lbox runs00:42
thumperit seems that lbox tries to do too much00:44
thumperI already push my work00:44
thumperwith a default location as defined by ~/.bazaar/locations.conf00:44
thumperso I just go "bzr push"00:44
thumperon a new branch, and it just works™00:44
* thumper tries to understand lbox00:47
davecheneythumper: i wrote the README and CONTRIBUTINGs00:48
davecheneyplease let me know what is missing or unclear00:48
thumperdavecheney: how does lbox infer the branch source?00:49
thumperI don't like blindly running things I don't understand00:49
davecheneyit probably assumes cobzr was used00:49
davecheneythumper: when you say source, do you mean -for=lp:juju-core00:50
thumperdavecheney: that is what I'm checking, because I don't do that00:51
thumperit seems to run 'bzr info' in a shell, and looks for push location00:51
thumperwhich will work for me00:51
thumpergah, parent is going to be an issue though...00:52
thumperunless I use -for00:52
thumperwell... lets see what happens00:53
* thumper goes for it00:53
* davecheney checks. water still wet, world, still turning00:59
thumperit seemed to infer the correct branches00:59
thumperso that is good00:59
thumperedited a nice description (or at least I thought so)00:59
thumperdavecheney: why is this command wanting me to type in my google credentials?01:00
thumperand what does it do with them?01:00
thumperhow can I be sure it isn't being stupid with my password?01:01
davecheneybecause rietveld is a google app engine product01:02
davecheneyit is probably using some form of oauth01:02
thumperI don't feel comfortable typing that into a terminal there01:03
thumper:((01:03
davecheneythumper: then I thikn you need to stop and escalate at this point01:04
davecheneyor make a throw away google account01:04
thumperI did type in the pwd01:04
thumperbut wasn't happy doing it01:05
thumperwill bitch more later01:05
* thumper is saving it all up01:05
davecheneyoh, if you use 2FA01:05
thumperdavecheney: https://codereview.appspot.com/733804801:05
davecheneyit'll probably be a complete pain in the arse01:05
davecheneyfrom what I hear, not even googlers use rietveld with their 2FA accounts01:05
thumperdavecheney: why does the appspot thing say (do not edit description out of merge proposal)01:07
thumper?01:07
davecheneybecause it's a one way transfer, LP -> Rietveld01:08
davecheneythe MP is on the reciepient list, so as you make comments in rietveld, they get cc'ed to the MP01:09
thumperdavecheney: how the hell does this tool work?01:09
davecheneythumper: lots of rest calls01:09
davecheneygo get -v launchpad.net/lbox01:09
davecheney^ get source01:10
thumperI have it01:10
davecheneyok01:10
thumperhow do I see the whole diff through rietveld?01:10
davecheneyi suspect it does it client side, then rams the whole thing into rietveld01:10
davecheneyi haven't looked01:11
davecheneymaybe rietveld takes the who before and after, and doe sthe diff itself01:11
davecheneyit appears to work at a file level, not a diff level (if that matters)01:11
sidneiiirc it submits the diff to rietveld01:11
thumperso, can you see the whole diff in one go?01:12
thumperhi sidnei01:12
thumpersidnei: long time, no talk01:12
thumpersidnei: at least I think we have talked before01:12
sidneiindeed01:12
thumpergood, at least I'm not that crazy yet01:13
sidneiprobably when complete-fail sinzui a couple times *wink*01:13
thumpersidnei: what are you doing these days?01:14
sidneithumper: untangling ubuntuone oopses, and polishing tu^H charms. lots of fun.01:15
sidneiwe're pretty close of moving all (well, like 80% of) the frontends for u1 into juju-managed services01:16
thumpernice01:16
thumperdavecheney: I have noticed that my tollerance for repeated code seems to be a lot less than others01:18
sidneithumper: you? squading away?01:18
thumperdavecheney: if something is repeated more than twice, refactor01:18
thumpersidnei: moved from product strategy -> juju-core a few weeks back01:18
thumpersidnei: was unity engineering manager01:18
thumpersidnei: and other manager type things for a while01:18
thumperback to real coding now01:18
sidneithumper: oh, yeah, last comment from you i recall you were enjoying your c++ i think01:19
thumpersidnei: yeah, was hacking on unity, then managed it for a while01:19
davecheneythumper: +101:19
sidneialright. /me goes back to sip some mate. cheers01:21
thumpersidnei: caio01:22
thumperdavecheney: with all that proposed, I suppose I should go back to my help command :)01:24
davecheneythumper: just reviewing now01:24
davecheneylooks pretty good too me01:24
thumperdavecheney: cool01:24
davecheneyjust a few style comments01:24
thumperhow many +1's do we need?01:24
davecheney201:24
* thumper nods01:28
davecheneythumper: I think there is a little more refactoring that can be done for some of the simpler commands01:32
davecheneybut that should be done in a followup branch01:32
thumperI'm sure there is01:32
thumperbut I tried to limit it for my first branch :)01:32
thumperstill came in at almost 2k lines01:32
davecheneythumper: ignore the ping, that wasn't intended for you01:36
* thumper didn't get a ping01:37
davecheneyvia email01:37
thumperah01:37
davecheneygonna keep pinging till something goes pong01:38
thumper:)01:42
thumperdavecheney: I'm off briefly to get the daughter and move home01:46
davecheneythumper: understood, nearly lunch time here01:46
thumperdamn you python and your acceptance of both ' and " for strings03:50
thumperdavecheney: how do I store a pointer to a function in a struct?04:00
thumperdavecheney: Also, can I stick a closure in there?04:01
* thumper thinks some more...04:01
* thumper goes to read the language spec part again04:02
* thumper thinks some more...04:04
wallyworldthumper: i think you can declare a variable of type func()04:06
thumperwallyworld: yeah got that bit04:06
wallyworldeg var f func()04:06
thumperbut I now want to have a bound method04:06
thumperso object.Method04:06
thumperperhaps I need to make a closure?04:07
thumperthat seems stupid04:07
thumperbut perhaps needed04:07
wallyworldi think you *may* need to pass it a closure which calls that method?04:07
wallyworldthat's how i'd currently do it in my ignorance04:07
wallyworldnot knowing any better04:07
thumperyeah...04:07
thumperit is04:07
* thumper goes to rewrite some code04:08
davecheneythumper: yeah, type S struct { f func() }04:09
davecheneywhere func() can be anything, so func(bool, bool, bool) int04:09
davecheneyetc04:09
thumperdavecheney: however I can't assign obj.Method to the func04:09
thumperwithout a closure04:09
davecheneyno, that may be resolved by 1.1, but you currently cannot do that04:09
* thumper nods04:10
thumperfound that out :)04:10
davecheneypassing a closure would essentially be what the compiler would do behind your back04:10
thumperit would be nice if a closure was created automagically for you04:10
thumperright04:10
* thumper is using magic for help topics04:10
thumperFSVO magic04:10
davecheneythumper: that will probably be done for 1.104:11
davecheneyfunction types will become a two word structure, so we can stash the receiver there04:11
thumperdavecheney: obviously I'm not the only one wanting to do this then :)04:11
davecheneyhttps://groups.google.com/d/topic/golang-dev/x328N8hiN5k/discussion04:12
wallyworldthumper: there's lots in Go I'm finding is lacking :-) maybe by 2.0.....04:12
davecheneywallyworld: 2.0 is a long way off04:13
davecheneya long, long, long way off04:13
* thumper smacks wallyworld around a bit04:13
wallyworldi was attemptinh humour04:13
wallyworldouch!04:13
wallyworldthumper: why smack me around?04:13
thumperwallyworld: why not?04:13
wallyworldfair point04:13
thumperis the easiest way to create a long string to use a bytes.Buffer?04:22
thumperhow to I get a string from that?04:22
wallyworldbuffer.String()04:23
davecheneybytes.Buffer is both an io.Reader and an io.Writer04:23
davecheneyyou can write to it with fmt.Fprintf04:24
davecheneyand copy it to stdout/stderr with io.Copy04:24
davecheneyif that is of use04:24
thumperta04:24
davecheneyprobably a few ways to skin that cat04:24
* thumper nods04:34
thumperhmm... now I'm causing a panic...04:34
thumperfound it...04:34
* thumper goes swimming04:44
rogpeppemorning all07:02
fwereaderogpeppe, heyhey07:06
TheMueMorning07:49
jamTheMue: good morning07:56
TheMuejam: Hiya07:56
jamTheMue, fwereade, rogpeppe, dimitern, wallyworld, mgz, w7z: https://plus.google.com/hangouts/_/3054ca9e05632bb677f4a136cc956486d9aac90f07:56
dimiternjam: cheers07:56
TheMuejam: Thx07:57
wallyworlddifferent from the invite?07:57
jamwallyworld: should be the same07:57
jambut often the direct link helps people07:57
rogpeppefwereade: ping08:03
jammgz: poke08:04
mgzwas just doing the hangout dance :)08:04
jammgz: just some chewing noises from you08:10
jamdimitern: your non-headset mic is picking up the surrounding noise08:11
fwereadenone of us can hear anything, I think08:42
mgz"The hangout ended because of a server error"08:43
rogpeppei should have mentioned that i'll be on holiday thurs and fri this week08:55
jamdimitern: poke about some tests in environs/openstack/local_test.go09:49
rogpeppei'd much appreciate a review or two of the following branches, if possible: https://codereview.appspot.com/7354044/ https://codereview.appspot.com/7327050/ https://codereview.appspot.com/7314116/09:55
mariuskoHi10:16
mariuskoI wrote a quick blueprint about git based deployment of user applications: https://blueprints.launchpad.net/juju/+spec/juju-charm-app-git-deployment10:16
mariuskoDoes anyone have any comments?10:16
dimitern jam: sorry, just saw that10:24
jamrogpeppe: review up on the first one10:25
rogpeppejam: thanks10:25
jamdimitern: np, so TestInstancesGathering fails if you run it by itself.10:25
jamcd environs/openstack; go test -gocheck.v -gocheck.f InstancesGathering10:25
jamI think the issue is that it doesn't call s.BootstrapOnce() and it relied on other tests doing that step.10:25
dimiternjam: i suspect it' because of the need to bootstrap first in the local tests10:25
dimiternjam: oh, this could be it yeah10:26
jamIt is also the test that has failed for me a couple of times with http://past.ubuntu.com/1681193/10:26
rogpeppejam: you're correct about your supposition about that CL. it's so that i could generate a not-found error for the third branch in that series.10:27
jamdimitern: which the error message is a bit hard to parse, but it looks to be the "Server "185" alreayd10:27
jamalready belongs to group "1""10:27
dimiternjam: the problem is a bit more obscure i think10:28
rogpeppejam: stupidly, i posted those links in the wrong order - the second is actually a prereq for the first10:28
dimiternjam: we're creating more than one environ it seems10:28
jamrogpeppe: https://codereview.appspot.com/7327050/patch/2001/3009 I don't see other ones that return a bool. PasswordValid does, because it is answering a question, similarly AgentAlive but AgentAlive returns both a bool and an error.10:29
dimiternjam: who's the head of our business unit? robbiew? I'm asked by the travel agent10:30
jamdimitern: Deryck is above me, then probably Robbie above that, yes.10:30
rogpeppejam: examples: Unit.DeployerName, Unit.PublicAddress, Unit.PrivateAddress10:30
jamrogpeppe: none of which are on Machine, but I'll go look10:31
jamrogpeppe: my immediate feeling is that you lose the ability to describe what the problem is by just having a bool10:31
jamso an err is actually better.10:31
rogpeppejam: the thing is that there is only one possible problem here10:31
rogpeppejam: and lots of the other code was testing specifically for NotFound, and then another test for other errors (in some cases buggily) which could never happen10:32
jamrogpeppe: but instead of having the code that is checking what the problem is generating the error, you have the code that is asking for the info creating the error.10:32
rogpeppejam: there are only two places that create an error as a result, AFAIR10:32
rogpeppejam: FWIW me and fwereade have been wanting to make this change for ages10:33
jamrogpeppe: so in the first location cmd/juju/ssh.go it seems to always silently ignore failures, which seems odd.10:34
jam(I can't say it is *wrong* because I don't really know the code, but it seems strange)10:34
mariuskoSee https://bugs.launchpad.net/juju/+bug/891868 for a blocker to accomplish it10:34
_mup_Bug #891868: juju cli api should be invokable outside of units/hooks <juju:Confirmed> < https://launchpad.net/bugs/891868 >10:34
rogpeppejam: it waits for the instance id to become available10:35
rogpeppejam: actually though, i think that code *is* probably wrong (and was wrong before)10:35
rogpeppejam: because InstanceId only looks at the local machine state, which isn't changing in that loop10:36
jamrogpeppe: is Changes() a channel? Or is it just a slice of changes that its found?10:37
rogpeppejam: it's a channel10:37
jam(Is that loop "while things are still changing, handle the next change"?10:38
rogpeppejam: all watchers return a channel from the Changes method10:38
rogpeppejam: it should be fixed, but it's unlikely to be a problem in practice as no-one wants to ssh to a machine to which no units have ever been assigned.10:38
jamrogpeppe: so you do explicitly trade one place for 2 places having the same formatting string of  "instance id for machine %v not found"10:39
jamin https://codereview.appspot.com/7327050/patch/2001/301310:39
jambut the rest do all treat the error as essentially a boolean10:39
rogpeppejam: yeah, as suggested by dave cheney, i'll change it to return state.NotFoundf(...)10:39
rogpeppejam: (i can't do it in this CL because it's dependent on this one)10:40
jamrogpeppe: you still have to have 2 copies of the error string, and make sure you don't mess up the formatting, and deal with updating both if you decide to change the message to users, etc.10:40
jamrogpeppe: anyway, I won't block it, but it seems like you're pushing the "this is an error" up a level, when really it was at the correct level to start with.10:41
rogpeppejam: it's not really an error. it's more an indicator of availability.10:41
rogpeppejam: an error return says to me "anything can happen here"10:41
rogpeppejam: but that's not the case here10:41
rogpeppejam: to be honest, i'd be happy if it just returned a blank string when the instance id isn't assigned10:42
jamrogpeppe: when you pointed me at the other examples where 'bool' is used, it did seem to make a lot more sense to just return the empty string, rather than having the callers check that the bool really does say the empty string is invalid.10:43
jam(bool wasn't adding any information that the caller didn't already know)10:44
jamunless there are other situations where the value could be invalid, that we just hadn't codified yet.10:44
rogpeppejam: yeah. niemeyer didn't like it though, so we added the extra return value.10:44
jamrogpeppe: did you understand his rationale at the time?10:45
rogpeppejam: not really :-)10:45
rogpeppejam: but i come from a place where it's ok to use -1 to signal an error :)10:45
jamrogpeppe: well that all depends if -1 is in the valid set :)10:47
rogpeppejam: indeed. assume it's not.10:48
jamdimitern: so any idea about how we would still have a Server attached to a group at the time the test is starting up?10:53
dimiternjam: not at the moment, have to think about it a bit - it's been a while10:54
dimiternjam:11:03
jam?11:03
dimiternoops :) I found it11:03
dimiternso indeed, bootstrapping once before is enough11:03
dimiternbut not for the other tests11:04
dimiternI'll propose a patch that fixes that now11:05
dimiternjam: PTAL https://codereview.appspot.com/730310111:11
jamdimitern: right, I have that change in the queue, but I was trying to find the isolation stuff. But I'll go ahead and approve it.11:12
dimiternjam: the issue was a clash between the test bootstrap fails without public ip and test instance gathering11:12
jamdimitern: LGTM trivial, though I don't think you want the extra whitespace.11:12
dimiternjam: ok, i'll remove it11:13
dimiternI wish bzr was more clever wrt command aliases, like hg11:15
jamdimitern: in what sense?11:15
dimiterni'm used to have things like "pul" or "sw", etc.11:15
dimiternunambiguous prefixes11:15
jamdimitern: you can 'bzr alias' them, but it does have a few (bzr di, bzr st, etc)11:15
dimiternyeah, st and ci i use all the time - didn't even check - it just worked11:16
dimiternok cool, I'll set some aliases myself then :)11:16
dimiternjam: are there global bazaar.conf, used by /usr/bin/bzr ? in addition to ~/.bazaar/bazaar.conf i mean11:23
jamdimitern: no11:23
jamno /etc conf11:23
dimiternhmm cobzr doesn't play nicely with bzr aliases it seems11:23
dimiternjam: standup?11:32
jamdimitern: ah, I think cobzr re-implements the front-end and has to re-implement all the commands.11:34
rogpeppesmall branch to change the api to be able to log messages: https://codereview.appspot.com/735804511:51
jammgz: http://paste.ubuntu.com/1681193/11:53
TheMuerogpeppe: You've got a review.11:57
dimiternrogpeppe: another review11:58
rogpeppeTheMue, dimitern: thanks11:58
rogpeppeTheMue: i started by using "read" and "write" but actually the -> and <- stand out much better in the log.11:59
dimiternTheMue: you've got a review too12:06
TheMuerogpeppe: ok, can live with it. ;)12:06
TheMuedimitern: Great, thx.12:06
TheMuedimitern: The storage test is so far a copy of the according part of environ/jujutest.12:10
TheMuedimitern: It is intended to be later removed, when everything is integrated.12:10
dimiternTheMue: yeah, i was wondering why copy that instead of just use it?12:10
TheMuedimitern: This way I had a chance to check the behavior before the rest is done.12:11
dimiternTheMue: ah, ok12:11
TheMuedimitern: So I'll remove it later. ;)12:11
dimiternTheMue: cool, so comment about it please, that there'll be a follow-up12:11
TheMuedimitern: Detected a not expected behavior that way, when listing files.12:12
dimiternTheMue: with ordering?12:12
TheMuedimitern: Will do it, when I cover the rest of your hints.12:12
TheMuedimitern: No, the handling of directories when the passed pattern matches.12:13
dimiternTheMue: i see12:13
rogpeppelunch12:41
rogpeppelooks like the "juju set" tests are crack *sigh*14:30
=== wedgwood_away is now known as wedgwood
=== TheRealMue is now known as TheMue
rogpeppeas is juju get *deeper sigh*14:56
rogpeppehttps://bugs.launchpad.net/juju-core/+bug/113014915:02
_mup_Bug #1130149: juju get does not print default values correctly <juju-core:New> < https://launchpad.net/bugs/1130149 >15:02
TheMuerogpeppe: Hangout?15:04
rogpeppeTheMue: ah thanks15:05
benjiHi all.  I am trying to bootstrap using EC2 and it apparently works (the instance shows up in the EC2 console) but when I run "juju status"15:17
benji... I get this error: "panic: runtime error: invalid memory address or nil pointer dereference" plus a lot more. (I'm using go juju.)15:18
bacand i am seeing the same using r908 of juju-core15:19
rogpeppebenji: was that with bootstrap --upload-tools ?15:20
benjirogpeppe: yep15:20
rogpeppebenji: hmm, can you paste the "lot more", please?15:21
benjiheh, sure15:21
rogpeppebenji: (i haven't ever seen that problem, FWIW)15:22
benjirogpeppe: http://paste.ubuntu.com/1682852/15:22
benjirogpeppe: another data point: the api server doesn't seem to have started on the EC2 instance because if I point a websocket client at it I get connection refused15:23
rogpeppebenji: i'll see if i can replicate the problem15:24
rogpeppebenji: what do you see if you do juju status --debug ?15:36
rogpeppebenji: (i think it's likely that the original bootstrap failed for some reason, and the dial has timed out after 10 minutes, and there's a bug which means that error isn't checked so ends up panicing)15:37
rogpeppebenji: in fact, it might be useful to see what went on on the bootstrap machine.15:38
benjirogpeppe: it looks that way15:38
benjilots and lots of "2013/02/19 15:37:05 JUJU state: connection failed: dial tcp 50.19.23.159:37017: connection refused"15:39
rogpeppebenji: you can do that by ssh'ing to it and catting the log file15:39
rogpeppebenji: the log file in question being /var/log/cloud-init-output.log15:39
rogpeppebenji: i use the PEM file from $HOME/.ec2 to do the ssh - presumably you have something similar15:40
benjirogpeppe: let me try that...15:40
rogpeppebenji: my "ec2ssh" script is something like this: ssh -i $HOME/.ec2/rog.pem ubuntu@$115:40
rogpeppebenji: and you can find the dns name from the aws console15:41
benjirogpeppe: no .pem files there for me; is that something I need to get from EC2?15:41
rogpeppebenji: hmm, i can't remember at all!15:42
rogpeppebenji: ah, i think i probably added the key to my aws account15:43
rogpeppebenji: yeah, here: https://portal.aws.amazon.com/gp/aws/securityCredentials#access_credentials15:44
rogpeppebenji: that might mean you can't get ssh access15:44
rogpeppebenji: although... you could just try ssh'ing in and see what happens15:45
benjirogpeppe: I tried, it refuses me15:45
rogpeppebenji: as ubuntu@ ?15:45
benjirogpeppe: oh! nope, let me try that15:45
benjirogpeppe: it worked!15:46
rogpeppebenji: yay15:46
benjirogpeppe: I'm on a call at the moment, but I will dig into this in a couple of minutes.15:47
rogpeppebenji: ok, cool. i suspect it's an amazon transient failure that we should work harder to be more resilient to.15:47
rogpeppebenji: in particular, the metadata service doesn't work reliably15:48
rogpeppetrivial CL to review anyone? https://codereview.appspot.com/735904416:02
rogpeppebenji: that fixes the panic you saw, at any rate16:02
benjirogpeppe: /var/log/juju/machine-0.log on the bootstrap node contains lots of "2013/02/19 15:07:57 JUJU state: connection failed: dial tcp 127.0.0.1:37017: connection refused"16:03
rogpeppebenji: what does the cloud-init log say?16:03
rogpeppebenji: (that one has all the messages printed by the commands run when bootstrapping)16:05
benjirogpeppe: no obvious errors and it ends with "cloud-init[DEBUG]: Ran 9 modules with 0 failures"16:05
rogpeppebenji: hmm. could you paste the last 100 lines or so of it?16:05
rogpeppebenji: it looks like mongodb isn't running, but i'm not sure why16:06
benjirogpeppe: http://paste.ubuntu.com/1683016/16:06
rogpeppebenji: ah, sorry, wrong log16:06
rogpeppebenji: you want cloud-init-output.log16:06
rogpeppebenji: that's the one that juju produces16:07
benjirogpeppe: lots of "2013/02/19 15:07:53 JUJU state: connection failed: dial tcp 127.0.0.1:37017: connection refused" and then a panic16:07
rogpeppebenji: could you paste the 50 lines *before* it started printing "connection failed" ?16:07
benji"ps aux | grep mongo" does not show any mongo process running16:08
benjik16:08
rogpeppebenji: yeah, i'm pretty sure mongo never started - probably the download failed, but i'm interested to find out why, to add to the collection of transient errors we've seen16:08
benjirogpeppe: yep:16:09
benjihttp://juju-dist.s3.amazonaws.com/tools/mongo-2.2.0-quantal-i386.tgz:16:09
benji2013-02-19 14:57:53 ERROR 404: Not Found.16:09
rogpeppebenji: ah!16:09
benjishould I be using something other than quantal?16:09
rogpeppebenji: you should be using amd6416:09
benjimmm16:09
rogpeppebenji: i don't think anyone's build the mongo version we need for 38616:10
rogpeppes/build/built/16:10
benjihow do I specify that in .juju/environments.yaml?16:10
rogpeppebenji: it's a pity that the failure mode is so darned obtuse. we'll have to think how to make that better.16:10
rogpeppebenji: if you're using --upload-tools, you can only use your current architecture16:11
rogpeppebenji: because that's the arch that the tools are built for16:11
benjihmm, so step 1) upgrade my development machine16:11
rogpeppebenji: yeah. sorry we don't have a better story here. step 1 could be "compile mongo db with ssl enabled for i386"...16:12
rogpeppebenji: hmm, maybe i'll have a go at doing that. it might have finished by morning.16:13
benjiit would be good, but realistically it won't be smart for me to be an outlier here, I need to match as closely as possible how you guys work so we don't continually run into these kinds of issues16:14
rogpeppebenji: hmm, maybe it's too much distraction for now, sorry.16:14
benjino worries16:14
rogpeppebenji: somewhat surprisingly, there wasn't an outstanding bug, so here it is: https://bugs.launchpad.net/juju-core/+bug/113020916:18
_mup_Bug #1130209: we need a mongodb compiled for i386 <juju-core:New> < https://launchpad.net/bugs/1130209 >16:18
niemeyerA bit late, but hello all! :)16:22
rogpeppeniemeyer: hiya16:23
rogpeppeniemeyer: william's sick today - can i bend your ear for a sanity check, by any chance?16:24
niemeyerrogpeppe: Yeah, I'm just busy sorting something out ATM16:25
rogpeppeniemeyer: np16:25
niemeyerrogpeppe: and have to had to lunch in a second16:25
niemeyerrogpeppe: Meeting at 16, in 3h.. I think we can do something between lunch and that16:25
rogpeppeniemeyer: give us a ping when you have a mo, thanks!16:25
rogpeppereview anyone? https://codereview.appspot.com/732605216:49
dimiternrogpeppe: i got it16:49
rogpeppedimitern: thanks!16:49
bacrogpeppe: i'm using this build of mongo+ssl from julian's PPA:  https://launchpad.net/~julian-edwards/+archive/mongodb17:09
rogpeppebac: ok. presumably that doesn't help with bootstrap, because that binary isn't in the public bucket17:09
bacah17:10
rogpeppebac: i did have the credentials once.... i'll have a look and see if i kept them.17:10
rogpeppebac: ha, i think i might just be able to do it17:11
dimiternrogpeppe: reviewed17:12
rogpeppedimitern: tyvm17:12
dimiternrogpeppe: ym17:14
dimiterni'm off, good night guys17:14
rogpeppedimitern: g'night17:14
bacrogpeppe: that would be great if you could17:25
rogpeppebac: i'm just trying to work out which of those packages has the files i'm after17:25
rogpeppebac: and fumbling my way through unarchiving .deb files (i've managed to avoid delving into all the ppa stuff before)17:26
niemeyerrogpeppe: Hey, what's up?17:30
rogpeppeniemeyer: yo!17:30
rogpeppeniemeyer: just came across severe crackness in juju set/get and just wanted to make sure it *is* crack and that i'm going to do the right thing17:30
niemeyerrogpeppe: Ok17:32
rogpeppeniemeyer: currently, the code in juju set does an explicit remove when a value is set to ""17:33
rogpeppeniemeyer: but if you set it with a yaml file, the value just gets set to "" (and probably fails as a result)17:33
rogpeppeniemeyer: i *think* that we probably want to have the two things be equivalent17:33
niemeyerrogpeppe: how would it fail?17:34
rogpeppeniemeyer: it would fail, i think, because the config validation would expect an integer, but see a blank string17:34
=== deryck is now known as deryck[lunch]
niemeyerrogpeppe: Agreed, they should be the same17:36
niemeyerrogpeppe: An empty value should mean removal17:36
rogpeppeniemeyer: so i'm thinking that juju set service --config config-file where  config-file contains {foo=""} should be the same as juju set service 'foo='17:36
rogpeppeniemeyer: yeah17:36
rogpeppeniemeyer: good17:36
rogpeppeniemeyer: the other crackful thing (i think) is that juju get never shows default values unless they've been explicitly set17:36
rogpeppeniemeyer: it shows 'em all as null17:37
niemeyerrogpeppe: OTOH, it seems awkward to have a setting in a configuration file17:38
niemeyerrogpeppe: with an empty string, on an integer field17:38
* rogpeppe swithers17:38
rogpeppeniemeyer: perhaps we shouldn't allow settings to be reset to their default from a conf file without explicitly setting them to their default values.17:39
rogpeppeniemeyer: i dunno17:40
rogpeppeniemeyer: i like the simplicity of having the yaml exactly equivalent to the command line17:40
niemeyerrogpeppe: I actually think failing in that case is fine17:40
rogpeppeniemeyer: and i did quick probe into #juju and found general agreement.17:41
niemeyerrogpeppe: Actually.. hmm17:41
niemeyerrogpeppe: There is no integer type..17:41
niemeyerrogpeppe: It can't fail17:41
niemeyerrogpeppe: Oh, nevermind17:41
niemeyerrogpeppe: I was thinking of relation-set17:41
rogpeppeniemeyer: ah yes17:41
niemeyerrogpeppe: Yeah17:41
niemeyerrogpeppe: I'd prefer to see "" checked, and null meaning remove17:42
niemeyerrogpeppe: They are inherently different formats.. we can't make them match precisely17:43
rogpeppeniemeyer: the issue was brought home to me particular because the API provides access to yaml-format setting (to allow GUI clients to type in yaml settings and avoid js yaml parsing), and the difference seemed odd.17:43
rogpeppeniemeyer: random opinion from #juju:17:44
rogpeppe[12:24:03] <Daviey> null = None = "" = nonexistent IMO :_17:44
rogpeppeniemeyer: hmm, you're probably right about null being the right thing in yaml. but that means the yaml is strictly more expressive than setting string options (it can make a blank string explictly override a default), and i'm not sure that's right either.17:46
niemeyerrogpeppe: Random opinions without reasoning are hard to evaluate17:47
niemeyerrogpeppe: yaml *is* more expressive17:47
rogpeppeniemeyer: here's the context: http://paste.ubuntu.com/1683371/17:47
rogpeppeniemeyer: yeah, but do we want it to be in this case?17:48
rogpeppeniemeyer: thanks for the input anyway, it's very helpful17:53
niemeyerrogpeppe: np17:56
=== wedgwood is now known as wedgwood_away
=== wedgwood_away is now known as wedgwood
rogpeppe i'm off for the day now, have a good r.o.d. all18:45
rogpeppea new CL in case anyone fancies it: https://codereview.appspot.com/7305101 (and its prereq)18:45
rogpeppefwereade: hope you're feeling a bit better18:45
rogpeppefwereade: see ya tomorrow if so :-)18:46
fwereaderogpeppe, somewhat iffy tbh18:46
rogpeppefwereade: well, don't push it18:46
rogpeppefwereade: i've got a fair few reviews out, nothing too taxing, if you want something not too hard to do :-)18:47
fwereaderogpeppe, don't count on it, I'm afraid, I'm only on for a call18:47
rogpeppefwereade: np18:47
rogpeppefwereade: see ya when i see ya :-)18:48
fwereaderogpeppe, cheers, enjoy your evening18:48
=== deryck[lunch] is now known as deryck
thumpermorning20:37
bachi thumper20:55
thumperhi bac20:55
thumperbac: I see that I'll see you in Atlanta20:56
thumperand more ex-launchpadders20:56
thumperI'm looking forward to it20:56
bacthumper: oh, good.  hadn't seen you on the list20:57
thumperbac: just added myself20:57
thumperbac: and my OCD took over20:57
thumperbac: I had to put the attendees in alphabetical order20:57
thumperit drove me spare20:57
bacoh, i did that yesterday20:57
bac:)20:57
thumperit was partially sorted20:57
bacyes, the top is where i left off20:57
thumperbut people were obviously just appending to the end20:57
bacor CDO as jeff-blue-hair-guy said20:58
* bac is sure that made no sense to anyone20:59
baci've just brought up a new VM and am trying to get juju-core installed and working again.  i get this when trying to install:20:59
bacbac@quantal64:~$ go install -v launchpad.net/juju-core/...21:00
bacwork/src/launchpad.net/juju-core/state/api/apiserver.go:4:2: import "code.google.com/p/go.net/websocket": cannot find package21:00
bacthat appears to be the right way to import websocket, and i'm working with a fresh copy of trunk...21:00
bacfwereade: any ideas about ^^^ ?21:01
fwereadebac, sorry, that is new to me21:02
* fwereade pokes around21:02
fwereadebac, yeah, happen for me as well when I move the installed one out of the way21:03
bacfwereade: this is a fresh vm.  did i forget to grab something?21:04
fwereadebac, hey, wait, did you go get it?21:05
fwereadebac, if you go getted juju-core it would have done it I think21:06
bacfwereade: i did21:06
baci go got it and then i tried to go install it21:06
bacfwereade: i assume the imports from google get installed locally somewhere.  should they be in my GOPATH too?21:07
fwereadebac, yeah, they should have been21:07
bacyeah i have GOPATH/src/code.google.com/p but it is empty21:08
bachmm21:08
bacfwereade: i think i found it.  i didn't install hg...21:09
fwereadebac, ah!21:09
bacor git21:09
fwereadebac, it's a bit crap that they don't warn clearly about that though21:09
bacthat's what i get for working from memory21:09
fwereadebac, that should surely be an error on go get21:10
bacyeah21:10
* thumper was getting confused by the review dates shown21:13
thumperas the review comments were from before it was sumbitted21:13
thumperor submitted even21:13
* thumper is pleased he ran the tests first...21:45
thumperfwereade: to update the diff in the special review tool, to I have to lbox propose again?21:46
thumpernormally I just push21:46
* thumper takes a stab that unary negation is !21:46
fwereadethumper, yeah, lbox propose again -- it will take the opportunity to publish all your review responses at the same time21:47
thumperI already did that21:47
fwereadethumper, sorry, is it not working?21:48
thumperfwereade: style question21:48
thumperfwereade: is_super_command or isSuperCommand (for a variable)21:48
thumperfwereade: what I meant was that I had already published my review responses21:48
thumperand then I ran the tests before committing21:48
fwereadethumper, underscores don't seem to be popular anywhere really except maybe ALL_CAPS_CONSTANTS21:49
thumperand found I had a backwards bool expression21:49
* thumper has been doing python forever21:49
thumperand they are PEP821:49
thumperI notice most local variables are not multiple words though21:49
thumperI prefer to show intent21:49
thumperto me, isSuperCommand is harder to read than is_super_command21:50
thumperbut that's just me21:50
davecheneythumper: yeah, go style is camelCase21:50
thumperor issupercommand21:50
davecheneyit is what it is21:50
* thumper understands21:50
* thumper kicks the camel21:50
davecheneyit sort of falls out of the export rules21:50
thumperwhy?21:51
thumperthat's fine for functions21:51
thumperbut what about variables, why the same?21:51
davecheneythe export rule applies to all symbols21:52
fwereadethumper, I do know where you're coming from but I guess I was lucky -- I found it relatively easy to dust off the camelCaseReading part of my brain21:52
thumperI can get used to anything21:52
thumperI was just wondering on the rationale21:52
* fwereade had never thought of it that way but it makes sense, thanks davecheney21:52
thumperfwereade: I find it hard to work out what the state of the review is...21:54
thumperfwereade: https://codereview.appspot.com/7338048/21:54
thumperfwereade: had two people look21:54
thumperI've replied to the comments, making changes21:54
thumperone bit was a non-trivial change21:54
thumperwhat's the situation now?21:55
thumperalso, if I set the commit message on the merge proposal, will lbox merge use it?21:55
fwereadethumper, you've replied to the stuff in patch set 1 and it's now waiting for further review if required21:55
thumperfwereade: but how do I know when it's all good?21:56
thumperThere were two lots of comments on rietveld, but only one on the merge proposal21:56
thumpersince I tend to drive from email, it is confusing21:56
fwereadethumper, you have already got two LGTMs, indicating that the reviewers trust your taste/judgment enough to handle the suggestions appropriately and land it21:56
fwereadethumper, yeah, launchpad rather fades into the background with lbox21:57
thumperwow, trust on the first merge proposal21:57
thumperthat is something new to me :)21:57
davecheneythumper: try something more audatious next time21:59
thumperdavecheney: heh22:00
thumperhmm...22:03
thumperjust merged trunk22:03
thumperand getting failures with openstack environ tests22:03
thumperlocal_test.go line 27122:03
thumperI may hit timing issues differently to others22:04
thumperI have a fast newish i7 with a fast SSD22:04
thumperI hit issues booting the damn machine22:04
thumperhitting a race condition in X initialisation22:04
thumperthe test seems to pass the second time through22:05
thumperfwereade: so lbox merge is the way to go?22:07
* thumper takes a stab22:08
thumperthe answer to the "does it use the commit message" is no, no it doesn't22:09
fwereadethumper, sorry, lbox submit22:14
thumperfwereade: I've dont it already :)22:14
thumperand it says done.22:14
thumperso I guess it is done22:14
* thumper looks at the trunk branch on lp22:14
thumperyep22:15
thumper\o/22:15
thumperfirst commit into trunk22:15
* thumper does a little dance22:15
* fwereade cheers at thumper22:16
fwereadethumper, I thought it was a really nice change btw, thank you22:16
thumperfwereade: np, I have the help command lined up next22:16
fwereadethumper, it seems to have the log message from the description?22:16
thumperit is coming along really nicely22:16
fwereadethumper, excellent22:16
* davecheney loves how 'software updater' doesn't actually update softeware, just segfaults22:17
thumperfwereade: I overrode the message that the 'lbox submit' popped up with what I had typed into the commit message22:19
thumperthat is why it looks the same22:19
thumperdavecheney: for the Assert methods...22:34
thumperis there an AssertTrue and AssertFalse?22:34
thumperand does Assert(value, IsNotNil) work?22:34
davecheneythumper: no, there is no AssertTrue or AssertFalse in gocheck22:36
thumperdavecheney: so Assert(value, Equals, true) ?22:37
davecheneythumper: that is correct22:37
davecheneyalso22:37
davecheneyc.Assert(err, NotNil)22:37
thumperso, can we add it?22:37
thumperta22:37
davecheneythere is also the more verbose22:37
davecheneyc.Assert(err, Not(Equal), nil)22:37
thumperhave you seen the matchers concept?22:37
davecheneywhihc problably won't work first time22:37
davecheneyi just guessed22:37
thumperthis is used by testtools (the python module)22:38
thumperso...22:38
davecheneycan we add it22:38
davecheneythe project is owned by niemeyer on his private brnch22:38
thumper<python>  assertThat(some_value, Equals(10))22:38
davecheneyi have a few patches waiting in the queue to land there that fix some data races22:38
thumperassertThat(some_value, IsNil())22:38
thumperetc22:38
thumperI always found the matchers a really nice way to write readable tests22:39
bigjoolsmatchers are awesome22:44
bigjoolsporting testtools to Go would make Go a lot nicer to use22:44
thumperagreed22:45
niemeyerdavecheney: Still on my queue, and shouldn't take long now. Sorry for the delay.22:57
niemeyerNotNil exists, btw22:58
niemeyerAh, you said so22:58
niemeyerAssertTrue vs. Equals, true is pretty much the same.. we don't need aliases to that, IMO22:59

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