/srv/irclogs.ubuntu.com/2014/05/16/#juju-dev.txt

davecheneythumper: yes, that was a mistake00:19
davecheneythat line doesn't do anything00:19
davecheneybut commenting it out was a mistake00:20
davecheneyi will revert that part from the PR00:20
davecheneyand add some more test coverage to exercise that line00:20
thumperdavecheney: I'm concerned00:24
thumperhow do I pull your branch locally?00:24
thumperdavecheney: do you know what causes the empty caller stack item between the test function and the code?00:25
thumperdavecheney: I'm wondering if when called in real life, we don't get that00:25
thumperdavecheney: in particular, the errgo.New method in the global var block gets the wrong location00:26
thumperdavecheney: as it doesn't have a blank caller entry00:26
thumperdavecheney: also, when called from juju/errors we get the correct stack00:26
thumperbut if this change goes in, they will be wrong00:26
rick_h_thumper: toss some notes/feedback in your doc. I can't edit or I'd spell out some of the use cases/etc. Let me know if any of it seems crazy.00:26
davecheneythumper: go to the PR, there is link to the instructions on how to checkout my branch00:27
davecheneythumper: the final error remaining to be fixed ?00:27
thumperdavecheney: I'll look again00:27
davecheneyi don't know the cause at the moent, if I did, I would have fixed it :)00:27
thumperdavecheney: the pull request doesn't tell me how to get it locally00:28
thumperor at least not in any way obvious I can see00:28
thumperrick_h_: kk, ta00:28
thumperdavecheney: do you know how I can get your branch locally? I'm stumped00:31
davecheneythumper: https://github.com/juju/errgo/pull/200:32
davecheney^ click You can also merge branches on the  command line.00:32
davecheneydo step 100:32
davecheneydon't do step 200:32
thumperahh...00:33
thumperta00:33
davecheneythumper: welcome to the monoculture00:34
thumperdavecheney: as expected, with the change to errgo, all of the stack tests in juju/errors now fail00:34
* thumper has to go do daughter's lunch now00:36
davecheneyshit00:43
* davecheney has a horrible feeling this may not be fixable i the general case00:43
sinzuihi wallyworld_ https://bugs.launchpad.net/juju-core/+bug/1319822 appeared with your branch to change lxc00:44
_mup_Bug #1319822: lxc unit tests broken for trusty <lxc> <regression> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1319822>00:44
wallyworld_sinzui: yeah, it's on my todo list today. sad that it passed the bot but breaks on CI00:45
sinzuiwallyworld_, can you review what went wrong?00:45
wallyworld_yeah, just finishing another branch first00:45
sinzuiwallyworld_, It might be CI. I am willing to accept the bame00:45
wallyworld_more likely my fault00:45
wallyworld_i also gotta look to see if precise containers on trusty host has broken again00:46
sinzuiwallyworld_, I now have aws, canonistack, and lexington under by control. http://juju-ci.vapour.ws:8080/00:49
wallyworld_great00:49
sinzuibut alas, I forgot the test I wanted to play needs a built package, and CI doesn't know how to do that ppc64 and arm6400:49
wallyworld_i like all the blue dots00:50
* menn0 is being inducted^Wbrainwashed01:05
thumperdavecheney: https://github.com/juju/errgo/pull/301:39
* davecheney looks01:41
davecheneythumper: if it passed under gc01:42
davecheneycheck it in01:42
thumperit did01:42
davecheneycool01:42
thumperand it passes with gccgo01:42
thumperfwiw01:42
davecheneythumper: so here is my concern01:42
davecheneyruntime.Callers is basically different between gc and gccgo01:42
davecheneynormally you can work around it by adjusting the offset of the initial runtime.Callers01:43
thumperfor many values yes01:43
davecheneybut if we stack these things, and there are embedded strcuts involved01:43
davecheneyi am not sure it will work for all possible variation01:43
davecheneyvariations01:43
thumperhowever I *think* that the one causing a problem is just for tests01:43
davecheneyyes01:43
davecheneyand the effect on real code is you may see an odd line in the stack trace that either has no source line01:43
thumperso perhaps we patch the initial level only for gccgo and just for the tests?01:43
thumperand it seems to be just the test methods themselves01:44
thumperoh...01:44
thumperI have a plan01:44
wallyworld_axw: hiya, standup?01:44
davecheneythe &embed{err} one is the complete fucker01:44
thumperdavecheney: let me try something01:44
davecheneythumper: hold up, i'll update my PR01:44
thumperdavecheney: I'd like some approval on that test addition PR01:44
thumperdavecheney: so it looks like I'm getting other feedback :)01:44
davecheneythumper: i can drop it from the PR01:45
thumperis there a git command to branch and checkout?01:45
davecheneykeep things simple01:45
davecheneythumper: you're asking the wrong man01:45
davecheneyi use01:45
davecheneygit checkout -b NAME01:45
davecheneywhich branchs and switchs to NAME01:45
axwwallyworld_: hey, yep01:45
thumperthat what I want01:45
davecheneyexcellent, grammar good01:46
thumperdavecheney: ya know...01:47
thumperdavecheney: I bet if we changed errgo to use gocheck, this would work01:47
thumperdavecheney: so... TestNew failes but TestNewf succeeds01:50
thumperwith gccgo01:50
davecheneyhttps://github.com/juju/errgo/pull/201:51
davecheneyupdated01:51
davecheneynow with less contraversy01:51
davecheney--- FAIL: TestNoteUsage (0.00 seconds)01:58
davecheney errors_test.go:250: unexpected details: want "[{/home/dfc/src/github.com/juju/errgo/errorstest.go:38: annotate2} {/home/dfc/src/github.com/juju/errgo/errors_test.go:32: annotate1} {/home/dfc/src/github.com/juju/errgo/errors_test.go:29: some error}]"; got "[{/home/dfc/src/github.com/juju/errgo/errors_test.go:43: annotate2} {/home/dfc/src/github.com/juju/errgoj/errors_test.go:37: annotate1} {/tmp/go-build412244215/github.com/juju/errgo/_t01:58
davecheneyyup, that test fails on my branch with those adjustments01:58
* davecheney goes back to hunting wumpus'01:58
thumperdavecheney: I'm pretty confused as to why TestNew fails but TestNewf succeeds01:59
davecheneysame02:00
davecheneyit calls the same damn methods02:00
thumperyeah02:00
davecheneyfyi, % go test && go test -compiler=gccgo02:00
thumperwho do we know on gccgo that we can throw this at?02:00
* davecheney raises hands02:00
davecheneyseriusly, it might be me02:00
thumperhandy to do that in one command02:00
thumperheh02:00
davecheneywe did log a bug about this with the upstream02:00
davecheneywe == michael and me last year02:01
* davecheney searches02:01
thumperI think a key point would be to focus on that one use case02:01
thumperTestNew vs TestNewf02:01
thumperif we can work that out02:01
thumperthe rest should be simple02:01
thumperI'm goint to write other emails...02:01
davecheneyroger02:01
davecheneyyou're trained for that now02:01
davecheneywith your ceritificate02:01
thumperheh02:02
thumpermwhudson: you around?02:03
thumpermwhudson: have you been poking gccgo too?02:04
davecheneythumper: https://code.google.com/p/go/issues/detail?id=683502:04
mwhudsonthumper: not recently02:04
mwhudsonbut i am here02:04
thumperdavecheney: yeah, read that one, and that is how I fixed the juju/errors work02:04
davecheneythumper: bingo02:04
* thumper jumps on a different hangout02:04
stokachuis juju-core/errors being moved out of the tree?02:10
thumperstokachu: it has been02:13
thumperyes02:13
thumperstokachu: to github.com/juju/errors02:13
stokachuthumper: ah ok, go get was giving me errors02:13
thumperno pun intended?02:13
stokachuso i should be doing go get github.com/juju now?02:13
stokachudoesn't look like the core bits are on github -- is this a migration in progress i take it?02:17
davecheneystokachu: go get -u launchpad.net/juju-core/... will always pull in the correct dependencies02:18
davecheneyyou should run godeps -u dependencies.tsv afterwards to set all the repos to their correct revisions02:18
stokachuso go get -u fails to find launchpad.net/juju-core/errors02:18
stokachuran that a few minutes ago02:18
davecheneythat ios correct02:18
davecheneythat has been removed02:18
stokachuah lemme re-run then could be fast on the draw02:19
stokachui should probably stop messing with juju-core so late at night :X02:19
thumperdavecheney: haha, guess what?02:26
=== revagomes is now known as mGraf
thumperdavecheney: I have a branch that uses gocheck, and all the tests pass with both compilers02:26
=== mGraf is now known as revagomes
thumperdavecheney: https://github.com/juju/errgo/pull/402:28
davecheneyi cannot explain that02:29
davecheneyand it terrifies me02:30
=== revagomes is now known as mGraf
davecheneythis is the difference between being called from a function or called from a method02:30
davecheneywhich under the hood are EXACTLY THE SAME!02:30
=== mGraf is now known as revagomes
davecheneymethods on types are just like static methods on C classes02:30
davecheneythere is no virtual dispact02:30
davecheneydispatch02:31
thumpermwhudson: which compiler do we use for juju on armhf and armel?02:31
thumperdavecheney: I know...02:31
mwhudsonthumper: gc02:31
mwhudsoni think02:31
thumperdavecheney: something screwy is happening02:31
davecheneythumper: there is no supprt on armel02:31
mwhudsonthumper: we don't do anything for armel any more do we?02:31
davecheneythat is harm without a floating point unit02:31
thumperkk02:31
davecheneyarmhf, we use gc02:31
thumpercheers02:31
davecheneybut gccgo is also known to work on linux02:31
davecheneythumper: but not juju/errors does not pass02:32
=== revagomes is now known as mGraf
thumperhuh?02:33
=== mGraf is now known as revagomes
thumperdavecheney: pass here02:33
=== revagomes is now known as xauz
davecheneyhmm, ok02:34
=== xauz is now known as revagomes
* davecheney deletes things02:34
thumperdavecheney: as expected, I bet that the core testing library is doing weird things, perhaps calling functions using reflect which may well be adding synthetic methods through gccgo02:35
thumperwith gocheck, those synthetic methods are so far up the stack we don't care02:35
davecheneythumper: yes it does02:39
davecheneythe wya testing works is it builds a list of functions by name at compile time, then uses reflect to find those functions at run time an execute them02:39
davecheneyok, i call lunch02:40
axwwallyworld_: if I run TestInitiateReplicaSet in a loop inside the testing framework (i.e. no per-test SetUp/TearDown), I can reliably get it to fail on the bot - but not on my laptop02:45
axwseems the bot is actually faster than may laptop02:46
davecheneyaxw: lol02:46
wallyworld_hmmm02:46
wallyworld_at least it fails02:46
davecheneythumper: [0] for some implementations of great02:47
davecheneyright, now I really am going for lunch02:53
waiganiwallyworld_: would you be able to have a look at this: https://codereview.appspot.com/8713004503:06
waigani fwereade has reviewed. Basically, he is happy if you're happy03:06
waiganiwallyworld_: I have to do school run now, so no rush03:06
wallyworld_ok03:06
waiganicya :)03:06
wallyworld_l8tr03:06
wallyworld_axw: i have a fix for the trusty tests on CI https://codereview.appspot.com/9933004303:28
axwlooking03:31
wallyworld_thank you03:33
menn0Do I have to worry about compatibility if I'm adding fields to the machine and unit status API responses?03:50
thumperhmm...03:51
thumperas long as the deserialization code can handle that they are missing03:51
thumperyou *should* be ok03:51
thumperwe know that during upgrades, the api server should be done first03:52
thumperso an agent should never be a higher version than that api server03:52
menn0understood.03:52
thumperhowever, the agent might not be as up to date as the server03:52
menn0I think I'll be ok as my change only affects the API server. it's exposing information that is already being reported but just wasn't available in the status response.03:55
menn0i'll check the api server / client mismatch issue to make sure there isn't a deserialization issue03:55
menn0as an aside: jam is working on versioning for the API isn't he?03:56
thumpermenn0: just emailed you leankit stuff04:05
menn0just saw it thanks04:05
menn0"After logging in for the first time, you will have to option to change this temporary password."04:10
menn0or not... :(04:10
thumpermenn0: have you found out where to change it yet?04:11
thumperiirc it isn't entirely obvious04:12
menn0thumper: no. the UI mentioned in the help isn't there for me. I'm hovering over the Leankit logo in the top right and changing my password isn't available on the menu that appears.04:12
axwwallyworld_: puttiing replSetInitiate in a retry loop does the trick04:12
thumpermenn0: priv msg :)04:13
wallyworld_axw: great, a bit hacky but it will server the purpose for now i reckon04:13
axwwallyworld_: want me to look at the i386 tests?04:41
wallyworld_axw: yeah, that's the next highest priority, thanks04:45
wallyworld_it might turn into a "fix tools handling" exercise04:45
* axw nods04:46
=== vladk|offline is now known as vladk
=== vladk is now known as vladk|offline
davecheneyaxw: thanks for the review06:54
axwdavecheney: nps06:56
axwalways glad to be rid of another panic("unreachable")06:56
wallyworld__axw: i'm off to soccer, so have a good weekend. i'm part way through replacing LoggingSuite with BaseSuite and rewriting tests to avoid outgoing http.06:56
axwwallyworld__: later, you too. I'm scratching my head at i386 test failures :)06:57
wallyworld__does seem like we should consider pluggin in basesuite when the suite is registered06:57
wallyworld__yeah, i didn't look too closely at the i386 faiures, looke dtools related06:58
davecheneyaxw: can you clarify if we need to support 1.0 style unreachable stuff ?06:58
davecheneyI was under the understanding that we06:58
davecheneya. did have to support precise06:58
davecheneyb. the version of Go in precise was not capable of compiling Juju06:58
davecheneytf. our minimum is actually 1.106:58
axwdavecheney: yeah our minimum is 1.1 (we use 1.1.2 on the bot)06:59
davecheneyaxw: right, in that case there are some more warnings I can address06:59
axwbueno06:59
davecheneymulto gusti!06:59
axwand yes we need to support precise. there was talk about moving to 1.2 (and may still), but precise only has 1.1.2 in the ppa right now07:00
davecheneygiven that precise is built from a dependant ppa07:00
davecheneyand we have to support two compilers anyway07:00
davecheneyi vote for not shooting ourselves in the foot and having to support two versions of one compiler07:01
davecheneythat is, Go 1.2 across the board07:01
davecheneyboth as the upper and lower bound07:01
axwI would prefer that07:01
* davecheney will propose07:01
davecheneydone07:08
davecheneyomg, goose bot merges things SO FAST07:15
voidspacemorning all07:52
fwereadewallyworld__, ping07:58
=== ev_ is now known as ev
fwereadewaigani, LGTM, just trivials08:44
=== vladk|offline is now known as vladk
jamfwereade: my thoughts exactly: "LGTM. The yuck of the reflection is more than balanced by the squee of10:14
jamthe external interface."10:14
jamthanks for the reviews10:14
voidspacefor gccgo should we be testing with the packaged version (apt-get gccgo) or building from source, or something else (building/using a specific version)?10:25
jamvoidspace: gccgo is packaged on Trusty10:25
jamoutside of Trusty, you'll probably need to roll your own (or push us to get something into a PPA)10:26
voidspaceah, and in the next thread David says "gccgo-4.9"10:26
voidspaceI'm on trusty10:26
voidspacejam: thanks10:26
jamvoidspace: yeah, the gccgo in trusty is good enough for working with.10:26
jamIt *is* being used in anger for the ppc64 ports.10:26
jamand amd6410:26
voidspacefwereade: you wanted to be pinged about rsyslog-ca-cert in wwitzel3's branch - which is also my branch10:27
voidspacejam: yeah, there's a thread that says we should be testing with it10:27
voidspacefwereade: so we had a big discussion about this issue (is watching APIHostPorts alone sufficient or not)?10:28
voidspacefwereade: and no-one wanted to commit to an answer, but the consensus seemed to be10:28
voidspacefwereade: if we're treating the rsyslog config entries as "immutable once set" then watching APIHostPorts alone to trigger rsyslog config rewriting should be enough10:29
voidspacefwereade: and it works for the scenarios we've manually tested10:29
voidspacenon-HA with unit deployed, HA without units, HA then units deployed, non-HA with units deployed then ensure-availability10:29
voidspacersyslog config is rewritten in all these cases and logging happens correctly10:29
voidspacefwereade: so the only wrinkle would be if the rsyslog config can be written out *before* the certificate is set for the first time on bootstrap10:30
voidspacefwereade: in which case it wouldn't be rewritten10:30
voidspacefwereade: when we asked nobody thought that was likely, but no-one would *commit* to it being impossible10:30
voidspacefwereade: however "they" (jam and natefinch) did think that if we're treating the rsyslog config as "immutable once set" then watching just APIHostPorts *should* be sufficient10:31
voidspaceso that's what we did10:31
vladkjam: hangout10:47
jamvladk: I'm not actually "working" today10:48
jamits my weekend10:48
TheMuevladk: here10:54
wwitzel3hello11:03
voidspacewwitzel3: hey, hi11:03
voidspacewwitzel3: there were some comments on the mp from fwereade11:04
voidspacewwitzel3: I replied11:04
voidspacewwitzel3: one thing we forgot - we made GetRsyslogConfig return HostPorts11:04
voidspacewwitzel3: the reason for that is so that the templates can use host-port pairs rather than host plus global port11:04
voidspacewwitzel3: but we didn't change the template rendering code to do that11:04
voidspacewwitzel3: I've made a start on that (whilst also starting some more manual testing against canonistack and reading William's architecture doc)11:05
voidspacewwitzel3: nothing to push yet11:05
voidspacewwitzel3: we can probably lose the global port on the RsyslogConfigParams then11:05
voidspacebut you arrived (as always) just as I need coffee)11:06
voidspacenatefinch: morning11:06
davecheneythis is a lie11:07
davecheneyit is not morning for natefinch11:07
voidspacedavecheney: it's *always* morning on the internet11:07
natefinch+111:09
natefinchalso, yes, it is morning :)(11:10
natefinchmorning davecheney :)11:10
wallyworld__fwereade: hi, was at soccer, back now11:14
fwereadewallyworld__, er, what did I want11:14
fwereadewallyworld__, oh yes: are you doing git things?11:14
wallyworld__yes, sorta11:14
fwereadewallyworld__, ie landing bot change etc11:14
fwereadewallyworld__, can I put the use-go-1.2 stuff on your plate then please?11:14
wallyworld__i have a repo that i've migrated to github https://github.com/wallyworld/core11:15
wallyworld__and i'm working with curtis to get the landing bot sorted out11:15
wallyworld__sure11:15
wallyworld__so we want the bot to use go 1.2?11:15
wallyworld__fwereade: also, i'd like a meeting with you first thing your monday AM to talk about storage, would that be ok?11:16
fwereadewallyworld__, sure11:17
wallyworld__ok, just ping me when you're online11:17
fwereadewallyworld__, will do11:18
mattywnatefinch, myself and tasdomas are available to help with ha, let me know when would be a good time to grab your for a chat about it11:21
natefinchmattyw: cool, let me bring up the docs11:29
fwereadevoidspace, wwitzel3: is anyone free to briefly educate me on rsyslog-ca-cert, where it came from, why it exists, etc?11:29
fwereadevoidspace, wwitzel3: I suspect it interacts with stuff cmars is doing at the moment but I don't really have a clear picture of how it all ends up interacting11:30
fwereadevoidspace, wwitzel3: in particular I'm +1 on separate certs for separate services, but less convinced that we need a different ca cert for rsyslog, unless we're thinking of setting up external rsyslog targets11:31
fwereadevoidspace, wwitzel3: and even then *we* wouldn't be generating server certs from it?11:31
natefinchmattyw: sorry, my daughter detected I might get work done and woke up.  It'll be an hour or so for my wife to wake up and be ready to take her, so probably don't wait for me for right now11:39
mattywnatefinch, ok no problem, I'll take the time to sort my little on out as well :), just ping me when you're ready11:40
natefinchmattyw: cool11:41
voidspacefwereade: we already have these certs, so no I'm not able to educate you on why we have it :-)11:49
voidspaceI have to go on lunch11:49
voidspacemeeting a friend11:49
voidspacebut I'll be back soonish11:49
fwereadevoidspace, np, enjoy, I will go hunting11:49
voidspaceta, see you all soon11:50
* bodie_ pings fwereade -- going to slice that commit back down to what you'd mentioned and get it in this morning :)12:28
fwereadebodie_, don't feel you have to, go ahead and propose as it is if you like -- you can slice bits out while I take a first look if you like12:32
TheMuelunchtime12:38
perrito666TheMue: I will not lunch at 9 am :p12:38
bodie_on that note fwereade and jcw4 -- the interface{} option for gojsonschema is looking for a raw JSON string.  I think it's appropriate to transform the unmarshaled YAML map into a JSON string to check whether it conforms to JSON-schema, but I'm not positive what the behavior will be like (whether it will, e.g., silently truncate nonconformant values from the map)12:50
fwereadebodie_, huh, that's really bizarre, Iwonder why on earth they would do that12:51
fwereadebodie_, https://github.com/xeipuuv/gojsonschema/blob/master/schemaDocument.go :66 seems to imply it can handle map[string]interface{} at least for schemaDocument12:53
bodie_I could be misinterpreting something, but when I try to "smush" the unmarshaled YAML into the gojsonschema loader, it's saying it "must be a jsonReference string or Json as map[string]interface{}"12:53
fwereadebodie_, if we *have* to go via json we could, I guess, but I think it's a last resort12:54
fwereadebodie_, I think map[string]interface{} is nice for us all around though12:54
bodie_I agree12:54
bodie_I could be misinterpreting the error, too, or it could be happening for a different reason12:54
fwereadebodie_, we could use the juju-core/schema package to coerce that stuff into map[string]interface{} on ingest12:54
fwereadebodie_, I suspect it's because it's map[interface{}]interface{} until it's coerced?12:55
* bodie_ ponders12:55
bodie_it's probably a silly type issue12:57
bodie_right now an Actions is just an alias for map[string]interface{} but perhaps it doesn't know how to unmarshal yaml into that alias12:57
bodie_either way I need to really cut down the scope on this12:57
bodie_if you'd like to have a look it's here -- https://code.launchpad.net/~binary132/juju-core/charm-actions12:58
bodie_the problem code is here http://bazaar.launchpad.net/~binary132/juju-core/charm-actions/revision/273613:01
bodie_actually, if anyone has input on that, it would be welcome.  I suspect it's to do with unmarshaling to "actions" and attempting to do NewJsonSchemaDocument on "actions" which is of type ... Actions map[string]interface instead of directly on such a map13:02
fwereadebodie_, "Actions" doesn't sound quite right for that type anyway13:02
bodie_that's the type formerly known as ActionsSpec... lol13:03
bodie_it's a charm's Actions13:03
fwereadebodie_, giving whatever encloses it a "schema" field of type map[string]interface{} seems like a perfectly reasonable thing to unmarshal the yaml into, then you should be able to hand over to gojsonschema directly, I think13:03
fwereadebodie_, I don't think the whole set of actions wants to be a schema, does it?13:04
bodie_rather a <action_name>.yaml for each action in the charm?13:04
bodie_an*13:04
fwereadebodie_, we want a map[name]ActionSpec or something, in which an ActionSpec has name, description, schema (or something roughlylike  that anyway, I think)13:05
fwereadebodie_, yeah, actions.yaml seems like a nice way to express it13:05
bodie_well the idea was to define the loosest possible schema, but a sane charm would have its top level keys be the names of actions13:05
fwereadebodie_, not sure, don't we want `actions: {...}` at the top level for forward compatibility?13:06
fwereadebodie_, otherwise there's nowhere nice to tack on a version field if (when ;)) we need it13:06
fwereadebodie_, (but yeah we don't want name explicitly I guess, that can come from the map keys, ofc)13:07
bodie_presumed version would be for the entire charm?13:07
bodie_if you change the actions, that ought to increment the charm version13:08
fwereadebodie_, no, I mean the format of the actions.yaml file itself13:08
fwereadebodie_, I have yet to see a v1 of a format that never needed to be changed ;p13:08
bodie_hehe13:08
fwereadebodie_, (given a year of two if usage anyway)13:08
bodie_my assumption here was that our goal is to permit the charmer to define his actions spec however he pleases, as long as it's "some kind of" json-schema13:10
bodie_I'm not grasping what you're envisioning13:10
fwereadebodie_, well, we need stuff that juju can interpret -- the name comes from the map key, but we want a description; we'll need a field defining the target (service/unit) even if that's implicitly unit for now; probably we'll want something else at some point, eg is it valid to run it in an error state, etc etc13:14
fwereadebodie_, then we need another field containing the jsonschema stuff that we use to validate the payload when the action actually gets queued/run13:15
bodie_interesting13:15
bodie_so almost like a schema with an args sub-schema13:15
bodie_the top-level schema being the one WE perform checks against13:16
fwereadebodie_, http://paste.ubuntu.com/7472971/13:17
fwereadebodie_, yeah, exactly13:17
bodie_fwereade, to play Devil's advocate, it seems to me like we want to give charmers that ability as a "manual" mode as it were, where we assume defaults if the top-level keys don't match a set we check for13:22
bodie_a more permissive spec could still enable the functionality you're describing while not enforcing a strict format13:23
fwereadebodie_, well, we still need a reliable place to add our own fields, right?13:24
fwereadebodie_, what are you envisioning? just a top-level dict of name to schema?13:24
bodie_for actions.yaml or for Charm's Actions?13:25
fwereadebodie_, what's the distinction between the two? actions.yaml is a serialisation format for a charm's actions definition13:27
fwereadebodie_, but I guess I'm talking about actions.yaml13:27
fwereadebodie_, I'm just not really considering a hard separation between the charm representation and the in-memory one13:27
fwereadebodie_, they won't look exactly the same, that's what our reading code will handle13:28
bodie_I see, what you were saying about having a sub-spec got me thinking that perhaps if there's no encapsulating spec in the user's actions.yaml, we have a default map in the memory representation, something like {actions: {spec: {...}, version: {...}, ...}}13:31
bodie_i.e. if the user doesn't match our schema, we just dump his or her schema into the "spec" subkey of our actions dict13:31
fwereadebodie_, I think we can ignore extra keys for forward compatibility's sake, but we really want to be storing it as a type13:32
fwereadebodie_, type Actions struct { Actions map[string]Action }13:32
fwereadebodie_, type Action struct { Name string; Description string; Schema map[string]interface{} }13:33
fwereadebodie_, sort of thing13:33
fwereadebodie_, am I making sense? would a hangout help?13:34
bodie_it's a little crazy here right now, michelle just discovered we have a small ant infestation.  I need to process for a minute...13:34
perrito666bodie_: ouch, buy a ton of ant gel, that usually works charms13:35
wwitzel3yeah, the gel works nicely because they take it back with them13:37
bodie_we had awesome results at my old place with this chalk that kills them if they cross it13:39
bodie_it's got to be a high-grade neurotoxin, I'm sure, probably wreaking havoc on my DNA13:39
bodie_bet you there's a super easy way to do it13:41
bodie_woops, wrong channel13:41
natefinchbodie_: we're having an ant problem here, too, I can sympathize13:42
bodie_let's see13:42
bodie_I've heard there's basically one massive hive that extends from Mexico to Canada13:42
bodie_haven't seen them like that back East13:42
bodie_that was mortal combat....13:42
bodie_fwereade, you're making sense but I was under the impression we should be parsing and storing the info more as a schemaless blob13:43
bodie_that perhaps the way we'd been doing it (parsing out a spec for each action) was too restrictive and we simply were to let the charmer define the schema according to his or her preference13:43
bodie_so, I'm continuing to have a really hard time understanding which way is preferable (blob versus more detailed parsed map)13:44
bodie_it's very challenging to make progress on this when I feel both ways are nixed in favor of the opposite... heh13:45
natefinchbodie_: I had thought the blob was better, but I forgot about the GUI - we need to be able to support people setting values in there without having to type out json in a big text field13:45
bodie_but I want to understand the reasoning and goals so I can move forward13:45
bodie_yes -- which means that shouldn't the Charm's Actions map be a valid JSON-schema and perhaps not more?13:45
fwereadebodie_, but we need metadata that juju can interpret cleanly13:46
fwereadebodie_, and expose parts of it to the user13:46
fwereadebodie_, users will need a rough description of what a given action will do13:46
fwereadebodie_, and juju itself will need to know what the action's target is13:47
bodie_I'm getting this tattooed on my arm....  ;)13:47
bodie_OK, that makes good sense13:48
fwereadebodie_, actions.yaml itself thus needs to have the data that we (or our users) need in some standard format so we can find it and use it13:48
fwereadebodie_, and even the params schema itself has structure, it's just that we can hand over the interpretation of that part of the structure to gojsonschema13:48
fwereadebodie_, of the parts that we need to interpret, we don't want to just store a map unless we really have to -- an actual struct with typed fields is far preferable for our own use in code13:49
bodie_yes, that also makes sense13:49
fwereadebodie_, of the parts that gojsonschema needs to interpret, a map[string]interface{} is a format that goes well with gojsonschema13:50
perrito666hey agent/mongo/mongo.go has a noauthCommand that is not tested nor used anywere anybody knows what it does? (running blame now)13:50
perrito666ahh it is used sorry13:50
perrito666I missgreped13:50
perrito666:p13:50
bodie_fwereade, my question then is whether we want to enforce that {{metadata}, {actions}} form as the expectation for the charmer's actions.yaml13:51
bodie_or whether something that doesn't conform should instead be assumed to be the {actions} bit13:51
fwereadebodie_, I think that if an actions.yaml exists, but it doesn't conform to our expectations, we reject the whole charm as invalid13:52
fwereadebodie_, and that applies also to the jsonschema bits -- if it's not a valid json-schema, the file is not valid and so the charm is not valid13:53
bodie_(fwereade++)++13:54
voidspacehah, all my canonistack instances have "disappeared"13:54
voidspacethat's why juju status was hanging13:54
voidspacenatefinch: now you're just being *too smart* :-)13:59
wwitzel3voidspace: ship it13:59
voidspacewwitzel3: hah, it shipped itself13:59
natefinchvoidspace: heh13:59
voidspacesomewhere else13:59
voidspaceI still have moonstone standup in the calendar twice14:02
natefinchvoidspace: you have to delete the one off your personal calendar yourself14:03
voidspacenatefinch: ah right14:03
voidspacenatefinch: in which case I don't care14:03
natefinchfwereade: There's a card about a dead state machine that is replaces by ensure availability, if that machine comes back to life, it should have no vote and no API.   I get the no vote part, but I'm not sure why we'd need to remove the API.14:34
natefinchfwereade: Seems like running an API is independent of your vote status... and there's very little drawback to having more API servers.14:35
fwereadenatefinch, mainly just because we don't have a model-level distinction between state server and api server, and until we can express that in the model I think we'll have problems14:35
fwereadenatefinch, I'm +1 on allowing more api servers in the fullness of time but I don't thin kwe're there yet14:35
natefinchfwereade: that's cool14:36
natefinchfwereade: makes sense... no need for a state server in some weird in between state14:36
fwereadenatefinch, yeah, exactly14:36
fwereadenatefinch, we did at one stage draw the distinction, but since it was a distinction without a difference people drew all sorts of random inferences and removing it was a win14:37
=== vladk is now known as vladk|offline
perrito666man, these hangouts really overheat my computer14:49
jcw4fwereade: 2 quick questions if you haven't started the weekend yet :)15:05
fwereadejcw4, sure :)15:05
jcw41) we're moving AddAction to the Unit ... but I think the collection stays where it is on state15:06
jcw4and unit just finds it using prefix15:06
fwereadejcw4, yep15:07
jcw42) in cleanup, I can cleanup all actions with the Dead unit prefix in one Txn right in the cleanup method15:07
jcw4no need to call some method on Unit for each Action15:07
jcw4make sense?15:08
natefinchmattyw: sorry, ended up doing a bunch of other stuff, but on the up side, I think I found something bite sized for you and domas to work on, if you wanted to try pairing on a problem.15:08
jcw4fwereade: sort of how the cleanup of relations is working15:09
jcw4obviously not exactly the same15:09
=== vladk|offline is now known as vladk
fwereadejcw4, yeah, agreed15:11
jcw4fwereade: cool. tx15:12
fwereadejcw4, so long as we assert the unit is not dead on action-add, we can be sure that no additional ones can be created after the cleanup was scheulded15:12
jcw4fwereade: +115:12
=== vladk is now known as vladk|offline
mattywnatefinch, sorry - only just saw your message - go ahead15:30
mattywnatefinch, have I lost you again?16:02
jamfwereade: for Use RegisterStandardFacade, a thought occurs to me. We could still track the exact type being returned, and do introspection on it early16:05
jamwe change Register to require a reflect.Type object along with the factory16:05
jamand RegisterStandardFacade pulls that out of the appropriate slot.16:05
perrito666mattyw: iirc, he was leaving for a moment but returning16:05
jamThat would let us determine all methods that are exposed in the API without having to construct them16:05
* jam goes to take his son to bed16:06
perrito666mattyw: I can give you the headstart on what was the task16:06
mattywperrito666, ok great16:06
perrito666mattyw: iirc, we said that, there would be benefit in obtaining a better output from ensure-availability, wwitzel3 correct me if I am wrong16:09
mattywperrito666, better output?16:11
perrito666mattyw: mm, let me explain this16:24
perrito666but first, I need to restart my router16:24
natefinchmattyw: sorry... back again16:28
mattywnatefinch, no problem16:29
natefinchmattyw: there's a command ensure-availability which sets up HA for the state servers, making sure you have at least the number of state servers available specified (for example  juju ensure-availability -n 3).  Right now the command ends with no output, and the API doesn't return anything useful.16:29
natefinchmattyw: we want the api and the command line to output the actions that were taken as a result of the command (for example, added machine 5, added machine 6)16:30
mattywnatefinch, the only parts of core I've spent an time with have been the commands and api so it sounds like a something I would be able to do16:31
natefinchmattyw: ahh, that works out16:32
mattywnatefinch, it's nearly my eod but I'll start work on it on monday16:32
natefinchmattyw: cool, I'll try to write up some more about it and send in email.  Thanks again for the help.16:33
mattywnatefinch, no problem, our standups are at the same time as yours, but I'll try to pop along to yours on monday if I've made some progress16:34
natefinchmattyw: ok16:35
mattywnatefinch, if you can send more in an email as well that would be great16:35
natefinchmattyw: will do16:36
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
perrito666mattyw: well natefinch did explain that much better than I16:50
voidspaceright, EOW17:52
voidspacesee you all on Monday17:52
perrito666mm, a proper markup would have been EOD, EOW17:53
perrito666:p17:53
=== vladk|offline is now known as vladk
=== revagomes is now known as mGraf
=== mGraf is now known as revagomes
dannftrying to get juju to bootstrap a really slow (simulated) system. i increased timeouts in various places, but now its timing out setting up mongo:19:18
dannf2014-05-16 19:07:08 ERROR juju.cmd supercommand.go:304 can't dial mongo to initiate replicaset: no reachable servers19:18
dannfi tried bumping up mongoSocketTimeout and defaultDialTimeout, but that doesn't seem to give it any extra patience19:18
natefinchdannf: There's a 10 minute connection timeout that is hard coded in the code (which we actually want to fix, but haven't gotten to).  That's probably the problem.19:43
dannfnatefinch: yeah - i'm hacking the code, so i can do a test build. i up'd both mongoSocketTimeout and defaultDialTimeout - is this a different one?19:44
dannfright now i'm trying setting FastFail to false in the dials struct to see if that helps19:45
dannfits timing out faster than 10minutes19:45
natefinchdannf: ahh, hmm, if it's faster than 10 minutes then I'm not sure19:45
dannfhttp://paste.ubuntu.com/7474646/19:46
dannfit does fail in about 10 minutes - but seems like it stopped retrying before then19:47
natefinchdannf: I know we've had a mystery 10 minute timeout that we haven't been able to figure out before, this seems like it's hitting the same problem.19:49
natefinchdannf: you're welcome to create a bug for it, I think it would be helpful to have a way to track the problem (or I can make one if you prefer)19:55
dannfnatefinch: ack; yeah, i'll create one19:57
=== vladk is now known as vladk|offline

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