/srv/irclogs.ubuntu.com/2011/06/17/#ubuntu-ensemble.txt

jimbakergiven that it's easy enough to have the wiki page in rst format, shouldn't really matter in terms of keeping content00:22
SpamapSniemeyer: one thing that is proving difficult is parsing out the url in shell scripts. Its a lot easier if the scheme/hostname/port/path are already split up in the relation settings...00:29
niemeyerSpamapS: Hmmm.. that's a nice utility we can provide00:47
niemeyerSpamapS: url -host $FOO00:47
devcamcarhey all, i'm evaluating how ensemble can be used alongside openstack - is there a story around multi-tenancy for ensemble? 00:47
SpamapSdevcamcar: ensemble *should* work with an openstack implementation, but I don't think anybody has tested it in a while.00:48
SpamapSdevcamcar: as far as "multi tenancy" .. each tenant would have their own environment separated by access key ID's00:48
SpamapSniemeyer: it seems a bit redundant to concatenate all of that every time into a URL, just to split it back out half the time into its parts anyway.00:49
SpamapSniemeyer: so far the only two things that require a relation with something that would use the website interface are haproxy and squid reverse proxy.. both of which would need to split it up..00:51
devcamcarSpamapS: i assumed as much, thanks!00:54
niemeyerSpamapS: A url is by far the most common way to refer to a website..01:11
negronjlniemeyer:  do you have an image-id so I can use m1.large instances ?01:26
negronjlniemeyer:  actually does ensemble use a particular image-id or can it use a default ubuntu 11.04 image ?01:28
niemeyernegronjl: We're using a custom base image mostly to speed booting up.. in the future it'll be just a plain Ubuntu image01:33
negronjlniemeyer:  thx01:33
niemeyernegronjl: You should be able to just tweak the default-instance-type to m1.large. Is that not working?01:34
negronjlniemeyer:  no because m1.large is x86_6401:34
negronjlniemeyer:  the iamge that you are using is i38601:34
niemeyernegronjl: Hmm.. interesting01:35
niemeyernegronjl: We certainly have one for x86_64 readily available01:36
negronjlniemeyer:  if you have it, I can use it. no big deal if it is too much trouble.01:37
negronjlniemeyer:  m1.large allows me to work faster ( currently working on tomcat )01:37
niemeyernegronjl: Yeah, we'll have to generate a new one I think01:44
negronjlniemeyer:  no worries01:45
niemeyernegronjl: It's not a big deal, we have a tool to automate it01:45
negronjlniemeyer:  if/when you get it, ping me and let me know pleaase01:45
niemeyernegronjl: Will do.. will try to have that available for you tomorrow01:45
negronjlniemeyer: cool. thx01:45
_mup_ensemble/relation-get-amp-exceptions r259 committed by bcsaller@gmail.com01:59
_mup_fix for #79207101:59
_mup_ensemble/relation-context-required r242 committed by bcsaller@gmail.com02:01
_mup_Fix for #792071 with proper pre-req branch02:01
m_31negronjl: ping04:53
=== _mup__ is now known as _mup_
negronjlm_31: pong07:02
m_31negronjl: hey man... which orchestra scripts are you porting over to ensemble next?07:21
negronjltomcat07:21
negronjlI have tomcat working but, I haven't gotten to the clustering part yet.07:22
m_31negronjl: cool... are you going by some hitlist?07:22
negronjlI'll do that tomorrow or so07:22
negronjlnah....just picking them at random.07:22
negronjllow hanging fruit + interesting stuff07:22
negronjlare you porting any of them ?07:22
m_31cool.  I'm trying to get up to speed on formulas in general07:23
m_31working on a rails one at the moment07:23
negronjlcool.  these guys are pretty helpful.  I know I asked a million stupid questions today alone :)07:23
m_31but I'll dump the hadoop one and try to build some demos on top of yours07:23
m_31I was just starting on the relations for them, but what you did makes sense07:24
=== almaisan-away is now known as al-maisan
negronjlm_31: didn't mean to step all over your work btw.  07:26
m_31dude, no problem at all... it was cool to see your relations07:27
m_31I'll coordinate with you before hitting any more orchestra ones07:29
negronjlcool07:29
m_31gonna hit the sack... talk to you tomorrow07:32
negronjlm_31:  gnite07:32
=== daker_ is now known as daker
=== al-maisan is now known as almaisan-away
kim0I wonder if 'ensemble set' has landed yet12:10
_mup_Bug #798652 was filed: Ensemble needs bash completion support <Ensemble:New> < https://launchpad.net/bugs/798652 >12:46
* niemeyer waves14:44
=== almaisan-away is now known as al-maisan
niemeyerSuch a quiet morning... must be Friday!15:54
kim0hmm16:28
kim0memcached_ips.append("'%s'" % getaddrinfo(settings['host'],int(settings['port']))[4][0:2].join(':'))16:28
kim0breaks when getaddrinfo returns a list16:28
kim0need to ping SpamapS 16:28
kim0SpamapS: this one seems to work for me → memcached_ips.append("'%s'" % ':'.join(map(str,getaddrinfo(settings['host'],int(settings['port']))[0][4][0:2])))16:36
kim0that's in mediawiki/hooks/cache-relation-changed16:36
=== al-maisan is now known as almaisan-away
negronjlgood morning all16:52
hazmat_negronjl: g'morning16:52
negronjlhi hazmat_16:52
m_3negronjl: morning16:57
negronjlmorning m_316:57
=== almaisan-away is now known as al-maisan
kim0morning17:17
niemeyernegronjl: Morning!17:24
negronjlniemeyer:  gmorning17:24
SpamapSkim0: Oh I have that change in my local branch and forgot to push it!17:29
SpamapSkim0: getaddrinfo *always* returns a list17:29
kim0ah ok then17:30
kim0SpamapS: is there anything in the default haproxy config that would make it balance unfairly ? (i.e. one machin getting ~100 hits, while the other getting ~20) ?17:32
SpamapSkim0: not that I know of, but I have seen that17:32
SpamapSkim0: I'm, unfortunately, not at all versed in haproxy-fu17:33
kim0yeah me neither17:33
kim0I'm testing with: ab -n 1000 -c 100 http://localhost/mediawiki/index.php/Main_Page17:33
kim0from the haproxy machine17:33
SpamapSwas thinking about doing an ipvs formula for that very reason. :-P17:33
SpamapSkim0: be careful, ab may be using keepalives17:33
SpamapSkim0: honestly, ab *sucks*17:33
kim0hehe17:33
SpamapSits nothing at all like real traffic17:33
kim0I think it needs -k for keep alives17:34
negronjlSpamapS:  I noticed that on the wordpress formula, the website-relation-joined is setting the hostname as hostname -s as opposed to hostname -f.  am I missing something ?17:34
SpamapSnegronjl: no, thats a bug17:34
negronjlSpamapS:  ok.  I'll make sure not to do that :)17:34
SpamapSnegronjl: though one that doesn't affect anything because all machines have the same search domain (.internal)17:34
kim0trying to get a nice linear boost in #/sec when adding machine .. real life is complex though ;)17:35
SpamapSnegronjl: I hardly ever look at the principia wordpress formula.. mediawiki is much better maintained. :)17:35
negronjlSpamapS:  any reason why there isn't any apache formula ( just apache ) ?17:35
SpamapSkim0: we need to enable the admin interface on some port so we can watch it17:35
SpamapSnegronjl: because apache is too generic17:35
negronjlSpamapS: k17:36
SpamapSnegronjl: where would it get its files to serve?17:36
SpamapSnegronjl: I guess we can have one once we have shared filesystem formulas17:36
negronjlSpamapS:  you can create the site and then have the user upload the files.17:36
SpamapSnegronjl: thats not very interesting though, is it?17:36
SpamapSlike.. thats a single line of cloud-config17:36
negronjlSpamapS:  I agree with it being generic but, I'm afraid that if you want ensemble to be widely used, you'll have to have something generic like that unless the plan is to have the users generate all of their formulas on their own and just use ensemble to deploy stuff17:37
SpamapSA formula where you also have a webdav interface, authentication of some kind, and rsyncing between nodes via peer relations.. that might be cool. :)17:37
SpamapSnegronjl: walk me through the user experience you're envisioning17:38
negronjlSpamapS:  .... in orchestra I did a generic apache that creates a site for you and then it leaves it up to you to upload the files.  this way you can concentrate on creating your content and not battle apache with the details17:38
SpamapSnegronjl: does *anybody* create static sites?17:38
SpamapSnegronjl: I'd say that joomla/drupal/{insert cms here} is far more useful for the generic site case.17:39
hazmat_i see a formula around that being more like deploy generic rails app or deploy wsgi app..17:39
SpamapSnegronjl: Actually a really awesome formula would be a mod_rewrite based box that just aggregates all the other apps into one site.17:39
negronjlSpamapS:  so, what if I have my own app.  is the expectation that I will create my own formula that will deploy apache, etc. and all of my files ?17:39
SpamapShazmat_: that just turns into a template.. since to configure generic rails app is not at all the same.. some are db driven, some have queues..17:40
SpamapSThough templates would be good17:40
niemeyerhazmat_: I was wondering yesterday if we should start using plain Ubuntu images rather than our own customized ones17:40
niemeyerI wonder what the timing impact of that would really be17:40
negronjl+1 on regular images17:40
SpamapSnegronjl: well.. you are talking about a single line of bash.. apt-get install apache2 ;)17:40
negronjltry to deploy a hadoop cluster or tomcat on m1.small and you'll see what I mean17:41
negronjlSpamapS:  and all of the hooks for haproxy as well17:41
negronjlSpamapS: and all of the mods that go into my app (php, python, etc.)17:41
niemeyernegronjl: We can provide you with a m1.large anyway, and we'll definitely use plain base images in the future no matter what.  Just wondering if we should ignore the extra time it takes to do the extra tweaks before we integrate them.17:41
SpamapSnegronjl: I like the idea of a template for these.17:41
hazmat_SpamapS: true, optional relations for queues would be doable, but your right the heart of it is configuration based dependencies, which fall outside ensemble's scope atm. but a lot of the simple rails/django apps are just the core functionality (db server, and optional memcache).. django at least has a reasonably standard way of configuring this stuff17:42
negronjlSpamapS:  I see your poing about it being too generic.  I just think that we can't possibly know all of the apps out there so, something generic for the rest may not be a a bad idea.17:42
SpamapShazmat_: +1 for framework formulas17:42
negronjlSpamapS:  Is there something like erb that can be used with ensemble ( does it matter what I use )?17:43
m_3seems like it'd be useful for a rails or django framework that pulls code from a user-specified repo17:43
SpamapSnegronjl: You can use *anything*17:43
kim0I use sed :)17:43
negronjlSpamapS:  I like that :D17:43
* SpamapS likes augtool when the lenses are available17:43
m_3cat > file <<EOS17:43
SpamapSnegronjl: you can use *puppet* if you're so inclined. :)17:44
* negronjl is going to start using BASIC :D17:44
m_3ha17:44
kim0haha17:44
* negronjl is j/k btw17:44
SpamapSyeah rails-app should actually be a doable formula.. since configuring the known components will be easy. And then people can add to it for their app if they want things different.17:44
m_3SpamapS: almost done with it now17:45
niemeyernegronjl: Phew! ;-)17:45
m_3rails3/passenger/pulls the app from github17:45
* niemeyer was worried for a second we'd go back to Basic17:45
* SpamapS earned his first programming $$ writing "PickBasic"17:47
SpamapSnot PIC BASIC17:47
niemeyerSpamapS: I started with Basic as well, in the mid-80s17:47
m_3trs8017:47
m_3ugh17:47
SpamapShttp://en.wikipedia.org/wiki/Pick_operating_system17:48
SpamapSThe OS that you never heard of, but that made DELL successful. :)17:49
SpamapSIt was the "ONS" .. as in.. "Original No-SQL"17:49
SpamapSD3 actually had the distinction of being the first commercial database software available on Linux17:54
negronjltrs80 rules!17:55
m_3negronjl: with the big 8" floppy drives even17:55
negronjlm_3:  I didn't have $$ for that so, I had the cassette tapes :)17:56
m_3negronjl: actually seen a revival of one of those recently where they gutted it and put a modern computer inside17:56
m_3yeah, they had them at school17:56
negronjlm_3:  There is an emulator in the archives: xtrs17:57
m_3ok, height of sheer laziness: http://paste.ubuntu.com/628504/17:58
m_3negronjl: nice18:00
m_3simple rails formula works now... does a basic install, pulls code during db-relation-joined with mysql, then spins up passenger18:04
m_3I'll get it into launchpad18:04
m_3I'm gonna dig through the docs and examples now to figure out the best way to externalize things like "application_name" "application_repo_url" etc18:05
SpamapSbcsaller: did I see you start a branch for fixing the dot output?18:11
bcsallerSpamapS: it works now18:12
SpamapSm_3: config settings might be all thats needed.. 'ensemble set my-rails-app pullcmd="svn co svn://foo /srv/app && /srv/app/setup.rb"18:12
m_3SpamapS: perfect18:13
SpamapSm_3: though thats where I think, instead, we should just encourage people to make that into a formula for their app18:13
bcsallerSpamapS: it works on that branch rather, it was a minor issue. Just needs reviews 18:14
SpamapSActually, once stacks are available, that will be the right way to do it probably.18:14
SpamapSbcsaller: well, let me see if I can perform a review by testing it. :)18:14
negronjlHow do I define dynamic options to a formula?  Is there a difference?18:14
* SpamapS wants purty graphs18:14
m_3SpamapS: right, understand18:14
SpamapSnegronjl: thats still in dev IIRC18:14
negronjlSpamapS:  k. thx18:15
SpamapSnegronjl: I was reading a little more about HDFS and hadoop and stuff. I wonder if we shouldn't go a little further and write Flume and Pig formulas so people get a single way to shove data in and query it.18:15
negronjlSpamapS:  I would say hive first.  In my experience, it would be hadoop then hive then pig and have no idea what flume is.18:16
SpamapSnegronjl: with the map/reduce .. I'm not sure I understand how that scales out ... seems like the slave/master only scales the I/O .. not the compute18:16
negronjlSpamapS:  but, I agree with the principle18:16
SpamapSnegronjl: flume is an easy way to get data into hadoop18:16
* SpamapS reads up on hive18:16
negronjlSpamapS:  hive => SQL interface to hadoop18:17
SpamapSI thought thats what PIG was ;)18:17
negronjlSpamapS:  you write things like SELECT * from <TABLE> and hive translates that into hadoop18:17
negronjlSpamapS:  pig => easier hive with less options and bells and whistles18:17
SpamapSAhh cool18:18
negronjlSpamapS:  people that use hive look down on the people that use pig :)18:18
negronjlSpamapS:  but, I agree to take the formulas a step further..18:18
negronjlSpamapS:  Let me finish tomcat first.18:18
negronjlSpamapS:  working on tomcat clustering18:18
SpamapSSo.. since all of thise cool stuff is not in Ubuntu yet.. I'm getting more and more tempted to make principia make a separate mrconfig that includes all this PPA coolness..18:19
SpamapSnegronjl: tomcat, in the same sense as m_3's rails?18:19
negronjlSpamapS:  for now, in the install, I install the PPA for hadoop.18:19
negronjlSpamapS:  for tomcat, it's a bit different because tomcat gives you their admin page that allows you to point and click your way to deploy your WAR files18:20
negronjlSpamapS: so, you can just isntall tomcat and allow it to cluster, put it behind haproxy for LB and you're done.18:20
m_3hbase too?18:20
SpamapSnegronjl: I'm more wondering what tomcat's relations will be other than website. :)18:20
negronjlm_3:  hbase too :)18:20
negronjlSpamapS:  none18:21
negronjlSpamapS: it also provides another thing:  tomcat-cluster ( that where the clustering takes place ) as a peer18:21
SpamapSnegronjl: I think we should start exposing an ssh interface for code syncing.18:21
negronjlSpamapS:  tomcat has it's own thing on a diff port.18:21
SpamapStomcat clustering?18:21
SpamapSlike, it already will distribute your war file?18:22
negronjlSpamapS: yup18:22
negronjlSpamapS: hence the peer interface18:22
SpamapS*hot*18:22
* SpamapS hugs negronjl 18:22
SpamapSgo go go18:22
* SpamapS brings a case of redbull18:22
SpamapSGO18:22
negronjlSpamapS: rofl.  working from Starbucks so, wired on coffee :D18:22
SpamapSm_3: half those redbulls are for you. :)18:22
* SpamapS wishes he had time to write formulas all day.. 18:23
m_3I like how the debug-log intersperses parallel traffic... has anybody written an log-scanning tools (to separate out units?)18:23
negronjlSpamapS:  Hopefully by Dublin, I'll have enough karma coolness to ask you guys to sponsor my UbuntuContributingDeveloper application ( https://wiki.ubuntu.com/JuanNegron/UbuntuContributingDeveloper ) :)18:23
negronjlshameless plug above :D18:24
SpamapSm_3: the logs are available on the individual units in /var/lib/ensemble/units/$service-$unitid/formula.log18:24
m_3SpamapS:  thanks... undercaffeinated(sp?) at the moment18:24
m_3ah, thanks18:24
_mup_ensemble/debug-log-relation-settings-changes r259 committed by jim.baker@canonical.com18:24
_mup_Initial commit18:24
SpamapSnegronjl: no way I'm going to trash it so that all you can do is work on formulas.18:24
SpamapS;)18:24
negronjlSpamapS:  perfect!  I can see the logs!!!!! :D18:24
SpamapSm_3: but also the debug-log has -x and -i18:24
SpamapSso like 'ensemble debug-log -i 'demo-wiki*'18:25
m_3this is really a great tool!18:26
m_3horizontal scaling: for i in {1..10}; do eau rails; done18:26
negronjlSpamapS: ( and anyone else who may know the answer ).  what's the way to see as much as possible of what is happening to the formula as it is being deployed ?18:26
negronjlI want to know as much as possible  18:26
negronjlabout what's happening to the instance as the formula is being deployed18:26
jimbaker`m_3, it might be interesting to analyze the debug log, possibly with alternative formatters, to get at things like swimlanes/sequence diagrams18:27
m_3jimbaker`: right... all the info's there... just gotta be parsed18:28
hazmat_m_3: you can specify individual units, machines, services, log channels via the filtering (include/exclude) options on the logger18:28
m_3hazmat_: yep thanks... need to spend time digging through docs of options18:30
SpamapSnegronjl: debug-hooks is probably the best way then18:30
jimbaker`m_3, right, and bug 766317, which i'm working on (albeit it may be controversial), will further enhance this18:30
_mup_Bug #766317: debug-log should show relation settings changes <Ensemble:In Progress by jimbaker> < https://launchpad.net/bugs/766317 >18:30
SpamapSnegronjl: you can run the hook with strace and/or gdb at that point. :)18:30
m_3SpamapS: yeah, totally wanna dig through debug-hooks next... 18:30
negronjlSpamapS:  cool. thx18:30
SpamapSits awesome, though I'm bummed that it uses tmux now.. as I'm starting to love byobu's alt-pgup/pgdn18:30
m_3lots of cleanup to do first in formula writing (idempotency checking, logging, using debconf as much as possible, etc)18:31
SpamapSI do think debug-hooks needs to tell me where the hook is that I'm supposed to be running..18:31
m_3SpamapS: never did dig through and figure out the session problems with screen -vs- tmux18:31
kirklandSpamapS: niemeyer and i exchanged a few emails;  i think i gave him a solution (using run-one) for the race condition in screen18:32
kirklandSpamapS: it solved it for me, at least18:32
m_3kirkland: I do love me some screen18:33
kirklandm_3: have you tried byobu?18:33
m_3kirkland: nope18:33
kirklandm_3: give 'er a shot18:33
m_3kirkland: actually, I think it installs together now right?18:33
kirklandm_3: screen on steriods18:33
kirklandm_3: yeah, just type 'byobu' instead of 'screen'18:33
kirklandm_3: it's screen under the covers18:34
niemeyerkirkland: It's a solution, but it's one that makes me quite unhappy :(18:34
kirklandm_3: with a bunch of configuration enhancements, status scripts, and keybindings18:34
kirklandniemeyer: and why is that?18:34
niemeyerkirkland: As you have noticed, these scripts are already far from pleasant overall18:34
negronjlI'm looking for something similar to erb ( the ruby template thing ).  Is there anything that you guys currently use/recommend for ensemble formulas ?18:34
niemeyerkirkland: Involving additional locks for something that screen should do internally is what's sad18:35
m_3negronjl: I think the idea is that things are flexible, so use any of them18:35
SpamapSnegronjl: I like augeas if the format is a common one (like ini files) .. otherwise cheetah works.18:35
m_3negronjl: we've got a tradeoff between creating examples that show that a user has options18:35
kirklandniemeyer: would you prefer that I patched screen?18:35
m_3negronjl: but not confuse them with too much noise18:35
SpamapSnegronjl: honestly though, if you like erb, use erb18:36
SpamapSI'd actually say use whatever the most clear and simple thing is to read18:36
SpamapSthat may be where cheetah actually fails a bit. :-P18:36
negronjlSpamapS:  in my formulas, can I add another directory either besides hooks or under hooks for my template files ?18:36
niemeyerkirkland: Yes, I'd certainly wish that screen implemented this logic by itself in a reliable way18:37
SpamapSnegronjl: yes the entire root of the formula is copied18:37
negronjlSpamapS:  :D .. tomcat clustering here I come :)18:37
m_3SpamapS: negronjl: lib!18:37
SpamapSnegronjl: you can send binaries, though it is, or at least will be, forbidden until we see a good reason for it. :)18:37
negronjlSpamapS:  no binaries...just template files ( text files )18:38
niemeyerkirkland: I don't know if you have seen the changeset that introduced the tmux/screen replacement18:38
kirklandniemeyer: it was a large one, as i recall18:38
SpamapShow about  $formula/hooks/share/templates18:38
m_3SpamapS: it can be confusing to users if we start using templating tools that have to be installed during the "install" hooks18:38
koolhead17hi all18:39
niemeyerkirkland: There were several small issues we had to fix there18:39
m_3koolhead17: hi18:39
SpamapSm_3: I believe we've discussed having required packages be in the metadata at some point.18:39
koolhead17hi m_318:39
m_3SpamapS: ok, that'd fix it18:40
kirklandniemeyer: okay;  here's another approach18:40
kirklandniemeyer: i have begun work on a byobu profile for tmux18:40
kirklandniemeyer: which would duplicate byobu's keybindings and status notifications for tmux18:40
koolhead17SpamapS: thanks :)18:41
kirklandniemeyer: at your request, i took a look at tmux and I have to say there are some things to really like about it18:41
kirklandniemeyer: not the least of which is the vibrant, active development community (as compared to screen)18:41
koolhead17niemeyer: hey18:41
SpamapSkim0: fixed the mediawiki formula btw18:41
kim0SpamapS: great thanks18:41
* kim0 starts weekend .. @everyone enjoy18:42
koolhead17kim0: :P18:42
SpamapSkim0: cheers! thanks for the intense week!18:42
kirklandniemeyer: if the current byobu/screen/run-one locking workaround is unacceptable to you, then I can generate a byobu profile for tmux18:42
m_3SpamapS: we might need more than principia... maybe just examples or contrib?18:42
niemeyerkirkland: Oh, sweet18:42
niemeyerkirkland: Yeah, that would definitely be nice18:42
kirklandniemeyer: the main thing I hated seeing was your embedding of tmux configuration into ensemble itself (ie, adding some helpful keybindings, etc.)18:42
m_3kim0: later... enjoy18:43
niemeyerkirkland: Heh :)18:43
kirklandniemeyer: when ***so*** much of that effort has already been directed elsewhere18:43
SpamapSm_3: the wordpress and mysql examples in ensemble itself are pretty straight forward..18:43
niemeyerkirkland: Sorry, I don't see what you mean?18:43
SpamapSm_3: as far as contrib .. I'm hoping that can just be a "component" of principia.. one that is still easy to find18:43
m_3SpamapS: I mean there are some formulas to create (like mahout) that might not belong in the "Principia"18:43
niemeyerkirkland: What you hated specifically, and what effort has been directed where?18:43
kirklandniemeyer: your placement a user friendliness layer on top of tmux18:44
m_3SpamapS: gotcha... it'd be useful for users if we drew a line... _these_ are sort of blessed formulas that will carefully be maintained18:44
niemeyerkirkland: You're upset I made it user friendly?18:44
kirklandniemeyer: when there's a somewhat common one elsewhere18:44
m_3SpamapS:  and _those_ are just crap examples we're excited about18:44
kirklandniemeyer: i can try to port that over to tmux18:44
kirklandniemeyer: http://paste.ubuntu.com/628519/18:44
kirklandniemeyer: that's what i have so far18:44
kirklandniemeyer: meager start, but it's committed to byobu's head and in a micro release already18:45
SpamapSm_3: The line I want to draw is whether or not the software that they deploy is from Ubuntu. The formulas, to be in principia, will all be as well maintained regardless of which component. At least, thats how I think it should work.18:45
kirklandniemeyer: i can hack on it more this weekend18:45
niemeyerkirkland: Sorry.. I'm completely missing your point.  You're upset because I copy & pasted my tmux.conf rather than using the one you made moments ago?18:45
kirklandniemeyer: of course not18:46
SpamapSm_3: mahout looks completely interesting as a formula. :)18:46
m_3SpamapS: ok, sound good.  I was just thinking of all sorts of random stuff.. not all formulas are the same sort of base level service (like mysql)18:47
SpamapSm_3: sure. I like the idea of creating a formula around a framework.18:48
m_3SpamapS: I'm thinking we'll eventually have a web interface to manipulate services?  we'd have search, and categorizations by provides and requires18:48
m_3SpamapS: like building blocks that get wired together18:49
SpamapSm_3: there's talk of making that available as part of landscape (as in, for $$)18:49
=== al-maisan is now known as almaisan-away
SpamapSthough nobody would be precluded from doing that themselves18:49
m_3SpamapS: hmmm.. fun stuff over Irish beer18:49
kirklandSpamapS: reviewing txzookeeper19:09
kirklandSpamapS: ./setup.py:    license="LGPL",19:09
kirklandSpamapS: while debian/copyright says MIT for *, and BSD for one file19:09
kirklandniemeyer: perhaps you can help19:12
kirklandniemeyer: i'm reviewing txzookeeper for the archive19:12
kirklandniemeyer: https://launchpad.net/txzookeeper says     GNU LGPL v3 19:13
kirklandniemeyer: setup.py says license="LGPL"19:13
kirklandniemeyer: debian/copyright says License: MIT19:13
kirklandniemeyer: looks like a bug in debian/copyright, as far as I can tell19:14
niemeyerkirkland: Isn't the debian/copyright talking about the license for things within debian/*?19:15
niemeyerkirkland: txzookeeper is LGPL indeed19:15
kirklandniemeyer: there should be at least 2 stanzas19:15
kirklandniemeyer: one for the packaging (in debian/*)19:15
kirklandniemeyer: but the first one should be for the code that is packaged19:16
kirklandniemeyer: i've rejected it for now, sending a note to SpamapS19:16
kirklandniemeyer: as soon as he fixes that, and re-uploads I'll accept it19:16
niemeyerkirkland: Cool, thanks19:16
kirklandniemeyer: fwiw, i just accepted ensemble into oneiric;  congratulations19:16
kirklandniemeyer: i think it'll fail to install until we get txzookeeper too, though19:16
kirklandniemeyer: hopefully we'll sort all of it out today19:16
niemeyerkirkland: Woooo19:17
SpamapSkirkland: yeah setup.py was probably cargo-culted in19:18
m_3awesome... congrats team19:18
SpamapSthe only bit with an actual license text was the upstream debian/copyright19:18
SpamapSkirkland: thanks, I think we need upstream (read: hazmat and niemeyer) to clarify licensing. :)19:19
kirklandSpamapS: niemeyer: true;  on both projects, upstream MUST add a LICENSE file with the complete text of the license19:19
SpamapSI think an upstream debian/copyright is authoritative, but it should be made clear in the files.19:20
kirklandSpamapS: i was might have rejected ensemble on that basis, but I know it's trivial and niemeyer will fix it asap ;-)19:20
* niemeyer hides19:22
SpamapShazmat_: think you could ram some license clarification into txzookeeper ?19:22
hazmat_SpamapS: sure what do you need... i think we had discussed gpl/lgpl.. but possibly apache if it went upstream.. niemeyer ?19:28
hazmat_hmm but it has mit license in the copyright deb file19:29
SpamapShazmat_: well the point is, what is the license "today" ?19:29
hazmat_SpamapS: lgpl at the moment19:31
niemeyerhazmat_: Yes, it's LGPL, and we can move to whatever the ZooKeeper folks wish if we get it upstream19:31
hazmat_we've got an okay to relicense it to apache when it heads upstream19:31
* negronjl is out to lunch19:38
kirklandSpamapS: push another upload and i'll approve19:54
SpamapSkirkland: w/o any evidence in the upstream bits?20:03
SpamapSSo, can we just add a COPYING file to the bzr tree with the LGPL, and reference to it in at *least* one .py file. Preferrably all that are non-trivial.20:07
SpamapSI can open a bug and do the work myself if you guys prefer.20:07
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
niemeyerSpamapS: Sounds good to me either way21:13
niemeyerSpamapS: I can push a change, commit, or even add you to the project if you prefer that21:13
=== daker is now known as daker_
* negronjl is back22:19
* niemeyer waves22:24
negronjlniemeyer:  are the formulas and scripts ( install, etc.) run as root ?22:26
niemeyernegronjl: THey are22:26
hazmat_niemeyer: so the overall plan for session events and connection errors, is to allow user defined callbacks (one for each category) to be defined on the connection. session events are by default ignored, connection errors by default errback on the deferred, if connection level callbacks are specified they'll take precedence.. the notion being we can define a connection error handler at the agent level, which can take care 22:42
niemeyerhazmat_: In which way might we take care of the connection error?22:43
hazmat_niemeyer: restarting the agent22:43
niemeyerhazmat_: I see.. so aborting it all22:44
jimbaker`hazmat, sounds like a reasonable policy - the provisioning agent certainly can be restarted and resynced w/ zk, this should be true of all of our agents22:44
hazmat_niemeyer: yes, we could be in any arbitrary point in the code, dealing with any arbitrary state change22:44
niemeyerhazmat_: Yes, exactly.. that's my concern22:45
hazmat_niemeyer: till we have reconcilation and on disk state, we'll get duplicate hook execution for the joins, and potentially miss some changes.22:46
niemeyerhazmat_: You mean it's a bomb? :)22:46
hazmat_niemeyer: but i don't see how that's avoidable, its a networked system, and subject to disconnect at any time for any period.22:46
niemeyerhazmat_: Error handling in the face of disconnections is a normal problem22:46
hazmat_niemeyer: alternatives?22:47
niemeyerhazmat_: Error handling?22:48
hazmat_niemeyer: wrap connection eror handling around every zk interaction?22:48
niemeyerhazmat_: Yes, handle errors they can happen, basically22:48
niemeyers/they/when they/22:48
niemeyerhazmat_: Eventually we should have a "disconnected" hook22:50
hazmat_niemeyer: these aren't normal api errors, their arbitrary connection errors, defining a central place for that logic seems like a win to me, if we want to recover without the spurious hook execution, we need consistent on disk state reflecting what the hooks have been made aware of, to reconcile to the current zk state after the connection is resumed.. 22:50
niemeyerhazmat_: My concern is that by "central logic" you mean "crashing"22:51
niemeyerhazmat_: The problem is that arbitrary connection errors are actually normal errors22:56
hazmat_niemeyer: it doesn't have to be, but anything more intelligent needs resumable components (on disk reconcilliation to zk imo), but we can't assume the unit agent process is always alive or connected at all times, and right now we have volatile memory state that needs to be captured for any process restarts. alternatively though.. it could just reattempt to connect ad naseum... but then we have to determine if our session 22:56
hazmat_niemeyer: their not the same imo.. they effect more than just the current api call, they can effect a slew of out of band/path things22:57
niemeyerhazmat_: and that's normal!22:57
niemeyerhazmat_: The fact we haven't been handling them as such is why it's hard now22:58
* hazmat_ ponders22:59
hazmat_niemeyer: the problem of watchers and ephemeral nodes re-establishment, isn't a local concern, how would local error handling be able to compensate for a session expiry23:05
niemeyerhazmat_: It's not about compensating.. it's about handling23:06
niemeyerhazmat_: If error, then log problem, wait for reconnection, try agian, whatever23:06
hazmat_niemeyer: ok.. how would it handle a session expiration23:06
hazmat_niemeyer: it can do that locally, but the global application state also needs restoration23:07
niemeyerhazmat_: Assuming that the best thing to do in every single path of the application is to crash in case a disconnection happens isn't a good approach IMO23:07
hazmat_all of the extant watchers and ephemeral nodes23:07
niemeyerhazmat_: Yes, all of that has to be considered..23:08
niemeyerhazmat_: Or, we change the model completely23:09
hazmat_niemeyer: such as?23:10
niemeyerhazmat_: Such as a pull model..23:11
niemeyerhazmat_: Get the state and diff23:11
hazmat_niemeyer: bingo.. i think that's where we need to go, i think the global recovery can evolve from crash to effecting state diff reconcilliation23:11
niemeyerhazmat_: That's not the same thing23:12
niemeyerhazmat_: This feels like doing things the reversed way23:13
hazmat_the individual components do the state diff reconcilliation23:13
niemeyerhazmat_: We have a bunch of things running we have no idea, then we stop everything that was running because we don't know how to handle errors, and then try everything again23:13
hazmat_be it service config, or relation watching, etc23:13
niemeyerhazmat_: The forward approach is: we always know the next step23:14
hazmat_we stop and reconcile because none of those components are functional if we don't23:14
niemeyerhazmat_: Because they ignore errors!23:14
kirklandSpamapS: i'm about to knock off for a bit;  did you get around to fix that txzookeeper copyright issue?23:16
kirklandSpamapS: ensemble is *almost* installable from the archive ;-)23:16
hazmat_niemeyer: hmm.. so alternatively wrapping communications/interactions into components/protocols and rebroadcasting connection failures (ala pub/sub) to all of them for their individual error handling after the connection has been restablished23:17
hazmat_niemeyer: i think that's still compatible with a first step of a global connection error handler.23:18
niemeyerhazmat_: Yes,  broadcasting errors in case they happen.. I don't see why we need other abstraction layers, though23:18
niemeyerhazmat_: It feels incompatible..23:19
niemeyerhazmat_: If we crash on errors, when do we start fixing things so that they handle errors?  They won't receive the error because it's crashing23:20
hazmat_a global error handler can implement whatever logic we want, be it rebroadcasting a local exception to all components, etc23:21
hazmat_niemeyer: a crash/restart error handler would just be a first step, its an incremental solution23:21
niemeyerhazmat_: It's not incremental.. it's stopping the application completely.. we can't implement incremental error handling if the first step is to crash the application entirely.23:22
hazmat_the first step is to reconnect the application23:23
hazmat_the application is effectively dead without that23:23
niemeyerhazmat_: Ok, you're right.  Let's move forward with the full reconnection then.23:25
hazmat_niemeyer: i definitely think we can evolve it to better things in the future23:26
niemeyerhazmat_: Let's keep it as simple as possible.. no additional abstraction layers23:26
hazmat_niemeyer: sounds good to me23:26
niemeyerhazmat_: Let's have something that at least is able to recover itself automatically23:27
hazmat_niemeyer: recover itself?23:27
hazmat_niemeyer: could you be more specific?23:27
niemeyerhazmat_: Yeah, restart, reconnect, re-setup23:27
hazmat_ah.. yeah23:28
niemeyerhazmat_: and let's work towards making that a rare event as much as possible23:28
niemeyerhazmat_: Increased timeouts, then resilient zookeeper nodes, etc23:28
hazmat_niemeyer: yeah.. the migration is pretty transparent and fast for failovers23:28
hazmat_i've been running cluster tests the last few days23:29
niemeyerhazmat_: Ensemble 2.0 can then take everything we learned and be better at that.23:29
niemeyerhazmat_: Oh, sweet23:29
_mup_ensemble/debug-log-relation-settings-changes r260 committed by jim.baker@canonical.com23:32
_mup_Used namedtuple23:32
niemeyerWill get dinner23:34

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