[08:58] <kim0> Morning everyone
[14:19] <SpamapS> hrm.. laying around w/ ensemble.. it seems like hooks on two machines in a service are being triggered for eachothers' events
[14:19] <SpamapS> s/laying/playing/ :p
[14:24] <niemeyer> Good morning!
[14:25] <SpamapS> niemeyer: hello there, I have a very interesting situation that I'm trying to debug..
[14:25] <niemeyer> SpamapS: Cool, let's see
[14:25] <SpamapS> which may be interrupted by my 20 month old wakign up :-P
[14:26] <SpamapS> niemeyer: basically, I am seeing the data from demo-wiki/2's relationship when I run 'relation-get' on demo-wiki/1
[14:27] <niemeyer> SpamapS: Hmm
[14:27] <SpamapS> niemeyer: its as if the modified state is getting propagated to all service units
[14:27] <SpamapS> niemeyer: I think I have a reproducible test case
[14:27] <niemeyer> SpamapS: Ah, that's awesome
[14:28] <SpamapS> btw, debug-hooks is *amazing*
[14:29] <niemeyer> SpamapS: Is there a chance I could get access to the environment's zk machine?
[14:29] <niemeyer> SpamapS: Just to have a look at the state
[14:29] <niemeyer> SpamapS: It's nice isn't it
[14:29] <niemeyer> SpamapS: Feels like gdb for formulas :)
[14:30] <SpamapS> totally
[14:30] <SpamapS> niemeyer: I think this is easily reproducible w/ the example formulas
[14:30] <SpamapS> trying that right now
[14:30] <niemeyer> Cool
[14:30] <niemeyer> Let me know the steps and I'll run through it
[14:38] <SpamapS> ahh ok so its not exposed by the example formulas because the example mysql formula sends the same user/pass to all service units in the relation
[14:40] <SpamapS> ok so here's where I may just not understand relation-set and relation-get ...
[14:41] <SpamapS> I thought that relation-set and relation-get were each reading/writing into an area unique to the two service units...
[14:42] <SpamapS> so if   mysql/0 relation-set's with ENSEMBLE_REMOTE_UNIT=wordpress/1 .. thats a set of data unique to wordpress/1 and mysql/0's relationship
[14:43] <SpamapS> niemeyer: ^^ is my assumption false?
[14:43] <SpamapS> its been a while since I read the spec
[14:44] <niemeyer> SpamapS: It's no
[14:44] <niemeyer> t
[14:45] <SpamapS> so that confuses me then as to how the example mysql formula can work.. as it exits if the database exists
[14:45] <SpamapS> without ever having done a relation-set
[14:45] <niemeyer> SpamapS: If you don't provide additional arguments, and do a relation-set with a=b, that's specific to the involved units only
[14:48] <SpamapS> niemeyer: ok, so the steps to reproduce what I'm seeing as wrong behavior are as follows:
[14:49] <SpamapS> bzr branch lp:principia-tools && cd principia-tools && scripts/getall && tests/mediawiki.sh
[14:49] <SpamapS> niemeyer: this assumes a bootstrapped environment
[14:50] <SpamapS> niemeyer: the failure is that both demo-wiki's will receive eachothers' usernames in db-relation-changed at some point
[14:50] <SpamapS> causing them to fail
[14:50] <SpamapS> note that this wil spawn about 7 machines. ;)
[14:50] <SpamapS> you can probably reduce it down by removing the memcached stuff
[14:51] <niemeyer> SpamapS: No worries.. I'll go through it in a moment
[14:51] <niemeyer> SpamapS: Nah, it'll be nice to see it churning ;)
[14:51] <SpamapS> niemeyer: much appreciated. I'll be in and out today, as its a U.S. holiday, but this one has been *killing me* this weekend. ;)
[14:51] <SpamapS> so I'll check in as much as possible
[14:51] <niemeyer> SpamapS: Ouch, sorry to hear it.. we'll get whatever is happening fixed
[14:52] <SpamapS> I'm kind of hoping whats broken is my assumptions.
[14:52] <SpamapS> I'm afraid I've churned a bit on it so the formulas are kind of ugly at the moment. :-P
[14:58] <niemeyer> SpamapS: Your basic assumption is sane/right, at least
[15:27] <SpamapS> on a side note... I wonder if we should make an environment config option to keep from putting all the aws machines' host keys in .ssh/known_hosts ... 
[15:27] <SpamapS> I've spun up and down enough nodes, I get conflicts about 1 in 20
[15:43] <kim0> Any way to remove "Front Page" from first line of https://ensemble.ubuntu.com/FrontPage :)
[15:48] <koolhead17> replace it with startpage
[15:48] <koolhead17> :)
[15:48] <koolhead17> hey hazmat niemeyer obino
[15:50] <niemeyer> SpamapS: Yeah, feels like we should do something on that area indeed 
[15:50] <SpamapS> niemeyer: so if I were following the example formulas that exist now, I would believe that one relation-set feeds all units in a service.
[15:50] <niemeyer> koolhead17: Hey there!
[15:51] <niemeyer> SpamapS: Why?
[15:51] <SpamapS> niemeyer: because db-relation-changed in the mysql formula only ever runs relation-set once per service
[15:51] <SpamapS> niemeyer: once the database has been created and relation-set has been run, it just silently exits
[15:51] <SpamapS> er.. db-relation-joined actually
[15:52] <SpamapS> niemeyer: and in fact, this works beautifully, properly feeding that data to all units of wordpress when related
[15:54] <niemeyer> SpamapS: I'm not sure I understand what you're saying
[15:54] <niemeyer> SpamapS: Looking at db-relation-joined, why would it run only once per service?
[15:55] <niemeyer> SpamapS: Oh, hmm, I think I see what you mean
[15:56] <niemeyer> SpamapS: Feels like there's something catchy there indeed
[15:57] <niemeyer> SpamapS: The database doesn't have to be created, but the relation settings should be piped through
[16:00] <SpamapS> niemeyer: its as if relation-set is a broadcast channel
[16:00] <niemeyer> SpamapS: Yeah, this is certainly bogus
[16:01] <SpamapS> it didn't break until I added ip restrictions to the grants in the principia mysql formula
[16:01] <niemeyer> SpamapS: It must be something minor, though.. I'm sure the concept was well understood the whole time
[16:01] <niemeyer> SpamapS: We even have a parameter on relation-set when one wants to change info on a separate relation unit, for instance
[16:02] <SpamapS> right
[16:02] <SpamapS> in fact, I wonder if I explicitly state the remote unit if this goes away
[16:03] <niemeyer> SpamapS: No, the default remote unit is the one you expect
[16:03] <niemeyer> SpamapS: E.g. db-relation-joined will set the default remote unit to the joining unit
[16:06] <SpamapS> actually, relation-set doesn't take a unit
[16:07] <SpamapS> not from the cli options at least
[16:08] <kim0> hmm so after the principia changes, what should I branch to work on a new formula
[16:09] <niemeyer> SpamapS: Aw.. man, I think I'm doing a big confusion..
[16:09] <niemeyer> SpamapS: I'm mixing relation-get and relation-set
[16:10] <niemeyer> SpamapS: relation-get is the one that will look at the remote unit's data
[16:10] <niemeyer> SpamapS: relation-set is always local
[16:11] <niemeyer> SpamapS: So it changes the settings of "self", if you see what I mean
[16:12] <niemeyer> SpamapS: and the other units will be notified of the change
[16:12] <niemeyer> SpamapS: So it's working as intended, but not as I pointed out earlier
[16:14] <niemeyer> SpamapS: You can think of it the following way: every unit in a relation has bucket with their own settings.
[16:14] <niemeyer> SpamapS: relation-set always changes the local bucket
[16:14] <niemeyer> SpamapS: relation-get can retrieve settings from the bucket of any other unit within this relation, and defaults to the remote unit the event is running for
[16:16] <niemeyer> SpamapS: The documentation and examples may be helpful: https://ensemble.ubuntu.com/docs/formula.html#hook-tools
[16:18] <SpamapS> so I can't give each remote unit its own unique configuration? :(
[16:19] <SpamapS> bummer I was kind of excited to be able to restrict each username/password to each unit
[16:19] <SpamapS> but it makes perfect sense, and is easy to correct
[16:20] <SpamapS> the key "aha" btw, is "relation-set is always local"
[16:21] <SpamapS> niemeyer: well it takes away a tiny thing I was trying to do, but it simpliefies the formulas, so my :( is turned around to :)
[16:22] <niemeyer> SpamapS: Knowing that design, you actually can if you really want to
[16:23] <SpamapS> The idea was simply that the units could be isolated from one another for greater security
[16:23] <niemeyer> SpamapS: Ah, I see
[16:23] <SpamapS> but, there are other ways to achieve that
[16:23] <niemeyer> SpamapS: Right.. we have to consider further the security details intra-relations
[16:23] <SpamapS> it was, I was thinking, a target of opportunity.. not something I see as key to formulas working
[16:24] <SpamapS> I think given that the service units will be largely identical, its ok to treat them all as equals and just isolate the service from other services, not the units from eachother
[16:25] <niemeyer> SpamapS: Right, this is likely the initial direction we'll go into
[16:25] <niemeyer> SpamapS: In some cases it may actually be important to know details from other relations as well
[16:25] <niemeyer> Sorry
[16:25] <niemeyer> SpamapS: I mean from other units
[16:25] <niemeyer> SpamapS: But, if we really want to, the current design doesn't make it impossible to do the isolation you mention
[16:25] <niemeyer> SpamapS: Internally, that is
[16:26] <SpamapS> sure, right now though, being able to assume that there is only one bucket per relation-set, allows me to delete a lot of code :)
[16:26] <niemeyer> SpamapS: The conventions we build on it might make it hard, though.  IOW, people may well start depending on the fact they can see other unit's settings in useful cases.
[16:26] <niemeyer> SpamapS: Sweet, that sounds like a good feature then ;)
[16:27]  * SpamapS <heart> /^-/ in diffs
[16:28] <niemeyer> +1
[16:35]  * niemeyer lunch!
[16:52] <SpamapS> ahh yes, deleting code to make things work is always refreshing
[16:55] <SpamapS> kim0: nice job on the ensemble text. :)
[16:55] <kim0> SpamapS: oh cool ! 
[16:55] <kim0> SpamapS: thanks .. I could really use some tweak ups from a native speaker
[16:58] <kim0> SpamapS: is there a short couple of commands to branch principia and work on a new formula
[16:59] <kim0> if it's longish .. It's not urgent
[17:00]  * kim0 is taking a first shot at writing a new formula
[17:13] <SpamapS> kim0: I haven't gone through it with a fine toothed comb, but the bullt points portray what I think we all want to portray
[17:14]  * kim0 nods .. cool
[17:16] <kim0> n00b question, when I do ensemble add-relation mywiki mymemcached, assuming both mywiki and mymemcached have TWO service units deployed .. does Ensemble hook them up one memcache per mywiki, like I think it should ?
[17:21] <SpamapS> err
[17:21] <SpamapS> kim0: mywiki's units will all be related to mymemcached's units
[17:49]  * niemeyer waves
[17:56] <niemeyer> kim0: The documentation feels like going in a good direction, but I'm not sure the front page should hold that description
[17:56] <kim0> o/
[17:56] <kim0> shoot
[17:56] <kim0> what's your thinking
[17:57] <niemeyer> kim0: The feeling I have when opening the page is that I have to read a lot to grasp what Ensemble is
[17:58] <niemeyer> kim0: In a sense, it feels like the first two or three questions in the FAQ would be a good introduction: https://ensemble.ubuntu.com/docs/faq.html
[17:58] <kim0> there's a short version and a long one especially for that 
[17:58] <kim0> hmm
[17:58] <kim0> perhaps there should be some graphic separating the two
[17:58] <niemeyer> Or, actually, the whole FAQ is probably the front page :-)
[17:58] <niemeyer> Or rather a seed fo rit
[17:58] <niemeyer> for it
[17:59] <kim0> niemeyer: I think the text looks a bit too much, just because it's a lot of text
[17:59] <SpamapS> niemeyer: ok the test I gave you before passes now.. :) thanks for clarifying, time to BBQ!
[17:59]  * SpamapS disappears
[17:59] <kim0> probably adding a nice graphic make it easier on the eye 
[17:59] <niemeyer> SpamapS: Sweet, have fun there
[18:00] <kim0> but I don't think we should remove much of it .. 
[18:00] <niemeyer> kim0: Well, it feels like a lot of text because it is a lot of text.. :-)
[18:01] <kim0> I could just leave titles for bullets, and link the denser text in another page of course
[18:01] <niemeyer> kim0: We can certainly keep some of it
[18:01] <kim0> like the 5 bullets, would just be 5 lines
[18:01] <kim0> with the longer version linked to
[18:01] <niemeyer> kim0: I actually like the points below
[18:02] <kim0> niemeyer: so what part should not be there ?
[18:02] <niemeyer> kim0: Perhaps the at-a-glance idea is that needs some love
[18:02] <niemeyer> kim0: Reading this, for instance:
[18:02] <niemeyer> """
[18:02] <niemeyer> Ensemble is a novel cloud orchestration framework. It lets you deploy, manage and scale software services on the cloud and soon physical servers. Ensemble uses "formulas" to capture the intelligence of managing deployments. If you want a piece of software on the cloud, "there's a formula for that!" The Ensemble community is working towards that goal!
[18:02] <niemeyer> """
[18:02] <niemeyer> kim0: It feels very hyped, but without any hints at all regarding what it *actually* does
[18:03] <niemeyer> kim0: I can replace Ensemble by any other configuration management product name, and it remains true
[18:03] <kim0> but that's what marketing is all about eh :)
[18:03] <niemeyer> kim0: I'm not a marketing guy
[18:03] <niemeyer> :)
[18:03] <kim0> mmm
[18:04] <niemeyer> kim0: I think we should take pieces of the FAQ and insert above as an introduction
[18:04] <kim0> niemeyer: well .. that paragraph will be replaced with whatever Gerry and everyone agrees on
[18:04] <kim0> to be the standard intro paragraph to Ensemble
[18:04] <kim0> this is just a placeholder
[18:04] <niemeyer> kim0: Absolutely, but it's live right now, and I'd like to have something nice there
[18:05] <niemeyer> kim0: What do you think of having our FAQ entries as an introduction, and maintaining the large paragraph there as a more in-depth look?
[18:05] <niemeyer> s/large paragraph/large section/
[18:06] <kim0> generall it's absolutely fine :)
[18:06] <kim0> ok maybe it's indeed too hype packed
[18:07] <kim0> k, I'll edit it
[18:07] <niemeyer> kim0: Thanks a lot
[18:08] <kim0> rock n roll
[19:28]  * niemeyer plays with packages
[19:28] <niemeyer> ... and everything seems to work.. sweet!
[20:25] <niemeyer> kim0: When are you planning to run the refactoring?
[20:26] <niemeyer> kim0: In the front page, that is
[20:26] <niemeyer> kim0: I want to put some basic information up regarding the packages
[20:26] <kim0> I'm held up in real life for a couple of hours
[20:26] <kim0> if you'd like to change something go ahead ..
[20:27] <kim0> I may not be able to change it before the morning
[20:27] <kim0> niemeyer: is that ok ?
[20:28] <niemeyer> kim0: Cool, no worries
[20:28] <kim0> okie great
[20:45] <niemeyer> kim0: Tweaked
[20:45] <niemeyer> kim0: Please let me know what you think
[20:45] <kim0> great .. thank you