/srv/irclogs.ubuntu.com/2013/02/05/#juju-dev.txt

hazmati'm trying to debug why the charm store doesn't have a particular charm.. specifically landscape-client none of the personal versions or the 'official' version are available00:07
hazmati wrote a quick go program and verified that the charm loads correct, and that the its in the ls getBranchTips output..00:08
hazmati'm stumped as to why its not in the store then.. any suggestions?00:08
hazmathmm.. i did find one personal archive in the store.. cs:~therve/precise/landscape-client ( but none of the 4 others seems to have made it)00:12
=== slank is now known as slank_away
jtvIs the schema package documented anywhere?04:58
jtvThis is driving me nuts.  Getting a strange error in my tests:06:24
jtvPanic: runtime error: invalid memory address or nil pointer dereference (PC=0x8057A45)06:24
jtvWeird thing is, this is the third of a series or near-identical lookups.06:25
dimiternjtv: what are the first couple of lines at the end of the panic dump?06:25
jtvI'm trying to test an environs/*/config module.06:25
dimiternpaste?06:25
jtvHi dimitern!  Coming up.06:26
dimiternhi :)06:26
jtvdimitern: https://pastebin.canonical.com/83822/06:26
jtvPart of the weirdness is that I see no reason why that configuration string shouldn't be there.06:26
dimiternjtv: so do you have admin-secret defined in the config attrs?06:27
jtvI thought I did.06:27
dimiternjtv: can I look at the module that fails? have you proposed the branch?06:29
jtvNot yet.  I'll put it up for you somewhere.  Thanks.06:29
jtvdimitern: try lp:~jtv/juju-core/mpv-config06:31
dimiternjtv: np, I know how it is with these pesky go errors - it took me some time to start getting what's actually was wrong06:31
* dimitern looking06:31
jtvI made _some_ progress: I converted a c.Check(err, IsNil) to an assertion and now at least I'm not getting the segfault.06:33
jtvJust a failure I can't explain.06:33
jtvI could see how the checks for all 3 config items would fail.  But what did I do to break just the last one?06:35
dimiternjtv: so the difference between Check and Assert is only in that the latter fails the test immediately, while the former still marks it as failed, but continues to run it, so there's something going on after that Check you changed06:36
jtvYes...  and I'm not even so worried about that.06:37
jtvWhat I'm worried about is how the error comes back non-nil in the first place.06:37
jtv(The check that fails looks a bit different from the others right now, but that's from experimentation with the problem.)06:37
dimiternjtv: so I can see a potential problem in newConfig06:39
dimiternjtv: cfg should be := make(map[string]interface{})06:40
dimiternjtv: but since you're initializing it, probably should be ok - but try separating the making and init06:40
jtvYeah.  I've just been doing that for new().06:41
jtvI haven't been able to find any explanation as to why make() is needed if returning the address of a local is guaranteed to be OK.06:41
dimiternjtv: try: cfg := map[string]interface{}{values} - can skip the loop06:41
dimiternmake is needed for maps06:41
dimiternor slices06:42
* jtv tries06:42
jtvdimitern: I'm not so sure I can skip the loop... "values" is meant to complement (and override) the existing "cfg."06:45
jtvdimitern: no change.  :(06:47
dimiternjtv: hmm06:47
dimiternjtv: let me try you branch locally06:47
jtvThanks again for helping out.  I really appreciate it.06:49
dimiternnp06:51
jtvdimitern: I just updated my branch to avoid stack allocation of persistent objects.06:56
dimiternjtv: so as far as I can see, admin-secret is not set for some reason by the time it's validated in config:Validate()07:00
jtvYes... but how is it different from the other items?  Wait...  maybe it has a special meaning to juju.07:01
jtvYup.07:01
jtvI guess attrs only receives the "unknown" attributes, and the juju-standard ones go somewhere else.07:01
dimiternhmm shouldn't be07:02
dimiternI'm comparing it with openstack provider to see what could be wrong07:02
jtvYup.  That's part of what I cargo--culted.07:02
dimiternI think the map is structured wrong07:06
dimiternsee, the attrs should match the environments.yaml07:06
dimiterni.e. tree-based, not flat07:06
dimiterntype attrs map[string]interface{}07:06
dimiterncfg := attrs{"environments":attrs{"testenv":attrs{"type":"maas"}}}07:06
dimiternsomething like this07:07
jtvWell this is related to rogpeppe's ongoing work tighten up those tests.07:07
jtvWhen you don't need to do the round-trip, you don't need that tree above the environ config.07:07
dimiternhmm07:08
dimiternyes it seems if you're using tree-based cfg, you need to marshal it to yaml and use ReadEnvironBytes, otherwise NewFromAttrs07:10
dimiternsorry I couldn't help more, but ask rogpeppe when he's around07:12
jtvI will.  Thanks.07:12
jtv(What you see is copied from his proposed test change :)07:12
dimiternI see :) yeah, definitely he's the man then07:13
rogpeppejtv, dimitern: hi08:19
dimiternrogpeppe: hiya08:19
rogpeppejtv: are you still around?08:20
rogpeppedimitern: what's the name of jtv's branch? i'll take a look at what's going on.08:23
dimiternrogpeppe: lp:~jtv/juju-core/mpv-config08:24
rogpeppedimitern: ta08:30
jtvHi rogpeppe08:54
rogpeppejtv: hiya08:54
rogpeppejtv: i'm just having a look at your branch now08:55
jtvMy problem is now that I'm not seeing my admin-secret in my test config.08:55
jtvThanks.08:55
rogpeppejtv: nearly worked it out. it's being lost in maasEnvironProvider.Validate08:56
jtvIs it?  I wrote it, but I have no idea what most of it means.  It's just stuff that seems to be needed based on other implementations.08:57
rogpeppejtv: yes, i'm afraid the config stuff is not ideal. it's been through a fair few iterations, but we're still not entirely happy with it.08:57
rogpeppejtv: well, i'm not anyway :-)08:57
rogpeppejtv: i think you're right about making the round trip test separate BTW08:58
jtvThanks.08:58
jtvI don't mind a bit of legacy complexity, but it'd be so nice to know what's going on!  :)08:58
jtvHmmm mango from my own tree.08:59
fwereadehey all08:59
rogpeppefwereade: yo!09:00
dimiternfwereade: hey!09:00
fwereadejam, dimitern, mgz: if you want to talk about last night's braindump let me know09:00
dimiternfwereade: what's that?09:01
fwereadehum, did I just send it to mramm?09:02
fwereadedimitern, about get/set and upgrade-charm09:03
dimiternfwereade: ah, this one, yeah09:03
dimiternfwereade: sounds interesting09:03
dimiternfwereade: I have a couple of things in line on the provider, which I hope to land today and then I can look into get/set or charm upgrades09:04
fwereadedimitern, I strongly favour all of us having a chat about them before anyone gets too deep into implementing them, there are probably assumptions that  I have failed to capture that a chat could smoke out09:05
dimiternfwereade: sure, we'll talk first, I have no idea where to begin anyway :)09:05
rogpeppejtv: ah, i've found your problem09:08
rogpeppejtv: at least, i think i have; let me check.09:08
rogpeppejtv: yup.09:08
rogpeppejtv: the problem is you've included "admin-secret" in the maasConfigChecker schema fields09:09
dimiternrogpeppe: that's odd - so what does this cause?09:10
rogpeppejtv: but you need to put only fields that are unknown to the config package in there, otherwise they'll override the known attributes when you do the Apply at the end of Validate.09:10
rogpeppejtv: the fact that you needed to put admin-secret in the schema defaults, despite it being a required field, was probably a hint.09:11
jtvI see.  Thanks for finding that!09:11
rogpeppejtv: it's easy stuff to get wrong though. i'd love to find a nice way to factor out a lot of this stuff.09:12
jtvI wasn't aware that I needed to put it in the schema defaults, really.09:12
dimiternrogpeppe: so schema defaults is only for fields which are not required and should have defaults?09:12
rogpeppedimitern: if you don't have a schema default, the field is required09:12
dimiternrogpeppe: I see!09:12
rogpeppedimitern: but in this case the schema is used to validate only fields returned by config.Config.UnknownAttrs09:13
dimiternrogpeppe: I get it now09:13
dimitern10x09:14
jtvOh, so if I want these fields to be required, I can just leave them out of the schema instead of checking for them.09:14
jtvI mean, out of the defaults.09:14
jtvNot out of the schema, obviously.09:14
rogpeppejtv: out of the defaults, yes09:14
jtvYayy that gets rid of some code.09:14
rogpeppejtv: that's kinda the point of the schema - it does quite a few checks for you so you know it's in a certain form before you start checking09:15
jtvYeah, it's just that I couldn't find any documentation whatsoever for it.09:15
jtvSo I had no idea what it did that I could rely on.09:15
dimiternit's probably worth a comment somewhere then!09:15
jtvIt would be, definitely!09:15
rogpeppejtv: have you tried "go doc launchpad.net/juju-core/schema" ?09:15
jtvNope.09:16
rogpeppejtv: if in doubt, read the docs :-)09:16
jtvHmm... that just produced the stuff I'd already read.09:17
rogpeppejtv: although they're not great there, it's true09:17
jtvNot documentation, just implementation notes.09:17
jtvWhat is a Checker?  A Checker is called recursively etc.  Now you know, so the rest can be explained in terms of Checkers!09:18
rogpeppejtv: yeah09:18
rogpeppejtv: one of gustavo's earlier efforts :-)09:18
jtvI find one of the hardest things to imagine is not knowing something that you do know.09:18
jtvThe ability to grasp something complicated and to explain it don't really fit comfortably into one brain at the same time.  :(09:19
rogpeppejtv: there should be a package-level comment that explains how things work09:19
jtvDefinitely, yes!09:19
rogpeppejtv: one small remark: usually we name error values starting with "err", so your "noMaasServer" would be errNoMaasServer.09:20
rogpeppejtv: another one: there's not much point in putting a "maas" prefix on types/variables that are local to the maas package, so i'd define "environProvider", not "maasEnvironProvider", etc, thus saving quite a bit of typing :-)09:22
jtvAh OK, I'll patch that up quickly, thanks.09:22
rogpeppejtv: ah, and error messages generally don't start with capital letters (they usually form part of a longer "sentence")09:22
jtvWell I found the environProvider slowed me down a lot because it sounds just like EnvironProvider, and because it's relative to the package you're in.09:22
jtvAh, yes, back to K&R times.  :)09:23
jtvWhen Bearded Dinosaurs Roamed the Earth.09:23
dimitern:D09:23
jtvCan I punctuate?09:23
rogpeppejtv: sure, but there's generally no full stop. an error message isn't the full message that will be printed to the user.09:24
jtvAh.09:24
jtvGood thing most of those error messages are no longer needed!09:24
rogpeppejtv: environProvider is supposed to sound like EnvironProvider BTW - it's a provider-specific implementation of the EnvironProvider interface.09:25
rogpeppejtv: all types in Go are relative to their package - it's common to define names that make sense in the context of the package itself.09:26
rogpeppejtv: so if you think of it as "maas.environProvider" it perhaps makes sense. rather than "maas.maasEnvironProvider", which has a certain amount of redundancy.09:27
jtvI understand that they're supposed to sound similar, but they sound _too_ similar!  And I'm fully aware of the whole idea of nested namespaces.  I myself thought that was a good idea, back in the 20th century.  The real world taught me otherwise!09:28
TheMueThe best way to use a language is to use the idioms of that language. Java in Java, Smalltalk in Smalltalk, Go in Go.09:29
rogpeppejtv: namespaces aren't nested - they're two llevel. package.name09:30
rogpeppejtv: well, three level if you count structs and interfaces.09:30
rogpeppejtv: what TheMue says - this are just standard Go idioms. they seem to work pretty well most of the time.09:31
jtvFilm at eleven!09:31
rogpeppejtv: :-)09:31
jtvI mean, this stuff we all know.  I'm not saying it's new to me, but that it's stuff I found to be bad ideas.09:32
rogpeppejtv: what made you think that nested namespaces weren't a good idea BTW?09:32
jtvIt increases the overhead of finding out what's going on.  If I see package.Name, I need to find out which package that actually is.09:33
jtvIt's an extra step of indirection in an inner loop.09:33
jtvIncreases the overhead of understanding new code tremendously.09:33
rogpeppejtv: luckily it's possible to do that mechanically and instantly.09:33
jtvBut tools like grep won't know about that.09:34
rogpeppejtv: there are tools that do.09:34
dimiterni think what's confusing at first is that modules and files are not orthogonal in go09:35
rogpeppejtv: making all names unique takes us back to the pre-K&R days of having a shared struct field namespace09:35
rogpeppejtv: i mean pre-ANSI C of course09:36
dimiternyou can have module X, which is spread across several files and all of them define it, so finding X.Y is not as straightforward as in other langs09:36
TheMuedimitern: Thankfully packages and files aren't the same. It would be a hard limitation.09:37
dimiternbut has it's advantages too ("silent" scope membership) and access in-module09:37
rogpeppedimitern: yeah, i rely heavily on godef (http://godoc.org/code.google.com/p/rog-go/exp/cmd/godef)09:39
rogpeppedimitern: which takes me straight to the definition of any name.09:39
dimiternrogpeppe: sweet! I didn't know this09:39
dimiternrogpeppe: thanks, I'll definitely use this09:40
dimiternbeats rgrep by a margin :)09:40
rogpeppedimitern: i believe there's perhaps similar functionality in some of the Go-modes for other editors.09:40
dimiternrogpeppe: not for emacs, AFAIK09:41
rogpeppedimitern: BTW godef is a not-too-thick layer on top of http://godoc.org/code.google.com/p/rog-go/exp/go/types09:41
rogpeppedimitern: so you might want to customise it for your situation09:42
rogpeppedimitern: (it's nice when a single click takes you to the definition.09:42
dimiternrogpeppe: yeah, I could try to automate it somehow from the editor when I have some time09:42
rogpeppe)09:42
rogpeppedimitern: it's particularly good when you've got something like: x.foo.Bar().Arble, in the middle of a loop where is the loop variable etc, and you can click on Arble and it'll do all the type inference (through embedded fields too) and go straight there.09:44
dimiternrogpeppe: so not only X.Y, but even more complex expressions are supported09:44
rogpeppedimitern: yeah - it supports almost everything. one notable limitation is it doesn't support import to "."09:45
rogpeppedimitern: i need to fix that09:45
dimiternrogpeppe: ah, yeah, I see how this can be tricky09:45
rogpeppedimitern: it's not actually too tricky - it's just not as efficient as i wanted it to be. i thought . imports would be very rare, but gocheck is a sadly common exception.09:47
dimiternyeah09:47
rogpeppejtv: as for grep, i have an experimental command which covers some of the same ground, and makes it possible to grep for particular symbols even if they don't have a unique name: http://godoc.org/code.google.com/p/rog-go/exp/cmd/gosym09:50
jtvArgh, more tools, more cognitive load!09:51
rogpeppejtv: that's the unix way :)09:53
rogpeppejtv: BTW a grep pattern i use quite a bit: grep for ' Foo(' finds functions and method names named Foo, with surprisingly little redundancy.09:56
jamw7z: /wave10:04
jammorning10:04
w7zhey!10:04
jamw7z: good to have you back. how was fosdem?10:05
w7zgood! I'm feeling a little fluish as an after effect, but not as ropey as I was last night, just ignore the coffing10:06
jtvrogpeppe: sorry for being quiet — in meetings!10:18
dimiternrogpeppe: can you take a look at a couple of related trivials? https://codereview.appspot.com/7307046/ and https://codereview.appspot.com/7299045/10:19
rogpeppejtv: np10:20
dimiternjam, w7z: morning10:20
jtvrogpeppe: would you be up for reviewing that branch?  It's for our feature branch.10:22
rogpeppejtv: sure10:22
rogpeppejtv: did you see my comments on gomaas BTW?10:22
jtvOh, yes...  still have to go into details with those.10:23
jtvToo many tabs open!10:24
rogpeppejtv: i have that problem10:24
jtvThe Launchpad+Rietveld split makes me worse at it.  :)10:24
jtvFound it.10:24
rvbarogpeppe: I just saw your review on gomaasapi, thanks a lot for that, I'll work on it today.10:25
rogpeppervba: cool, thanks.10:25
dimiternrogpeppe: ^^ it's what we discussed last week10:25
jtvIn particular, we did talk about the idea of representing a higher abstraction level.10:25
rogpeppedimitern: am on it10:25
dimiternrogpeppe: thanks10:25
jtvWe didn't want to mirror the whole MAAS API on that side manually — so our hope is that at some point we can generate a native API representation in some automated fashion.10:26
jtvUntil then, given time constraints, we kept it very basic.10:26
rogpeppejtv: perhaps, to start with, you could restrict the provided API to the things that juju needs.10:27
rogpeppejtv: and build it up from there.10:28
jtvThat option came up, but it's still mirroring the API details manually...  plus it increases the risk of moving to an automated API.10:28
jtvBecause it may require changes in approach.10:28
jtvFor now we don't need to make very  intensive use of the API yet, so we went with something highly generic that'll do for what we need.10:29
jtvTime pressure is a big thing for us.  :)10:29
rogpeppejtv: as it is, the gomaasapi package is pretty incomprehensible without a deep understanding of how the maas client-server interaction works, which seems to lose the point of the package.10:29
jtvYes, but bear in mind that the package's immediate reason for existence is the work we're doing now, immediately after.10:30
jtvSo see this more as laying the foundations for an independent front-end, rather than providing a full front-end for general use.10:30
jtv(Also the MAAS API is extensively documented, so though it's not easy, it should be possible to figure out)10:31
rogpeppejtv: i'd be happier if the surface area was much smaller.10:31
jtvMeasured in what terms?10:31
dimiternjam: why you think it'll be tricky to land my change? what ordering?10:34
jamdimitern: you can't just mark it approved, because it won't past the juju-core test suite10:34
jamI mentioned it in my email10:34
dimiternjam: yes, so how then10:35
dimiternjam: juju-core first?10:35
rogpeppejtv: the number of artifacts exported from the package10:35
rogpeppejtv: most of the functions and methods in the package feel like http utility functions.10:36
jtvWell to be honest some of those things probably just shouldn't be exported — but those things are subject to change and Go makes it a bit harder to streamline them.10:37
jamdimitern: so you can, at the risk that if there was something you didn't catch, you've broken the juju-core suite until your goose patch lands.10:37
jamThe manual way is to do the merges locally, make sure everything passes, and then push them up to the right location.10:37
rogpeppejtv: what do mean by "Go makes it a bit harder to streamline them." ?10:38
jtvrogpeppe: all you really need to know, I think, is JSONObject, MAASObject, and a constructor.10:38
jtvUn-exporting an item means changing its name everywhere.10:38
dimiternjam: can you explain the manual way in more detail?10:38
rogpeppejtv: luckily the compiler will tell you exactly where you need to change the name...10:38
jtvYes, but you have to go ask it.10:39
jtvAnd make the changes.10:39
jtvBeing told by a computer what work you need to do is not the same as not having to do it.  :)10:39
rogpeppejtv: sure, but it's not more than a minute or so's work.10:39
jamdimitern: cd $GOPATH/src/launchpad.net/juju-core; bzr merge MY_JUJU_PATCH; cd ../goose; bzr merge $MY_GOOSE_PATCH; py test.py (-live); cd ../juju-core; go test ./...; bzr commit -m "?"; cd ../goose; bzr commit -m "?"; bzr push bzr+ssh://goose-bot@bazaar.launchpad.net/~goose-bot/goose/trunk; cd ../juju-core; lbox submit10:39
jtvrogpeppe: I'm sure it is.  But so is everything else!10:40
rogpeppejtv: (BTW i did write that gosym command to try and make it easy to make bulk changes like that automatically; it needs some work though)10:40
jtvOh, it helps automate that?  That'd be very helpful for something like this.10:40
rogpeppejtv: can you explain the rationale behind JSONObject, BTW?10:40
jamrogpeppe: does 'go fmt' take a regex, or do you use go fix?10:40
jam(can you use go fix?)10:41
rogpeppejam: gofmt can do expression rewriting, but it's not type-aware.10:41
rogpeppejam: go fix is only used for go core API changes10:41
jamrogpeppe: sure, I wasn't sure if you could pass it your own transformations.10:42
dimiternjam: and if I do it the usual way - first submitting the juju patch, and immediately after coping the commit msg in the MP in LP and marking it as Approved?10:42
jtvrogpeppe: JSONObject is there to provide an abstraction layer that lets us provide (and test) dynamic data types including MAAS object types.10:42
rogpeppejam: no. i think that coming up with a language that can express sufficiently transformations is a hard problem10:43
dimiterndimitern: juju-core will be broken for like less than 10m10:43
jamdimitern: if juju lands first, it should work, but you just open the risk that you've broken the test suite until goose lands.10:43
jtvrogpeppe: I know the caller could just do everything with casts, but that takes aware our room to explore the problem and make changes.10:43
dimiternjam: ok, I'll try that - it seems simpler10:43
jamdimitern: it is the "wrong" order, but I'm pretty sure it is what wallyworld did earlier, and it certainly is easier :)10:43
wallyworldjam: i tried the "right" way, but no luck10:44
jamdimitern: it will stop working once commits t ojuju-core actually have to pass their test suite.10:44
jamwallyworld: what step didn't work for you?10:44
rogpeppejtv: i'm not sure i see how GetString is better than a cast10:44
dimiternjam: but that'll be fixed once the goose patch lands, right? so it's just a few minutes of breakage10:44
rogpeppejtv: i think it would be better to simply return the object as unmarshalled json10:45
jtvrogpeppe: we still need to think about things like what is an error and what is a panic.10:45
wallyworldjam: longish  story, bzr push to goose-bot trunk returned AppendRevisionsOnlyViolation error10:45
dimiternrogpeppe: I'll land https://codereview.appspot.com/7299045/ - if you don't mind10:45
wallyworldjam: plus manually approving mp didn't trigger tarmac10:45
wallyworldjam: or maybe it did, but i couldn't ssh in to the machine to seer the logs10:46
rogpeppedimitern: yes sorry, LGTM10:46
dimiternrogpeppe: tyvm10:46
rogpeppejtv: in general if you're checking something coming from an external source, it's an error not a panic10:46
wallyworldjam: so i ended up merging to trunk locally and pushing that10:46
jtvrogpeppe: does an impossible cast always panic?10:47
rogpeppejtv: no10:47
jtvOr does it have that weird optional-second-output thing?10:47
rogpeppejtv: yup10:48
jamwallyworld: so you need to merge your change into trunk ,rather than merging trunk into your changes (that is the AppendRevisionsOnly thing).10:48
wallyworldjam: yeah, finally figured that out :-)10:48
rogpeppejtv: i'd be happier to see: type Object struct {Data interface{}} and methods on it to retrieve maas-specific things.10:49
jamwallyworld: I'm checking the tarmac logs, it seems to think there is a ghost revision in your branch ancestry... thats a bit strange.10:49
rogpeppejtv: possibly with Data as an unexported field.10:50
wallyworldyeah10:50
jtvrogpeppe: what kind of maas-specific thing do you mean there?  Attributes?  Or would this also wrap numbers, arrays etc?10:50
rogpeppejtv: the methods that are currently available on MAASObject10:50
jamwallyworld: it seems to be complaining about: $ bzr log -r revid:ian.booth@canonical.com-20130204235315-18qtwkohjlb8403u10:51
jam"history_db_path" not set for BzrBranch7(file:///D:/dev/go/goose/trunk/)10:51
jam     60.1.3 Ian Booth   2013-02-05 [merge]10:51
jam            Merge trunk10:51
jamwhich doesn't make a lot of sense. maybe something with pushing and then it not completing properly because of ARO ?10:51
wallyworldjam: i never had a d:/dev/go/goose/trunk anything10:51
wallyworldi don't do windows10:51
jamwallyworld: don't worry about the history_db_path part.10:51
jamthe actual failure is different, I was just logging the rev10:52
wallyworldi did pull to my loval copy of trunk and merge that at some point10:52
jamwallyworld: it looks like tarmac doesn't do the nice thing and tell you what branch it is trying to merge.10:52
jam:(10:53
wallyworldi'll have to figure out how to ssh in10:53
jamwallyworld: I probably need to add your ssh-keys. juju doesn't default to adding the shared ssh key I set up (I think)10:53
wallyworldok10:54
jtvrogpeppe: then you're talking about casting your way around everything.  One thing that's very important to us is that code's intent be explicit, and especially with this being our first Go project, we don't pick up intent as easily from casts as we do from function names.10:55
jamwallyworld: I just added the goose-bot pub key, I'll look for yours next10:55
jamI thought there was a simple command to import keys from LP, but I don't remember what it is10:55
wallyworldok10:55
wallyworldme either10:55
jamwallyworld: your key should be added10:56
wallyworldok, will try and ssh10:56
wallyworldjam: ssh_exchange_identification: Connection closed by remote host10:57
wallyworldwhen i tried ssh  tarmac@10.55.60.1110:58
jamwallyworld: so it looks like tarmac was trying to land your branch for about 10 minutes before it stopped (but it never posted to Launchpad unfortunately)10:58
rogpeppejtv: i really don't see a significant difference between. s, err := o.GetString() and s, ok := o.(string)10:58
wallyworldi'm not that familiar with ssh to know inmmediately ehat that error means10:58
jamwallyworld: ubuntu@10.55.60.9410:58
jamnot sure where you got .1110:58
wallyworldok, i think i did a nova list10:59
jtvrogpeppe: that's why I said it's _our_ first Go, not yours!10:59
wallyworldand picked a server, can't recall now10:59
jamwallyworld: right, instance 0 is the juju state server10:59
jaminstance 1 is the bot10:59
jamwhich is running as "tarmac" but ssh access is via "ubuntu"10:59
jamyou can sudo su - tarmac if you need to.10:59
jtvrogpeppe: We do see a significant difference there.  And that may well change, and we're trying to do everything the Go way here, but we do also need to be comfortable with what we're writing.10:59
wallyworldjam: ok, i'm in, thanks10:59
dimiternrogpeppe: sorry about missing you comment, here's the fix: https://codereview.appspot.com/730804411:00
jamdimitern: why the intermediate variable?11:01
dimiternjam: because I need to deref it11:01
jamah, pointer stuff, sure11:02
dimiternjam: btw the usual way worked smoothly :)11:02
jamdimitern: yeah,it usually works quite quickly, I'm not sure what the problem was for Ian. It looks like one of his branches on LP wasn't complete. wallyworld did you happen to try to push to lp:goose *before* you pushed up your own branch for review?11:03
wallyworldjam: i don't believe so but can't say for 100% sure11:04
rogpeppejtv: i'm aware it's your first Go - i'm just trying to gently suggest ways of doing things that are more "go-like". JSONObject seems to be duplicating the go type system without any particular reason (all the information in the maasify'd object is present in the original interface{} value)11:04
dimiternjam: actually I did just that - tried pushing to lp:goose, got bitten and went with what you said in the mail about the bot11:04
jamwallyworld: what is weird is that it is claiming it failed to merge goose's trunk, but the revision it is complaining about should have only been in your branch.11:04
jamdimitern: you shouldn't have direct commit access to 'lp:goose' to keep us all honest, but I do outline in the email how to get around it.11:05
wallyworldhmmm. that is weird11:05
jamwallyworld: my guess is it was having trouble with your branch, but giving a bad error message.11:05
wallyworldcould be. let's see what happens next time i guess11:05
jamwhich *might* have been that your branch tip had a revision, which bzr didn't copy to your branch's local repository, because it was stacked on a repository that already had it.11:06
jam(which should work, but tarmac might be trying something special under the covers)11:06
jamI know it uses a lightweight checkout for trunk11:06
jtvrogpeppe: Yes and I appreciate that, but to us there _is_ a real difference between having the caller cast their way around and hiding that detail from them — including an apparent bug in the json package where you don't know if a number is going to be an int or a float64.11:06
wallyworldi use lightweight checkouts also11:06
jamand using remote lightweight checkouts has had some edge cases in bzr in the past.11:06
rogpeppejtv: numbers are always float64 when unmarshalled into an interface{}11:07
jtvThat's what I thought too.11:07
rogpeppejtv: unless you've found a counter-example...11:07
jtvYeah.  :(11:07
jamjtv: http://golang.org/pkg/encoding/json/#Unmarshal claims that. Were you unmarshalling into a map?11:07
rogpeppejtv: if so, sounds like a bug. have you got something that demos the problem?11:07
* jtv looks11:08
jtvjam, rogpeppe: wouldn't you know it — can't reproduce that now.  I must have been wrong.11:14
jtvYes, I was unmarshaling into a map.11:14
jamjtv: my guess is while discovering it, you were probably trying out "what if it is an int" and got an int back.11:14
jtvNope.11:15
jtvNot *consciously*.  But I do wonder if somehow I got an int in there that I didn't first serialize.11:15
jtvCould easily have happened.11:16
jamdimitern: care to come join us in mumble?11:31
dimiternjam: sure11:31
TheMuelunchtime11:41
dimiternyay! so nova list server/detail filters support regex matching by name!12:32
dimiternfiltering current env's machines will be a breeze12:33
jamwallyworld: I use local lightweight checkouts, but not lightweight checkouts of lp: branches.12:35
jamdimitern: nice12:35
wallyworldok12:35
jam(and remote lightweight checkouts have had some rough edges)12:36
wallyworldi can't get by without12:36
niemeyerGoood morning all12:59
rogpeppeniemeyer: hiya12:59
niemeyerrogpeppe: Yo!13:00
dimiternweird.. it tells me I cannot join the weekly hangout13:01
dimiternjam: how did you get in?13:01
jamdimitern: I just joined13:02
jamhttps://plus.google.com/hangouts/_/calendar/bWFyay5yYW1tLWNocmlzdGVuc2VuQGNhbm9uaWNhbC5jb20.pjo9s0ubrlo7fudfdu3bkivq3413:02
jamhttps://plus.google.com/hangouts/_/33acfc2c8af8792568274fa110371db956f9fde713:02
dimiternYou are not allowed to join this hangout.13:02
dimiternwhy?!13:03
jamdimitern: are you connecting with an @canonical account?13:03
jamjust a thoguht13:03
=== TheRealMue is now known as TheMue
dimiternjam: yeah it seemed like that's the issue13:04
jamdimitern: I think you can try the last link, and just go directly to the hangout, rather than via the calendar13:05
dimiternyeah, I tried them all, switched to @canonical account ...a few times, no cigar13:06
dimiterni'm switching the account, but somehow the link switches it back to the other (non canonical) one :(13:11
dimiterncan somebody invite me or something?13:11
hazmatniemeyer, good morning13:50
rogpeppeluunch13:50
hazmatniemeyer, i'm trying to debug an issue with the charm store, the landscape-client charm isn't showing up on either the alias or most of the personal addresses13:50
niemeyerhazmat: Heya13:51
hazmati wrote a small go program and verifies that the charm loads correctly, and one of the personal charm branches (out of 4) does appear in the store13:51
hazmati'm a bit stumped as to causes or how to debug further13:51
niemeyerhazmat: Worth asking mthaddon for the logs to see if it's breaking on import13:51
hazmatniemeyer, cool, i'll do that, thanks13:52
niemeyerhazmat: np13:52
hazmatmthaddon, fwereade, niemeyer so the issue is that the landscape-client has a required relation named 'juju-info' which per previous discussion i believe is resolved on trunk. is there a procedure in place re updating the charm store code. (charm store log - https://pastebin.canonical.com/83865/)14:03
niemeyerhazmat: We just have to ask Tom to bump it14:03
mthaddonhazmat: we have deployment instructions (anyone from webops, not just me)14:04
hazmatmthaddon, cool, should i have someone put in an RT put in for this?14:04
fwereadehazmat, AIUI we agreed that that that name would only be accepted for container-scoped require relations14:05
mthaddonhazmat: that'd be great, thanks14:05
fwereadehazmat, without that restriction relation specifiers become potentially ambiguous14:05
hazmatfwereade, in this case it is container scoped (its a sub)14:05
hazmatfwereade, yup14:06
fwereadehazmat, hmm, so it is, I do apologise14:06
hazmatfwereade, no worries, nothing wrong with being precise14:07
niemeyerhazmat: Even then14:35
niemeyerhazmat: We want to obsolete that eventually14:35
niemeyerhazmat: So I recommend fixing the charm14:35
niemeyerhazmat: Even more considering that charm is ourrs14:35
niemeyerours14:35
niemeyerfwereade: ^14:35
fwereadeniemeyer, hazmat, I am +1 on this14:36
fwereadeniemeyer, hazmat: there's a bug in juju-core to deprecate and complain about use of that exception14:37
hazmatniemeyer, understood, and i can file a bug against the ls charm, but there are a large number of subordinates that do this in the wild, its not clear if they all have maintainers. i had thought we had resolved the ambiguity in a tight way. the problem with deprecations is that it hits the users not the authors.14:38
niemeyerhazmat: How's that in disagreement with what I just said?14:39
niemeyerhazmat: You are not "in the wild".. you are a juju developer.. I recommend fixing the charm. That's all.14:39
=== slank_away is now known as slank
hazmatniemeyer, its not clear what the timeline is for eventually, realistically it may be never. there are roughly 50 charms extant that have this behavior (http://jujucharms.com/search?search_text=juju-info). afaik no juju devs do charm maintenance/reviews. for this particular charm as i already said yes we can do it, but we don't have access to update personal charms everywhere.. the rest of my comment was directed to fwereade's suggestion of deprecations/com14:52
hazmatplaints14:52
niemeyerhazmat: I think we covered that topic pretty well in the ML thread.14:56
fwereadehazmat, it is true that if they're never going to be fixed then adding the warnings will have no net effect other than to increase the quantity of spam in the world, but I'm not quite ready to give up on the dream14:57
niemeyerhazmat: If you don't want to fix the charm, nobody will force you to right now. Be happy.14:57
rogpeppemramm: i can't join the usual kanban hangout15:01
rogpeppedimitern: how did you fix your hangout issue?15:02
mrammrogpeppe: I think you need to use a canonical G+ account15:03
mrammno idea how to fix that though15:03
mrammlet me poke around...15:03
TheMuesame problem here15:03
rogpeppemramm: i am.15:03
dimiternrogpeppe: logged out of the other account and left the canonical one only15:11
dimiternsign out of all accounts and log in to the canonical first (then the others, if needed) - your default account is the one you first logged in15:12
dimiternhttp://webapps.stackexchange.com/questions/6862/how-do-i-change-my-default-account-with-google-multiple-sign-in15:12
dimiternI'd appreciate 2 quick related reviews: https://codereview.appspot.com/7299047/ (juju-core) and https://codereview.appspot.com/7309045/ (goose)15:15
hazmatniemeyer, i'm not sure why you feel the need to make a technical discussion  personal, but i'll take the advice.15:18
niemeyerhazmat: Because there wasn't any technical discussion.. we've already talked about that. I've made a trivial suggestion.. if you don't want to follow, just ignore me.15:32
dimiternfwereade: ping15:36
fwereadedimitern, in a call, expect slow responses15:36
dimiternfwereade: sure, when done if you have some time, can you take a look at these 2 CLs? ^^15:37
hazmatniemeyer, afiacs the discussion had evolved past the suggestion of fix the charm into discussion of the merits of deprecation, which you tried to shut down by making it personal. anyways.. bug filed against ls charm.15:44
niemeyerhazmat: That's your reading. My reading is that we already covered that topic in the mailing list thread. I'm not willing to explain everything again here.15:49
niemeyerhazmat: and you're pulling it into a personal argument for no good reason.15:50
niemeyerhazmat: In fact, you do that pretty often. Please stop. Thank you.15:51
hazmatniemeyer, i'll raise my comments on the thread then, and yes i'm calling you out for what your doing because its not appropriate.15:52
niemeyerhazmat: What you are doing is what is not appropriate. Yes, considering the points previously made in a conversation is a terrific plan.15:52
niemeyerhazmat: No, bugging people to say what you want is not okay.15:52
niemeyerhazmat: You don't have to follow my suggestions, but you can't force me to cover the subjects of your will whenever you please, and then call that a personal argument when I say no.15:53
hazmatniemeyer, i'm fine with that, but there are much better ways to say no15:54
niemeyerhazmat: The thread has a good assessment of the situation as I've pointed out repeatedly. Basic home work.15:54
niemeyerhazmat: It's easy to say what other people should do. It's harder to do what is appropriate.15:54
niemeyerrogpeppe: ping16:07
rogpeppeniemeyer: in a meeting. be with you in a bit16:08
niemeyerrogpeppe: Thanks16:08
rogpeppeniemeyer: meeting finished, but i've got another one now...16:32
niemeyer... obtained string = "goamz-us-east-1-AKIAJK3W/multi1"16:57
niemeyer... expected string = "multi1"16:57
niemeyerSomething is seriously busted in S3.. :(16:57
dimiternjam: we can spin 3 machines in canonistack to test regexp filtering, but the test will be awfully slow16:58
rogpeppeniemeyer: pong17:35
fwereaderogpeppe, TheMue: can we call it a day please? that's been 2.5h solid of talking for me and rogpeppe...17:35
rogpeppefwereade: +117:36
rogpeppefwereade: tomorrow morning?17:36
fwereaderogpeppe, TheMue: +117:36
TheMuefwereade: +117:45
jamdimitern: it is the sort of thing where I'm reasonably ok with passing multiple regex's against 1 server name17:46
TheMuerogpeppe, fwereade, mramm2: I appreciated the talk.17:46
jambut we have done a manual test across multiple names17:46
dimiternjam: actually, it won't take that much time on second though - I'm already half through a test spinning up 3 machines (and not waiting for them - no need to do anything to them)17:48
dimiternjam: but i'll continue tomorrow and call it a day now17:48
jamdimitern: k17:48
niemeyerrogpeppe: Yo17:50
niemeyerrogpeppe: Sorry, was on a call with Robbie17:50
rogpeppeniemeyer: hiya17:50
niemeyerrogpeppe: I just wanted to ping you about the comment, but I think I already sorted out17:50
niemeyerrogpeppe: "overview of" is fine, right?17:51
rogpeppeniemeyer: yeah17:51
rogpeppeniemeyer: depending on the context of course :-)17:51
niemeyerrogpeppe: The intent of mentioning that it was an overview of multipart uploads is that saying "See an overview at foo." would pass a wrong impression that this was about Multi.17:51
niemeyerrogpeppe: Yeah17:51
rogpeppeniemeyer: ah yes.17:52
niemeyerrogpeppe: Supe17:52
niemeyerr17:52
rogpeppei've gotta go.18:00
rogpeppeg'night all18:01
niemeyerrogpeppe: Night18:02
=== slank is now known as slank_away
=== slank_away is now known as slank
=== sidnei` is now known as sidnei
=== mramm2 is now known as mramm
=== slank is now known as slank_away
=== slank_away is now known as slank
=== slank is now known as slank_away

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