[00:53] <thumper> wallyworld: I'm going to be out for lunch during our normal call time
[00:53] <thumper> wallyworld: catch up with you later in the afternoon?
[00:53] <wallyworld> sure
[00:53] <wallyworld> just ping me
[00:53] <thumper> kk
[01:09] <dpb1> wallyworld: https://pastebin.canonical.com/133053/ -- I tried to write out the environment.yaml as 'agent-version: $(juju --version)'
[01:10] <wallyworld> looking
[01:12] <wallyworld> dpb1: i think the agent version is 1.23.3
[01:12] <wallyworld> not the full juju version wich includes the series and arch
[01:13] <wallyworld> so you'll need to awk or sed it
[01:13] <axw> wallyworld: you wanted me to ping you when I got back I think? I can't remember why... :)
[01:14] <axw> wallyworld: no wait, I think you just wanted me to send info to perrito666
[01:14] <wallyworld> axw: not that i recall, i think i mentioned some 1:1 topis
[01:14] <wallyworld> yes
[01:14] <wallyworld> a couple of metadata examples for filesystem storage on ebs and cinder etc to use in CI tests
[01:14] <axw> yup
[01:15] <wallyworld> and some notes on what to test if any apart from the stuff we discussed
[01:24] <dpb1> wallyworld: sure, but in that email thread it was mentioned that $(juju --version) was correct.
[01:25] <wallyworld> dpb1: we will make it correct for bootstrap, i'm not sure if it's currently supported like that. i'll need to review the emails to be sure of what the context was
[01:26] <dpb1> ok, I'll reply on thread, just wanted to check if I was way off base.
[01:26] <wallyworld> dpb1: not offbase, setting the agent-version attribute needs to just be 1.23.4 etc
[01:27] <dpb1> k
[01:27] <wallyworld> dpb1: hopefully next week we'll start the --no-auto-upgrade (or whatever we call it) option for bootstrap
[01:27] <wallyworld> and/or $(juju version)
[01:30] <dpb1> wallyworld: ok, understood
[01:36] <wallyworld> dpb1: also, with 1.24, bootstrap will not return until it knows there are no upgrades to be done - so in the case of deployer, we will hopefully avoid the situation where deployer gets disconnected because just as it starts its work, the agent restarts from underneath it
[01:37] <wallyworld> so even if one of those implicit upgrades happens, deployer won't start and then get a disconnect error
[01:37] <dpb1> wallyworld: OK, I wasn't aware that made it into 1.24, thanks for letting me know.
[01:37] <wallyworld> sure, np
[01:58] <axw> wallyworld: just spilt tea everywhere, will be a bit late
[01:59] <wallyworld> oh, no
[01:59] <wallyworld> just ping me
[02:06] <axw> wallyworld: I'm in
[02:49] <mup> Bug #1464470 opened: A subordinate charm hook scheduled to run(but it is waiting for the principal charm hook to release the lock) goes to an error state after the principal charm triggers a reboot. <1.24> <1.25> <juju> <juju-core:New> <https://launchpad.net/bugs/1464470>
[03:42] <menn0> thumper: http://reviews.vapour.ws/r/1921/
[05:33] <wallyworld> menn0: still onine?
[05:33] <menn0> wallyworld: yep
[05:34] <wallyworld> menn0: i forgot to ask you about bug 1464335
[05:34] <mup> Bug #1464335: debug-log does not work with local provider <debug-log> <local-provider> <regression> <vivid> <juju-core:Triaged> <juju-core 1.24:Triaged> <https://launchpad.net/bugs/1464335>
[05:34] <wallyworld> this has been reported against 1.24
[05:34]  * menn0 is looking
[05:34] <wallyworld> looks like all-machines log is missing
[05:35] <wallyworld> maybe i should have asked thumper
[05:36] <wallyworld> as it is claimed inthe bug he was involved
[05:36] <menn0> wallyworld: i didn't do it</simpson name=bart>
[05:36] <thumper> :(
[05:36] <thumper> wasn't me
[05:36] <thumper> but I recall it
[05:37] <thumper> it not working that is
[05:37] <wallyworld> it was claimed as a regression of 1202682
[05:37] <wallyworld> bug 1202682
[05:37] <mup> Bug #1202682: debug-log doesn't work with lxc provider <cts-cloud-review> <debug-log> <landscape> <local-provider> <papercut> <ssh> <ui> <juju-core:Fix Released by thumper> <https://launchpad.net/bugs/1202682>
[05:37] <wallyworld> but i haven't dug in
[05:37] <thumper> wallyworld: someone broke it again
[05:37] <wallyworld> huzaar
[05:38]  * wallyworld sighs
[05:38] <wallyworld> that tells me our tests are fooked
[05:38]  * menn0 spins up an env to have a quick look
[05:47] <thumper> wallyworld: file permission problem
[05:47] <wallyworld> sudo !
[05:47] <thumper> wallyworld: menno had the same problem and his ~/.juju was 0700
[05:47] <thumper> mine is 0755
[05:47] <thumper> and all is good
[05:47] <wallyworld> hmmm, ok
[05:48] <thumper> he changed his permissions and an all-machine.log turned up
[05:48] <wallyworld> huh
[05:48] <wallyworld> maybe juju init is wrong
[05:48] <thumper> the syslog user couldn't see the config file
[05:48] <wallyworld> or there was an old .juju
[05:48] <thumper> well, the .pem cert actually
[05:49] <wallyworld> thanks for looking
[05:49]  * wallyworld goes back to spec writing
[05:49] <thumper> wallyworld: actually...
[05:49] <thumper> wallyworld: the rsyslog files were in the log dir, and natefinch moved them recently to the datadir
[05:49] <thumper> wallyworld: since the log dir is in /var/log/....
[05:50] <thumper> the syslog user could access
[05:50] <thumper> also...
[05:50]  * wallyworld waits with baited breath
[05:51] <thumper> nah, that's it
[05:51] <thumper> I changed my mind
[05:51] <thumper> was thinking of apparmor
[05:51] <thumper> but menno's one started working
[05:51] <thumper> so it wasn't that
[05:51] <wallyworld> ok
[05:51] <wallyworld> do you recall if juju init is wrong?
[05:51] <wallyworld> will need to check
[05:51] <thumper> it was the move of the cert from the logdir to datadir that broke it
[05:51] <thumper> some people like locking down their home dirs
[05:51] <thumper> we can't guarantee this
[05:52] <wallyworld> ah
[05:52] <thumper> lets just log to the db and fix all this
[05:52] <thumper> :)
[05:52] <wallyworld> sure, but for 1.24.1
[05:52] <wallyworld> so what do you suggest?
[05:52] <menn0> well thumper, interesting that mention it....
[05:52] <thumper> well, we have two choices
[05:53] <thumper> tell people to change permissions everywhere
[05:53] <thumper> or move the files back out to the log dir
[05:53] <thumper> or
[05:53] <thumper> some other dir
[05:53] <thumper> perhaps make /var/lib/juju-<namespace>
[05:53] <thumper> /var/lib/juju/local/<namespace> for config files
[05:53] <wallyworld> can't we just create log dir with correct permissions
[05:54] <thumper> it isn't the log dir that is the problem
[05:54] <thumper> the cert that rsyslog uses is in the local provider datadir
[05:54] <thumper> which defaults to $JUJU_HOME/<namespace>/
[05:54] <wallyworld> sorry, i meant the datadir
[05:55] <thumper> this would mean changing the default datadir for the local provider
[05:55] <thumper> it is effectively requiring moving the datadir out of the home dir
[05:55] <thumper> so...
[05:55] <thumper> to main options
[05:55] <wallyworld> can't we just change permissions on ~/.juju
[05:55] <thumper> 1) move the rsyslog conf back to the logdir
[05:55] <wallyworld> no :-(
[05:55] <wallyworld> that would be bad
[05:55] <thumper> 2) move local provider datadir out of $JUJU_HOME
[05:56] <wallyworld> rm -rf logs and you break everything
[05:56] <thumper> 3) tell everyone to change the permissions on their home dirs and .juju
[05:56] <thumper> that's about it
[05:56] <menn0> wallyworld: changing their perms on ~/.juju isn't enough... their home dirs have to be open too
[05:56] <wallyworld> can we just change permissions on .juju
[05:56] <wallyworld> ah
[05:57] <wallyworld> option 2 maybe
[05:57] <wallyworld> i can't see option 1 as any good at all
[05:57] <wallyworld> can be fixed next week
[05:58] <wallyworld> can you update bug? maybe someone in US timezone will pick it up, we should maybe even assign to nate
[06:00] <menn0> wallyworld: to be really sure I just confirmed the problem still happens when ~/.juju's perms are open but $HOME is restricted
[06:00] <wallyworld> yeah, bollocks
[06:20] <menn0> wallyworld: ticket updated
[06:20] <wallyworld> tyvm
[07:03] <urulama> wallyworld: let me reboot
[07:04] <wallyworld> ok
[07:55] <tasdomas> could someone take a look at http://reviews.vapour.ws/r/1888/ ?
[09:52] <voidspace> dooferlad: discovered that those tests had a failing assert that was stopping the test but not marking it as a failure
[09:52] <voidspace> dooferlad: and that six other tests had the same issue - and some of them fail if you actually run them!
[09:53] <voidspace> dooferlad: so we have failing tests on master that aren't being reported...
[09:54] <dooferlad> voidspace: yikes!
[09:54] <voidspace> yeah :-/
[10:02] <perrito666> Voidspace which ones?
[10:05] <voidspace> perrito666: lxcBrokerSuite in workker/provisioner/lxc-broker_test.go
[10:05] <voidspace> perrito666: the problem is in startInstance
[10:05] <voidspace> perrito666: anything that calls that just halts - there's actually an assert failure but the test is marked as a pass
[10:15] <mattyw> rogpeppe1, ping?
[10:15] <rogpeppe1> mattyw: pong
[10:38] <mup> Bug #1464600 opened: Juju 1.22.5: pending LXC containers <cloud-installer> <landscape> <juju-core:New> <https://launchpad.net/bugs/1464600>
[10:40] <fwereade> sorry, I seem to keep dcing from freenode
[10:40] <fwereade> canonical irc seems fine though
[10:45] <mup> Bug #1464616 opened: destroy-machine --force no longer forceably destroys machine <juju-core:New> <https://launchpad.net/bugs/1464616>
[10:54] <mup> Bug #1464616 changed: destroy-machine --force no longer forceably destroys machine <juju-core:New> <https://launchpad.net/bugs/1464616>
[11:09] <mup> Bug #1464616 opened: destroy-machine --force no longer forceably destroys machine <juju-core:New> <https://launchpad.net/bugs/1464616>
[11:45] <mup> Bug #1464633 opened: juju status should show if an upgrade is available <juju-core:Triaged> <juju-core 1.24:Triaged> <https://launchpad.net/bugs/1464633>
[13:30] <mup> Bug #1464665 opened: backupsSuite setup failed <ci> <intermittent-failure> <unit-tests> <juju-core:Incomplete> <juju-core jes-cli:Triaged> <https://launchpad.net/bugs/1464665>
[13:37] <Syed_A> Hello folks, I was wondering how the lxc template "juju-trusty-lxc-template" is generated ?
[13:38] <Syed_A> jamespage: Hello !
[13:40] <Syed_A> Please correct me if i am wrong, but the way juju spawn containers is that first it will transfer the "juju-trusty-lxc-template" to the target host
[13:40] <Syed_A> and then juju will use this template to spawn new conatiners from this template.
[13:42] <Syed_A> I want to change the "juju-trusty-lxc-template" before it is transferred to the target host for the lxc container. Is it possible to do it ?
[13:48] <dimitern> Syed_A, the template container is created, when lxc-clone is true (the default) in environments.yaml for the environment, the first time an lxc container is deployed on the machine (of the given series)
[13:49] <dimitern> Syed_A, it is possible to change the template container, but why do you need that? juju also changes it in some cases
[13:51] <mup> Bug #1464671 opened: clientSuite setup fails <ci> <unit-tests> <juju-core:Triaged> <https://launchpad.net/bugs/1464671>
[13:51] <Syed_A> dimitern: I want the containers to have 3 nics and take ip addresses from three bridges on the hosts. Right now i have to manually edit the template. but if somehow i can edit the template on the juju machine, then whenever a new machine clone this template it has all the values for the 3 bridges.
[13:52] <dimitern> Syed_A, it's better to do that by deploying a charm (principal or, better, subordinate) to each container; that charm can contain scripts to add NICs and other things
[13:54] <Syed_A> dimitern: Right now i have to log inside the machine hosting the container and edit the template manually. I want to edit the template on juju node so that edited template gets transferred whenever i add a new machine to start containers on it.
[13:54] <dimitern> Syed_A, how about what I suggested above?
[13:55] <dimitern> Syed_A, with a charm that does the custom config, you can write it once and then use it on every machine
[13:56] <Syed_A> dimitern: that make sense. But i have never written a charm before.
[13:57] <dimitern> Syed_A, it can be very simple, e.g. take the ubuntu charm as a base and just add some scripts in the hooks/install
[13:58] <dimitern> Syed_A, https://jujucharms.com/ubuntu/trusty/3 - there's a "Download zip" link on the right; then, unzip this in a dir with the following structure: mycharms/trusty/ubuntu
[13:59] <Syed_A> dimitern: opening it.
[13:59] <dimitern> Syed_A, then inside the ubuntu dir, add a "hooks" dir and inside it an "install" script (bash or python, but needs to be executable)
[14:00] <dimitern> Syed_A, in that install hook, you can do things like:
[14:01] <dimitern> Syed_A, stop a given container, change the lxc.conf it uses to add more networks, restart it
[14:02] <katco> natefinch: standup
[14:02] <dimitern> Syed_A, finally, to test this, use: juju deploy local:trusty/ubuntu --repository <path/to/mycharms> --to 1 (or later juju add-unit ubuntu --to X - machine id)
[14:02] <natefinch> katco: coming
[14:03] <dimitern> Syed_A, there are lots of folks in #juju which can help you with your charm, and there's the online docs about it - https://jujucharms.com/docs/stable/getting-started
[14:05] <Syed_A> dimitern: This sounds like a great plan but alternatively if i could just edit the template on juju node itself then i will be good to go.
[14:06] <dimitern> Syed_A, you can try - it's in /var/lib/lxc/juju-trusty-lxc-template/config (and int the same dir, rootfs/etc/network/interfaces needs to be changed)
[14:07] <dimitern> Syed_A, changing the template and then deploying another lxc (the first one you deployed, which triggered the template creation you can destroy) will use the changed template
[14:08] <Syed_A> dimitern: Yes, this is what i was doing.
[14:08] <dimitern> Syed_A, however, beware this is not supported and your mileage may vary
[14:08] <Syed_A> dimitern: Changing /var/lib/lxc/juju-trusty-lxc-template/config on every host
[14:09] <Syed_A> dimitern: This file will only be present on a machine if you start a container on it.
[14:09] <dimitern> Syed_A, that's the only way manually (still can be automated somewhat by using "juju run" or "juju ssh"/"juju scp"), using a charm allows you to take advantage of juju's automation
[14:10] <dimitern> Syed_A, hmm, something occurred to me now
[14:10] <Syed_A> dimitern: My question is from where does this "/var/lib/lxc/juju-trusty-lxc-template/" comes from ?
[14:10] <dimitern> Syed_A, if all your machines are more or less the same, you could potentially do this once on one machine and then just copy the template to /var/lib/lxc and try if it will work
[14:12] <dimitern> Syed_A, it's created using lxc-create --debug --userdata <path/to/file/generated/by/juju> --hostid <e.g. juju-trusty-lxc-template> -r trusty
[14:12] <Syed_A> dimitern: I can do that but then juju might overwrite it ? Probably there could be a semaphore ?
[14:12] <dimitern> Syed_A, and then once it boots it's shutdown and cloned
[14:12] <Syed_A> dimitern: lxc-create -n juju-trusty-lxc-template21 \
[14:12] <Syed_A>   -t ubuntu-cloud \
[14:12] <Syed_A>   -f /var/lib/juju/containers/juju-trusty-lxc-template/lxc.conf \
[14:12] <Syed_A>   -- --debug \
[14:12] <Syed_A>   --userdata /var/lib/juju/containers/juju-trusty-lxc-template/cloud-init \
[14:12] <Syed_A>   --hostid juju-trusty-lxc-template \
[14:12] <Syed_A>   -r trusty
[14:12] <dimitern> Syed_A, juju checks if juju-trusty-lxc-template is present and uses it, it won't overwrite it
[14:13] <Syed_A> dimitern: Sorry about the paste.
[14:14] <Syed_A> dimitern: If that's the case then it will be a really easy and good solution.
[14:15] <dimitern> Syed_A, well, you never know until you try I guess :)
[14:16] <Syed_A> dimitern: Yep! ;)
[14:17] <dimitern> Syed_A, anyway, I hope it works and if you have other questions, here or in #juju someone will be able to help you
[14:17] <Syed_A> dimitern: Thanks!
[14:21] <mup> Bug #1464679 opened: juju status oneline format missing info <landscape> <status> <juju-core:New> <https://launchpad.net/bugs/1464679>
[15:08] <natefinch> wwitzel3: let me know when you're around.... not a huge fan of the ContextComponent's using of interface{} everywhere
[15:10] <wwitzel3> natefinch: I'm around
[15:12] <wwitzel3> natefinch: by everywhere, you mean in the Get and Set fields?
[15:14] <wwitzel3> natefinch: or are there other places of concern?
[15:15] <natefinch> wwitzel3: sory, hyperbole... but just not a fan of not-type-safe code
[15:16] <natefinch> wwitzel3: so I'd like to know what this is buying us
[15:17] <wwitzel3> natefinch: it is type safe because we explicitly check that the type conversion works in the component side and error if it doesn't.
[15:18] <wwitzel3> natefinch: but what it buys us is the ability to register components without the hook context needing to know implementation details about the components (and there for, not import that as a package)
[15:18] <wwitzel3> natefinch: so the ContextComponent interface is our intersection between juju internals and the external component
[15:47] <natefinch> wwitzel3: do you want to jump in a hangout... I feel like i'm behind on a lot of the decisions made in the spec, so I'd like to understand better about the use cases the spec solves
[15:49] <wwitzel3> sure, katco if you're interested, we are heading in to moonstone
[15:50] <katco> wwitzel3: yeah be there in a sec
[16:32] <wwitzel3> alexisb: you'll be happy to know, there is a ceiling fan in my office now :)
[16:33] <alexisb> lol
[16:33] <alexisb> nice wwitzel3
[16:41] <katco> wwitzel3: i think natefinch needs those tabs for godoc
[16:42] <wwitzel3> katco: ah, ok, I thought it could be spaces too and i was just going for consistency
[16:43] <natefinch> spaces or tabs work
[16:43] <natefinch> tab is fewer keystrokes
[16:44] <natefinch> https://godoc.org/github.com/natefinch/godocgo#hdr-Formatting
[16:44] <katco> natefinch: ah that's what i was looking for. didn't know you could use spaces as well
[16:44] <wwitzel3> I just hate tabs
[16:44] <wwitzel3> lol
[16:45] <katco> wwitzel3: tabs in emacs alllll day. come at me!
[16:45] <wwitzel3> I'll sneakily edit your config at gophercon so your tabstop is 32
[16:45] <natefinch> I love tabs.  Their whole point is to indent.  And you never have to backspace or hit space multiple times to indent.  Plus, everyone can set their tabs to be whatever width they want, and no one else has to complain they're too big or small
[16:46] <katco> wwitzel3: good luck with that. my config is currently 1409 lines long and source controlled ;)
[16:47] <wwitzel3> katco: I wouldn't be able to actually do it anyway, I don't know how to boot emacs
[16:48] <katco> wwitzel3: quantum computing is coming. i'm hoping those machines will be able to run it
[16:51] <natefinch> if you don't already have it, I highly recommend getting the hub tool from github.  It wraps git and does a lot of awesome github-specific things from the command line.  Like making it super easy to checkout the code for a PR, or make a PR from your command line, etc
[16:52] <natefinch> and it's written in Go.... go get github.com/github/hub
[16:54] <natefinch> it wraps git, so you can actually replace git with it entirely
[17:08] <natefinch> sinzui: about that "SIGABRT uninstalls jujud" bug - why do we have any signal that tells juju to uninstall?  why is that a feature?
[17:09] <sinzui> natefinch: I think that is the mechanism that Other engineers decided was the right way to clean up. It used to be another more common sig. axw changed it to ABRT last year
[17:43] <natefinch> fwereade: I don't suppose you're around?
[17:51] <pmatulis> does 'juju generate-config' work on linux and windows alike, ito of dir/file being created?
[17:52] <natefinch> pmatulis: yes, it works on both.
[17:52] <natefinch> pmatulis: not sure what the second half of your question was supposed to be
[17:55] <pmatulis> natefinch: this command creates ~/.juju/environments.yaml on linux (if not presetn). does it do the same on windows for %LOCALAPPDATA%/Juju ?
[17:56] <natefinch> pmatulis: yes
[17:57] <natefinch> pmatulis: the client is totally compatible between linux, windows, and OSX, following all the normal conventions of each OS.
[17:58] <natefinch> pmatulis: er, when I say compatible, you still need the OS-specific binary, but it all comes from the same code and they are treated as equally important
[18:09] <cherylj> katco: ping?
[18:10] <pmatulis> natefinch: thank you
[18:16] <katco> cherylj: pong
[18:17] <cherylj> katco: I have a process question / comment for you
[18:17] <katco> cherylj: sure what
[18:17] <katco> what's up?
[18:17] <cherylj> katco: I know we close bugs that have no activity for 60 days
[18:18] <cherylj> but I saw a bug that got closed because of that with a tag of tech debt
[18:18] <cherylj> and I'm thinking that maybe tech debt bugs shouldn't be closed because of inactivity
[18:19] <katco> cherylj: i agree with that... and feature requests
[18:19] <cherylj> katco: do you know who owns the bot or whatever that closes these bugs?
[18:20] <cherylj> it may also be the case that this has been fixed.  The bug I'm looking at was closed last year
[18:20] <katco> cherylj: almost certainly CI (ping sinzui)
[18:20] <cherylj> katco: will do, thanks!
[18:22] <sinzui> cherylj: Launchpad doesn’t care about tags. Lp’s 60 day expiration is based on incomplete status witth no one ot other task assigned
[18:23] <sinzui> cherylj: incomplete mean there isn’t enough information to accept this issue as work.
[18:23] <sinzui> SO tech-debt cannot be incomplete by definition
[18:27] <cherylj> sinzui: ah, thanks for clarifying.
[19:40] <fwereade> natefinch, heyhey, have I missed you?
[19:40] <natefinch> fwereade: nope
[19:41] <natefinch> fwereade: I have a few questions about why we're doing things in the way we are... which I probably already know the answer to, but want to make sure I understand
[19:42] <fwereade> natefinch, sure, can you manage a slightly laggy irc conversation about them?
[19:43] <natefinch> fwereade: that's fine L(
[19:43] <natefinch> fwereade: er :)
[19:44] <natefinch> fwereade: what's up with github.com/juju/schema ?  It seems like we're reimplementing what the yaml and json parsers already do to take yaml and shove it in a struct.  Seems like we could strip out a ton of code that uses schema and just deserialize into a struct
[19:47]  * fwereade is excavating his mind
[19:49] <fwereade> natefinch, well, you *could* do more sophisticated things than we usually do, but I don't think there's a 100% overlap with "just deserialize into a struct"
[19:49]  * perrito666 imagines fwereade fiddling with a spoon
[19:50] <fwereade> natefinch, I would have no objection to replacing schema with something simpler where it's too unwieldy a hammer for the situation
[19:51] <fwereade> natefinch, but I'm not convinced it's completely unhelpful across the board
[19:51] <fwereade> natefinch, do you have particularly egregious examples off the top of your head?
[19:53] <natefinch> fwereade:  looking...
[19:54] <fwereade> natefinch, I do know that last time I thought I wanted to use the schema package I got tied up in knots trying to make a self-referential one that would turn nested map[interface{}]interface{} into nested map[string]interface{}
[19:55] <natefinch> yeah,... it seems like you should never need map[interface{}]interface{} ... map[string]interface{} should always be sufficient.  I don't think anything uses non-strings as keys, do they?
[20:01] <natefinch> fwereade: anyway, my other question is about the hook context code
[20:02] <natefinch> fwereade: there's a bunch of interfaces that seem to only be used for testing... so I wanted to make sure that they had no other function other than to make the code easier to test: https://github.com/juju/juju/blob/master/worker/uniter/runner/jujuc/context.go#L45
[20:03] <natefinch> wwitzel3: btw, when you get back, I think I have a solution to the generics problem with the ContextComponent stuff
[20:05] <natefinch> fwereade: looking at git blame, the one big interface recently got refactored into a bunch of smaller ones... but it doesn't change the fact that it seems like there's no one using it outside the tests.
[20:10] <fwereade> natefinch, I am entirely comfortable with exposing functionality behind interfaces by default, for all sorts of reasons
[20:10] <fwereade> natefinch, ease of testing is certainly one of them
[20:11] <fwereade> natefinch, but the Context interface is, I think, an important thing in itself
[20:11] <fwereade> natefinch, it's the bottleneck through which all hook communication needs to happen
[20:12] <fwereade> natefinch, it keeps the hook tools unaware of more distant layers
[20:12] <fwereade> natefinch, and all those things push towards it being an interface
[20:19] <natefinch> fwereade: have you seen Eric and Wayne's ideas for Components?
[20:20] <fwereade> natefinch, not sure I have actually -- hwere were they?
[20:20] <katco> fwereade: you have. this is the whole intersection of features with layers of architecture discussion
[20:21] <fwereade> katco, ah, right
[20:23] <natefinch> fwereade: the reason I brought it up is because of what you said about hook tools not needing to know about distant layers.  While that's true... it's also true that you're likely to write the action-set hook tool at the same time as the action API call, etc.  So it's actually not terrible if the action-set tool knows about the action API... what's actually better is not requiring *everyone else* to know about those things
[20:23] <natefinch> ... which I think is what the Component idea is trying to push.
[20:23] <natefinch> I don't know what my point was there, though
[20:23] <fwereade> natefinch, strongly disagree
[20:24] <fwereade> natefinch, it is terrible if the hook tools know about the api
[20:24] <fwereade> natefinch, makes it impossible to understand and maintain them in isolation
[20:25] <katco> natefinch: the idea is that you have an adapter where features and architectural layers intersect, so that neither are strongly coupled to the other
[20:25] <fwereade> natefinch, I am all for improving horizontal boundaries, but not at the cost of the vertical ones
[20:25] <katco> natefinch: these are the "abstraction" cards on our kanban
[20:25] <natefinch> yes, sorry, saying it wasn't terrible was hyperbole.  Certainly keeping things decoupled is good.
[20:26] <fwereade> natefinch, katco: so I frequently articulate this poorly
[20:27] <fwereade> natefinch, katco: but I think a good model *is* to cluster feature-specific code into a package or small closely-connected group of packages
[20:27] <fwereade> natefinch, katco: those bits define the juju entities and how they act; other model code defines how model entities can/should interact
[20:28] <katco> fwereade: yep
[20:28] <fwereade> natefinch, katco: and then, as much as possible, we use those same model representations wherever we can
[20:28] <fwereade> natefinch, katco: so the business logic doesn't need to be rewritten in subtly different ways at every level
[20:29] <fwereade> natefinch, katco: the trouble is
[20:29] <katco> fwereade: yeah, i think we're still on the same page
[20:30] <fwereade> natefinch, katco: that many of our business rules are encoded at the storage level and aren't likely to move any time soon
[20:30] <katco> fwereade: right, we've also identified that as the hardest piece
[20:30] <fwereade> natefinch, because it's really damn difficult to extract the business rules without dragging nasty gobbets of persistence concerns with them
[20:31] <katco> fwereade: we're not planning on doing a whole lot there atm b/c it's such a large effort
[20:31] <katco> fwereade: but we are going to introduce a few small bits which will hopefully chip away at the problem
[20:32] <fwereade> natefinch, katco: so, yeah, I think we're all on the same page. so long as you keep the layers separated as much as you can, I'm happy :)
[20:32] <katco> fwereade: yes :) we have that in the forefront of our mind for sure :)\
[20:33] <natefinch> yep
[20:48] <natefinch> eod.  happy weekend all
[21:17] <wwitzel3> bah
[21:17] <wwitzel3> just missing him