/srv/irclogs.ubuntu.com/2012/03/27/#juju-dev.txt

SpamapShazmat: I'm working on adding ssl cert verification to the EC2 provider if the local txaws supports it...00:55
hazmatSpamapS, cool01:35
bigjoolsfwereade_: hello05:27
fwereade_bigjools, heyhey07:00
bigjoolsfwereade_: hey, I was going to ask about doing a constraints thing for maas but I figured it out, seems simple enough07:19
fwereade_bigjools, cool07:20
bigjoolsmight tap you for a review later :)07:20
fwereade_bigjools, will maas expect to understand arch/cpu/mem?07:20
bigjoolsfwereade_: no, only name07:21
fwereade_bigjools, eek, name might be tricky07:21
bigjoolsfwereade_: why?07:22
fwereade_bigjools, I had tried to fight for it back in nov/dec --in orchestra -- on the basis that people will just abuse the classes functionality if we don't provide name07:22
fwereade_bigjools, but in the end I didn't manage07:22
bigjoolsdon't I just add a maas-name to the registered constraints?07:23
bigjoolsthen the provider will deal with it07:23
fwereade_bigjools, in fact I *just* dropped orchestra-name from the branch hazmat and I are planning to roll various constraints/env-settings changes into07:23
fwereade_bigjools, it's not a technical problem, it's a philosophical one... and while I may personally feel that -name constraints are useful enough to warrant a slight loss in, er "purity"07:24
fwereade_bigjools, ...my opinion did not carry the day :(07:25
bigjoolswell this is one of the requirements I was handed07:25
bigjoolsI'm not sure *where* it came from but I suspect the top IYKWIM07:25
fwereade_bigjools, grar (not to you, just to the communication over the last few days)07:25
fwereade_bigjools, if there's any way you can backtrace the requirement it would be a great help07:26
bigjoolsI will check later and let you know07:26
fwereade_bigjools, awesome, tyvm07:27
allenapfwereade_: Good morning :) I have a couple of branches in the review queue for Juju. What's the normal approach for getting a review here? Do I peg someone, or do you all monitor the review queue?08:50
fwereade_allenap, heyhey, hassling people is the recommended method08:50
fwereade_allenap, it's not that we *don't* monitor it, but we can be laxer about it than we should be :(08:50
allenapfwereade_: Can I hassle you then? ;) Of the two, the more important one is https://code.launchpad.net/~allenap/juju/maas-endpoint-url-with-resource-uris/+merge/99353 since it actually makes things work end-to-end.08:51
fwereade_allenap, a pleasure :)08:51
allenapfwereade_: I am much obliged :)08:52
fwereade_allenap, generally LGTM; 2 things (that I'm writing up now for the record): (1) would you make .get and .post public so the tests don't hit internals and (2) we have slightly different formatting conventions: import style is different (see rest of codebase) and we don't like closing brackets (of whatever sort) on their own line09:00
fwereade_allenap, (I'm not sure why we don't like it)09:00
allenapfwereade_: Sure, I'll fix those up. Thanks.09:01
fwereade_allenap, other one LGTM too, just a couple of minors09:11
allenapfwereade_: Awesome, thank you.09:11
fwereade_allenap, np, let me know when they're done and I'll hopefully get around to merging them not-too-long after09:12
fwereade_allenap, and if I make you wait too long, hassle me again ;)09:12
allenapfwereade_: Haha, ta.09:12
wrtpTheMue: morning!09:21
TheMuewrtp: moin, just back from gym09:22
TheMueoh, restart needed, new version09:22
TheMueso, done09:23
hazmatbigjools, we had some of the name discussion yesterday on #cloud-dev, fwiw11:03
wrtpthat lovely moment when you discover that the test you thought you'd just broken has actually been broken all along, for a different reason.11:58
wrtpfwereade_: do you think environments.yaml should fail to parse if unknown fields are used in it?11:59
fwereade_wrtp, kind of, I was amused to discover recently that the schema had "default-ami" while the code (and the users) were using "default-image-id"12:00
fwereade_wrtp, in go, given that we'll be unpacking into an actual type rather than a databag (right?) I don't think that'd be possible though12:01
fwereade_wrtp, so in general I think it's quite nice to be able to accept a config file for a later schema so long as it's not directly incompatible12:02
wrtpfwereade_: ok.12:02
wrtpfwereade_: what wouldn't be possible?12:02
fwereade_wrtp, although how necessary this is does interact interestingly with what we pick for our live-upgrade strategy12:02
fwereade_wrtp, that class of error shouldn't be possible12:02
wrtpfwereade_: it's possible if the field is optional12:03
wrtpfwereade_: and we allow unrecognised fields12:03
fwereade_wrtp, but the field has to exist on the type for the data to reach the provider12:03
wrtpfwereade_: no, the provider can see all the fields - it then puts them in its own data type12:04
fwereade_wrtp, oh, it can see all the fields in the original yaml?12:04
wrtpfwereade_: yes.12:04
wrtpfwereade_: it then chooses which ones to discard.12:04
fwereade_wrtp, ah, ok, hmm12:05
wrtpfwereade_: funny thing is i had a test to check that extra fields generated an error... but i didn't check the error, and it turned out to be failing for a different reason.12:05
wrtps/extra/unknown/12:05
fwereade_wrtp, ouch12:05
fwereade_wrtp, that'll learn ya :p12:05
wrtpfwereade_: yeah, am fixing it now.12:05
wrtpfwereade_: but that leaves me with the question: should it actually *be* an error?12:06
wrtpfwereade_: your anecdote above leads me to think that it should.12:06
fwereade_wrtp, likewise; I just seem to recall niemeyer saying something about the schema stuff that implied it was intended behaviour12:07
wrtpfwereade_: i'll have a word with him later.12:08
fwereade_wrtp, but it was long enough ago that I can't faithfully recall the motivation12:08
fwereade_wrtp, cool12:08
wrtpfwereade_: thanks for the feedback12:08
fwereade_wrtp, a pleasure, as always :)12:08
wrtp:-)12:08
fwereade_allenap, that's merged, ping me when you've handled the conflicts12:20
hazmatits amazing how much more pleasant reviews are with reitveld12:29
hazmatsuch a simple thing12:29
allenapfwereade_: All done.12:29
fwereade_allenap, ack12:29
allenaphazmat: Have you been using reitveld for Juju? The Go work, or for Python too? If the latter I'd like to give it a go if I have another Juju branch.12:31
wrtphazmat: ain't it true12:31
hazmatallenap, both12:31
hazmatallenap, lbox propose -cr from a branch your ready to submit or resubmit12:31
allenaphazmat: Cool, I'll note that.12:31
hazmatthe command is in  the go ppa12:31
hazmatbcsaller, the diff for rel-type now seems to include jimbaker's unit-deploy refactor.. which is already on trunk, that seems off12:32
allenapAre you developing with golang-stable, -tip, or -weekly?12:35
wrtpallenap: weekly12:35
allenapTa.12:35
wrtpallenap: until Go-1 is released.12:35
allenapwrtp: I guess that's not due in time for Precise?12:36
wrtpallenap: i think it probably will happen before precise, but that's only a hunch12:36
wrtpallenap: activity on the golang-dev list has peaked, i think.12:36
wrtpallenap: there aren't many outstanding bugs12:37
allenapwrtp: I ought to get my feet wet then.12:37
wrtpallenap: there's only one Go1=Must issue remaining. woo.12:37
wrtpallenap: and only 5 Priority=Go1 issues12:38
wrtpallenap: down from a few hundred recently.12:38
hazmatbcsaller, merging trunk resolves the diff issues12:38
allenapfwereade_: Oh rats, I completely missed out fixing the imports in get-machines-bug. I'll do that now. Sorry.12:46
fwereade_allenap, np12:46
allenapfwereade_: Done.12:47
wrtplunch!12:49
fwereade_hazmat, how's the environment stuff coming? I've ended up skating close to it and fixing the tests is a bit scary13:10
niemeyerGood morning all!13:13
fwereade_niemeyer, heyhey13:13
niemeyerfwereade_: Yo13:13
fwereade_Daviey, ping13:14
fwereade_niemeyer, I has a concern about constraints13:17
fwereade_niemeyer, bigjools was saying this morning that as far as he knew maas-name *was* a required constraint13:17
fwereade_niemeyer, I didn't find out the ultimate source of the requirement, which wuld have been the most helpful thing to do13:18
fwereade_niemeyer, but there appears to be an expectations problem somewhere and I thought you should probably know ;)13:18
niemeyerfwereade_: I don't know anything about the requirements, but I do a few things about where we're headed too.. it'd be nice to see people coordinating a bit on those matters13:20
fwereade_allenap, merged13:20
allenapfwereade_: Brilliant, thank you.13:20
fwereade_niemeyer, wouldn't it just -- in response to your discussion with hazmat yesterday, he confirmed with [someone maas-related] that there would be no maas constraints13:21
niemeyerfwereade_: Oh, ok then.. so I'm not sure about what is being discussed?13:22
niemeyerfwereade_: maas-name *was* a required constraint, but there won't be any?13:22
fwereade_niemeyer, bigjools seemed to be working on it this morning13:23
fwereade_niemeyer, <bigjools> well this is one of the requirements I was handed13:23
fwereade_ I'm not sure *where* it came from but I suspect the top IYKWIM13:23
niemeyerfwereade_: Sorry.. I'm lost, there won't be any constraints, but bigjools was handed one this morning?13:24
fwereade_niemeyer, I am also lost; this is the problem13:24
niemeyerbigjools: ping?13:25
fwereade_niemeyer, if you feel there's no way to include constraints then that is your call; but I think there's someone somewhere who needs to know about it13:25
niemeyerfwereade_: Sorry, I'm again lost.. when did I say there was no way to include constraints?13:26
niemeyerfwereade_: This isn't in my hands..13:26
fwereade_niemeyer, you apeared to be saying that in G+ yesterday; I clearly misunderstood13:26
niemeyerfwereade_: I said I would definitely have ruled out a few things by now13:27
niemeyerfwereade_: Including both constraints and subordinates13:27
fwereade_niemeyer, ok: then it comes purely down to the issue of "is maas-name philosophically compatible with juju?"13:27
hazmatniemeyer, i pasted you the log from the maas channel yesterday13:27
hazmatwhich amounted to what fwereade_ just said13:27
niemeyerfwereade_: That's not the same as saying there's no way to do it13:27
niemeyerhazmat: Thanks13:28
niemeyerhazmat: Where was that?13:28
hazmatniemeyer, via priv message13:28
niemeyerhazmat: When?13:28
hazmathttp://pastebin.ubuntu.com/900527/13:28
hazmathmm. there's a bit more after that13:29
hazmatnope that's basically it13:31
wrtpniemeyer: do you think environments.yaml should fail to parse if unknown fields are used in it?13:37
wrtpniemeyer: (morning, BTW!)13:37
niemeyerwrtp: Probably in some cases.. if unknown fields to well known environments are used, for example13:38
wrtpniemeyer: i thought it did, but my test for it was wrong. so i'm wondering if schema.FieldMap should fail if extra fields are given, which it doesn't currently. or if there should be some way to do that.13:40
niemeyerwrtp: That was by design13:40
wrtpniemeyer: thanks for the review BTW. all improvements, i think.13:40
niemeyerwrtp: But maybe the design was wrong13:40
wrtpniemeyer: yeah, i thought so.13:41
wrtpniemeyer: could work both ways.13:41
wrtpniemeyer: if we decide we want to disallow extra fields in environments.yaml, then i think there should be an easy way to use schema to do that.13:41
niemeyerwrtp: Agreed13:56
niemeyerhazmat, fwereade_: Mail sent13:56
fwereade_niemeyer, thank you, well put13:57
hazmatniemeyer, sounds good14:02
hazmatdoctors appt, bbiab14:11
TheMuewrtp: see https://codereview.appspot.com/5905064/, I followed your approach with the private updater interface. a pretty neat solution.14:44
wrtpTheMue: thanks. having a look now.14:46
TheMuewrtp: thx14:47
=== hazmat is now known as kapilt
robbiewwrtp: call time?15:08
wrtprobbiew: yup15:08
wrtprobbiew: was deep in review mode!15:09
robbiewwrtp: https://talkgadget.google.com/hangouts/extras/canonical.com/the-hulk-hideout15:09
wrtpTheMue: review delivered15:10
wrtprobbiew: i'm there15:10
TheMuewrtp: seen it15:10
TheMuewrtp: thx15:10
wrtpTheMue: np15:10
robbiewwrtp: interesting...so am I15:11
* robbiew reloads15:11
* wrtp reloads too15:12
TheMuewrtp: interesting thoughts, should discuss them after my chat with robbiew later15:16
TheMuewrtp: update() usage and variable renaming sound good, event handling has to be outlined. currently i've got no clue how we could do it.15:19
wrtpTheMue: sorry, was in my chat with robbiew :-)15:22
wrtpTheMue: i think the event handling stuff is near trivial15:22
TheMuewrtp: i've seen, and in a few moments i am so too :D15:22
wrtpTheMue: ping me when you're out15:23
robbiewTheMue: can we delay our call by 30min...at the top of the next hour?15:23
wrtpTheMue: ok, let's have that discussion now :-)15:23
TheMuerobbiew: it's ok for me, yes15:23
robbiewTheMue: thnx15:24
wrtpTheMue: what's the difficulty with the event handling?15:27
TheMuewrtp: no concrete difficulty, but have to think about it15:31
wrtpTheMue: i *think* that if you just pass an initial event to waiter.init, and have updater.update take the event value, you should be good.15:32
wrtpTheMue: then the various update methods can just check if the event is what they expect. they might even want to close the event channel and stop when the node is deleted actually.15:33
TheMuewrtp: but we also may need an event mask, to accept multiple event types15:34
wrtpTheMue: i don't think so15:34
wrtpTheMue: there's nothing that's saying "this is the event we're accepting"15:34
wrtpTheMue: just pass all events to the update method15:34
wrtpTheMue: then the update method can decide whether to discard them or not.15:35
TheMuewrtp: ok, so you're thinking about a change to updater and watcher, but the current two concrete implementations won't change (a lot). but other concrete watchers may use the passed event?15:36
wrtpTheMue: yeah15:36
TheMuewrtp: sounds good, indeed15:36
wrtpTheMue: and the current ones may do so too.15:36
wrtpTheMue: e.g. for DELETED15:37
TheMuewrtp: to stop work, yes15:38
wrtpTheMue: yeah15:38
TheMuewrtp: what type of event would you pass to init() in case of the current implementations? just EVENT_CHANGED?15:44
wrtpTheMue: EVENT_CHANGED for the ContentsWatcher; EVENT_CHILD for the ChildWatcher15:45
mthaddonniemeyer: any chance you could take a look at those logs and let me know what URL to use for haproxy check for the store?15:46
niemeyermthaddon: Sorry for the delay, will do it15:47
mthaddonthx15:47
TheMuewrtp: yeah, pass that as argument to loop() so it can be used as argument for update()15:47
wrtpTheMue: exactly15:47
TheMuewrtp: an elegant solution15:48
wrtpTheMue: i'm glad to get rid of that first "priming" event... it always seemed like a bit of a hack, but the alternative was worse.15:48
wrtpTheMue: (i mean the artificial event channel)15:49
TheMuewrtp: yip, this "first shot" is a hack15:49
wrtpTheMue: yeah, and no longer necessary :-)15:49
TheMuewrtp: great, love it15:50
wrtpTheMue: nice15:50
wrtpTheMue: am glad!15:50
TheMuewrtp: so, w/o stopping after a DELETED it already works16:00
TheMuewrtp: now i'll add that16:00
wrtpTheMue: cool.16:00
wrtpTheMue: oops, realised i never actually reviewed the testing code.16:01
TheMuewrtp: ;)16:01
niemeyermthaddon: I'll do that right after lunch..16:03
niemeyerbiab16:03
mthaddonthx16:03
robbiewTheMue: ping :)16:11
TheMuerobbiew: pong16:13
robbiewTheMue: 1:1?16:14
TheMueyip, i'm ready16:15
robbiew https://talkgadget.google.com/hangouts/extras/canonical.com/the-hulk-hideout16:15
TheMuerobbiew: one moment, wrong google login16:16
kapiltfwereade_, ping16:22
fwereade_kapilt, pong16:22
kapiltfwereade_, was about to merge force-upgrade branch, when i noticed a test that's failing, and i wanted to talk it over with you..16:22
fwereade_kapilt, sure16:23
fwereade_kapilt, one of mine..?16:23
kapiltfwereade_, specifically its test_workflow/test_upgrade_error_before_hook16:23
kapiltfwereade_, yeah.. its the one that tries to see if the bundle has been downloaded and if so force execution of the hook16:23
kapiltfor upgrade16:23
kapiltbut afaics the upgrade hook was executed, and it failed, and then it was retried without hooks, so it shouldnt' be executed again16:24
kapiltthe upgrade.ready stuff will always return true16:24
kapiltunless it raises an error, in which case its stopped anyways16:25
kapilter. unless prepare raises an error16:25
fwereade_kapilt, yes, that it true, the client did change16:25
fwereade_kapilt, I'm still a little surprised that it's failing16:26
fwereade_kapilt, what's going wrong?16:26
kapiltfwereade_, i removed the bit where it always executes the upgrade hook if upgrade.ready16:26
kapiltsince the fire_hooks will take care of it16:27
kapiltand then the test fails because it didn't execute the upgrade-hook on a retry without hooks16:27
fwereade_kapilt, wait, bundle *can* be none16:27
fwereade_kapilt, when the unit already has the latest charm and ZK knows about it16:28
fwereade_kapilt, in that case we *don't* need to run the upgrade again; and we may or may not want to fire_hooks16:28
kapiltfwereade_, the unit charm id is only sent after the succesful completion of upgrade16:29
fwereade_kapilt, otherwise, we run it again, and we force fire_hooks to True to preserve the guarantee that the first hook to run against a new charm be upgrade-charm16:29
kapiltfwereade_, and prior to the transition there is a check for just that16:29
fwereade_kapilt, the ZK charm id is set once the code has landed; not after the hook has run16:30
fwereade_kapilt, if the hook itself fails then --retry-hooks is a valid parameter: we've already tried to run the hook, as guaranteed, and we're in the realm of manual intervention16:31
kapiltfwereade_, ic16:31
TheMuewrtp: seen your comments, the wrapper is curently - as long as we're discussing - for demonstration purposes, like in my case where i'm interested in changed config nodes.16:32
TheMuewrtp: shall be deleted, when it moves into a real usage16:32
wrtpTheMue: in that case, maybe it would be better as an example function?16:32
kapiltfwereade_, the question is why should we execute the upgrade hook on a retry/resolved without specifying hook retry16:33
TheMuewrtp: it is an examle function, just embedded into the test. *lol*16:33
wrtpTheMue: it's confusing that it looks like a test when it's just a demo.16:33
TheMuewrtp: why the delete of line 189?16:33
wrtpTheMue: it's checked later16:34
TheMuewrtp: as i said, only as long as we are discussing. will be removed when the watcher is accepted16:34
TheMuewrtp: oh, yes, just seen it, my fault16:34
wrtpTheMue: as usual, what you're proposing should be the final thing.16:34
kapiltfwereade_, the situation to avoid is execution the upgrade hook twice for the same upgrade.. i kinda of see the reasoning thoug16:34
wrtpTheMue: if you need a demo, you can use a pastebin16:35
fwereade_kapilt, my understanding is that we're aiming for a guarantee of at least one execution per relevant hook16:35
kapiltfwereade_, this seems simpler if we just set the charm id after the hook exec16:35
TheMuewrtp: pastebin is a bad tool, unordered, no workflow in it, you can't easily see how one paste is related to another one16:36
kapiltfwereade_, definitely, but avoiding extra hook executions where possible is also good16:36
kapiltfwereade_, in this case it does the at least once, but it also does at least twice if the hook failed16:36
TheMuewrtp: a proposal is a proposal, it can be modified, it can be rejected, it can be discussed16:36
fwereade_kapilt, probably slightly so; only consequence is that we potentially end up overwriting stuff the used "fixed" during his previous manual intervention16:36
kapiltfwereade_, oh.. i guess not16:36
wrtpTheMue: it doesn't really matter. we're reviewing the watcher package, not the code that's using it.16:37
fwereade_kapilt, I don't *think* it's always twice16:37
wrtpTheMue: i don't think that demo adds anything to the discussion - it's clear that it's possible to use it that way, i think.16:37
TheMuewrtp: back in a few minutes16:37
kapiltfwereade_, your right its not always twice, the logic here makes more sense now, thanks16:38
kapiltfwereade_, its just that on a forced upgrade we don't want to execute the upgrade hook16:39
kapiltso the logic is a bit at odds with that since it internally forces the executiono when it extracts16:39
fwereade_kapilt, ah-ha... sorry, I totally missed that16:39
kapiltfwereade_, no worries, it was a future use case16:41
kapiltthe future is now ;-)16:41
fwereade_kapilt, ok, actually, I'm confused... why don;t we want to execute the hook?16:41
TheMuewrtp: so, had to fetch the rabbits ;)16:42
kapiltfwereade_, on a forced upgrade we can be in any state16:42
fwereade_kapilt, bingo16:42
kapiltfwereade_, forced upgrade means just put the charm into place16:42
kapiltso its out of band of the workflow16:42
fwereade_kapilt, kinda kills the upgrade-charm guarantee, though, and that makes me a touch nervous16:43
kapiltfwereade_, hence the --force param16:43
kapiltfwereade_, its meant as a developer option per the feedback on list from the buildbot/lp yellowteam16:43
fwereade_kapilt, true, but it would seem appropriate to at least run the hooks for any units that aren't in an error state16:44
fwereade_kapilt, or maybe not16:44
fwereade_kapilt, anyway, do what you have to do ;)16:45
kapiltfwereade_, think about from the responsibilities of an upgrade-hook16:45
kapiltfwereade_, if they have to execute in completely broken environments, there's relatively little hope of writing one correctly16:45
kapilti mean it could be in an install_error.. the upgrade hook wouldn't be able to assume anything about the system16:46
fwereade_kapilt, but if it's just running happily, should we still not execute the hook?16:47
kapiltfwereade_, not if its being forced, because then it has multiple meanings16:47
kapiltthat are contextually dependent on an individual units16:47
kapiltbut your operating on the service16:48
kapiltwe give users the tools to do this correctly, via resolved16:48
kapiltand inform them of the need when doing a normal upgrade16:49
fwereade_kapilt, I'm mainly concerned about charms that store data in their own dir and change its representation in an upgrade hook16:49
fwereade_kapilt, I suppose we could just say "don't do that then"16:50
fwereade_kapilt, but that feels a bit unhelpful16:50
kapiltfwereade_, we already do effectively when we tell them to resolve non started units16:50
kapiltforce is mainly meant for charm authors to more easily iterate on dev16:50
fwereade_kapilt, I guess the consequence is simply that if you do change representation, you should always be prepared for data to be stored in an old format16:51
fwereade_kapilt, still feels unhelpful to me tbh, but at least it's easily stated and only really important to devs16:52
fwereade_kapilt, consider me convinced16:52
fwereade_kapilt, I have to go in a moment, but would you give me a v quick status update on env settings?16:53
kapiltfwereade_, sure, i'm still doing merges and reviews, i'm hoping to get back to it this evening, i'll at least push what i have16:55
fwereade_kapilt, I'm worrying that enough bits of the code end up touching env settings that we're going to require them across a vast majority of the tests, and it scares me16:56
fwereade_kapilt, is this something you've hit?16:56
fwereade_kapilt, or is it just something I'm hitting in trying to make constraints construction provider-dependent?16:56
kapiltfwereade_, not really outside of the provisioning agent16:57
kapiltand the gssm tests16:57
fwereade_kapilt, hmm, ok16:57
fwereade_kapilt, at least I won't have to worry about too many conflicts then16:58
fwereade_kapilt, gtg, may try to find you later tonight16:58
kapiltfwereade_, cheers17:01
TheMuewrtp: test with DELETED works17:01
wrtpTheMue: cool17:01
TheMuewrtp: next propose will rush in in a few moments17:01
wrtpTheMue: i've got to go shortly anyway17:02
TheMuewrtp: ok17:02
kapiltSpamapS, niemeyer, the mir report throughness is impressive17:03
niemeyerkapilt: Indeed.. high quality review17:03
kapiltone more merge, and i'll work on a reply17:04
* kapilt sighs about the lack of time for coding17:04
SpamapSAlways nice to have a fresh set of eyes on things. :)17:06
wrtpgotta go. see y'all tomorrow.17:06
TheMuewrtp: have a nice evening17:07
kapiltniemeyer, incidentally are there any of the specs (jim's or mine) that you didn't feel ready to go in with (minus some polish on each)?17:07
TheMueso, off for now, bye17:14
niemeyerkapilt: Not sure.. I'd have to review them again, but quite a few looked promising17:22
kapiltniemeyer, cool.. also regarding the provider address changing bug discussion from yesterday17:23
kapiltdo you have time to delve into that a bit more17:23
kapiltafaics we don't have many options outside of a timer to update it17:23
niemeyerkapilt: I do.. just give me a couple of minutes as I prepare some post-lunch coffee and I'll be fully ready17:23
kapiltniemeyer, sure17:23
niemeyerkapilt: Ready.. hangout?17:27
kapiltniemeyer, sure, invitet out17:29
kapiltjimbaker, ping18:27
kapiltjust wanted to see if you wanted to chat about the rel-* reviews18:28
jimbakerkapilt, it18:47
jimbakeris fine, but so far they seem straightforward18:47
jimbakerbtw, quick reminder, i will be taking tomorrow off for a vacation day18:48
kapiltjimbaker, cool, i saw it on the calendar18:50
jimbakerkapilt, cool, my kids on are spring break this week, so we will be skiing at vail tomorrow, then they will be in ski school rest of the week18:51
jimbakeror ride school18:51
jimbaker(bringing up snowboards and skis)18:52
kapiltjimbaker, keep in mind, after thursday, there are no more features, only bugfixes.18:52
kapiltjimbaker, so if we want to land  rel-id support, it needs to land before then18:53
jimbakerkapilt, that deadline is fine assuming it's compatible with the relation-id work already in review18:53
kapiltjimbaker, yeah.. it should be that was mostly a syntatic change for rel-id.. i'm going through rel-hook-context right now18:53
kapiltyou'll have another review shortly18:54
jimbakerok, and take a look please at relation-hook-commands18:54
jimbakerkapilt, i see why the relation-id-option branch (i was mistakenly calling it relation-hook-commands, i should know) is not off the kanban, it was marked as honolulu19:01
jimbakernot on the kanbad, rather19:02
jimbakeror whatever19:02
kapiltjimbaker, yeah.. lbox has a bug19:02
kapiltjimbaker, with multiple milestones it  picks the last one it finds, instead of the oldest open19:02
jimbakerkapilt, got it19:02
kapiltjimbaker, the challenge of a consistent view here is interesting19:27
jimbakeryou mean the shared topology aspect?19:27
jimbakerkapilt, ^19:28
kapiltjimbaker, yes19:38
kapiltjimbaker, doing it that way feels a bit too fragile19:38
kapiltjimbaker, i think its better to just get the relations upfront19:39
jimbakerkapilt, you mean cache all available relation contexts?19:40
jimbakerkapilt, i'm not certain about fragility btw19:40
kapiltjimbaker, effectively yes, its basically one round trip to zk to get them all19:40
jimbakerbecause this sort of caching is being used in reading self._topology anyway19:41
kapiltjimbaker, just from a code perspective, not in practice.. passing around topologies.. isn't really right, else we should have one everywhere19:41
jimbakerand iirc there's some code duplication of functionality from other state stuff tehre19:41
kapiltjimbaker, we don't have it in state managers19:41
jimbakerkapilt, agreed19:41
jimbakerbut it's in the hook code19:41
kapiltand this introducing it there.. again it feels like the wrong solution19:41
kapiltjimbaker, its introducing it to relation state manager as well19:42
jimbakeryes... to avoid code dupe19:42
jimbakerbut if we follow the existing hook practice, we would just move that code to hook as well19:42
kapiltwell more than that.. to have some semblance of consistency19:42
kapiltelse rel-id and would disagree possibly19:42
kapiltjimbaker, what existing practice, you mean user hooks?19:43
jimbakerkapilt, let me find the specific example i have in mind...19:43
kapiltjimbaker, what's wrong with grabbing them up front?19:43
kapiltand removing the topology passing?19:43
kapiltthe only time the distinction of what's in the topology is relevant here, is when your fetching relations, if you fetch them up front, your done.19:43
jimbakerkapilt, nothing, except for the fact that there's already precedent for what i did... which might mean, we should fix that part too19:44
kapiltjimbaker, the precendent is on the basis of consistency for a single hook context, not multi-hook contexts19:44
kapiltinstead of weaving them together, compose them19:44
kapiltthat would be simpler, and remove the passing19:45
jimbakerkapilt, that seems like a very reasonable distinction19:45
jimbakerregardless we will have opportunities for inconsistency, just the nature of how we use ZK19:45
kapiltjimbaker, its go's motto ;-)  Don't communicate by sharing memory; share memory by communicating19:45
kapiltjimbaker, the call to get_relations_for_a service is consistent19:46
jimbakerkapilt, i suppose so19:46
jimbakerkapilt, anyway, it's not a very important distinction in my mind - so i'm happy to go with your proposal19:47
kapiltjimbaker, we should talk about the consistency though, it should be clearly convergent in behavior to something consistent19:48
kapiltjimbaker, if a relation departs during execution, the rel hook context still works, and the depart hook is pending19:49
jimbakerkapilt, i would like to point out that the topology is never mutated19:49
jimbakerfor the hook contexts19:49
kapiltjimbaker, sure, but i'm not sure that's relevant, its basically trying to pass it around as a read cache, doesn't change that its being woven through the call stack19:50
jimbakerkapilt, again, it does ensure consistency. but again if we want to read the topology several times, possibly with differences, well, that's fine with me19:51
kapiltjimbaker, since we have a well defined point already that we can ensure consistent view, that's a more appropriate place. its a cost for every hook execution.. true.. but its one round trip to zk, and a few objects. we're executing processes here ;-)19:52
kapiltjimbaker, we shouldn't be reading the topology mulitple times19:52
jimbakerkapilt, i don't think cost has anything to do with it19:52
kapiltjimbaker, well not while the hook is executing19:52
jimbakerkapilt, so what's the plan then?19:52
kapiltjimbaker, what reads the topology?19:53
kapiltdoes a hook context read the topology before your branch?19:53
jimbakerkapilt, i'm pretty sure it does, it's right there in HookContext19:53
jimbaker;)19:53
kapiltdoes the invoker?19:53
jimbakerkapilt, no19:54
kapiltjimbaker, right it was doing that for per hook context consistency19:54
jimbakerkapilt, we keep it separate, since HookContext is in juju.state it is privileged to work with topology19:54
kapiltjimbaker, with multiple hook contexts, and one read you end up passing the topology as a required arg19:54
jimbakerkapilt, so you do want to share it then?19:55
kapiltjimbaker, a helper method in the state.hook module19:55
jimbakerthen it's fine19:55
kapiltjimbaker, not with optional params19:55
kapiltand not weaving sharing topologies into state managers19:55
kapilts/shared19:55
jimbakerkapilt, i see little difference, but it's ok with me19:55
kapiltjimbaker, you up for a g+?19:56
jimbakerkapilt, sounds good to me19:56
kapiltjimbaker, invite out20:00
andrewsmedinahazmat ?21:17
jimbakerkapilt, i think i got the instructions wrong on using lbox21:55
jimbakeri see lbox submit actually merges into trunk21:56
jimbakerthis is rather unfortunate21:56
jimbakeralso i suspect this will now screw up my entire pipeline too once i back out the change21:58
jimbakeranyway, change is now backed out in r50222:08
kapiltjimbaker, ack22:38
kapiltjimbaker, also sent a bit more on the review via reitveld22:39
kapilthm.. that's odd22:39
=== kapilt is now known as hazmat
jimbakerkapilt, thanks22:49
hazmatbcsaller, greetings22:52
hazmatbcsaller, i was just looking over your mp, and it looks like the trunk merge went bad22:52
hazmatbcsaller, specifically it reverts the status-changes commit22:57
bcsallerthose are merged later, but I can check it again22:57
bcsallerwonder why that happened, I've been refactoring status in the later branch anyway22:58
hazmatbcsaller, yeah.. i'm not really able to make sense of what happened to it, i've tried updating to a non head branch and doing the merge, which worked yesterday.. but seems like bzr always wants to merge to head23:01
hazmatnot clear23:01
hazmatandrewsmedina, pong23:01
andrewsmedinahazmat: hi23:02
andrewsmedinahazmat: you made ​​that change in the bootstrap to define configurations of environments?23:02
hazmatandrewsmedina, not yet23:03
hazmatandrewsmedina, although i'm not sure if we're talking about the same thing23:03
hazmatandrewsmedina, you mean the don't sync env every command? and split provider settings out to a different node?23:03
hazmater. every deploy23:04
andrewsmedinahazmat: yes23:08
andrewsmedinahazmat: I'm talking about your branch ~hazmat/juju/environment-settings23:08

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