/srv/irclogs.ubuntu.com/2013/01/08/#juju-dev.txt

=== mohits1 is now known as mohits
=== _mup__ is now known as _mup_
TheMueMorning08:01
rogpeppemornin' all08:10
TheMuerogpeppe: Hiya08:14
TheMuerogpeppe: ping10:16
rogpeppeTheMue: pong10:16
TheMuerogpeppe: Maybe you can help me localizing an error.10:16
rogpeppeTheMue: glad to help if i can10:16
TheMuerogpeppe: You know about the rollback of my firewaller change by Dave? It lead to a hanging test in cmd/jujud10:17
rogpeppeTheMue: i'd seen that go past, yes10:17
TheMuerogpeppe: It is the MachineSuite.TestProvisionerFirewaller.10:18
TheMuerogpeppe: So I loked at it with gocheck.vv.10:19
TheMuerogpeppe: One moment, will paste the log.10:19
TheMuerogpeppe: http://paste.ubuntu.com/1509166/10:20
rogpeppe*click*10:20
TheMuerogpeppe: You'll see from line 66 that there's a loop. And that will time out after 5 minutes.10:20
fwereaderogpeppe, TheMue: heh, I was just needing to write some tests there myself and getting depressed about the can't-sync issue10:20
TheMuerogpeppe: The firewaller tests themselves pass fine.10:21
fwereadeTheMue, ah, that weirdness is fixed in one of my current CLs10:21
TheMuefwereade: Oh!10:21
TheMuefwereade: *hug*10:22
rogpeppefwereade: which particular weirdness is that? and what was the fix?10:22
fwereadeTheMue, well, ok, some of the weirdness10:22
fwereaderogpeppe, the lack of a sane environment in which to run and the whining about tools10:22
rogpeppefwereade: sorry, i'm feeling stupid - how does that tally with TheMue's issue above?10:23
fwereadeTheMue, rogpeppe: yeah, I'm probably wrong -- I think I was looking at the wrong bit of the log10:23
TheMuefwereade: From reading the test itself I found now problem regarding the firewaller. Funnily the test passes before I merge the firewaller change. Afterwards it looks like in the paste.10:23
rogpeppefwereade: it looks like the crux is that it's getting unauthorized access10:23
TheMuerogpeppe: Exactly.10:24
rogpeppeTheMue: have you tried putting in printfs that print when the password is being changed, and what password is being connected with?10:25
rogpeppeTheMue: that might help narrow down the issue10:25
fwereadedimitern, heyhey, are you back in town?10:26
TheMuerogpeppe: Inside the test there's no obvious change, but I'll add statements to see where it may happen.10:26
dimiternfwereade: hey :) yeah - landed early this morning10:27
fwereadedimitern, ah cool10:27
rogpeppeTheMue: that's worth doing i think - put the printfs in the relevant state functions10:27
rogpeppedimitern: yo!10:27
fwereadedimitern, nice hols?10:27
dimiternfwereade: oh yeah! much needed as well10:28
dimiternfwereade: yours?10:28
fwereadedimitern, yeah, very peaceful, was really nice having nico and rie over for xmas10:28
fwereadedimitern, we've still got another duck in the freezer, I'll let you know when I can be bothered to cook it ;p10:29
dimiternfwereade: cool :) beers later?10:31
fwereadedimitern, sgtm, I'll figure out cath's movements and let you know10:31
TheMuerogpeppe: Interesting, the failure differs. Just had a different simple test fail, and now again the hanging process due to unauthorized access. :(10:32
rogpeppeTheMue: the failure differs after you've added the printfs? or just it differs from run to run?10:33
TheMuerogpeppe: From run to run.10:34
rogpeppeTheMue: what did the new failure look like?10:34
fwereaderogpeppe, TheMue: a suggestion: the runOnce methods should *take* a *State, and then we get to do an end-run around the deployer-testing nonsense; the machiner-testing nonsense I'm about to hit; probably uniter-testing weirdness I don't remember10:35
fwereaderogpeppe, TheMue: ...and as a bonus it is somewhat likely we'll be able to write a firewaller/provisioner test I can understand ;p10:35
rogpeppefwereade: i'm looking at that stuff right now as well :-)10:36
rogpeppefwereade: what difference would passing a state to runOnce make?10:36
TheMuerogpeppe: The hanging looks like before, otherwise I get one unautherized, but afterwards the opening of the port fails.10:37
TheMuefwereade: So, I have a problem following you. :/10:37
fwereaderogpeppe, IMO the fact that we can't touch the state used in the workers without serious gymnastics makes everything harder10:37
rogpeppeTheMue: i'm afraid i can't really help without more information. you'll just have to dive in and work out what's going on10:38
rogpeppefwereade: how does changing the signature of runOnce help there?10:38
fwereaderogpeppe, that it gives us a point at which we can sanely hook a test in10:39
rogpeppefwereade: personally, i was thinking of adding a var openState func(*state.Info) (*state.State, error)10:39
rogpeppefwereade: global10:39
rogpeppefwereade: i'm not sure i want tests to know about runOnce10:40
fwereaderogpeppe, the tests know everything anyway, except the things they need to know10:40
rogpeppefwereade: lol10:40
fwereaderogpeppe, I must say I really am finding them hard to work with :/10:40
rogpeppefwereade: the idea is that the test is minimal, because all the real testing is done in the worker packages themselves, and in jujud we only need to verify that the right components have been joined up correctly10:42
rogpeppefwereade: if we call runOnce directly, we aren't verifying that Run will actually do the right thing10:43
fwereaderogpeppe, so maybe we should test them both?10:44
rogpeppefwereade: you're principally concerned about the sync issue here, right?10:44
fwereaderogpeppe, the sync issue is one thing10:44
fwereaderogpeppe, the fact that there's duplication between the two agents also concerns me10:45
fwereaderogpeppe, the dancing around with passwords is hard to follow, and should clearly be common10:46
rogpeppefwereade: i had that factored out originally, but was persuaded not to do that10:46
fwereaderogpeppe, I can well believe it :/10:47
rogpeppefwereade: and... it's only four lines of code10:47
rogpeppefwereade: i'm not sure it's that hard to follow10:47
fwereaderogpeppe, trust me, it is hard to follow10:48
rogpeppeif passwordChanged != "" {10:48
rogpeppeif err := m.SetPassword(a.Conf.StateInfo.Password); err != nil {10:48
rogpeppeoops10:48
fwereaderogpeppe, there is no justification I can see for smearing the password-handling across openState and 2 spearate clients10:48
rogpeppethat's new10:48
rogpeppefwereade: you can't set the password before you've retrieved the relevant entity from the state10:48
rogpeppefwereade: so you'd need to pass in a function to do that10:49
fwereaderogpeppe, or maybe we could have a sane state API10:49
rogpeppefwereade: and if you do that (i did, before) the code ends up just as difficult to understant10:49
rogpepped10:49
fwereaderogpeppe, we have this ridiculous groupthink lie that "agents aren't a concept that exists in state"10:50
rogpeppefwereade: i started with a different API too.10:50
fwereaderogpeppe, SetAgentPassword(entityName, password string)10:50
rogpeppefwereade: what happens if the entity doesn't exist?10:50
rogpeppefwereade: (FWIW that was my original design)10:50
fwereaderogpeppe, state can figure that out trivially10:50
fwereaderogpeppe, I believe you :(10:51
fwereaderogpeppe, this is the trouble10:51
rogpeppefwereade: i'm reluctant to change this stuff now - it was hammered out at some length, and it's not too bad as is, i think10:51
rogpeppefwereade: apart from the code-readability issue, what does it help with?10:52
fwereaderogpeppe, it gets us one step closer to treating the two agents the same10:52
fwereaderogpeppe, maybe this is just a pipe dream of mine10:52
rogpeppefwereade: i think it's reasonable to have different code for both agents - they're independent entities10:53
fwereaderogpeppe, the only thing that should be different is the list of workers10:53
fwereaderogpeppe, everything else is exactly the same, but we duplicate it imperfectly because niemeyer insists10:54
fwereaderogpeppe, and so I get really grumpy whenever I have to work around there10:54
fwereaderogpeppe, because there *is* a good design, and it's probably pretty close to a combination of the things that you and I both tried to do early on, but we've been forbidden to do that10:55
fwereaderogpeppe, a thought -- if you find it easy to work in that area10:56
rogpeppefwereade: i dunno - i'm not sure that making the two agents be exactly the same except for the tasks the run is necessarily right. the current design gives us leeway to make them significantly different if we want without significant code disruption, and i think that's a useful freedom.10:56
rogpeppes/the run/they run/10:57
fwereaderogpeppe, honestly, it feels to me like being different from python just for the sake of it10:57
fwereaderogpeppe, the python stuff was just fine, once yu scraped away the layers of twisted caking it10:57
fwereaderogpeppe, (to be clear: the very specific idea of having "agent" functionality distinct from the actual agents themselves)10:58
fwereaderogpeppe, it lets you, eg, test the Run code without dicking around with the details of what the individual agents happen to want to do in runOnce10:59
fwereaderogpeppe, but let us stipulate that for some reason I am irrational here10:59
rogpeppefwereade: ? we can do that, can't we?10:59
rogpeppefwereade: isn't testing the Run code what we do currently?10:59
fwereaderogpeppe, by unreliable side-effect of the action of runOnce, yes11:00
rogpeppefwereade: ah, you mean the Run code without runOnce11:00
rogpeppefwereade: we could do that, actually, without too much hassle, if we wanted11:01
rogpeppefwereade: the Run code is more-or-less identical for both11:01
fwereaderogpeppe, well, not really, because we duplicate Run for each agent11:01
fwereaderogpeppe, yeah11:01
fwereaderogpeppe, so there's nothing common except by coincidence11:01
rogpeppefwereade: we could have a function: func Run(once RunOncer) error11:02
rogpeppefwereade: no coincidence - i try to keep them as similar as possible so i can look at them side by side and see that they're the same11:02
rogpeppefwereade: maybe func RunLoop11:03
fwereaderogpeppe, yeah, I guess that could work, but it still feels like it's primarily dictated by the arbitrary "these 2 bits of code that are the same must be duplicated because we might one day want to change them" constraint11:04
fwereaderogpeppe, we factor another little common bit out, great11:04
fwereaderogpeppe, and we now have another, slightly simpler structure, that is duplicated across the agents11:04
fwereaderogpeppe, but, let me take a step sideways for a moment11:05
fwereaderogpeppe, I am pleased that you find jujud easy to deal with, because I surely do not11:05
fwereaderogpeppe, if I cut back what I'm doing and just propose a Machiner11:06
fwereaderogpeppe, and assign to you a bug for integrating it and testing it11:06
fwereaderogpeppe, I will shut up about it11:06
fwereaderogpeppe, until next time ;p11:06
rogpeppefwereade: i'm not saying i find it *easy* to deal with :-)11:06
rogpeppefwereade: but the concerns you've voiced don't map well to the difficulties i have with it11:07
rogpeppefwereade: http://paste.ubuntu.com/1509259/ ?11:07
rogpeppefwereade: oops http://paste.ubuntu.com/1509261/11:08
fwereaderogpeppe, that would, I agree, be a step forward11:08
rogpeppefwereade: func (st *State) Entity(entityName string) Entity; type Entity interface {everything that entities have in common}11:22
rogpeppesorry, func (st *State) Entity(entityName string) (Entity, error) of course11:23
fwereaderogpeppe, I would *probably* love that, but I think it's a non-starter because niemeyer doesn't believe in agents11:24
rogpeppefwereade: i don't see anything about agents there11:24
fwereaderogpeppe, yeah, but it's actually all about agents11:24
rogpeppefwereade: that's the trick :-)11:25
fwereaderogpeppe, only the entities with agents have "entity names"11:25
mrammmgz, jam, dimitern: I was able to add all of you to the juju core kanban board11:25
mgzmramm: ace, thanks11:25
fwereaderogpeppe, everything else just has names (as do the ones with agents too ofc)11:25
dimiternmramm: cool, 10x11:25
mrammmgz, jam, dimitern: I added ian too, and you should be able to see everything now11:25
fwereaderogpeppe, IMO there is something badly wrong when we have entities, that have names, but EntityName means something entirely different11:25
dimiternmramm: I can see it yeah11:26
rogpeppefwereade: yeah, i think we're using the word "entity" wrong11:26
mrammjam: I didn't realize I could make that change since I had admin on that board, so thanks11:26
fwereaderogpeppe, and the only reason we're doing it is because we're not allowed to mention agents :(11:26
* dimitern => lunch11:27
fwereaderogpeppe, despite the existence of a bunch of agent methods already11:27
mrammrogpeppe, fwereade, TheMue: you all should be able to see the blue kanban board now too11:27
fwereademramm, so I can; thanks11:28
TheMuemramm: Thx11:29
fwereaderogpeppe, however, I don't think I am engaging in anything constructive here :( if you can see a way past my mental blockage I will be very happy11:31
rogpeppefwereade: i'm having a go11:31
fwereaderogpeppe, I think for now I will just do the Machiner and forget about integration, at least I will accomplish something :)11:33
* fwereade lunches11:42
jammramm: no problem, thanks for adding us to juju-core12:01
TheMueLunchtime12:07
jammgz, fwereade, TheMue, Aram, rogpeppe, dimitern: are we meeting at https://plus.google.com/hangouts/_/33acfc2c8af8792568274fa110371db956f9fde7# ?12:59
rogpeppejam: i believe we are12:59
mgzokay13:00
jammramm: https://plus.google.com/hangouts/_/33acfc2c8af8792568274fa110371db956f9fde7#13:05
dimiternping13:30
* mramm gets some breakfast -- will be back soon13:33
rogpeppelunch13:42
rogpeppeback14:05
rogpeppefwereade:  https://codereview.appspot.com/707105114:16
fwereaderogpeppe, looking14:16
rogpeppefwereade: of course, it's a law of nature that the overall line count goes up, even though we're removing duplicated code :-(14:18
rogpeppefwereade: i think it's nicer though14:18
rogpeppepwd14:18
fwereaderogpeppe, from what I've seen so far the clarity is worth it -- and I think it's a step towards an actual reduction one day14:18
=== TheMue_ is now known as TheMue
fwereaderogpeppe, LGTM14:21
rogpeppefwereade: thanks14:22
rogpeppeAram, TheMue, jam, mgz, dimitern: any chance of a second opinion? https://codereview.appspot.com/707105114:22
* dimitern looking14:23
TheMue*click*14:23
dimiternrogpeppe: LGTM - nice and simpler14:26
rogpeppedimitern: thanks14:26
rogpeppedimitern: would you mind replying with your LGTM to the CL, please?14:27
rogpeppedimitern: (i see a blank reply, which i surmise might've been intended to contain something :-])14:27
dimiternrogpeppe: hmmm I did enter the LGTM but let me see what went wrong14:28
dimiternrogpeppe: done14:28
fwereaderogpeppe, dimitern: https://codereview.appspot.com/7069055 is hopefully also trivial14:29
dimiternall sorts of crazy stuff is happening with my machine today :(14:29
rogpeppedimitern: thanks. will submit assuming TheMue thinks it's ok.14:29
rogpeppefwereade: looking14:29
TheMuerogpeppe: Just sent my LGTM. ;)14:29
rogpeppeTheMue: ta!14:29
fwereadethis is totally irrelevant but utterly awesome:14:30
fwereadeI see you driving / round town with the girl I love / and I'm like "HAIKU"14:31
rogpeppefwereade: ignoring that :-] i'm not sure that "machiner" is a great name for the code you've put into worker/machiner14:33
rogpeppefwereade: is the plan to expand it, or is the "wait for dying, make dead" thing its full extent?14:34
fwereaderogpeppe, well, yeah, it's an awful name, but it's one I thought we had consensus on14:34
fwereaderogpeppe, not sure yet14:34
fwereaderogpeppe, no *current* plans14:34
fwereaderogpeppe, it may or may not end up handling, say, authorized-keys14:34
rogpeppefwereade: for me, "machiner" is what the machine agent does, but that code's only a small part of that14:35
dimiternfwereade: looking14:35
fwereaderogpeppe, but I think that's probably a different worker's job14:35
fwereaderogpeppe, strongly disagree14:35
fwereaderogpeppe, the machine agent has always had provisioner and firewaller and suchlike14:35
fwereaderogpeppe, the machiner is for the stuff that's directly relevant to a *state.Machine14:36
fwereaderogpeppe, or at least that was the logic I inferred14:36
dimiternfwereade: done - I like these short CLs14:36
rogpeppefwereade: yes, those are workers within the machine agent14:36
fwereaderogpeppe, agreed... machiner and machine agent distinguish the stuff-for-dealing-with-the-machine from the process-that-runs-on-the-machine-and-deals-with-all-sorts-of-things14:37
rogpeppe"mr.tomb.Kill(mr.loop())" - i think you should tell Mr Tomb to play nicely with Mr Loop :-)14:37
fwereaderogpeppe, haha14:37
fwereaderogpeppe, (do you have a better name than machiner? I picked it because (1) AIUI it was already agreed and (2) it saved me inventing a worse name ;))14:40
rogpeppefwereade: i was just wondering about "lifecycler"14:41
fwereaderogpeppe, hmm, I think it's have to be MachineLifecycler14:41
fwereaderogpeppe, which is a bit icky14:41
rogpeppefwereade: unless it was generic14:42
rogpeppefwereade: which might not be too hard, especially given that the agent types now have "Entity" methods14:42
fwereaderogpeppe, but it won;t be, because the machine's handling of lifecycle issues is rather different to that of the uniter, which is the thing responsible for unit lifecycle14:42
rogpeppefwereade: yeah, that is a pity14:43
fwereaderogpeppe, I think that trying to split that stuff out of the uniter is a very bad idea14:43
rogpeppefwereade: i'm sure that's true14:43
rogpeppefwereade: that reminds me: have you seen this? http://1.bp.blogspot.com/-OHqQoQLJPQA/UOqyvDiHdjI/AAAAAAAAAeM/u_TJ1vXkTjw/s1600/what-the-british-say.jpg14:43
fwereaderogpeppe, IMO it maintains symetry and something close-enough to clarity given what already exists14:44
fwereaderogpeppe, yeah, love it14:44
rogpeppefwereade: shouldn't this code wait for the deployer to kill the units before setting the machine to dead?14:51
rogpeppefwereade: ah, but perhaps we can assume that the machine can't be set to dying while there are still units around14:53
rogpeppefwereade: if so, that deserves a comment14:53
TheMuerogpeppe: Just merged your latest changed, instead of a hanging loop I now get a panic.14:54
fwereadeTheMue, that sounds liek progress to me :)14:54
rogpeppelol14:54
rogpeppeTheMue: what's the panic?14:55
fwereaderogpeppe, but, yeah, that is the case; I'm a touch reluctant to comment things that should be clear from a reasonable understanding of state.Machine, mainly because it's just one more place to re-comment as and when that detail changes14:56
fwereaderogpeppe, but I don't feel that strongly14:56
TheMuerogpeppe: One moment, will paste it. It's again in the TestProvisionerFirewaller14:56
TheMuerogpeppe: http://paste.ubuntu.com/1509698/14:57
rogpeppefwereade: just a single line before EnsureDead should suffice: // It's OK to set the Machine to dead because it can't be set to dying unless it has no units.14:57
fwereaderogpeppe, fair enough14:57
rogpeppeTheMue: could you push a branch so i can have a look?14:59
TheMuerogpeppe: It's during the second run of the Changes() loop, after the first one has an IsNotFound().14:59
TheMuerogpeppe: Yep, I'll let my printlns in.14:59
fwereadekanban review meeting btw15:00
fwereadehttps://plus.google.com/hangouts/_/539f4239bf2fd8f454b789d64cd7307166bc9083#15:01
TheMuerogpeppe: it's @ lp:~themue/juju-core/007-firewaller-integration15:02
fwereaderogpeppe, https://codereview.appspot.com/7035060/ https://codereview.appspot.com/7028049/ https://codereview.appspot.com/7030061/ and the one linked above... https://codereview.appspot.com/706905515:36
fwereadeTheMue, the 1st and 3rd of those want for an additional reviewer, if you're of a mind15:36
TheMuefwereade: one moment, meeting15:38
TheMuefwereade: Back again, so now looking16:05
rogpeppefwereade: all reviewed, i think16:22
fwereaderogpeppe, tyvm16:22
TheMuerogpeppe: Any idea on the panic?16:30
rogpeppeTheMue: ah, sorry, i'd been elsewhere, will have a look16:31
TheMuerogpeppe: np, had been elswhere too. ;)16:32
rogpeppeTheMue: well, i've found why it's panicing, but it won't help you...16:37
TheMuerogpeppe: As long as it allows me to continue error searching. ;)16:37
rogpeppeTheMue: BTW for debugging messages, it's usually better to use log.Printf (or c.Logf) rather than println - that way it fits into the usual gocheck logs16:38
TheMuerogpeppe: But you miss them w/o at least gocheck.v. And sometime I want to reduce those messages and only have a first narrowing. ;)16:40
rogpeppeTheMue: grep is your friend :-)16:41
TheMuerogpeppe: They all will be removed before pushing it.16:41
TheMuerogpeppe: There are many ways to reach the same goal.16:41
rogpeppeTheMue: i think i've found your problem16:54
TheMuerogpeppe: I'm listening.16:55
rogpeppeTheMue: yup, it's a one line fix16:56
TheMuerogpeppe: Great16:56
rogpeppeTheMue: the problem is that the machine that's added by TestProvisionerFirewaller doesn't have an instance id16:56
rogpeppeTheMue: so the provisioner tries to provision it16:56
rogpeppeTheMue: but it's already been provisioned (and the password changed) so we've got two places changing the same password16:57
rogpeppeTheMue: (you should've followed my suggestion to print out the passwords :-])16:57
TheMuerogpeppe: I wouldn't have been able to interpret that output because I'm not in that mimik.16:58
rogpeppeTheMue: adding a SetInstanceId in machine_test.go after the st.AddMachine in addMachine fixes the problem17:00
TheMuerogpeppe: Wonderful, thx.17:00
TheMuerogpeppe: Yeah, now everything is green.17:10
fwereaderogpeppe, re state already having fetched the machine, I don't trust the client not to reuse the machine on another goroutine17:16
fwereaderogpeppe, sane/acceptable?17:16
rogpeppefwereade: i think it's ok to pass ownership to the machiner in this case17:17
rogpeppefwereade: hmm, this is where we really want a Clone method17:18
fwereaderogpeppe, yeah, indeed, that would make everythig perfectly explicit17:18
rogpeppefwereade: i think we should do it.17:19
fwereaderogpeppe, in the meantime I think I prefer habitually telling other goroutines about ids rather than entities17:19
rogpeppefwereade: NewMachiner isn't a goroutine, it's a function17:19
fwereaderogpeppe, can I make it a separate CL? no point doing it if I don't actually trawl the codebase for places it'd be useful...17:20
rogpeppefwereade: yeah, i guess17:20
TheMuerogpeppe: Btw, both TestChangePasswordChanging still fail.17:22
rogpeppeTheMue: fail how?17:22
rogpeppeTheMue: in trunk?17:23
TheMuerogpeppe: http://paste.ubuntu.com/1510037/17:23
TheMuerogpeppe: Will test trunk, one moment.17:24
rogpeppeTheMue: the tests work ok for me in trunk17:24
fwereaderogpeppe, btw, sorry, I forgot to propose https://codereview.appspot.com/7030061 again :(17:24
fwereaderogpeppe, should be trivial now17:24
TheMuerogpeppe: Strange, in my trunk  MachineSuite.TestParseUnknown panics.17:26
rogpeppeTheMue: it passes for me17:28
rogpeppeTheMue: as does the TestChangePasswordChanging tests17:28
TheMuerogpeppe: I'll pull a clean trunk.17:28
rogpeppeinteresting, the jujud tests take 20.941s against tip (ish) and 41.8s against go 1.0.217:30
hazmatfwereade, re previous discussion on charms and relation names. my concern is that this is a change being made which breaks dozens of charms with no benefit since the charms are logically self-consistent, its juju thats imposing the implicit relation which is not addressable by the charm anyways. so in that respect there is no conflict. ie what's the scenario where this is a problem. else this is just breakage for purity.17:32
fwereadehazmat, it opens the door to relations that cannot be expressed unambiguously17:33
fwereadehazmat, you can't specify a relation over juju-info between two charms that add their own juju-info relations17:33
fwereadehazmat, rare but real; just like the run-wrong-hooks problem17:34
hazmatfwereade, the implicit is always over provide not on require. we match on interface names not on relation names. the implicit provide is not addressable17:34
* hazmat tries to restate for clarity17:35
fwereadehazmat, `juju add-relation foo:juju-info bar:juju-info` -- if both define their own juju-infos in addition to the implicit ones, what relation are we trying to create?17:35
hazmatfwereade, its forbidden to provide juju-info17:35
hazmatso its quite explicit in that case17:35
fwereadehazmat, everything provides juju-info...17:36
TheMuerogpeppe: Now a fresh trunk, doing a go test -gocheck.v in cmd/jujud shows no panic now but lets the password changes fail. :/17:36
hazmatfwereade, exactly.. and its only the providing side that we need to restrict17:36
robbiewI'm all for open dialogue , but maybe a hangout would improve communication on this subject ;)17:36
rogpeppeTheMue: the password changes tests are in state, no?17:36
fwereadehazmat, in the example above, both are requires17:36
TheMuerogpeppe: No, all in cmd/jujud17:36
fwereadehazmat, what should that command do?17:37
fwereadehazmat, if it's ok for charms to have require relations named juju-info, and both charms do, that command is ambiguous17:37
fwereadehazmat, I know it's breakage; I know it's annoying; but I believe that it is *already* broken17:38
rogpeppeTheMue: ah yes. it all passes for me.17:38
TheMuerogpeppe: In a fresh pulled trunk?17:39
rogpeppeTheMue: yes17:39
TheMuerogpeppe: Hmm, I'm using go 1.0.3. And you?17:40
rogpeppeTheMue: tip and 1.0.217:40
rogpeppeTheMue: i'll try against 1.0.3, but i don't think it'll make a difference17:41
TheMuerogpeppe: No, I don't think so too. Maybe I have to update mgo.17:42
rogpeppeTheMue: possibly - i just tried that17:42
rogpeppeTheMue: if it still fails then, try printing out the passwords that are being set, and the password and entity name being used to connect to the state.17:43
hazmatfwereade, that's pretty convincing from a purity perspective. in practice its quite odd, akin to a subordinate with a subordinate relation.17:43
TheMuerogpeppe: Uuugh, ok, but have to find out where I have to do that so that it makes sense.17:44
rogpeppeTheMue: see the SetPassword methods in state, and the state.Open function17:44
hazmatie. its only already broken if its already broken ;-)17:46
fwereadehazmat, I agree it's a bit odd, but I still have a small part of my brain that wants to charm some sort of automated penetration testing tool (consuming juju-info for private-address), and I think that opens the door17:46
rogpeppefwereade: you've got a LGTM17:47
hazmatfwereade, and why would that be a problem?17:47
hazmatfwereade, because its non subordinate attaching to subordinate?17:47
hazmatvia juju-info17:48
hazmatthe typical non subordinate juju-info usage i use for examples is a dns provider for units17:48
fwereadehazmat, even better then -- my point is that once we have someone using implicit juju-info globally we're in danger of hitting that case in practice17:49
hazmatfwereade, we can disallow it explicitly for non subordinates without hosing the extant charms17:50
fwereadehazmat, that's two explicit workarounds now... I'm not convinced that this is a better way forward than a staged migration to something that works without hacks17:51
hazmatthe only charms we can fix are those that are owned by charmers..17:51
fwereadehazmat, incidentally, what's the situation re charm upgrade sanity in pyjuju?17:52
hazmatthe rest die or we fork forward17:52
=== alexlist` is now known as alexlist
fwereadehazmat, eg if v2 of a charm no longer has relation foo17:52
fwereadehazmat, sorry derail17:53
fwereadehazmat, can I point you to the docs, all the same?17:53
fwereadehazmat, https://juju.ubuntu.com/docs/implicit-relations.html17:53
hazmatfwereade, the relation would still be extant17:53
fwereadehazmat, "Implicit relationships are named in the reserved the juju-* namespace."17:54
hazmatfwereade, i'm aware of the docs and the intent, again my concern is breaking dozens of charms17:55
fwereadehazmat, and my concern is that layering on the special cases will end up hurting us more in the long run17:56
hazmatfwereade, the docs btw also provide an example of what your saying should be illegal, look at the rsyslog metadata17:58
fwereadehazmat, I think that's invalidated by the preceding "The charm author should not declare the juju-info relation and is provided here only as an example."17:58
hazmatfwereade, your taking that out of context.. provides vs. requires17:58
hazmatfwereade, the rsyslog metadata is in the next section17:59
hazmatfwereade, the problem is isn't with declaring the provides juju-info.. that17:59
hazmatthat's not allowed anywhere.17:59
fwereadehazmat, that's not how I read it -- but, yeah, maybe arguing from the authority of these docs either way is somewhat weak :)17:59
* rogpeppe is off for the night. see y'all tomorrow.18:00
fwereadegn rogpeppe18:00
fwereadehazmat, I feel we're at something of an impasse... we each understand the other's perspective but still think our own should win ;p18:01
hazmatfwereade, i'm okay with losing, as long as we figure the way and resources to work  forward on the charms18:02
hazmatfwereade,  otoh i don't see the two workarounds offered as inherently problematic given the special case nature where this is an issue18:05
hazmatfwereade, are you up for tabling till niemeyer can chime in?18:05
fwereadehazmat, yeah, absolutely18:06
fwereadehazmat, I'm doubtless overvaluing code clarity vs charmer convenience to some degree, but I can't tell how much ;)18:07
fwereadehazmat, perhaps because I don't have a clear picture of just how much inconvenience it will cause18:07
hazmatfwereade, its not a charmer convenience, its breaking working software..18:08
fwereadehazmat, I think we can find a path that doesn't break anything so long as the charms provide a sane upgrade path18:09
fwereadehazmat, and I favour that primarily because it gives us a way to consign the difficulty to the dustbin of history, rather than carrying it forward forever -- but, yeah, consider it shelved :)18:11
hazmatfwereade, cool18:13
hazmatdoes anybody know a good full text search lib for go.. not finding much by way of googling for such19:57

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