/srv/irclogs.ubuntu.com/2012/10/08/#juju-dev.txt

fwereade_davecheney, are you seeing http://paste.ubuntu.com/1266985/ ?06:31
davecheneynope, but i haven't updated recently06:32
rogpeppedavecheney, fwereade_: mornin'06:34
fwereade_rogpeppe, heyhey06:36
davecheney... obtained map[string]interface {} = map[string]interface {}{"title":"My Title", "username":"admin001", "skill-level":9000}06:38
davecheney... expected map[string]interface {} = map[string]interface {}{"title":"My Title", "username":"admin001", "skill-level":9000}06:38
davecheneyo_0!06:38
fwereade_davecheney, huh06:39
TheMuemorning07:10
davecheneymorning07:10
fwereade_TheMue, heyhey07:16
TheMuedavecheney and fwereade_: hi07:16
Arammorning.07:26
fwereade_Aram, heyhey07:27
TheMuehi amithkk07:35
TheMueoops07:35
TheMuehi Aram07:35
wrtpfwereade_:  i was thinking about your Context interface, and wondering if the MapChanger type was necessary. i was thinking something like this might work a tad more neatly: http://paste.ubuntu.com/1267165/09:41
wrtpfwereade_: probably this is just bikeshedding tho'09:46
fwereade_wrtp, I think I'd prefer to keep being able to just return a ConfigNode there09:47
fwereade_wrtp, Context.RelationId(); Context.RemoteUnitName()10:08
fwereade_wrtp, niemeyer has suggested adding error returns10:09
fwereade_wrtp, ISTM that, in practice, what this does is bloat the crap out of all the code that uses it10:09
wrtpfwereade_: i was trying to see the interface from the context of a user of it. ISTM that it would be nice if it mapped fairly closely to the interface provided to the hooks. but i see yr point about just returning ConfigNode10:10
fwereade_wrtp, can you offer a perspective from which this change is a good thing?10:10
wrtpfwereade_: as a consumer of the interface, it's not really clear why the MapChanger type is there.10:11
fwereade_wrtp, feels to me like it just means more code, with error paths that can't happen10:11
wrtpfwereade_: oh, sorry, you mean adding error returns?10:12
fwereade_wrtp, yeah10:12
wrtpfwereade_: error returns from what?10:12
fwereade_ wrtp, Context.RelationId(); Context.RemoteUnitName()10:12
wrtpfwereade_: so niemeyer would like you to return an error rather than relation-id == -1?10:13
fwereade_wrtp, yeah10:13
wrtpfwereade_: i'm with you tbh. there's only one kind of error that can happen, and it's not really an error.10:14
fwereade_wrtp, and I was ok with this, it seemed reasonable, until it came to actually switching the commands over to use the interface10:14
wrtpfwereade_: returning an error makes it look like all kinds of bad things could happen10:14
fwereade_wrtp, yeah exactly10:14
wrtpfwereade_: there is another possibility, i suppose10:15
fwereade_wrtp, trying to *use* that interface has put me in a totally foul mood10:15
wrtpfwereade_: which is to have an IsRelationContext (or something) method, and make Context.RelationId panic if called when IsRelationContext is false.10:15
=== TheMue_ is now known as TheMue
wrtpfwereade_: that way you make the precondition clear, and there's no way you can inadvertently get it wrong.10:16
fwereade_wrtp, tbh I would like to take it further, and use HasRelation to guard Relation10:16
fwereade_wrtp, hell, HasRemoteUnit for RemoteUnitName10:17
fwereade_wrtp, that might lead to code that doesn't make me want to slit my eyes10:17
fwereade_wrtp, might actually even be more readable10:17
wrtpfwereade_: that sounds reasonable to me10:18
wrtpfwereade_: i don't know that it'll make niemeyer happy though. you can still run RelationId and forget it might be invalid. you'll just get a panic if you do that.10:19
* fwereade_ goes off for a ciggie and a grumble to himself while he tries to figure out whether it's even worth bothering to change anything until niemeyer comes online10:19
fwereade_actually, going to get some food, bbiab10:22
wrtpfwereade_: one other possibility: http://paste.ubuntu.com/1267207/10:24
fwereade_morning niemeyer12:00
fwereade_niemeyer, I'm finding the error returns from RelationId and RemoteUnitName to be extremely unwieldy... I think the biggest problem is that the errors imply that more could go wrong than just ErrNoRelation etc12:01
fwereade_niemeyer, I'm wondering how you'd feel about pairs like HasRemoteUnit() bool and RemoteUnitName() string, and a requirement that clients look before they leap?12:03
niemeyerfwereade_: Good morning12:14
niemeyerMorning all12:14
fwereade_niemeyer, heyhey12:14
niemeyerfwereade_: It wouldn't really help much in the sense I was considering12:14
niemeyerfwereade_: The point was really to prevent using context.RelationId() as if the relation existed, when in fact it doesn't12:15
niemeyerfwereade_: We have the same logic in state itself, for example12:15
niemeyerfwereade_: E.g. unit.InstanceId()12:15
fwereade_niemeyer, I just don't see how it's anything but obfuscatory to have to go through identical error checking on RelationId and Relation12:17
niemeyerfwereade_: Do you have the paste at hand?12:18
niemeyerfwereade_: Actually, it was already a review wasn't it12:18
* niemeyer looks12:18
fwereade_niemeyer, yeah12:18
niemeyerfwereade_: Alternatively, what about having RemoteRelation (analogous to RemoteUnitName) that returns (ContextRelation, error), possibly returning ErrNoRemote, and moving Id to within ContextRelation12:24
fwereade_niemeyer, not sure about the name; where does Remote come in? and actually I don't think we even need the ID once we've got the relation...12:27
niemeyerfwereade_: The name doesn't sound great indeed12:27
fwereade_niemeyer, quick access to the current relation would be a good thing though12:28
fwereade_niemeyer, but still, RemoteUnitName... in that case I really don't think we want any sorts of errors: I really don't see that checking for 2 different possible error kinds (one of which can't happen, but the interface says it might) is any better than `if ctx.RemoteUnitName != ""`12:29
fwereade_niemeyer, sorry, `if ctx.RemoteUnitName() != ""`12:30
fwereade_niemeyer, does the switch from struct to interface really mandate that we codify every zero value as a specific error?12:30
niemeyerfwereade_: Which error is it saying it can't happen but the interface says it might?12:30
fwereade_niemeyer, any error other than ErrNoRemote12:31
niemeyerfwereade_: Sorry, I think I'm still a bit slow today12:31
fwereade_niemeyer, if I want to get a remote unit name, I now have to worry about 3 code paths12:31
niemeyerfwereade_: Even if there's a single error, that's still a reason to report it.. (?)12:31
fwereade_niemeyer, doesn't exist; does exist; something else went wrong12:31
fwereade_niemeyer, the something else is not possible12:32
niemeyerfwereade_: What something else?12:32
niemeyerfwereade_: Sorry12:32
fwereade_niemeyer, anything12:32
niemeyerfwereade_: Erm.. great12:32
niemeyerfwereade_: Foo12:32
fwereade_niemeyer, unless we're saying that RemoteUnitName can *only* return ErrNoRemote?12:32
niemeyerfwereade_: I'm completely out of context12:33
niemeyerfwereade_: RemoteUnitName may be called when there's no remote unit name.. there are two ways to go about this: 1) We panic; 2) We error12:33
niemeyerfwereade_: There's no in-between12:33
niemeyerfwereade_: If you want to panic, and use IsRelationHook or similar, that sounds fine too12:36
fwereade_niemeyer, wooo!12:36
fwereade_niemeyer, cool, i thought I'd suggested that clearly at the beginning :012:36
niemeyerfwereade_: I don't recall a panic suggestion, but perhaps I just missed it12:37
fwereade_niemeyer, "require that clients look before they leap"12:37
niemeyerfwereade_: Cool, sorry, I didn't think that was it12:37
niemeyerfwereade_: +1 either way12:37
fwereade_niemeyer, that was I admit a sl obscure way to put it :)12:37
fwereade_niemeyer, ok, I'll try those12:38
fwereade_niemeyer, thanks12:38
niemeyerfwereade_: np, and sorry for being slow to understand12:40
fwereade_niemeyer, no worries :) am just pondering names... ActiveRelation? CurrentRelation?12:40
niemeyerfwereade_: HookRelation?12:41
fwereade_niemeyer, +1, thanks12:42
niemeyerfwereade_: I find the interface slightly non-conventional, in that rather than doing "if err != nil", we'll be doing the same thing with HasFoo in several places13:21
niemeyerfwereade_: We can go ahead and see, though, if you're happy with this13:21
fwereade_niemeyer, I'm not sure I have the best solution, but the error-juggling was getting painful... it will probably evolve a touch if we run with it for a bit and listen to what it's saying :)13:22
niemeyerfwereade_: Sure.. error handling is painful, but part of the deal13:23
niemeyerfwereade_: In some cases, it looks like it went too far13:23
niemeyerfwereade_: E.g. Relation(id int) needs an error return, I think13:23
fwereade_niemeyer, well, I'm not usually bothered by error handling :)13:24
niemeyerfwereade_: Otherwise you'll simply be doing if HasRelation(id); Relation(id) all the time13:24
rogpeppehuh, maybe i wasn't attached13:24
rogpeppefwereade_: did you see my alternative suggestion above?13:24
fwereade_rogpeppe, I did... wasn't quite sure what you were suggesting, because it seemed to drop a lot of important bits from the interface13:25
rogpeppefwereade_: oh, i hadn't intended to drop anything.13:25
rogpeppefwereade_: i omitted ContextRelation because it was the same as before13:25
fwereade_niemeyer, well, not really... I'll be making use of *knowing* that a given relation exists, I think13:26
niemeyerfwereade_: How do you know it?13:26
niemeyerfwereade_: The only way is calling HasRelation, I believe13:26
fwereade_niemeyer, well, at the moment I know it because in all the commands that need relations Init will fail if the relation isn't valid13:27
fwereade_niemeyer, I'm not sure it's really worth checking that the relation is valid *every* time we're about to use it13:28
fwereade_niemeyer, against the same, frozen, context...13:28
niemeyerfwereade_: That's exactly the danger13:28
niemeyerfwereade_: You don't want to check that it is valid, but you have to anyway, or you have to memorize the code paths13:28
niemeyerfwereade_: so that it doesn't blow up13:28
niemeyerfwereade_: Writing down err != nil is cheap.. memorizing code paths is not13:29
niemeyerfwereade_: Either way, LGTM.. I'm happy to see the code and bother you later :)13:29
fwereade_niemeyer, we'll see how much it makes your eyes bleed when I propose then :)13:29
rogpeppefwereade_: suggestion in full: http://paste.ubuntu.com/1267395/13:30
niemeyerfwereade_: My eyes won't bleed.. I'll simply laugh the first time we get a panic13:30
fwereade_niemeyer, heh :)13:30
fwereade_rogpeppe, yeah: how do I get an arbitrary relation out of that?13:30
rogpeppefwereade_: ctxt.RelationContext().Relation(id)13:31
rogpeppefwereade_: one final alternative: http://paste.ubuntu.com/1267396/13:31
rogpeppefwereade_: then it would be: ctxt.(RelationContext).Relation(id)13:31
fwereade_rogpeppe, and in a non-relation hook?13:31
niemeyerrogpeppe: Are you really suggesting we have both ContextRelation and RelationContext?13:31
rogpeppefwereade_: ah, yeah13:31
rogpeppeniemeyer: i thought it seemed reasonable, in the erm... context.13:32
fwereade_niemeyer, well, we already do, but I hope it will become nicer :/13:32
niemeyerfwereade_: We do!?13:32
rogpeppeniemeyer: they mean quite different things, so i think it's not unreasonable to have those names13:32
fwereade_niemeyer, we have a concrete RelationContext type and your suggested ContextRelation13:32
niemeyerrogpeppe: I think it's completely crackful13:33
rogpeppeniemeyer: ContextRelation represents a particular relation; RelationContext represents a particular context.13:33
rogpeppeniemeyer: but obviously mileage varies...13:33
niemeyerrogpeppe: This is insane, soryr13:33
fwereade_niemeyer, that's why I liked the idea of a  jujuc.Relation interface -- IMO that is perfectly distinct from state.Relation13:33
rogpeppefwereade_: i like that too.13:34
niemeyerfwereade_: Why do we have both?13:34
fwereade_niemeyer, bear in mind that RelationContext will almost certyainly not keep that name, though13:34
niemeyerfwereade_: Ahhh, okay13:34
fwereade_niemeyer, well, we have a concrete type we're trying to hide behind an interface13:34
niemeyerfwereade_: Yes, and that concrete type doesn't live in the same package13:34
fwereade_niemeyer, not yet13:34
niemeyerfwereade_: Or won't (thinking end goal)13:34
niemeyerfwereade_: We can call it Mama for now13:35
fwereade_niemeyer, haha13:35
niemeyerfwereade_: :)13:35
niemeyerfwereade_: What I'm really interested on is where we're headed13:35
niemeyerfwereade_: The concrete type can have exactly the same name13:36
niemeyerfwereade_: Under the uniter or whoever will have the concrete implementation13:36
fwereade_niemeyer, I *think* I know, roughly, but the final shape is contingent on what I do with Relationer/RelationContext... and I don't have the foresight to know exactly how that will look until I'm free to hack them around a bit behind an interface, so I can experiment without spending 99% of my time fixing the build ;p13:37
niemeyerfwereade_: I thought RelationContext was quite clearly being defined by the ContextRelation interface, which will of course need a concrete implementation13:37
fwereade_niemeyer, sure, yes; so, you're right, it would make most sense to call it uniter.ContextRelation (unless it ends up in hook, which I think it will)13:39
niemeyerfwereade_: Yeah, in hook or wherever the concrete implementation ends up being.. it just feels like at least that portion of its role in the problem we're defined now..13:40
niemeyerdefining13:40
fwereade_niemeyer, but I believe it will come to include some of Relationer's responsibilities, and that the rest of Relationer will migrate into a new type13:40
niemeyerfwereade_: Understood, that stuff I'm less sure/aware about13:41
fwereade_niemeyer, in particular, I'm not sure whether that new type is going to be in uniter or hook13:41
fwereade_niemeyer, (well, *I* am as sure as I can be at this stage that it'll be in hook... but that's too many reviews in the future for that to hold much verifiable water)13:42
niemeyerfwereade_: Same here. Happy to see that stuff growing organically so we get a feeling of it while we go and don't spend too much time bikesheding on stuff that we can't really get right without further insight.13:42
niemeyerrogpeppe: This is ready on the pipeline, btw: https://code.launchpad.net/~rogpeppe/juju-core/105-cloudinit-initial-password/+merge/12822213:43
rogpeppeniemeyer: i realise. unfortunately it doesn't pass live tests, and i'm working on fixing that.13:44
niemeyerrogpeppe: Super, thanks13:44
fwereade_niemeyer, rogpeppe: btw, I misspoke earlier, I *do* need an Id() on ContextRelation, but that is not a big deal13:44
niemeyerfwereade_: Agreed, it makes sense anyway13:45
=== niemeyer_ is now known as niemeyer
niemeyerfwereade_: Reviewing the follow up now13:56
niemeyerfwereade_, rogpeppe, Aram: Btw, for synchronization, I intend to change state so it doesn't create the config nodes on demand, and instead handles them upfront at proper control points13:57
niemeyerI'll do that after I clean up the reviews13:57
fwereade_niemeyer, cool, thanks13:57
rogpeppeniemeyer: that seems like a good thing13:57
niemeyerfwereade_: This is part of multi-config blah, btw13:57
Aramniemeyer: finally we change that. thank you.13:57
niemeyerAram: np13:57
fwereade_niemeyer, <313:57
niemeyerfwereade_: https://codereview.appspot.com/6624062/diff/3001/worker/uniter/jujuc/config-get.go13:58
niemeyerfwereade_: Are these removals intended?13:58
niemeyerHmm13:59
fwereade_niemeyer, yeah, I moved the logic behind Config() in HookContext, in the interest of implementing the interface "correctly" without duplicating the logic13:59
fwereade_niemeyer, I am aware it's not actually correct13:59
fwereade_niemeyer, but it's pre-existing and I'm resisting a lot of tempting rabbit holes in this pipeline13:59
niemeyerfwereade_: Cool13:59
niemeyerfwereade_: That's okay.. I just don't want us to mistakingly screw up Dave's efforts of having working charms14:00
fwereade_niemeyer, trust me, that thought was high up in my mind :)14:00
niemeyerfwereade_: Thanks14:00
fssniemeyer: I've sent two new CL's this morning14:09
fssniemeyer: https://codereview.appspot.com/6621062/ and https://codereview.appspot.com/6618064/14:09
niemeyerfss: Thanks14:10
fssniemeyer: after 6621062 get merged, I will start to send iamtest package (it uses RequestIdResp)14:10
niemeyerfwereade_: Review sent14:12
fwereade_niemeyer, tyvm14:13
niemeyerfwereade_: np14:13
fwereade_niemeyer, the public fields remain because the next step (after switching the commands to use the interface) will be to move the concrete HookContext into uniter... which will break the jujuc tests if they can no longer construct a HookContext neatly14:15
fwereade_niemeyer, they won't be there for long...14:15
fwereade_niemeyer, because the followup will be to write the command tests against a local implementation of the interface14:15
niemeyerfss: First looks nice.. just a couple of trivials14:16
fwereade_niemeyer, and re stupid doc comments... is it better IYO to leave them blank? or to duplicate the interface comments?14:17
niemeyerfwereade_: Okay, that's fine then, but let's show the path forward rather than documenting the transition as permanent then14:17
niemeyerfwereade_: Just leave blank IMO14:17
niemeyerfwereade_: They're documented in the interface14:17
fwereade_niemeyer, cool, I was going to do that and then I freaked out at the sight of a whole screen without comments ;p14:17
niemeyerfwereade_: Regarding _, can we please have a TODO comment inside the type explaining what we're doing, and tweaking the actual type docs so it doens14:18
niemeyerdoesn't feel like the status quo is intended as permanent14:18
fwereade_niemeyer, absolutely so14:19
niemeyerfwereade_: Thanks a lot14:19
niemeyerfss: Second reviewed too.. good stuff as well with a trivial14:23
fssniemeyer: cool :) I'm addressing your comments right now14:24
fwereade_niemeyer, rogpeppe: btw, is anyone else seeing http://paste.ubuntu.com/1267489/ on trunk? is there something I need to update?14:32
fssniemeyer: thanks for you reviews14:35
Aramniemeyer: fwereade_: what do you want the new service relations watcher to return, []int?14:52
niemeyerAram: +114:53
Arambecause we don't have a function that takes an integer relation id and returns a relation ATM.14:53
Aramok, so I'll add that function then.14:53
niemeyerfwereade_: I'm not sure.. I can't see the failure here14:54
niemeyerI'll step out for an early lunch.. biab for more fun14:56
fwereade_Aram, sgtm15:00
fwereade_Aram, I guess you're not seeing the failure I linked above?15:00
Aramno, I do not.15:00
Arameverything is fine here.15:00
fwereade_Aram, cool, thanks15:01
mrammUS Holiday today so I will only be around sporadically15:20
Aramhave fun15:22
rogpeppeniemeyer: a trivial lbox fix for a panic i just had: https://codereview.appspot.com/6632043/15:22
rogpeppeniemeyer: PTAL at this - i had to make a few more changes to get all the tests to work correctly. (i changed the dummy provider to check EntityName too to catch the errors i was seeing in the live tests) https://codereview.appspot.com/661205415:27
rogpeppefwereade_: yes, i see that failure too15:44
fwereade_rogpeppe, ah, phew, I'm not insane :)15:44
rogpeppefwereade_: i'll have a look at fixing it, one mo15:44
fwereade_rogpeppe, you rock :)15:44
rogpeppefwereade_: i haven't fixed it yet :-)15:45
fwereade_rogpeppe, FWIW I think the deferred StopInstances just below that block is a bit too low down15:45
fwereade_rogpeppe, er just above15:45
rogpeppefwereade_: agreed15:45
rogpeppeTheMue: ping15:46
TheMuerogpeppe: pong15:46
rogpeppeTheMue: i see a test failure in trunk that seems to be connected with port handling15:47
rogpeppeTheMue: do you see the same failure?15:47
TheMuerogpeppe: for the dummy provider? just submitted the fix15:47
rogpeppeTheMue: ah, ok, cool15:47
rogpeppeTheMue: although... i did just pull and i still see the failure, i think15:48
TheMuerogpeppe: the test for the global firewall mode, which works fine for ec2 local and live, fails, my fault15:48
rogpeppeTheMue: yeah, i still see the failure.15:48
TheMuerogpeppe: eh, ok, wrong wording, i made a proposal, not submitted it15:49
rogpeppeTheMue: ah!15:49
rogpeppeTheMue: link?15:49
rogpeppeTheMue: (i don't see many proposal emails sadly)15:49
TheMuerogpeppe: https://codereview.appspot.com/6635043/15:49
TheMuerogpeppe: i wanted to extend the firewaller for the global mode and then i discovered the failure15:50
niemeyerrogpeppe: Looking15:59
niemeyerrogpeppe: Thanks for the lbox fix15:59
rogpeppeniemeyer: yw15:59
Aram<rogpeppe> TheMue: (i don't see many proposal emails sadly)15:59
AramI see too many15:59
Aramlike 3 for each proposal or something16:00
Aramrogpeppe: would you take some of mine?16:00
niemeyerAram: Yeah, sorry about that.. haven't yet found a way to have comments in both Launchpad and Rietveld without that overload16:02
fwereade_rogpeppe, pong, sorry, my sister just called to inform us that she is now engaged to be married16:03
fwereade_so, yay :)16:03
rogpeppeAram: that used to be true for me too16:07
rogpeppefwereade_: cool16:07
rogpeppefwereade_: i don't think i pinged you actually16:07
* fwereade_ reads back and observes that he appears to be on crack16:08
rogpeppeTheMue: you've got a review16:10
niemeyerrogpeppe: cloudinit done too16:17
rogpeppeniemeyer: thanks16:17
niemeyerrogpeppe: np16:17
TheMuerogpeppe: thx, appreciated it, will add it after dinner.16:25
niemeyerfwereade_: Did you figure what was up there?16:25
fwereade_niemeyer, apparently TheMue has proposed a fix16:25
fwereade_niemeyer, I'm holding off on merging anything for the moment in case it's trickier than it looks and demands a revert or something16:26
niemeyerfwereade_, TheMue: What was the bug?16:26
niemeyerfwereade_, TheMue: As far as I recall, the changes to the global port were all optional, and shouldn't have broken tests16:26
TheMueniemeyer: the dummy provider test includes jujutest, but here the global mode failed because it didn't handle it16:27
TheMueniemeyer: now the dummy provider supports the global mode too16:28
niemeyerTheMue: Okay, so I guess we should implement support on it/16:28
niemeyerTheMue: This CL (https://codereview.appspot.com/6635043/) has changes to the firewaller too, in addition to the dummy provider16:29
niemeyerTheMue: Can we fix this bug without touching the firewaller?16:29
TheMueniemeyer: i can split it, yes16:29
niemeyerTheMue: Sounds quite sensible, thanks16:29
TheMueniemeyer:  i detected it when extending the firewaller16:29
niemeyerTheMue: That's the way it always goes.. that's the point to stop a CL and do another one16:30
TheMueniemeyer: yes, would have been better16:30
niemeyerTheMue: Then, can we talk about the theory behind the firewaller change?16:31
TheMueniemeyer: will propose it after dinner, family calls16:31
niemeyerTheMue: Sounds sensible too, thanks16:31
niemeyerrogpeppe: You had a review that looked sensible on TheMue's branch.. would be interested in taking the patch on that one file and pushing something you're happier with, so we can fix trunk?16:52
rogpeppeniemeyer: i can do, but i'm mid-flow currently, and i'd prefer not to lose context until i've fixed this test, if that's ok16:53
niemeyerrogpeppe: Absolutely, thanks16:53
niemeyerfwereade_: Ah, I can reproduce the failures now.. my branch lacked updates16:59
fwereade_niemeyer, jolly good :)17:03
rogpeppeniemeyer: smallish CL. https://codereview.appspot.com/663904317:13
niemeyerrogpeppe: Handling trunk now17:14
rogpeppeniemeyer: (currently verifying that live tests pass)17:14
rogpeppeniemeyer: are you fixing trunk? that's great thanks. if not, i can move on to it now.17:14
niemeyerrogpeppe: I am17:14
TheMueniemeyer: you asked what the firewaller CL has to do with the open task. this one nothing, but while thinking about the firewaller i dicovered that i can't simply close a port in global mode because another service may need it. so i added the open port counter.17:23
niemeyerTheMue: What happens if the firewaller is restarted?17:24
TheMueniemeyer: have to check it again, but as all ports are re-opened then the counter gets new initialized.17:25
niemeyerTheMue: All ports are re-opened!?17:27
TheMueniemeyer: as i said, have to recheck it. but please let me do the dummy CL before17:27
niemeyerTheMue: I'm already working on it.. doesn't solve the problem by itself17:28
niemeyerTheMue: We need more careful consideration of how this is going to work before implementing further ode17:28
niemeyercode17:28
niemeyerTheMue: Please don't worry about it for now, though.. it's late for you17:36
TheMueniemeyer: yes, it is, but it's an interesting topic ;)17:37
niemeyerTheMue: So this may sound interesting: https://codereview.appspot.com/661506317:39
niemeyerrogpeppe: In case you want to check as well, given your prior review: https://codereview.appspot.com/661506317:39
TheMueniemeyer: *click*17:40
rogpeppeniemeyer: LGTM17:41
rogpeppeniemeyer: unfortunately i seem to have broken trunk too. i must have live tested the wrong branch, dammit.17:43
rogpeppeniemeyer: am just testing the (obvious) fix, then will propose17:43
rogpeppeniemeyer: (it's only the live tests that break)17:43
niemeyerrogpeppe: Cool, thanks17:43
TheMueniemeyer: LGTM, like the ports map idea.17:44
rogpeppeniemeyer: 1 line fix: https://codereview.appspot.com/663504517:52
fssniemeyer: can we get those two CLs merged? :-)17:53
niemeyerrogpeppe: Makes sense, LGTM17:53
niemeyerfss: Yeah, will look at them in a sec17:53
rogpeppeniemeyer: sorry about that. i must work out some system for juggling my branches and tests better.17:54
rogpeppeniemeyer: you're holding the lock on juju-core currently17:54
niemeyerrogpeppe: Trying to submit17:54
rogpeppeniemeyer: ah, cool17:54
rogpeppeniemeyer: that's not quick!17:54
fssniemeyer: thanks17:55
rogpeppeniemeyer: ... acquired 12 minutes, 12 seconds ago.17:55
niemeyerrogpeppe: Trust me, I want to submit as much as you do17:56
rogpeppeniemeyer: i was commiserating, not complaining...17:57
rogpeppeniemeyer: i've got to go, but i'll put my submit into a loop until it succeeds17:57
niemeyerrogpeppe: Don't worry, I can submit it once Launchpad works17:58
rogpeppeniemeyer: that would be great, thanks.17:58
niemeyerrogpeppe: np17:58
rogpeppesee y'all tomorrow17:59
niemeyerLaunchpad simply doesn't work18:00
niemeyerApparently I can't commit anything to LP18:15
niemeyerI wonder if it's just me or if it's a general issue18:16
* niemeyer hops onto #lp18:16
niemeyer<beuno> niemeyer, yeah, same here18:21
niemeyerToday is one of those days when the simple things seem unnaturally complex :)18:53
* niemeyer prepares some chimarrĂ£o to relax a bit18:54
niemeyerBlowing away my local repository and starting over worked19:21
niemeyerfwereade_: ping19:55
niemeyerIf someone is up for a simple one: https://codereview.appspot.com/664204619:59
niemeyerNo semantic changes19:59
* fwereade_ needs to restart to complete updates... but is going to subvert power relationships by shutting down instead. ha!22:26

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