/srv/irclogs.ubuntu.com/2012/05/15/#juju-dev.txt

niemeyerdavecheney: :-)00:19
niemeyerdavecheney: Are you using cobzr?00:19
niemeyerdavecheney: It may help00:19
niemeyerdavecheney: It's really boring to use GOPATH without it00:20
niemeyerAlright, calling a day I am00:33
niemeyerHave a good night/day all00:33
davecheneyniemeyer: yes, alias bzr=cobzr00:34
davecheneywill cobzr close (ie, remove from my local branch list) branches that have been submitted ?00:35
TheMuemorning06:38
* davecheney waves06:38
* TheMue waves back06:38
davecheneyi heard tell there is a pastebin for canonical06:38
davecheneythe public one06:38
TheMuedavArrived in the right timezone? ;)06:38
davecheneyyesterday was not pretty06:39
TheMuedavecheney: Yes06:39
davecheneywalked around like a zombie til 5pm06:39
davecheneythen gave in to the inevitable06:39
TheMuehttp://paste.ubuntu.com/06:39
davecheneyTheMue: http://paste.ubuntu.com/988455/06:40
TheMuedavecheney: Funnily this time I had almost no problems. But I slept a lot during flight.06:40
davecheneywhat do you think of that?06:40
davecheneythe logic is, watch /environment06:40
davecheneyget the *ConfigNode, pass config.Map() to this function, receive Environ06:41
TheMuedavecheney: Loks straight.06:42
TheMueLooks06:43
* davecheney shakes his fist at the interface{}'s being passed around everywhere07:18
davecheneywell, mainly inside environs/config.go07:19
TheMuedavecheney: Hehe, indeed, anonymous interfaces are always some kind of double-edged.07:22
davecheneydummy.Open expect a schema.MapType, but ec2,Open expects a *providerConfig07:23
davecheneyI can't see a way to reconcile the two07:24
davecheneyapart from changing environProvider.ConfigCheck() to coerce everything to a map[string]interface{}07:24
davecheneyohh, it's actually worse than that07:26
TheMuedavecheney: I hope Roger is around soon. This is his playground.07:31
davecheneyOK: 6 passed07:37
davecheneyi got it to pass, but it is really ugly07:37
TheMuedavecheney: Now that it's working it's time to make it elegant. ;)07:47
davecheneyin the face of interface{}, little can be done07:50
davecheneybut I think I pushed some of the nastyness out of sight07:52
davecheneyTheMue: https://codereview.appspot.com/621504507:54
davecheneyjust checking it over before i send it out07:55
davecheneyhalo rog08:07
davecheneyi'm just finishing up08:07
davecheneycheck out https://codereview.appspot.com/621504508:07
rogdavecheney: hi there08:07
rogdavecheney: am very bleary!08:07
davecheneytook far too long (read most the day)08:07
davecheneyto produce that08:07
* rog looks08:07
davecheneybut hopefully it's a faithful representation of what we discussed last week08:07
rogdavecheney: cool.08:08
rogdavecheney: what time of day is it for you?08:08
davecheney18:0608:08
davecheneyso i'd better go and make the dinner08:08
davecheneyand tackle the mountain of washing up that sam left for me08:08
TheMuerog: Heya08:09
rogdavecheney: ok :-)08:09
rogTheMue: mornin'08:09
TheMuedavecheney: You got my comment. Mostly looks good.08:09
rogdavecheney: i thought we were going to use Setter/Getter or something like that08:10
davecheneyOpen can't take a getter, the value of attributes is provider specific08:12
davecheneyit spent most the day bashing my head on that08:12
davecheneyok, going afk for a few hours at least08:12
rogdavecheney: ok, have fun.08:12
rogdavecheney: washing up, yeah!08:12
rogdavecheney: BTW i was suggesting to pass a Getter to Check, not Open.08:13
TheMuerog: Too late. (lol)08:17
TheMuerog: Seen on the log that you yesterday asked for running Ubuntu in a VM.08:17
rogTheMue: yeah08:17
rogTheMue: was just wondering if my crash scenario was specific to me only...08:18
TheMuerog: Oh, tell me more.08:18
rogTheMue: ok, if you don't mind your VM crashing, try this: echo /dev/*/tun*08:19
TheMuerog: Maybe later on a copy. ;) So you play around with the tunneling?08:20
rogTheMue: yeah, but i couldn't get it working, and i don't know why.08:20
rogTheMue: that was on the plane.08:20
TheMuerog: That can't work.08:21
rogTheMue: what can't work?08:21
TheMuerog: Tunnels are below earth, not 10.000 feet above. (scnr)08:21
rog:-)08:21
TheMuerog: But what did you expect by echoing directly on the devices?08:22
rogTheMue: i expected it to tell me what files were in /dev08:22
rogTheMue: i ended up posting a stackoverflow question: http://stackoverflow.com/questions/10583601/how-should-the-tunattachfilter-ioctl-be-called08:23
TheMuerog: Never used echo for it, only ls.08:23
rogTheMue: you'd get the same behaviour if you passed the same argument to ls08:24
rogTheMue: echo is nice because it prints all the names on one line08:24
TheMuerog: attributes in config are always a map[string]interface{}? I already wondered about the usage of interface{} here.09:07
rogTheMue: they only happen to be a map[string]interface{} if the yaml is written correctly.09:08
TheMuerog: So I would define a type Attributes map[string]interface{} with setter/getter and Check(*EnvironChecker) (or something like that).09:08
rogactually....09:08
rogi think they're usually map[interface{}09:08
rog] interface{}09:09
rogTheMue: don't you like my Getter/Setter idea?09:09
TheMuerog: Could live with that too, even if it's very generic.09:09
TheMuerog: Get and Set on Checker?09:09
rogTheMue: the idea is that you should be able to pass a *ConfigNode to EnvironProvider.Check09:10
rogTheMue: you saw my comment, right?09:10
TheMuerog: Only a quick look so far.09:10
rogTheMue: https://codereview.appspot.com/6215045/diff/13/environs/open.go#newcode3609:10
TheMuerog: So your idea is to pass anything where you can "get" a value by key from as an input to the checker? Am I right?09:13
rogTheMue: yes09:13
TheMuerog: Sounds good.09:13
rogTheMue: and it also works the other way around09:14
TheMuerog: Yes09:14
rogTheMue: an environ config can be saved directly to a config node09:14
TheMuerog: So if it later will be something else and not the config node it's no problem.09:14
rogTheMue: yes09:14
TheMue+109:14
rogcool09:15
TheMuerog: Got this one http://shop.canonical.com/product_info.php?products_id=708 at UDS. Now here in the cold and wet Germany it's really useful.09:17
rogTheMue: doesn't look like it'll keep out the rain much :-)09:18
TheMuerog: No, but it keeps warm. Thankfully there's no rain inside my house. ;) And it's dry enough for the way to the car.09:19
rog:-)09:19
fwereadeTheMue, rog: I *did* sleep well last night but I'm feeling the aggregate effect of too many weird days... taking a swap day today09:58
rogfwereade: ok, good plan09:58
rogfwereade: enjoy the day!09:58
TheMuefwereade: OK, enjoy it.09:58
fwereaderog, cheers :)09:58
fwereadeTheMue, cheers also :)09:58
TheMue;)09:58
=== TheMue_ is now known as TheMue
=== rog is now known as Guest16956
=== Guest16956 is now known as rogpeppe
niemeyerHeya!13:51
TheMueniemeyer: Heya.13:59
niemeyerTheMue: How're things?14:15
TheMueniemeyer: Fine, just working on relations. And you?14:16
rogpeppeniemeyer: yo!14:17
niemeyerTheMue: I'm waking up after a rough night where the jetlag ruled out, and getting on some reviewing14:18
niemeyerrogpeppe: Heya!14:18
TheMueniemeyer: Yeah, adjusting the inner clock back is hard. And you've been there almost two weeks.14:19
AramI have a 26 hour biological clock, it's terrible.14:20
rogpeppeniemeyer: https://codereview.appspot.com/6145043/ is feeling a bit neglected :-)14:20
niemeyerrogpeppe: The whole queue is feeling neglected14:21
rogpeppeniemeyer: i think that might be one of the older items...14:21
niemeyerrogpeppe: I'm sure some of them are older than the others :)14:22
niemeyerrogpeppe: My day will be pretty much just reviews today14:22
niemeyerExcept for lunch and a meeting I have in about 1h14:23
niemeyerrogpeppe: Will do a quick pass on this one now.. hopefully we can get it in now14:24
rogpeppeniemeyer: thanks!14:24
niemeyerrogpeppe: version.ToolsPath makes no sense to me14:26
rogpeppeniemeyer: where do you think it should go?14:26
rogpeppeniemeyer: i was duplicating it all over the place14:26
niemeyerrogpeppe: If anywhere, this should live within environs.ToolsPath14:27
rogpeppeniemeyer: that could make sense. let me check.14:27
niemeyerrogpeppe: Although, maybe it should be a function instead, and let the implementation details off14:27
niemeyerrogpeppe: environs.GetTools(env)14:28
niemeyerAram: Ouch :)14:30
rogpeppeniemeyer: i'm not sure that's right14:30
rogpeppeniemeyer: the tools path is independent of the provider14:30
rogpeppeniemeyer: i think14:30
rogpeppeniemeyer: otherwise we've documented the interface to PutFile wrong.14:31
niemeyerrogpeppe: Not sure I see what you mean.. environs is not environment-specific either14:31
rogpeppeniemeyer: ah, so you'd have environs.PutTools too?14:31
Aramniemeyer: yeah, basically only once every 13 days I wake up when I should. All the other days I feel jet lagged. I compensate with caffeine, heh.14:32
Arammaybe that makes it worse.14:32
niemeyerrogpeppe: Don't we have that already?14:32
rogpeppeniemeyer: UploadTools, yeah.14:33
rogpeppeniemeyer: but without ToolsPath, it's difficult to test that the correct file has been written, because we don't know its name.14:33
niemeyerAram: I bet it does indeed :)14:33
niemeyerrogpeppe: We only have to know its name once, in a single test14:34
niemeyerrogpeppe: If UploadTools works as it should, everything is else may rely on that14:34
niemeyerrogpeppe: We can test that DownloadTools (?) gets the same content that UploadTools supposedly uploaded, for example14:35
niemeyerrogpeppe: We don't have to test the path for that14:35
rogpeppeniemeyer: i'm still not happy about cmd_test.go knowing about the underlying path name.14:35
niemeyerrogpeppe: I just pointed out that it doesn't have to..?14:36
niemeyerrogpeppe: I'm happy with PutTools and GetTools as well, btw14:36
niemeyerrogpeppe: Probably more sensible for GetFile/PutFile14:36
rogpeppeniemeyer: yeah, i tend to agree14:37
rogpeppeniemeyer: even though the flag is called --upload-tools14:37
rogpeppemaybe it might be better named --put-tools in fact14:37
niemeyerrogpeppe: Yeah, that's fine.. the language on the command line has to be more sensible for the user instead14:37
niemeyerrogpeppe: --upload-tools feels more clear in that sense14:37
rogpeppeniemeyer: ok14:37
rogpeppeniemeyer: ok, i'll see how it goes without ToolsPath14:38
niemeyerrogpeppe: Thanks.. I'll be here for about 20 mins more before lunch14:38
rogpeppeniemeyer: one thought: nothing is ever going to use GetTools except tests.14:41
rogpeppeniemeyer: hmm, update will, i suppose.14:42
niemeyerrogpeppe: Curious.. I wonder what's the purpose of uploading a file we never download :-)14:42
rogpeppeniemeyer: we use wget and tar...14:42
niemeyerrogpeppe: That's done for bootstrap only14:42
rogpeppeniemeyer: when else do we download tools?14:42
rogpeppeniemeyer: update will, i think, so i think it seems ok to me.14:43
niemeyerrogpeppe: Yep14:43
niemeyerrogpeppe: Whenever we have Go code running that wants to download tools14:43
niemeyerrogpeppe: Updating has to do that14:44
rogpeppeniemeyer: yeah14:44
rogpeppeniemeyer: i'll still need to verify against tar xz though14:44
niemeyerrogpeppe: Yeah, once, though14:44
rogpeppeoh darn14:48
rogpeppeniemeyer: GetTools won't work without support for ListFiles in Environ14:48
rogpeppeniemeyer: and even that's not quite there, as we've got a two-tier system.14:48
niemeyerrogpeppe: I don't understand how we can have ToolsPath in version and can't have a function instead14:50
rogpeppeniemeyer: because GetTools doesn't get a particular version - it searches for the latest appropriate version.14:50
niemeyerrogpeppe: So ToolsPath is equally bogus14:50
rogpeppeniemeyer: ToolsPath gives the path for the *current* tools. that's why i put it in version.14:50
niemeyerrogpeppe: Ugh.. that's not great14:51
niemeyerrogpeppe: Let's have ListFiles in the environment then, and have GetTools14:51
rogpeppeniemeyer: we'll need two ListFiles-type functions (or one with a bool arg) because we need to be able to look in private storage first before failing over to public storage.14:52
rogpeppeniemeyer: perhaps ListFiles(private bool) ([]string, error)14:53
niemeyerrogpeppe: That sounds like yet another great reason to have GetTools.. this is unrelated to ListFiles in the environment14:53
rogpeppeniemeyer: really?14:53
rogpeppeniemeyer: which bucket would ListFiles list?14:53
niemeyerrogpeppe: Well, maybe it could be.. thinking14:53
niemeyerrogpeppe: ListFiles should list the files in the environment14:54
niemeyerrogpeppe: That has a very well defined meaning14:54
rogpeppeniemeyer: so how do we list the files in the public bucket so we can use publicly uploaded tools?14:54
niemeyerrogpeppe: Which is in theory unrelated to anything about how-do-I-get-public-tools14:54
niemeyerrogpeppe: That's a good question for which we need a good answer.. it doesn't invalidate the former point, though14:55
rogpeppeniemeyer:  the environment knows about both, so i'd put that logic into the environment. if it's not in the environment, then we need some way of extracting info about the public bucket from it14:55
rogpeppes/i'd/i/14:56
niemeyerrogpeppe: Please explain "the environment knows about both"14:56
rogpeppeniemeyer: the names for both the private and public buckets are stored in environments.yaml14:56
rogpeppeniemeyer: and they're environment-specific14:57
niemeyerrogpeppe: You're putting statements as if they were true as you go, but it feels to me like the implementation of these details is actually still undefined14:57
rogpeppeniemeyer: ok. i'm happy to refactor.14:58
niemeyerrogpeppe: It is not true that the public files are environment-specific, for instance14:58
rogpeppeniemeyer: i'm not sure how we'd specify mutable storage in a provider-independent way though.14:58
niemeyerrogpeppe: All the environments for a given provider, or even for multiple providers, may share files14:59
rogpeppeniemeyer: oh, is the list-bucket functionality provider-independent?14:59
niemeyerrogpeppe: It is also not necessarily true that they are stored in environments.yaml either14:59
niemeyerrogpeppe: Since we'll have defaults14:59
niemeyerrogpeppe: It may be.. and it doesn't even have to be a bucket, for example15:00
rogpeppeniemeyer: what we need is some generic "container-like" functionality, i think15:00
rogpeppeniemeyer: if we want to go in this direction15:01
niemeyerrogpeppe: I think we can actually have an interface that defines a public-files thingy (name to be defined), and have a HTTP(S) consumer implementation for that15:01
niemeyerrogpeppe: I *suspect* we can use that single implementation with every provider we know about so far15:02
* rogpeppe doesn't know about anything other than s315:02
niemeyerrogpeppe: Then, we can have a env.PublicFilesThingy() or similar15:02
niemeyerrogpeppe: Which in pretty much all cases does15:03
rogpeppeniemeyer: and PrivateFilesThing() ?15:03
niemeyerrogpeppe: I suspect the env itself is a PrivateFilesThing15:03
rogpeppeew15:03
rogpeppeniemeyer: that seems a little icky15:04
rogpeppeniemeyer: i'm not sure why PublicFiles and PrivateFiles wouldn't be symmetrical15:05
niemeyerrogpeppe: env.PublicFilesThingy() will return TheBasicHTTPPublicFilesThingy(defaultURL or configURL) for pretty much all providers15:05
niemeyerrogpeppe: Because they are not in real life.. the environment manages storage of its own files.. the public files is managed by someone else15:05
niemeyerrogpeppe: There's nothing icky about that to me15:05
niemeyerrogpeppe: Although, I'm fine to have PrivateFilesThingy if you prefer that15:06
rogpeppeniemeyer: i'll think about it.15:06
niemeyerrogpeppe: It sounds sane to me as well15:06
rogpeppeEnviron.Files vs Environ.PublicFiles ?15:06
rogpeppeniemeyer: then the file interface can be simply be: interface {Put(...) error; Get(...) error; List( ...) ([]string, error)}15:07
rogpeppeniemeyer: because we won't need to disambiguate15:07
niemeyerrogpeppe: I'm happy with that.. feels very clean15:08
rogpeppeniemeyer: i'll see how it looks15:08
niemeyerrogpeppe: Happy with PrivateFilesThing too15:08
niemeyerrogpeppe: Btw, we need a name :)15:08
niemeyerrogpeppe: I'll have lunch, and try to come up with some suggestions15:08
rogpeppeniemeyer: Storage?15:08
rogpeppeniemeyer: ok, enjoy15:08
rogpeppe!15:08
niemeyerrogpeppe: Sounds great15:09
* niemeyer => lunch15:09
* niemeyer_ is back16:13
niemeyer_rogpeppe: How does it feel?16:13
rogpeppeniemeyer_: it's looking quite nice16:14
rogpeppeniemeyer_: http://paste.ubuntu.com/989159/16:14
rogpeppeniemeyer_: it feels like another piece of the puzzle has dropped into place16:14
rogpeppeniemeyer_: what do you think?16:16
* niemeyer_ reads16:18
niemeyer_rogpeppe: Looks very good indeed16:19
niemeyer_rogpeppe: A couple of suggestions:16:19
rogpeppeniemeyer_: cool.16:19
niemeyer_rogpeppe: Let's not get into the S3 prefix madness16:19
niemeyer_rogpeppe: Let's call it a dir16:19
rogpeppeniemeyer_: ok. i started with that.16:20
rogpeppeniemeyer_: but it's hard to do proper dirs with s316:20
niemeyer_rogpeppe: I thougth it was trivial?16:20
rogpeppeniemeyer_: List(prefix="e", separator="/") will return "elephant" AFAIR16:20
rogpeppe(if "elephant" exists, of course)16:21
niemeyer_rogpeppe: What will "e/" return?16:21
rogpeppeniemeyer_: good point - just always append a /16:21
niemeyer_rogpeppe: The only reason to not do that would be efficiency I guess16:22
niemeyer_rogpeppe: In the sense we could list precisely what we want, if possible16:22
niemeyer_rogpeppe: This might be enough of a reason to implement the prefix-based stuff16:22
rogpeppeniemeyer_: if we know precisely what we want, then why are we doing a LIST?16:22
niemeyer_rogpeppe: "foo-*16:22
rogpeppeniemeyer_: i don't think we should worry.16:23
rogpeppeniemeyer_: we're not going to have *that* many versions.16:23
rogpeppeniemeyer_: and if we do, we can partition the dirs16:23
niemeyer_rogpeppe: It may be useful to avoid returning 100s of tools from the public storage, actually16:23
niemeyer_rogpeppe: tools-<major>.*16:23
rogpeppeniemeyer_: in which case, why not make tools-<major> a directory?16:24
rogpeppeniemeyer_: as you said, the S3 prefix stuff is madness16:24
niemeyer_rogpeppe: Well, we can make it saner.. we'd not support varied separators, or distinguish common prefixes in separate lists16:25
rogpeppeniemeyer_: not quite whether to go for "/" or "" as the root directory.16:25
rogpeppeniemeyer_: i don't see the need for the abstraction - you've persuaded me. prefix might not be as easy to implement in other providers16:25
rogpeppeniemeyer_: directories are sufficient16:25
niemeyer_rogpeppe: I can't see how that would possibly be the case16:25
rogpeppeniemeyer_: if the provider actually uses a directory-like structure, prefix matching will be harder to do efficiently.16:26
rogpeppeniemeyer_: (we'd need to do it client-side)16:26
niemeyer_rogpeppe: Anywhere we can list a directory, we can filter it out with three lines (for+if+append)16:27
rogpeppeniemeyer_: exactly. but then we'll be getting the inefficiency we're trying to remove by using the prefix abstraction.16:27
rogpeppeniemeyer_: and using a directory will be the same efficiency in both cases.16:27
niemeyer_rogpeppe: We'll be getting the inefficiency you're suggesting we'd have all the time16:27
niemeyer_rogpeppe: Yes, the same *inefficiency* in both cases..16:28
rogpeppeniemeyer_: not if we store tools as tools-$MAJOR/$MINOR-$PATCH.tgz16:28
niemeyer_rogpeppe: Which means filtering it out by hand, client side, in both cases..16:28
niemeyer_rogpeppe: Not sure about what you're arguing for, to be honest16:28
rogpeppethe above16:28
rogpeppeniemeyer_: note the "/" between major and minor versions16:29
rogpeppeniemeyer_: then we can just List("tools-$MAJOR")16:29
niemeyer_rogpeppe: Ok, but this naming isn't great16:29
rogpeppeniemeyer_: no?16:30
niemeyer_rogpeppe: "tools/$MAJOR/tools-$MAJOR.$MINOR.$PATCH.tar.gz" then16:30
rogpeppeniemeyer_: why does it need to have the same pattern on the provider as on disk?16:30
niemeyer_rogpeppe: Because I don't want to wget 1.2.tar.gz16:30
rogpeppewget tools/2/1.2.tgz seems ok to me.16:31
niemeyer_rogpeppe: Sorry, 1.2.tar.gz isn't a proper file name16:31
rogpeppeniemeyer_: but anyway, all this is premature optimisation - we can change it all later trivially.16:32
rogpeppeniemeyer_: i think we've shown that we don't need prefix matching to do this efficiently16:32
rogpeppeniemeyer_: and i'm ok with the redundant major version too16:32
rogpeppeniemeyer_: by the time we've got hundreds of versions, we'll have upgrade and we can change the schema on the fly :-)16:33
niemeyer_rogpeppe: No, let's do it now please.. the need is obvious, the implementation trivial16:33
niemeyer_rogpeppe: You can pick either.. tools/tools-$MAJOR.$MINOR.PATCH.tar.gz + prefix <OR> tools/$MAJOR/tools-$MAJOR.$MINOR.$PATCH.tar.gz + dir16:34
rogpeppeniemeyer_: ok.16:34
rogpeppeniemeyer_: i vote for the latter.16:34
niemeyer_rogpeppe: Cool, let's go with it then16:35
rogpeppeniemeyer_: any other suggestions?16:37
=== niemeyer__ is now known as niemeyer
rogpepperight, off for the day. see y'all tomorrow.17:01
niemeyerWhat the heck17:05
niemeyerGoogle+ Hangout has f* up my connection permanently..17:06
niemeyerI had to reboot and reconnect the router..17:06
niemeyerI wonder if the Hangout servers are DoSing me somehow17:07
DavieyI wonder if he had the 'DoS me' option enabled in Advance pref's?17:10
ahasenackhi guys, niemeyer tells me his internet is down for good17:20
ahasenackhazmat, jimbaker, others: ^^^17:21
hazmatahasenack, thanks for relaying17:22
ahasenackhazmat: 3g is also down, not just adsl, so it must be something more serious in that region17:22
hazmatindeed, that's uncommon17:23
jimbakerinteresting17:23
niemeyerOkay17:24
niemeyerSomething funky is happening with the local ISPs17:24
niemeyerManaged to get in via 3G now17:24
ahasenackmaybe everybody is playing diablo 3 ;)17:25
niemeyerahasenack: That might explain it17:25
TheMueniemeyer: Who may be interested in a possible bug in relation.py in the current implementation?17:27
niemeyerTheMue: Ben, Jim, or Kapil17:27
niemeyerTheMue: Everybody would be *interested* though, but one of them will have to look at the code17:27
TheMueniemeyer: I'm not sure if it's a bug, but I think it's worth a look.17:28
TheMuejimbaker: Still around?17:28
hazmatTheMue, what's up?17:31
TheMuehazmat: Ah, heya.17:32
TheMuehazmat: Please take a look at relation.py at line 91.17:32
hazmatTheMue, yeah.. thats suspect its only checking one endpoint17:34
TheMuehazmat: I think service_id has to be service_relation.internal_service_id().17:34
TheMuehazmat: Yep, that's what I thought. Especially inside the loop.17:34
hazmatTheMue, it should be service_relation.service_id17:35
hazmater. internal_service_id17:35
TheMuehazmat: The service id is stored in _service_id. So you have to use the accessor.17:35
TheMuehazmat: Yeah17:35
jimbakerTheMue, still around, but looks like hazmat has got you covered17:36
TheMuejimbaker: Heya. Yes, hes has. ;) Thx.17:36
hazmatbzr blame suggests otherwise ;-)17:37
hazmatjimbaker, trivial http://paste.ubuntu.com/989322/17:38
jimbakerhazmat, looks like a check to ensure we are not seeing inconsistent topology. iirc this was a bug fix to fix looping tests17:40
hazmatjimbaker, it looks it was part of the initial impl17:40
hazmatjimbaker, updated trivial w/ test http://paste.ubuntu.com/989333/17:41
hazmatjimbaker, okay.. given lack of objections.. adding to trunk.. the failure without the change is InternalTopo..Error instead of StateChanged17:44
jimbakerhazmat, ok, got context - it just looked like all the other checks we have added to avoid InternalTopologyError, so along the same lines17:44
jimbakerhazmat, +117:44
hazmatthanks TheMue17:46
niemeyerrogpeppe: ping17:47
TheMuehazmat: np, happy to help17:48
niemeyermthaddon: ping18:08
TheMueSo, I'm off. Good night.19:03
* hazmat meanders off for food19:06
flaviamissido you guys have any intention of implementing an api for juju?20:39
hazmatflaviamissi, definitely20:58
hazmatflaviamissi, there's a very rough draft extant in http://bazaar.launchpad.net/~hazmat/juju/rest-api-spec/files/head:/source/drafts/21:12
flaviamissihazmat: great! it would be very useful, I'll take a look at it, maybe I can help on that21:33
hazmatflaviamissi, great, comments welcome, its basically in three parts, a REST api, an HTTP command api corresponding to the CLI, and websocket notification mechanism.21:34
flaviamissihazmat: yeah, I'm reading the spec now, is anyone working on that?21:37
hazmatflaviamissi, there's an experimental branch that someone through together, but its probably not going in as is. there's some drive to have this done for 12.10 to support other activities though.21:39
hazmatflaviamissi, the experiment is attached to https://bugs.launchpad.net/juju/+bug/80428421:40
flaviamissihazmat: great, thank you21:41
hazmatflaviamissi, that's a client side rest api though..21:41
hazmatie. its not deployed as part of juju21:42
flaviamissihazmat: hmm... but this is the intention? I mean, the api won't be deployed as part of juju?21:43
hazmatflaviamissi, yes that's the goal.. like i said that branch is experimental.. its not clear its the basis for an official rest api yet21:43
flaviamissihazmat: ok21:43
flaviamissihazmat: that's for the python version, right?21:44
hazmatflaviamissi, it is21:44
hazmatflaviamissi, at this point feedback on the spec would be the most helpful, ie. making sure we're covering appropriate use cases and functionality21:45
flaviamissihazmat: I can do that21:45
hazmatnegronjl, where would you want to take jrapi?21:45
davecheney'sup 'sup21:48
negronjlhazmat:  what do you mean ?21:52
negronjlhazmat:  If it serves a purpose, let's use it.  If anyone comes up with something better, we can use that ...21:54
negronjlhazmat: but, until something better shows up, I am playing with jrapi21:54
hazmatnegronjl, sure, but trying to figure out where it goes from here.. ie do we evolve it add tests, match it to spec and try to merge it, or do we end up with a separate official project that gets merged.21:56
flaviamissihazmat: the spec looks really good, looks like all cases are covered, but I'll take another look later21:57
=== niemeyer__ is now known as niemeyer
niemeyerflaviamissi: There was some mixup there..22:01
niemeyer<flaviamissi> hazmat: hmm... but this is the intention? I mean, the api won't be deployed as part of juju?22:02
niemeyer<hazmat> flaviamissi, yes that's the goal.. like i said that branch is experimental.. its not clear its the basis for an official rest api yet22:02
niemeyerflaviamissi: hazmat intended to say that, yes the goal is to have the API deployed as part of juju22:02
flaviamissiniemeyer:  hmmm22:03
flaviamissiniemeyer: that makes more sense to me :)22:03
niemeyerflaviamissi: It's one of the next major features that will come22:03
niemeyerflaviamissi: After the port is done22:03
flaviamissiniemeyer: so, the plan is not have the api for the python version?22:04
niemeyerflaviamissi: Yes, Python is in maintenance mode, and we're working on getting the port done in time for 12.1022:05
flaviamissiniemeyer: great22:05
flaviamissiI'm leaving, we chat more later22:06
* niemeyer => dinner too22:07
hazmatniemeyer, doh.. yeah.. totally it should be deployed as part of juju22:11
hazmatthat was unclear22:11
hazmatasync response communication  fail22:11
negronjlhazmat:  Can you make the spec available to me?22:26
negronjlhazmat:  I'm up for using this API of course but, the final decision on that I believe it to be yours22:26
hazmatnegronjl, its publicly pushed to docs and editable by charmers22:27
hazmatnegronjl, http://bazaar.launchpad.net/~hazmat/juju/rest-api-spec/files/head:/source/drafts/22:27
negronjlhazmat:  I'm up for modifying/merging jrapi22:27
hazmatnegronjl, testing would be key22:27
negronjlhazmat:  I agree on testing... I can start adding some testing to the project as well... Let me take a moment to read the spec in full...22:28
hazmatnegronjl, i am as well.. realistically this month i don't have much spare time,  i'd like to get the spec approved and rolling though before then.22:28
negronjlhazmat:  ok.  Not sure what the next step on this is .... Has the spec been approved by the powers that be ?22:29
hazmatnegronjl, no.. its in decent shape, but needs some polish22:30
hazmatand some parts need to be flushed out a lot more22:30
hazmatlike auth22:30
negronjlhazmat: I see.  Well.  I want to take some time to read the specs.  This will give me more information to come up with more intelligent questions.22:31
negronjlhazmat: I can get back to you with some feedback tomorrow.  Does that work for you ?22:31
hazmatnegronjl, sounds good22:31
SpamapSjimbaker: can you please reference bug numbers on all commits to trunk!23:29
SpamapSjimbaker: I need a bug report for every change or we cannot SRU to 12.04.123:30
SpamapSjimbaker: trivials included, though r536 actually doesn't look trivial *at all*23:31
hazmatSpamapS, its like 5 lines23:52
SpamapSits not about the size23:52
SpamapSI need to understand why its ok to update the stable release with it.23:52
hazmatSpamapS, its nothing something thats needed in practice, it still raises an error in either csae23:52
hazmatjust cleans up the error to something intended for the user instead of an internal error23:52
SpamapSwe have to justify every change23:52
SpamapSso, Low priority change, that was not on the galapagos list23:53
SpamapSI think I need to fork a 12.04.1 branch and only pull in High bug fixes23:53
hazmatSpamapS, indeed it came out of of a porting comment23:53
hazmatfrom frank while looking at the relation code23:53
SpamapSI'm going to be pushing 535 into precise-proposed tomorrow23:53
hazmatSpamapS, i can back it out.. if need be23:53
hazmatjust put it on the unfettered branch23:54
SpamapSThen we have to verify all 4 bugs fixed then it goes to precise-updates.23:54
SpamapSI plan to keep trickling in the galapagos bugs as they're comitted23:54
SpamapShazmat: if it has a reasonable test case, impact statement, and regression potential is Low, then we can leave it23:54
SpamapSjust document it with a bug23:54
hazmatall those things are true23:54
* hazmat adds a bugs23:55
SpamapSyeah I figure as much. Just have no way of knowing that w/o a bug #23:55
SpamapSWe can go nuts w/ commits again after June 6, but for just this month.. lets fix bugs. :)23:55
SpamapShazmat: I want to get acls in. Can we do that without breaking the world?23:55
SpamapScrap its 45 minutes later than I wanted to EOD today.. :-P23:56
hazmatSpamapS, define breaking the world ;-)23:56
hazmathmmm23:56
hazmatSpamapS, actually we could23:56
hazmatSpamapS,  its done at the connection level, so we can detect support and activate it without too much trouble.23:57
hazmatjust switch the security policy from acl to the noop23:57
SpamapShazmat: I think all we need to do is make the secret arg to the agents optional23:57
hazmatah... mixed mode envs23:57
SpamapShazmat: existing bootstrapped envs will just work w/o acls23:57
hazmatnewer client with older env isn't too bad23:58
hazmatnewer agent with older env could work23:58
SpamapSand we'll make a note that if you upgrade the provisioning agent, you have to re-bootstrap or something23:58
hazmatit would apply generically to all of them23:58
hazmater... all agents23:58
SpamapSI don't want to support mixed mode23:59
SpamapSI just want to make sure existing bootstrapped envs with juju-origin: distro can continue to add-unit and deploy23:59
hazmatwell then we need the upgrade/consistent version stuff that rog is doing on the go version23:59
hazmatSpamapS, that is mixed mode23:59
SpamapSum, ok23:59

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