[00:39] <SpamapS> niemeyer: who do we need to poke to get a new release of txaws btw? I'd like to push it into oneiric soon
[00:44] <SpamapS> niemeyer: I know you've told me before but I keep forgetting
[01:37] <niemeyer> SpamapS: I know jkakar was one of the core devs
[01:37] <niemeyer> SpamapS: But looking at the logs today it looks like the Landscape guys have been doing quite some work on it lately
[01:37] <niemeyer> SpamapS: Probably as a side effect of Cloud Deck
[01:39] <poolie> niemeyer: oh i meant to say
[01:40] <poolie> i was wondering after the demo at UDS, whether ensemble could replace the 'ec2' script in lp:launchpad
[01:40] <poolie> which fires off instances to test lp etc
[01:49] <niemeyer> poolie: Oh, that sounds interesting for sure
[01:50] <niemeyer> poolie: We could put each of the services which compose Launchpad in their own formulas
[01:51] <poolie> right
[05:26] <_mup_> Bug #788950 was filed: Getting Started Documention is missing dependancies <Ensemble:New> < https://launchpad.net/bugs/788950 >
[08:46] <_mup_> Bug #788992 was filed: example formulas refer to providing the hostname in ensemble itself <Ensemble:New> < https://launchpad.net/bugs/788992 >
[13:39] <niemeyer> Aw..  will have to bump the txaws version to 0.0.2bzr
[13:39] <niemeyer> otherwise the one in Ubuntu takes precedence
[14:46] <niemeyer> Hmmm
[15:05] <_mup_> ensemble/trunk r36 committed by gustavo@niemeyer.net
[15:05] <_mup_> Minor version tweaks preparing for daily build. [trivial]
[15:15] <niemeyer> I thought txzookeeper would be the easiest and I'm stumbling upon it repeatedly. :-/
[15:20] <_mup_> ensemble/trunk r37 committed by gustavo@niemeyer.net
[15:20] <_mup_> Tweaked version extraction from __init__ to avoid build time deps. [trivial]
[15:28] <niemeyer> Victory, apparently
[15:31] <hazmat> niemeyer, cool
[15:47] <niemeyer> Yay, it worked
[15:47] <niemeyer> hazmat: Morning
[15:48] <hazmat> niemeyer, g'morning
[15:49] <niemeyer> So is ensemble itself all that is missing?
[15:49]  * niemeyer checks
[15:51] <niemeyer> Alright.. one more
[16:04] <niemeyer> hazmat, SpamapS, jimbaker:  Unless there's anyone against it, I'll bump the version number of ensemble to 0.5, as it reflects better the project status than our current version
[16:05] <hazmat> niemeyer, sounds good
[16:05] <niemeyer> We should be more diligent about bumping that next to our milestones
[16:05] <niemeyer> (at least)
[16:08] <_mup_> ensemble/trunk r236 committed by gustavo@niemeyer.net
[16:08] <_mup_> Version tweaks preparing for daily builds.
[16:15] <kim0> hazmat: thanks for your comment .. so I understand now changed always gets fired after joined. Does Ensemble wait for ALL joined hooks to finish, to start running changed, or is this order only enforced per node?
[16:15] <hazmat> kim0, per node
[16:15] <kim0> got it
[16:18] <_mup_> ensemble/trunk r237 committed by gustavo@niemeyer.net
[16:18] <_mup_> Merged packaging branch by Clint. [r=niemeyer]
[16:18] <_mup_> This improves the packaging further.
[16:18] <niemeyer> SpamapS: ^
[16:21] <_mup_> ensemble/trunk r238 committed by gustavo@niemeyer.net
[16:21] <_mup_> Bump package standards version to 3.9.1.
[16:49] <niemeyer> SpamapS: Do we still need those packages for Lucid which are in the Ensemble PPA?
[16:51] <SpamapS> niemeyer: ew
[16:51] <SpamapS> niemeyer: its almost *never* a good idea to have the debian dir in your trunk
[16:51] <SpamapS> niemeyer: absolutely you need lucid!
[16:51] <SpamapS> 99% of all server deployments are LTS
[16:51] <SpamapS> including cloud. :)
[16:52] <niemeyer> SpamapS: almost! :)
[16:53] <niemeyer> SpamapS: We can easily take it out, but for now we (the Ensemble team, including you) are the maintainers, and this will make things simpler.
[16:53] <SpamapS> niemeyer: it will make things simpler until it goes into Oneiric. After that it complicates things.
[16:53] <niemeyer> SpamapS: Sounds good.. when it stops being simpler we can change it
[16:54] <SpamapS> niemeyer: because having debian/ in the orig tarball means either a) having a native package, or b) having to remove it from the orig tarball before upload. :-/
[16:54] <niemeyer> SpamapS: I dig that
[16:55] <niemeyer> SpamapS: No worries really.. we take it out when it stops being convenient
[16:55] <SpamapS> Yeah sounds good
[16:55] <SpamapS> did I see auto resolution land?
[16:57] <niemeyer> SpamapS: Kind of.. it was a spike
[16:58] <niemeyer> SpamapS: We need to polish the concept further now, while we work on the repository
[16:58] <SpamapS> yeah I figure its sort of going to be uninteresting until multiple repositories are available
[16:58] <niemeyer> SpamapS: Right.. and it's tricky business as well.. there are several edge cases and we don't want to get this wrong
[16:59] <SpamapS> the biggest one I am unsure about is when a requires is already satisfied in your environment.
[16:59] <niemeyer> SpamapS: Once we have the repo server working, we can start gradually making the feature work, always falling back to manual action rather than uncertain results
[16:59] <niemeyer> SpamapS: Exactly.. that's an important one for us to figure
[17:00] <niemeyer> SpamapS: The problem as you say is that both options sound totally reasonable depending on the situation
[17:01] <SpamapS> As an admin I'd want it to ask me in that case. "You already have a mysql server, do you want to deploy a new one or relate this service to it?" type of question."
[17:03] <niemeyer> SpamapS: That sounds like a good approach
[17:04] <niemeyer> The PPA is complete!
[17:04] <niemeyer> *AND*, auto building
[17:04] <niemeyer> I don't know if it _works_, though.. but that's a separate problem. ;-)
[17:05] <niemeyer> https://code.launchpad.net/~ensemble/+archive/ppa
[17:09] <niemeyer> Guys, I'll be off this afternoon
[17:10] <niemeyer> and leaving for lunch now
[17:10] <SpamapS> \o/
[17:10] <SpamapS> hoo-ray for daily build PP-A
[17:10] <SpamapS> meh.. too much caffeine
[17:11] <niemeyer> SpamapS: Ah, phew.. for a moment I thought you were happy to get rid of me for a while. ;-D
[17:11] <niemeyer> Lunch!  Back in a bit to pack.. :-)
[17:47] <bcsaller> niemeyer: got a sec?
[17:47] <niemeyer> bcsaller: Yo
[17:47] <niemeyer> bcsaller: Good timing
[17:47] <bcsaller> re point [5] in the last review, it's a keyerror around a zipfile.read call
[17:47] <niemeyer> bcsaller: Just back.. I'll be off this afternoon to visit a friend's farm, but I have a moment now
[17:48] <niemeyer> bcsaller: Yeah
[17:48] <bcsaller> the alternative is to call getinfo(name) first which also raises a keyerror
[17:48] <bcsaller> is the one really better than the other in this case?
[17:48] <niemeyer> bcsaller: No, agreed, that'd be the same
[17:48] <niemeyer> bcsaller: Does it have any hasinfo(name) or similar?
[17:48] <bcsaller> trapping keyerror is used in the same file for the metadata.yaml as well 
[17:49] <bcsaller> getinfo(name) or namelist() and then check the list
[17:49] <bcsaller> namelist doesn't raise, but I don't think it makes any more sense 
[17:50] <niemeyer> bcsaller: The problem with KeyError is that tons of things raise KeyError in Python, and by catching it we may very easily be hiding something pretending we know what's going on when we don't
[17:51] <bcsaller> agreed, but it traps a single line with logical class of error documented and associated with that error condition 
[17:52] <niemeyer> bcsaller: Traps a single line?
[17:52] <bcsaller>  try:
[17:52] <bcsaller>             content = zf.read("config.yaml")
[17:52] <niemeyer> bcsaller: main() is a single line as well ;-)
[17:53] <niemeyer> bcsaller: You see what I mean?
[17:53] <bcsaller> yeah :)
[17:53] <niemeyer> bcsaller: Go through open and read and see how many dictionary accesses are done there
[17:53] <bcsaller> how about 'it traps a single call into a stdlib method'
[17:54] <bcsaller> same issue, but it seems to scope the possible outcomes
[17:54] <niemeyer> bcsaller: I don't understand what distinction you're making thre
[17:54] <niemeyer> there
[17:54] <bcsaller> fair enough, just not sure what to do about it
[17:55] <niemeyer> bcsaller: Well, most importantly I'd like to get the point across :-)
[17:55] <niemeyer> bcsaller: So that's already a win :)
[17:56] <niemeyer> bcsaller: Now, for the solution, it feels like "config.yaml" in zf.namelist(): could be reasonable.. what do you think?
[17:57] <bcsaller> looks like it does cache that info, so it shouldn't be too expensive to check it that way
[18:08] <SpamapS> Hmmm.. interesting situation arising..
[18:08] <SpamapS> So mediawiki can use master and slave dbs
[18:08] <SpamapS> But it really has to wait for the master/slave relationship to be established before it can use the slave
[18:15] <bcsaller> and the slaves start hook would want access to the relationdata of the master to check for a flag but doesn't have a relation context
[18:16] <bcsaller> well, you can still poll in the relation hook I guess and just fail until the flag is present, but setting that flag in the master might still be an issue 
[18:18] <SpamapS> I think its just the order of operations that I'm using.
[18:18] <SpamapS> blast.. need more time.. so much to do
[18:18] <bcsaller> something I think we can all relate to :)
[18:22] <SpamapS> Going a bit cross eyed getting the mediawiki + mysql master + mysql slave thing working
[18:22] <SpamapS> I'd swear the mysql formula's modified hook is being executed twice in a row.
[18:22] <SpamapS> which breaks things because it alters the password for the user
[18:27] <niemeyer> Alright, I have to head off now.. have a good wekend, and see you on Monday!
[18:27] <bcsaller> later
[18:29] <hazmat> SpamapS, it is being called twice in a row, once after join, once after a remote change.. ie. there is always one spurious change hook execution
[18:29] <hazmat> SpamapS, for the master / slave you have a peer relation?
[18:29] <SpamapS> OOOHHH
[18:29] <SpamapS> no
[18:29] <SpamapS> its a requires/provides
[18:29] <hazmat> ah.. i setup the mongodb one that way.. a replica set as a peer relation
[18:29] <SpamapS> since it is one way
[18:29] <hazmat> either way works
[18:30] <SpamapS> peer didn't work for me because it was unclear how to relate to just the writable DB
[18:30] <SpamapS> Ok the "yes it is executing twice" thing is whats getting me.
[18:30] <SpamapS> doh
[18:30] <SpamapS> ok I have to run.. seriously late
[18:30] <SpamapS> hazmat: thanks for the heads up
[18:30] <hazmat> SpamapS, np
[18:30] <hazmat> re peer just the fallback, failover to me seems a little logically cleaner with a peer.
[18:31] <SpamapS> hazmat: the mysql formula in principia trunk right now (I think moved to lp:principia-tools now) has most of what I've done.. a few things haven't been committed yet tho
[18:31] <hazmat> SpamapS, i don't get the writable db part, you mean selecting whose the master?
[18:31] <SpamapS> hazmat: promoting mysql slaves to masters is anything but clean
[18:31] <SpamapS> you need to set things up for master/master from the beginning
[18:32] <SpamapS> and then you're talking about rings.. and expanding them.. no, its not simple
[18:32] <SpamapS> its not undoable
[18:32] <SpamapS> but master/slave is super simple