/srv/irclogs.ubuntu.com/2012/06/01/#juju-dev.txt

hazmatdavecheney, the pa needs a lock around a the ma00:47
hazmater. around the machine state its processing00:47
hazmatto allow for concurrent pa00:47
davecheneyhazmat: yes00:49
davecheneyhazmat: even simpler the PA stores the provider instance id into the state once it is known00:49
* hazmat tries to catch up the on the conversation00:49
davecheneywhich can be used as a sentinal to say 'hey, at least I started this vm, it might be dead now, but I tried'00:49
hazmatdavecheney, sure.. that's what it does currently00:50
davecheneythat would be problematic with multiple PA's all racing to provision machines00:50
davecheneyTBH, i haven't thought about how to solve that yet00:50
hazmatits just a per machine lock op lock, or a even a queue..00:51
davecheneyhazmat: would that be implemented in ZK ?00:51
hazmatdavecheney, sure00:51
davecheneyfinger in the air, maybe that could be done with a new content node /machines/machine-X/state00:52
hazmatthere's recipes for building all of these structures for zk on the zk wiki.. the py zk lib (txzk) has several implemented..00:52
davecheneyi;ll go check that out00:52
hazmat /machines/machine-x/lock i would think00:52
davecheneybut i'll have to moderate that with gustavo's desire to not be too closely tied to SK00:52
hazmator even /machines/provisioning-queue/00:52
davecheneyZK00:52
davecheneyhazmat: sounds like maildir00:53
* hazmat giggles00:53
hazmatwell he wants to maintain the current client api00:53
hazmatso assuming the guarantees are the same, the principles should carry over..00:53
hazmatmongo is consistent and has atomic ops..00:54
davecheneyit's on my pondering queue, but right now we have 0 PA's, so i'm not really focusing on having N PA's yet00:54
hazmatdoing locks, and queues with it is straight forward00:54
hazmatsure..00:54
davecheneyhazmat: that might be simpler00:54
hazmatthe goal seems to be to get to the parity..00:54
davecheneyin mongo, when the client disconnects, do the locks go away ?00:54
hazmatand then flip the bits ;-)00:54
davecheneymy concernt with lock files and shit is recovering from a stale lock00:54
hazmatdavecheney, you record the client and a timestamp on the lock..00:54
hazmatdavecheney, have a look at  the store code..00:54
hazmatit has some locking00:55
davecheneyi'll do so00:55
davecheneyhazmat: in python, what was the result of the tcp connection to zookeeper going away ?00:55
davecheneydid the agent exit, or did you try to recover ?00:56
hazmatdavecheney, it recovers00:58
hazmatdavecheney, there's a connection wrapper that  basically creates an immortal connection00:58
davecheneywhere is that handled ? in the zk library, by trying other replicas ?00:58
davecheneyahh right00:58
hazmatdavecheney, it handles transient disconnects and session expirations00:58
hazmatfor transient disconnect the reconnection is handled by the libzk00:59
hazmatfor session expirations its handled by the wrapper00:59
hazmatalso triggers watches on session reconnect, its a fairly straightforward impl.. http://bazaar.launchpad.net/~juju/txzookeeper/trunk/view/head:/txzookeeper/managed.py01:00
hazmatre mongo.. here's a simple queue impl i wrote with  locking.. effectively each client has to be cooperative about breaking stale locks.. their easy to detect.. and the breaking is just part of the queue impl.01:06
hazmatrog's upgrade solution is odd..01:06
hazmati guess that makes sense.. ma responsible for code upgrade, others sync on that01:07
davecheneyhazmat: what if the tools were a .deb, upgrades would be as simple as something running an apt-get upgrade on every machine01:14
hazmatdavecheney, debs are frought with problems in this context01:18
hazmatdavecheney, across multiple versions of the distro... needs an apt repo maintenance..01:19
davecheneyhazmat: sure, i guess that was a nieve solution01:19
hazmatthe actual download isn't a huge problem01:19
hazmatits just trying to ensure the coordination around it01:19
davecheneyi'm just wondering if we're reinventing dpkg hooks01:19
hazmatdavecheney, how does apt handle multiple versions avail..01:20
hazmatit picks the latest..01:20
davecheneyindeed01:20
hazmatby default anyways..01:20
hazmatdpkg hooks aren't really about cross machine coordination01:20
hazmatthe whole thing becomes much more interesting, and indeed.. simpler when you consider it from a db upgrade perspective01:21
davecheneyno, really just for poking upstart01:21
davecheney'Everyone! Switch to version X!01:21
hazmatwhere you need to everything having the new code ready.. you do a centralized db upgrade.. and then restart everything..01:21
davecheneyi like the use of the state for signalling things like that01:21
hazmatindeed.. that's why we have zk..01:27
wrtpdavecheney: morning!06:43
wrtpTheMue: yo!06:43
TheMuedavecheney, wrtp, fwereade: Morning.06:43
wrtpfwereade: hey!06:43
davecheneywrtp: TheMue fwereade Aloha!06:48
davecheneywrtp: TheMue I have questions about the state06:48
davecheneywho is sober enough to answer them ?06:48
wrtpdavecheney: woke up with a head full of crack after last night's recursive agent discussions...06:49
TheMuedavecheney: Let's try it.06:49
wrtpdavecheney: i'm sober enough but i might not know the answers06:49
davecheneyso, in the latest propose for the PA, gustavo had this concern06:50
davecheneyhttps://codereview.appspot.com/6250068/diff/5004/cmd/jujud/provisioning.go#newcode3706:50
davecheneyTheMue: wrtp after trying all day, I can't actually make the state break, that is, ever return an error06:50
davecheneynor can I observe any of the watchers close on me through rough handling of the zookeeper server06:50
wrtpdavecheney: that's true currently, but might not be in the future, when we're not talking directly to zk (or zk is actually mgo under the covers)06:51
davecheneywrtp: yup, after talking to hazmat he said that in python they also have a wrapper than makes the state immortal and can cope with transient disconnections from the server06:52
wrtpdavecheney: that's controversial...06:52
davecheneywrtp: TheMue my intention was to add a state.IsValid() method somewhere so that the PA could drop out of the loop, make another state connection and try again06:53
davecheneybut without the ability to ever make the damn thing crap itself, it's hard06:53
wrtpdavecheney: what would IsValid test?06:53
wrtpdavecheney: isn't that what the channel returned from zk.Dial is supposed to do?06:53
davecheneywrtp: my idea was it would be set to false it an error (of the sort that GetW or ExistW give)06:53
TheMuewrtp: Yes, good question.06:53
davecheneybut as I can't get it to generate an error ...06:54
davecheneywrtp: IsValid is supposed to detect the 'broken' Gustavo spoke of in that comment06:54
TheMuedavecheney: That's depending on todays gozk. But as Roger said this will change (or at least wrapped as a first step).06:55
TheMuedavecheney: In case of a broken connection the state is not invalid. It's "only" a connection error. Indeed the watcher may be notified if we don't have a mechanism to automatically reestablish it.06:56
davecheneyTheMue: yup, i'm always planning that ZK has a limited shelf life06:56
TheMuedavecheney: But reading and writing of the state is always life.06:56
wrtpdavecheney: i think fwereade did some experiments around breaking zk connections, but i may remember wrong06:57
davecheneyTheMue: so here is the logic, something is receiving from the watcher channel, and it detects channel closed, so we call Stop on the watcher to clean up06:57
davecheneythen before going back into the loop, i need someting like state.IsValid or !isClosed() to say 'don't try this again, it won't do any better this time'06:57
TheMuedavecheney: isDisconnected() or something like that, but please not IsValid().06:58
TheMuedavecheney: Because the state in ZK is still valid.06:58
wrtpdavecheney: you should get an error from the watcher's Stop method, i think06:59
davecheneywrtp: yes, that is another way to do it, but is fraught with difficulties as the error might be wrapped07:00
davecheneywrtp: but if you're saying on _any_ error from stop we should consider the state disconnected and tear everything down07:00
wrtpdavecheney: we should make sure that we make *sure* that a fatal error from zk is passed through in a recognisable way to the Stop return value07:01
davecheneywrtp: can you elaborate on what you mean by recognisable way07:01
wrtpdavecheney: i mean that it should have a known type or a known value07:02
wrtp(probably the former, so we can encapslate the actual zk error)07:03
davecheneywrtp: that is what I was thinking too, rather than error, state.Error07:03
wrtpdavecheney: well, *state.Error returned as an error.07:03
wrtpgotta go to breakfast07:03
davecheneywrtp: of course07:04
davecheneybtw, did aram write Doozer ?07:08
fwereadehey all07:14
davecheneyhas anyone been able to sign up to the HP cloud ?07:15
davecheneyI tried twice today, with my canonical and personal email addresses, but I haven't got a confirmation email back yet :(07:15
wrtpdavecheney: i haven't tried07:17
davecheneywrtp: i emailed jorge to see if he could reach out to a tech contact there07:18
wrtpdavecheney: gustavo says "sign up, give them your credit card details, then send me the account id and the tennant id"07:21
davecheneywrtp: i'm blocked at the 'sign up' stage07:21
wrtpdavecheney: (but obviously that might be hard if they won't let you sign up!)07:21
davecheneyit never sends me the confirmation email07:21
davecheneyjynx!07:22
davecheneyOT: at mailguard, our bot would mute someone if you call jynx07:23
davecheneyit used a levenstein computation to see who to mute07:23
wrtpdavecheney: cool07:25
davecheneyfurther proof that with enough time and perl you can achieve even the most useless of things07:26
wrtpdavecheney: i wonder if there's a go package for computing levenstein distance07:26
davecheneywrtp: wouldn't be hard, i don't think its very complicated to do in code07:28
wrtpdavecheney: agreed. it's nice to be able to take stuff off the shelf though07:29
davecheneyask uriel07:32
wrtpdavecheney: gotta go. have fun.07:37
davecheneywrtp: cya07:37
niemeyerHellos!08:12
rogAram, niemeyer: it'd be nice to be able to talk, eh?08:29
Aramheh, yeah08:29
niemeyerrog: Yeah.. well.. I'm just responding to Dave's email, and then we can move elsewhere to chat as well08:29
niemeyerfwereade: ping08:42
fwereadeniemeyer, pong08:42
niemeyerfwereade: Heya, good morning08:42
fwereadeniemeyer, and yourself :)08:43
niemeyerfwereade: Do you have the RT# for the juju-dev ML?08:43
fwereadeniemeyer, it was set up this morning08:43
niemeyerfwereade: Oh08:43
fwereadeniemeyer, I appear to be an administrator, which I guess I should have expected :/08:43
niemeyerfwereade: Yeah :-)08:43
fwereadeniemeyer, something wrong?08:43
niemeyerfwereade: No, I want to use it :)08:44
niemeyerfwereade: Have you subscribed people to it?08:44
fwereadeniemeyer, not yet08:44
niemeyerfwereade: Ok, would you mind to do that so we can start using it?08:44
fwereadeniemeyer, on it08:44
niemeyerfwereade: Subscribing the obvious candidates, and then mailing juju@ should do it08:44
niemeyerfwereade: Thanks a lot08:45
niemeyerI'll hold off sending the email to Dave to send it to the list instead08:45
fwereadeniemeyer, added08:50
* fwereade worries that he's forgotten someone who will be mortally offended08:50
niemeyerfwereade: juju-dev@lists.ubuntu.com?08:52
fwereadeniemeyer, yeah08:52
niemeyerfwereade: Send an email to juju@ inviting people.. no body will be offended08:52
niemeyernobody08:52
niemeyerfwereade: Is Aram in?08:53
fwereadeniemeyer, yeah08:53
niemeyerfwereade: Superb08:53
niemeyerfwereade: Thanks a lot for taking care of this08:53
niemeyerSending first email08:53
fwereadeniemeyer, a pleasure :)08:53
niemeyerDone08:54
niemeyerLet's see if email still works these days ;-)08:54
* TheMue has the mail in his folder for this list, nice.09:08
niemeyerTheMue: ping09:48
TheMueniemeyer: pong09:49
niemeyerTheMue: I spent some time yesterday with rog and aram09:49
niemeyerTheMue: around the concept of relations and how they were inverted09:49
TheMueniemeyer: I'm listening.09:50
niemeyerTheMue: We got to the conclusion that the original design was actually more future proof that what we have in place in the CL now09:50
niemeyerTheMue: It's very hard to imagine that we'll have a single service participating in a single relation with two roles09:50
niemeyerTheMue: But it's not so much of a stretch to imagine that two services may participate in a relation with the same role09:52
TheMueniemeyer: IC09:52
niemeyerTheMue: E.g. a master with two slaves, two peers, etc09:52
niemeyerTheMue: The new design makes that unfeasible09:52
TheMueniemeyer: Hmm, a change from map[role]serviceKey to map[role][]sericeKey wouldn't help (as a quick thought)?09:53
TheMueniemeyer: With all depending changes naturally.09:54
niemeyerTheMue: Sounds worse than just doing what we had09:54
niemeyerTheMue: map[service key]stuff09:54
TheMueniemeyer: OK09:55
niemeyerTheMue: That said, hold on a moment09:55
niemeyerTheMue: I'll re-review the latest state of that branch.. I'm hoping we can integrate the current version, and then refactor it over09:55
TheMueniemeyer: The idea of William and me has been to move away from seperate AddRelation() and AddEndpoint(). So that the risk of having a relation w/o EP or only a provider or requirerer is lower.09:56
TheMueniemeyer: Maybe following the current model but with a new API could do this too.09:58
niemeyerTheMue: I don't see how that's related to the point above10:08
TheMueniemeyer: It's only the motivation how the change started. The model change has then rised out of a discussion (as it seems sadly with a wrong direction).10:09
TheMueniemeyer: So maybe the model could now better stay as it is in Py, but the API changes to reduce the risk of adding illigal relation sinks.10:10
niemeyerTheMue: Agreed, not suggesting further changes.. just the topology has to be adapted to invert the map10:17
TheMueniemeyer: OK, start a new branch based on the zk to topo renaming to change the topology first. Afterwards new branches for AddRelation() and RemoveRelation() while the two current open ones will be abandoned.10:20
niemeyerTheMue: Please hold on10:21
niemeyerTheMue: What are you abandoning?10:21
TheMueniemeyer: The AddRelation() and the RemoveRelation() branches. They have older branches as prerequisites.10:23
TheMueniemeyer: I don't know how good the newer refactoring branch then works with those two.10:24
niemeyerTheMue: No, please don't drop them10:24
niemeyerTheMue: We've spent a lot of time polishing those branches10:24
niemeyerTheMue: Let's get them in, and have the change on top of them10:24
TheMueniemeyer: Merging is now problem?10:24
niemeyerTheMue: Me not understand10:25
TheMueniemeyer: Ah, but I understand you now. You want to get both in the trunk first before I start refactoring.10:25
niemeyerTheMue: Yeah10:26
TheMueniemeyer: Am I right?10:26
TheMueniemeyer: Good.10:26
TheMueniemeyer: Otherwise I would have kept the source and then bring it in with new branches.10:26
TheMueniemeyer: The "new" RemoveRelation() propose will come in in a few moments, just testing.10:28
niemeyerTheMue: Ah, cool10:28
TheMueniemeyer: Aaargh, it's in, but again with a lot of file too much in the review list.10:35
niemeyerTheMue: Ok, can you please clean it up so I can review and unblock you?10:36
TheMueniemeyer: Will try. It depends on the AddRelation() proposal.10:37
niemeyerAram: https://launchpad.net/mgokeeper10:37
niemeyerAram: bzr branch lp:mgokeeper and profit :)10:37
niemeyerTheMue: The pre-requisite is merged.. it's the same problem you had last time, and the same solution as well10:38
TheMueniemeyer: Yep10:39
niemeyerTheMue: "Today this isn't done. I would like to do it in a new small branch after this10:56
niemeyerand RemoveRelation() are in."10:56
niemeyerTheMue: Ok, but please note that down as the next task after fixing the topology details10:57
hazmatnew 'juju-dev' mailing list?10:57
TheMueniemeyer: Hmm, merged, pushed, proposed, everything is there. But also still those files not part of the branch. It's only that they are with one delta in rietveld while the changed file have two.10:57
niemeyerTheMue: You have to push the pre-req after merging trunk in it, as you did last time10:58
TheMueniemeyer: I've done.10:58
niemeyerTheMue: The diff is the diff that bazaar generates10:58
niemeyerTheMue: So whatever is being pushed is the actual diff between the two branches10:58
TheMueniemeyer: I have to digg deeper.10:59
niemeyerTheMue: That's all that there is to it really10:59
niemeyerTheMue: If you merge trunk on the pre-req, push it to Launchpad, merge trunk on the follow up, repropose, it should wokr10:59
TheMueniemeyer: Why the quotes around the sentence above? "Today this …"10:59
niemeyerTheMue: Because it's your sentence10:59
niemeyerhazmat: Yeah, William sent a note to juju@11:00
niemeyerTheMue: The task should not be lost.. a few times we've said something was going to be done as a follow up and it ended up going missing11:01
niemeyerTheMue: So please write down to keep track this should be in the queue after the current branch and the topology changes11:02
niemeyerWe really need an organized bug tracker that we can look at11:02
niemeyerHmm.. maybe we should create a juju-core project in Launchpad11:02
TheMueniemeyer: Yep, missing that. Workied with it since the 90s and introduced it in several projects. It's indeed helping.11:03
niemeyerTheMue: LOL.. yeah :)11:04
niemeyerTheMue: We have a bug tracker.. it's just a mess because of the mix up of juju py11:04
TheMueniemeyer: So time for juju go?11:05
niemeyerTheMue: Hm?11:05
niemeyerTheMue: So, do you know the task I'm talking about above?11:05
TheMueniemeyer Not yet, will look into the logs. Right now I'm fighting with bzr. It says in the prerequisite as well as in the current branch that there's nothing to merge from the trunk and in the prerequisite that there's nothing to push.11:07
TheMueniemeyer: Drives me mad.11:07
niemeyerTheMue: Ok.. I'll file a bug and assign to you.11:07
TheMueniemeyer: Thx11:07
niemeyerTheMue: Have you merged trunk onto the pre-requisite?11:08
TheMueniemeyer: Yes.11:08
TheMueniemeyer: Just tried again, nothing to do. *sigh*11:09
TheMueniemeyer: Same in my branch.11:09
TheMueniemeyer: And bzr push says that there is nothing to push.11:10
niemeyerTheMue: Merge the pre-req onto your branch now11:11
TheMueniemeyer: Oh, something new, a warning about criss-cross, but everything merged successful.11:12
niemeyerTheMue: Yep.. that's the problem11:12
niemeyerTheMue: Try pushing the new content11:13
niemeyerand proposing it11:13
niemeyerI hope that works11:13
TheMueniemeyer: Ah, yeah, better now. Thank you.11:15
niemeyerTheMue: Woohay!11:15
TheMueniemeyer: Worked too long w/o branching. But by now I've also started to branch my private software. ;)11:17
niemeyerTheMue: I see you're renaming from zkRelation to topoRelation.. are tests broken at the moment without that?11:24
TheMueniemeyer: Without renaming it has been broken.11:25
TheMueniemeyer: Yes.11:25
niemeyerTheMue: Ok :(11:25
niemeyerTheMue: Trunk is being broken way too often :(11:26
niemeyer 382                 t.RemoveRelation(relation.key)11:26
niemeyer 383                 return nil11:26
niemeyerTheMue: Is RemoveRelation returning no errorr?11:26
TheMueniemeyer: No, it's only removing inside a map. Today it's also not checked at that point if it exists in that dir.11:27
niemeyerTheMue: OK11:28
niemeyer/ Relation returns the relation with key from the topology.11:28
niemeyerfunc (t *topology) Relation(key string) (*topoRelation, error) {11:28
niemeyer        if t.topology.Relations == nil || t.topology.Relations[key] == nil {11:28
niemeyer                return nil, fmt.Errorf("relation %q does not exist", key)11:28
niemeyerTheMue: We don't want the user to be getting this error message11:28
TheMueniemeyer: Oh, please wait.Just seen an assert_relation there. Will add it too.11:29
niemeyerTheMue: The relation key is completely uninteresting as far as a user is concerned11:29
niemeyerTheMue: The state method should verify the state in those cases, and error early with a sensible message11:30
TheMueniemeyer: OK11:30
niemeyerTheMue: If we get an Relation from relation we should display prefixed with something saying that an unexpected action happened while doing whatever11:30
niemeyerTheMue: In which case the relation key might go out, but we have no idea about why it was failing since we've checked it early11:31
niemeyerTheMue: So it's debugging rather than something we'd like the user to be commonly looking at11:31
TheMueniemeyer: IC. Do you note it in the review?11:31
niemeyerTheMue: I'll copy & paste what I just said11:31
TheMueniemeyer: I have to break for lunch, wife is calling.11:31
TheMueniemeyer: Yes, thx.11:31
niemeyerTheMue: Sure, I'll see you on Monday, have a good lunhc11:32
niemeyerfwereade: Have you added andrewmelina?11:35
niemeyerfwereade: To the list?11:35
fwereadeniemeyer, sorry, no I didn't11:44
niemeyerfwereade: no problem, I thought we might have missed it11:45
fwereadeniemeyer, is that the same person as andrewsmedina at gmail?11:46
fwereadeniemeyer, can do that now11:46
niemeyerfwereade: Yeah, I suspect so11:46
niemeyerfwereade: Thanks!11:47
niemeyerTheMue: https://bugs.launchpad.net/juju-core/+bug/100737311:50
niemeyerTheMue: https://codereview.appspot.com/6223055/ is still dirty11:56
TheMueniemeyer: So, 6223055 is cleaned up.12:07
niemeyerTheMue: Thanks12:09
TheMueniemeyer: Same problem with its prerequisite again.12:09
niemeyerTheMue: Yeah, I do apologize for the problem.. I should have fixed it already12:09
TheMueniemeyer: Gna, it's also my inexpertness with branching. So don't mind. The more often I have this problem the better I learn how to avoid it. ;)12:13
niemeyerTheMue: It's not actually your fault.. the pre-req support in lbox should handle that case correctly without you having to worry about it12:20
TheMueniemeyer: So I'm happily awaiting the next release.12:21
niemeyerTheMue: Review delivered, and you have a LGTM with a few trivial comments12:22
TheMueniemeyer: Just reading them.12:23
TheMueniemeyer: Thanks.12:23
niemeyerfwereade: You got a LGTM too12:33
fwereadeniemeyer, sweet tyvm12:33
niemeyerfwereade: it's on the smaller branch, though :(12:34
* niemeyer <= cheater12:34
* niemeyer <= hungry too12:34
niemeyerWe'll step out for lunch12:34
fwereadeniemeyer, no worries :)12:34
fwereadeLGTMs invariably LGTM ;p12:34
niemeyerHehe :)12:34
niemeyerSGTM! ;)12:34
=== chuck__ is now known as zul
fwereaderog, is DefaultSeries making its way somewhere that's accessible via a juju.Conn?13:07
fwereadebah, that was a *we*'ll step out for lunch, wasn't it?13:07
TheMuefwereade: Looks like.13:09
niemeyerfwereade: You've got another LGTM.. hopefully it's sensible13:33
niemeyerfwereade: (the comments, I mean)13:33
niemeyerfwereade: Regarding DefaultSeries, yeah, CurrentSeries is going to be available13:34
fwereadeniemeyer, cool, thanks13:36
fwereadeniemeyer, is that going to be directly on Environ?13:36
fwereadeniemeyer, CurrentSeries^^13:37
niemeyerfwereade: No, it's a global based on the current machine IIRC13:37
niemeyerfwereade: So should be usable from elsewhere, as long as we have no loops13:38
fwereadeniemeyer, hmm, ok; I presume it will be an env setting at some stage soon, though?13:38
niemeyerfwereade: Ah, yep13:38
niemeyerfwereade: That's something else, sorry, I misunderstood13:38
niemeyerfwereade: DefaultSeries coming from the env config will certainly be accessible via Conn, since it's stored in the State13:39
fwereadeniemeyer, I have a feeling that rog and dave are both circling that general area so I'm rather reluctant to start implementing that sort of stuff13:39
niemeyerfwereade: I don't *think* either of them are looking at it now13:39
fwereadeniemeyer, hm, ok, I though I saw a CL from dave that was State.Environment13:40
fwereadeniemeyer, just a ConfigNode for now but clearly a start13:40
niemeyerfwereade: Uh.. maybe I missed it13:40
* niemeyer looks at review queue13:40
niemeyeradd-environment.. suspect.. looking13:40
fwereadeniemeyer, https://codereview.appspot.com/6261055/13:40
niemeyerfwereade: Yep, looks good13:41
niemeyerfwereade: Hmmm13:43
niemeyerfwereade: I'm a bit sad that we'll be poking at that configuration manually13:43
niemeyerfwereade: For well-known keys13:43
fwereadeniemeyer, I was a bit uncertain about it; trying to remember the discussion we had at UDS13:44
niemeyerfwereade: Wondering if DefaultSeries + SetDefaultSeries are reasonable13:44
niemeyerfwereade: and whether they should be adding to that same setting, or living outside13:44
niemeyerfwereade: These settings will be common for all providers, I suspect13:44
fwereadeniemeyer, I'm hoping for a separate type for common env settings that we can manipulate nicely13:45
niemeyerfwereade: I'd like that too13:45
niemeyerfwereade: We don't even need a separate type, I suppose.. state.DefaultSeries() might work13:45
fwereadeniemeyer, hmm... DefaultSeries and Constraints are both common env settings, and PlacementPolicy may end up becoming one too... with 3 candidates for that sort of thing I'm reluctant to tack it directly onto State13:46
niemeyerfwereade: Why? What do we get by injecting them in another type?13:47
rogTheMue, fwereade, niemeyer: here's how it looks when we store units inside services rather than as a global thing. https://codereview.appspot.com/624706613:47
fwereadeniemeyer, it's just that State feels big enough already :)13:47
niemeyerfwereade: It does, because indeed it has a lot of stuff.. but I'm not sure that having to do state.EnvironSettings().SetDefaultSeries(...) is any better13:48
fwereadeniemeyer, yeah, maybe so13:48
rogfwereade: can DefaultSeries be modelled as a constraint?13:49
niemeyerfwereade: Maybe the fact we can change multiple things at once and then flush might justify having a separate type13:50
fwereaderog, IIRC I couldn't quite find a clean way to do so13:50
fwereaderog, but it's clearly that species of kidney from a certain perspective13:50
rogfwereade: do you remember why, by any chance?13:50
niemeyerrog: Ah, no, it's actually not part of the constraint, and there's a good reason13:51
niemeyerrog: It's part of the charm URL13:51
fwereaderog, I think it's that it's the only thing that's a charm constraint as well as a machine constraint13:51
fwereaderog, so it ends up feeding into the constraints13:51
fwereaderog, but it isn't really one itself13:52
rogfwereade, niemeyer: couldn't we just take it from the constraints anyway? if we have no constraints, then we'll need to decide somehow and then that will have to be an instance constraint, presumably13:53
fwereaderog, IMO that is likely to end up a bit convoluted13:54
fwereaderog, we've already decided, based on the charm, before other constraints really come into play13:54
rogfwereade: so does it ever make sense to have a "series" constraint that doesn't match DefaultSeries?13:55
niemeyerrog: No, can't come from the constraints, because the charm has a URL13:55
niemeyerrog: That's where the decision comes from13:55
fwereaderog, juju deploy oneiric/wordpress13:55
rogfwereade: so maybe one way of looking at it is that the *charm* implies some constraints.13:56
fwereaderog, absolutely so13:56
fwereaderog, ubuntu-series is a computed constraint that's never exposed in the UI but is used in picking image13:57
niemeyerfwereade: I'm tempted to suggest we just state.SetDefaultSeries => state.EnvironConfig().Set("default-series", ...)13:59
niemeyerfwereade: Or maybe not even that, actually.. it's not clear we'll ever set this value through the API outside of environment changes13:59
niemeyerfwereade: Given that the client API is actually "juju set-env default-series=oneiric"14:00
niemeyerfwereade: Right?14:00
niemeyerfwereade: Or did you have something else in mind?14:00
fwereadeniemeyer, yeah, I think so14:00
niemeyerfwereade: The reading aspect seems to make sense, though14:00
niemeyerfwereade: I mean14:01
fwereadeniemeyer, all I'm really saying is that I'll want to know how to read it at some point soon :)14:01
niemeyerfwereade: Having state.DefaultSeries() => EnvironConfig().Get("default-series")14:01
niemeyerfwereade: jinx14:01
niemeyer;)14:01
fwereadeniemeyer, :p14:01
rogsounds good to me14:01
fwereadeniemeyer, btw, ty for Resolve review; ok to sumbit if I err out on empty local path (and make the other changes ofc ;))?14:13
fwereaderog, btw, the unit path change looks really nice to me14:16
fwereaderog, is this something we've agreed to go with or just something you're throwing out there for discussion?14:16
fwereaderog, if the former I'll give it a more detailed look :)14:17
niemeyerfwereade: Yeah, that's implied by the LGTM14:28
niemeyerfwereade: If you think something might be done differently, or disagree with one of the points, a new review makes sense, otherwise a change+submit is fine on LGTM14:28
fwereadeniemeyer, cool, cheers, wasn't quite sure how to interpret the "should we" ;)14:29
rogfwereade: just been discussing with gustavo14:30
niemeyerVery warmly.. I feel sorry for Aram :)14:30
rogfwereade: couple of changes coming up in a mo14:30
niemeyerWe agree, though, as usual14:30
niemeyerOKAY!14:34
niemeyerTime to head home14:34
niemeyerA good weekend to all, and wish me luck on hiding the big aluminum cigar14:35
Beretheh14:35
niemeyers/hiding/riding14:35
* Beret won't ask14:35
niemeyerBeret: airplane..14:35
* robbiew adds mramm to his buddy list ;)14:43
TheMuemramm: Hiya14:47
mrammHy14:48
mrammhow's everything going?14:48
TheMuemramm: Fine, thank you. Welcome on board.14:49
mrammThanks14:49
robbiewwe are now just waiting for him to get access to the inner sanctum...aka irc.canonical.com & wiki.canonical.com :P14:52
Beretfrom there, his soul is forever tainted14:52
mrammvery interested in looking around the inner sanctum14:52
robbiewlol14:53
mrammsure, but there's interesting stuff14:53
Beretthus the tainting14:53
mrammto look at while my soul is being eaten away14:53
robbiewit's where we hide the oompa loompas14:53
mrammahh14:53
mrammI wondered14:53
fwereaderobbiew, ping14:59
robbiewfwereade: pong15:01
robbiewfwereade: one sec ;)15:02
robbiewfwereade: invite sent15:05
rogBeret: lol15:22
fwereadehappy weekends all!16:16
rogfwereade: and you!16:34
TheMuefwereade, rog: Happy weekend too.17:32
rogTheMue: and you. i'm away monday and tues17:33
rogTheMue: so see you wed!17:33
rogtrying hard to lbox propose from the train through my phone...17:35
rogit's not liking it much!17:35
TheMuerog: Greet the queen.17:36
rogTheMue: of course. i always pop in for a quick cuppa if i'm in town17:37
TheMuerog: *lol*17:38
rogTheMue: yay! https://codereview.appspot.com/624706617:39
TheMuerog: Uh, there are flies on the front page. Your train is too fast.17:42
rogTheMue: lol17:42
rogTheMue: that CL make the unit key look like unit-00000-00000 where the first number is the service key number and the second is the id within the service17:44
rogs/make/makes17:44
Aramhello.22:42
* Aram is back in austria.22:42
andrewsmedinaAram: hi22:44

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