/srv/irclogs.ubuntu.com/2011/12/02/#juju.txt

hazmatmarcoceppi, while awesome i'd still probably recommend either cloudfront or rackfiles/limelight for a true cdn00:01
hazmatcdn need points of presence for global effectiveness00:01
SpamapShazmat: depends on your perspective. Sometimes all you really want is aggressive caching and fanout00:02
SpamapSlatency is by far the *best* reason for CDN... but by no means the only one00:02
niemeyermpl: Super, let me check00:05
hazmatSpamapS,  ec2 hosts don't really give  fanout, all a juju node for cdn amounts to is a single host.. thats a sig difference.. it can work.. but its not the same league00:05
niemeyermpl: Very nice00:06
hazmat /me heads out for beer o'clock00:06
niemeyerhazmat: Cheersfully!00:06
_mup_juju/go r21 committed by gustavo@niemeyer.net00:08
_mup_Merged jujugo-log by branch Mathieu. [r=rog,niemeyer]00:08
_mup_This branch moves logging onto the log package so that it is00:08
_mup_usable by any of the subpackages, and simplifies/polishes the00:08
_mup_interface further.00:08
_mup_juju/scp-command r419 committed by jim.baker@canonical.com00:22
_mup_Addressed review points00:22
marcoceppihazmat: It's not for a CDN, it's a patch for a CDN issue that needs to scale. So it's using hadoop charm with a custom charm I wrote that creates a sort of...CDN proxy...for an issue several customers are having because Cisco has rackcdn.com blacklisted in their enterprise router software02:46
marcoceppiFor those customers we have our templating engines on their site switch out rackcdn.com with another DNS and the servers fetch the file from the CDN, cache it, then serve it up. Bandaid until the blacklist is lifted which could take a while02:49
_mup_juju/scp-command r420 committed by jim.baker@canonical.com04:35
_mup_PEP8/PyFlakes04:35
_mup_juju/scp-command r421 committed by jim.baker@canonical.com04:37
_mup_Updated tab completion04:37
_mup_juju/scp-command r422 committed by jim.baker@canonical.com04:47
_mup_Slim down help output04:47
_mup_juju/scp-command r423 committed by jim.baker@canonical.com04:48
_mup_PEP804:48
_mup_juju/trunk r425 committed by jim.baker@canonical.com04:53
_mup_merge scp-command [r=fwereade,hazmat][f=720307]04:53
_mup_Implements juju scp subcommand.04:53
rogfwereade_: mornin'07:20
=== TeTeT_ is now known as TeTeT
fwereade_rog: heyhey :)08:03
rogfwereade_: :-)08:03
fwereade_rog: hmm, you were up disturbingly early ;)08:04
rogfwereade_: it's not uncommon - i usually don't make a peep in here until i see some activitity tho'08:04
fwereade_rog, ah, yeah, I tend to follow the same sort of approach08:05
rogfwereade_: actually 7.20 *is* earlier than usual! had to go out and scrape the ice off the car.08:05
fwereade_rog, oof08:05
rognot much ice where you are... :)08:05
fwereade_rog: well, it's getting pretty cold, it's 15 now :p08:06
roglol08:06
rogmind you, you probably don't have working central heating...08:06
fwereade_indeed not :)08:07
fwereade_actually I just realised I need to pop out for a bit08:07
fwereade_bbs :)08:07
rogc y08:07
TheMueMio08:49
TheMueargh, moo, that's better08:50
mplhi all09:09
rogmpl: hiya09:28
fwereade_if anyone who's written trickyish charms is around and awake, please ping me10:31
fwereade_scratch my request above11:14
niemeyerMorning all!11:52
fwereade_heya niemeyer11:52
TheMuemoo11:52
niemeyerfwereade_, TheMue: Hey folks!11:55
rogniemeyer, TheMue: morning!11:58
TheMuehi rog12:03
mplyo12:06
niemeyerrog, mpl: Hey folks12:13
mainerrorSooo! Juju Charm School today. \o/12:16
niemeyermainerror: Ohhh, indeed!12:20
mainerrorCan't wait.12:20
jrgiffordniemeyer: almost forgot about that. :P12:21
jrgiffordwhat time (UTC) is it again?12:21
mainerrorMy Charm drives me nuts. This CMS writes its config options into more than one file ...12:23
mainerror15:00 UTC jrgifford.12:23
rogniemeyer: ec2-ec2test pushed. second stage merge request for ec2 now in (https://codereview.appspot.com/5449065/)12:28
niemeyerrog, mpl, TheMue: I think we should give a push to make sure all of the packages we're handling run fine on the latest weekly12:28
niemeyerrog: Already on re-review the former one12:28
niemeyerrog: Already on re-reviewing the former one12:28
rogniemeyer: i was wondering if we should let the latest weekly settle a bit before digging in12:29
mainerrorWhat are you guys going to write in Go by the way?12:30
niemeyermainerror: We're running an experiment to run juju on Go12:30
mainerrorOh, nice. :)12:30
mainerrorRight now it is using Python, right?12:31
niemeyermainerror: That's right12:31
TheMueniemeyer: Based on weekly? Not on r60?12:31
niemeyerTheMue: Yeah, weekly12:31
mplniemeyer: just curious? why not using the releases instead of the weeklies?12:31
niemeyerTheMue: r60 is too old by now, and given our timeframe, there's not much benefit in sticking to it12:31
niemeyermpl: ^12:31
mplok12:31
TheMueniemeyer: hmm, imho weekly is currently changing too often. but i'll look.12:32
niemeyerI suspect most of the incompatibilities for Go 1 are already in too12:32
rogTheMue: i think it's easier to update in stages rather than all at once. we haven't got a large set of users, so it's not that much problem for us currently.12:33
mainerrorOh wow! Go has GTK bindings.12:33
TheMuerog: yep, the backlog of the current weekly and the r60 is already quite large.12:34
TheMue*sigh*12:34
mplmainerror: are you speaking of mattn ones? if so, you should know that nsf is also redoing them.12:34
mainerrorIndeed. They are not 100% done yet but still a good start.12:34
rogTheMue: gofix does a lot, but it's not a panacea12:34
mainerrorI see.12:35
mainerrormpl: Did he host it on Github as well? I can't find it. :/12:37
mplmainerror: well, you'd better ask him directly on #go-nuts12:38
mainerrorOh, awesome. :)12:39
TheMuerog: i know, that's what i wrote on G+ too. i would like a r61 before go 1.12:40
niemeyerrog: What's the branch name?12:40
rogniemeyer: which branch?12:41
niemeyerrog: The one you mentioned12:41
rogniemeyer: i pointed to the codereview page.12:41
rogniemeyer: it's lp:~rogpeppe/juju/go-juju-ec2-regions12:41
niemeyerrog: Ok, I feel like I'm missing something12:41
rogi think12:41
rogthe first one is go-juju-initial-ec212:41
niemeyerrog: It says " juju/ec2: add code to accept an ec2 region in the configuration file"12:41
niemeyerrog: But there's a _lot_ in there, completely unrelated to this description12:42
niemeyerrog: Is there a pre-req missing?12:42
rogniemeyer: yes - i couldn't add it after i'd forgotten to add it first12:42
rogniemeyer: i thought you knew about the first one12:42
niemeyerrog: The first one was initial-foo, right?12:42
niemeyerrog: which we debated a lot on12:43
niemeyerrog: I haven't heard on it since?12:43
rogniemeyer: https://codereview.appspot.com/5432056/12:43
rogniemeyer: i pushed a new version which is skeleton only12:43
rogniemeyer: didn't you get the email?12:43
niemeyerrog: Ok, the last comment says "I'm doing that right now."12:43
niemeyerrog: Check the review out12:43
rogniemeyer: ah, i did another lbox propose and changed the description, and thought you'd see that12:44
rogniemeyer: anyway, there it is.12:44
niemeyerrog: Understood, thanks. I'll hack a bit on lbox today I think, to implement submit, and also to fix that problem12:44
niemeyerrog: It should mail asking for another look12:44
rogniemeyer: i think there should be a distinction between uploading, mailing and changing the description12:45
niemeyerrog: But let me review your branches first..12:45
rogniemeyer: that would be good, thanks12:45
niemeyermpl: How's your agenda? Do you have something in mind already to work on?12:45
mplniemeyer: nope. I haven't really had time to think about it. I'm very open to suggestions for now ;)12:46
niemeyermpl: May I suggest you go over all of the packages for juju, goamz, gozk, and goyaml, and see if there are any incompatibilities with weekly to be fixed?12:47
niemeyermpl: goamz has a bunch of sub-packages as well12:47
niemeyerrog: Have you merged the error fixes on goamz that you had pending, or is there some to go still?12:47
rogniemeyer: i *think* so. i'll just check12:48
mplniemeyer: alright, will do. can't start on it right away though.12:49
niemeyermpl: That's fine, thanks12:49
niemeyermpl: After that, let's see if we come up with a more interesting/long task involving juju logic12:49
niemeyermpl: These branches that rog is working on are the base, so it's a bit hard to split the workload, but with those in, it should be much easier12:50
mplniemeyer: I'd like that. if it can involve me learning about cloud stuff, even better.12:50
niemeyermpl: Absolutely12:50
niemeyermpl: EC2 provider is precisely what we're working on12:50
mplniemeyer: no worries. I surely don't want to disturb your workflow guys.12:51
niemeyermpl: You're helping, rather than disturbing12:51
mplpsh, I know you guys have spent more time hand holding me so far than if you have done it yourself. but I'm too ashamed as it's often a necessary process.12:52
mpl*not too ashamed.12:52
rogniemeyer: have you renamed goamz/aws yet?12:53
mplanyways, gotta run to a meeting, ttyl.12:53
rogniemeyer: that's the last of error-fixes in goamz12:53
rogmpl: see ysa12:53
rogya12:53
niemeyerrog: Not sure.. checking12:53
rogniemeyer: it still needs pushing12:53
niemeyermpl: Cheers!12:53
niemeyerrog: Dude.. we're doing something wrong12:54
rogniemeyer: we should probably tag r60 versions of the goamz packages so that people can still use r60 with them12:54
niemeyerCrap12:54
rog?12:54
niemeyerrog: Yeah, precisely12:54
rogniemeyer: that's not too hard, right?12:55
niemeyerrog: That's exactly what I was talking about12:55
niemeyerrog: It's trivial12:55
niemeyerrog: But we may have broken people trying to use it12:55
* niemeyer handles that right away12:55
niemeyerrog: Have you pushed the branch?12:55
rogniemeyer: which branch?12:55
niemeyerrog: goamz/aws12:55
rogniemeyer: i've pushed ec2 and s312:55
rogniemeyer: nope12:55
rogniemeyer: i don't think i sent it for review, in fact12:56
niemeyerrog: Ok, do you have any pending changes?12:56
rogniemeyer: yes, just error fixes12:56
niemeyerrog: Ok, leave that with me then12:56
niemeyerrog: I'll fix the whole thing12:56
rogniemeyer: there are two ErrorMatches that gofix doesn't catch, otherwise it's all gofix12:57
niemeyerrog: Cool.. I'll fix that and fix the tagging12:57
TheMueanyone have experiences with go weekly and release in parallel?13:00
TheMuei would need both13:00
rogTheMue: i have them in separate directories13:00
rogTheMue: and a prefix command to run one in preference13:00
rogTheMue: http://paste.ubuntu.com/757007/13:01
rog(excuse the fact it's not bash, but i'm sure you get the idea)13:01
rogTheMue: i call it "go-release". as in: go-release goinstall foo; go-release 6g x.go13:02
rogetc13:02
TheMueic, looks good13:02
rogniemeyer: gocheck looks like it needs an r60 tag too - it looks like the r59 version fails13:06
rogon r6013:06
niemeyerrog: Uh oh13:07
niemeyerrog: Can you pin-point which version to tag?13:07
rogniemeyer: will do13:07
niemeyerrog: Thank you13:07
rogniemeyer: ironically, it's revision 6013:11
niemeyerrog: LOL13:11
rogjust off for lunch and to bake a cake, back in an hour13:32
niemeyerrog: Enjoy13:34
TheMue... and dcc us some cake13:35
niemeyer:)13:35
niemeyerrog: I _think_ it's all sorted out13:43
niemeyerrog: In goamz, specifically13:43
rogniemeyer: cool.14:17
rogTheMue: and sorry, would've but didn't have enough bananas so the cake is only 62% the size it should've been. so none spare!14:18
TheMuerog: *deeplySigh* so I've got to find surrogate when I'm on x-mas market later with my family14:20
rogjimbaker: you know what would be really cool - if you could use scp to copy between units without involving the local machine, e.g.  juju scp wordpress/0:/etc/wordpress/config-* wordpress/1:/etc/wordpress14:25
marcoceppiCharm school soon \o/14:27
* uksysadmin is ready for charm school. "How yoooou doin'?"14:34
rogniemeyer: before i continue in the same vein, do you think go-juju-initial-ec2 and go-juju-ec2-region are pointing vaguely in the right direction? if not, i'd prefer to fix those rather than carry further on the wrong way.14:36
jcastrogood morning everyone!14:38
jcastrouksysadmin: thanks for stopping by, we'll start in ~20 minutes!14:38
rogniemeyer: oh cool, just got yr msg14:40
uksysadminlooking forward to charming my servers14:49
* mainerror will probably be 10 minutes late14:52
niemeyerrog: Yeah, I think initial-ec2 is ready to go in with those settled14:53
rogniemeyer:14:53
rogniemeyer: cool. i've done those - i'll do the push14:53
jcastrom_3_: around?14:54
mainerroro/14:56
rogniemeyer: done.14:56
niemeyerrog: Looking14:56
niemeyerrog: patch set is unchanged14:57
mplniemeyer: is it lp:gozk or lp:~juju/gozk/zk that you want me to check? also, fyi https://launchpad.net/gozk/zk returns a 40414:57
niemeyerrog: But it was pushed 5 minutes ago14:57
niemeyermpl: gozk/zookeeper.. you've renamed it :-)14:58
rogniemeyer: sorry, did the publish messages, did the push to ~rogpeppe..., forgot to do the lbox propose14:58
niemeyerrog: lbox propose pushes as well, btw14:58
mplniemeyer: yeah but maybe you wanted me to check the whole project, wasn't sure.14:59
rogniemeyer: yeah, but i've had it push to the wrong place, so i tend to do it myself to make sure14:59
m_3_jcastro: yo14:59
jcastrohi!14:59
niemeyerrog: Cool14:59
niemeyermpl: Ah, no, just gozk/zookeeper is great already15:00
rogniemeyer: dammit, i'm too late, the diff is empty15:00
marcoceppi\m/15:01
jcastroniemeyer: rog: mind if we kick you out for the charm school?15:01
rogjcastro: no probs15:01
niemeyerjcastro: Not at all, thanks for pushing this15:01
jcastrobut do idle in case there are questions!15:01
jcastroOk, welcome everyone to the first ever #juju charm school15:01
jcastrowe'll give it another minute for the stragglers to arrive15:01
niemeyerrog, mpl: => #juju-tmp15:01
mplniemeyer: ah yes, silly me, your message pointing to that url (with zk) is from september. I had the rename the other way around in my head, sorry.15:01
niemeyerTheMue: => #juju-tmp15:02
jcastroOk everyone.15:05
jcastroWelcome to the first ever virtual charm school!!!15:05
jcastroI am your emcee, Jorge Castro15:05
jcastroI work on the community team at Canonical on Cloud15:05
jcastroI am joined today by ....15:05
m_3_Hi all, I'm Mark Mims15:05
m_3_I'm here to help answer charm questions15:06
jcastrook15:06
jcastroso first off, we'd like to see who's here to learn, so everyone who is here for charm school, raise your hand and give us a one line description of yourself15:06
medberryo/15:06
ivoks\o15:06
marcoceppio/ I love juju15:07
TheMueo/15:07
nijabao/ (just a pm having a look)15:07
chuteo/15:07
=== sergio_ is now known as Guest31766
ahs3o/15:07
uksysadmino/ interested in learning how to deploy cloud environments in (as well as bare metal provisioning of) OpenStack15:08
jcastrooh nice one. :)15:08
jcastrook so first, before we get into details on charms15:08
jcastrolet me arm you with some docs and links, that you can reference15:09
jcastrofirst off, obviously, we have: https://juju.ubuntu.com/ and https://juju.ubuntu.com/docs15:09
jcastrowhich is where we centralize all the information on juju15:09
jcastrofor news about juju and the latest charms, we put that on http://cloud.ubuntu.com15:09
jcastrofor example yesterday someone submitted a status.net charm15:10
jcastrohttp://cloud.ubuntu.com/2011/12/deploying-status-net-quickly-with-juju/15:10
jcastroWe like to heavily talk about new charms15:10
jcastrobecause while juju is an amazing tool, it's the charms that make it useful15:10
jcastroin the same way that you might love apt, but you really love the huge repository that comes along with it15:10
jcastroso we're running these sessions to help people write charms for things they care about.15:11
jcastroSo, before we get into the anatomy of a charm15:11
jcastrodoes anyone have any questions so far?15:11
jcastrohopefully you understand enough about juju to grasp the concepts.15:11
jcastrobut if you don't, we can get you started on the right road.15:11
medberryhow does one charm a package to use mysql when the current package has depends for a locally installed mysql?15:11
medberryerm, to use the mysql on another box....15:12
fmoDo you consider juju ready for production environments?15:12
jcastromedberry: mark is answering yours now15:12
jcastrofmo: we consider it a tech preview in 11.1015:12
m_3_medberry: so the key here is to write a relation hook for your service15:13
fmoThank you, it's a bit out of scope but is it the same for Orchestra?15:13
jcastrofmo: it's at the stage where you would start to look at it for 12.04ish timeframe deployment.15:13
m_3_medberry: that relation hook would essentially reconfigure your app to point to the remote mysql instance15:13
medberrynod. m_3, thanks. Is there an example charm (off the top of your head) I should refer to that does this?15:14
m_3_medberry: it does this by exchanging crediential info for a db with the mysql charm15:14
jcastrofmo: Not quite sure on orchestra but I /believe/ it's at the same level, though orchestra bundles some things that are already mature, like squid, etc.15:14
ivoksm_3_: but you would still end up with unused mysql-server running on 'app' node, wouldn't it? i think this is a packaging bug15:14
fmothank you :)15:14
m_3_lots of charms connect to mysql this way... mediawiki would be a good one15:14
medberryfmo, I believe you can consider Orchestra more mature than Juju and ready for deployments.  zul may know more.15:15
medberrym_3_, thanks, I'll look at it (and others)15:15
m_3_ivoks: your relation hook could pass debconf info and dpkg-reconfig the package though15:15
ivoksm_3_: right, thanks15:15
m_3_ivoks: so what you would do depends on the interface exposed by the package itself15:15
* medberry was thinking specifically of moodle if someone wants the context.15:16
jcastrooh are you working on moodle?15:16
jcastrothat would be great!15:16
* m_3_ grins15:16
jcastrook, this brings me to the next quick topic, who has written a charm already? and who is planning on working on one?15:17
* nijaba plans on doing one for limesurvey15:17
jcastroand does anyone have an itch to scratch to work on a certain charm?15:17
uksysadmino/ as far as getting a basic something going (like nginx behind haproxy) to try and understand the concepts15:17
ivokso/ postfix-dovecot15:18
ivoks(as soon as i find time :)15:18
nijaba(same here)15:18
marcoceppio/ finishing phpmyadmin and steam15:18
jcastro(steam in this context is being able to quickly deploy a steam server for game clients to connect)15:19
medberryjcastro, yep, and someone has pointed out in O and P moodle only has a recommends on the server bits (not a depends like in Lucid.)15:19
jcastroo/ I'm working on an alice IRC charm, which is a self hosted web irc client.15:20
jcastrook, so let's start with looking at the anatomy of a charm15:20
medberrymarcoceppi, I saw that Aleph One was just released fully open source...15:20
* marcoceppi nods15:21
jcastrobut before we start a charm15:21
jcastroyou need to map out what you want your charm to do15:21
jcastrohttps://juju.ubuntu.com/docs/write-charm.html#have-a-plan15:22
jcastroin this document we outline some tips in the things you need to think about when planning out how to write your first charm.15:22
jcastrousually I make a quick mindmap of what I need15:22
jcastroso for example15:22
jcastrostatus.net15:22
jcastroI know I'll need mysql15:23
mainerroro/ - I'm a juju fanboy.15:23
* mainerror is also late15:23
jcastroand that the charm would have a relationship with mysql15:23
hazmat /join #juju-tmp15:23
jcastrohttp://charms.kapilt.com/interfaces/mysql15:23
m_3_http://pad.ubuntu.com/charmschool-2011-12-0215:23
jcastroI can then see what other programs use mysql15:23
jcastrothis is useful because now I can look at other LAMP projects and use that to build my charm15:24
jcastrowhich is what we want, reuse.15:24
jcastroSo you can use the charm browser to look for other services that have relationships with services you care about15:24
jcastroThe guy who wrote the status.net charm just derived it from his last LAMP charm15:24
jcastropart time, it was only 2 days from first cut to being accepted into the charm school15:25
jcastroand Marco/Clint are working on some convenience tools to make common tasks easier15:25
jcastromarcoceppi: can you explain about your convenience functions?15:25
jcastro(and then we'll go into this: http://pad.ubuntu.com/charmschool-2011-12-02)15:25
jcastrowrong URL, I mean this: http://pad.ubuntu.com/charmschool-2011-12-0215:26
jcastrook we can get back to Marco15:27
marcoceppiSure, so I wrote a few functions that I found myself using a lot in bash, primarily ch_get_file which is passed a file url and either a url to it's hash (md5, sha1, etc) or the actual hash itself. From there it'll download/compare file -> hash15:27
marcoceppiThere are a few others, check if a string is a file or a url, check if a string is a valid hash15:27
marcoceppiYou can find them: http://bazaar.launchpad.net/~charmers/charm-tools/trunk/view/head:/helpers/sh/net.sh to use in a charm make sure you have the juju ppa added, install charm-helper-sh, and source /usr/share/charm-helper/sh/net.sh15:28
SpamapSmarcoceppi: FYI, there is a PPA just for those helpers,   ppa:charmers/charm-helpers15:29
marcoceppiI believe the idea is to grow out charm helpers to include helper functions in all the languages15:29
marcoceppi<3 SpamapS15:29
jcastroand if I make something I think can be reused, do we just submit it to charm tools?15:29
SpamapSmarcoceppi: otherwise you'll pull in a new version of juju15:29
m_3_SpamapS: yay!15:30
SpamapSthey'll be in the distro for 12.0415:30
jcastroSince we're just getting a bunch of  charms started, if you're writing a charm and feel that you can improve the charm tools to make it better for the next person, then we certainly encourage you to do that.15:30
marcoceppidefinitely15:30
jcastrook, any questions on the tools before m_3_ gets into the meat of a charm?15:31
jcastrook, moving on ....15:33
SpamapSare the tools webscale?15:33
SpamapS;)15:33
jcastroeveryone should have this URL open: http://pad.ubuntu.com/charmschool-2011-12-0215:33
jcastroand we'll review this charm15:33
jcastroMark will bold the sections of the document he's talking about15:34
jcastroand then when he moves on he'll unbold it and then bold the section he'll be reviewing next.15:34
m_3_I'll give people a sec to join the pad15:34
marcoceppipad needs syntax highlighting :P15:34
m_3_ok, so we'll make sure everyone has juju installed and working in a bit... first of all, let's cover some basic concepts of charms with an example15:35
m_3_I pulled a community-contributed charm off the list... just landed yesterday or the day before15:36
m_3_so the first section we have is a basic listing of the charm contents15:37
m_3_notice there're a couple of yaml files, a copyright, and then a set of scripts in the hooks/ directory15:37
m_3_the scripts in the hooks/ directory are all in shell for this example15:38
m_3_but juju takes great pains to be language/tool agnostic15:38
m_3_you can use your fav toolset.. hooks just have to run and exit with return codes similar to a shell script ( 0 is good )15:39
m_3_so before we dig into the contents of the hooks15:39
m_3_let's see what this charm is / does15:39
m_3_take a look at the metadata15:39
* m_3_ not a fast etherpad formatter :)15:40
m_3_so it looks like the service described by this charm...15:40
m_3_consumes a db (mysql in this case)15:40
m_3_and presents a website15:40
m_3_ok, that's pretty simple... and has a _lot_ in common with other services15:41
m_3_so juju uses this metadata specification to stitch together different services15:41
m_3_when juju spins a service unit up for this charm15:42
m_3_it can 'relate' other services that match up15:42
m_3_(does this by your command of course... but we'll get to the juju cli in a bit)15:42
chmacAny insight on where adding Rackspace support lies in the priority list for the juju project?15:43
chmacWe're based in the UK and so UK IPs are a big must at the moment, which means AWS is out as they only have an Irish presence, nothing in the UK itself.15:43
chmacOtherwise, I'd be very interested in experimenting with juju, it sounds like an awesome project.15:44
m_3_chmac: juju can handle a number of different providers15:44
m_3_including openstack15:44
m_3_so when juju spins up a service unit for this charm15:44
m_3_the first hook it calls is 'install' naturally enough15:44
m_3_please take a sec to look at the install hook in the pa15:45
m_3_pad15:45
m_3_starts off installing ppas and packages15:45
m_3_it's worth noting here that juju charms can be used to install services that install from packages15:46
m_3_but it can also be used to install other ways as well15:46
m_3_you can clone directly from the tip of your source code repo if you'd like15:46
m_3_anything goes15:46
m_3_for charms contributed back to the community please prefer packages when available15:47
m_3_but that's not necessary15:47
m_3_so this particular charm adds ppas/and packages15:47
m_3_then 'ch_get's a file from status.net15:47
m_3_(this is one of marco's tools to download and cryptographically verify payloads in charms)15:48
m_3_anyway... rest of the script is pretty clear15:48
m_3_note the open-port at the bottom15:48
m_3_juju defaults to everything closed off... you have to explicitly open what you want via the 'juju expose' command15:49
m_3_so that's install15:49
m_3_there're start/stop hooks too... these're usually trivial 'service xxx start'15:49
medberryso if you fail the open-port, there are iptables that prevent it? (firewall rules?)15:50
m_3_correct15:50
m_3_(not exactly iptables always)15:50
m_3_depends on the provider15:50
medberryah, aws / openstack port rules, gotcha.15:50
m_3_(and still in development iirc on bare-metal provider)15:50
m_3_so some charms are for services that just install a service and spin it up15:51
m_3_some services don't relate to other services15:51
m_3_and we'd be done if that were the case for status.net15:51
m_3_here, we need a db15:51
m_3_and we could potentially add a reverse-proxy in front of it15:51
m_3_etc etc15:52
m_3_so before we move on to relations...15:52
m_3_ any questions so far?15:52
jcastrorelations are the real meat of charms, so we'll pause here for questions15:52
m_3_ok, on to relations!!15:54
m_3_now this is the really cool part of juju... ok _a_ really cool part of juju15:54
m_3_so when you look at the config for a service15:54
m_3_ you can often bust it up into "the config specific to installing that node" and "the config specific to relating to another service"15:55
m_3_often the relation config info is a nice concise set of info15:55
m_3_well juju uses these boundaries to 'install' as a separate step from 'relate'15:55
m_3_so the basic story here is to15:56
m_3_1.) spin up status.net15:56
m_3_2.) spin up mysql15:56
m_3_3.) relate the two15:56
m_3_4.) expose status.net to the outside world15:56
m_3_when we relate two services the charm hooks for those services exchange info15:57
m_3_take a look at what's bold in the pad15:57
m_3_that's an example of the status.net charm getting relation-specific config info from the mysql service15:57
m_3_the mysql (db-relation-{joined,changed} hooks create a new db and credentials and then pass it to the service joining)15:58
m_3_so the status.net charm 'relation-get's the mysql db info that it needs15:58
m_3_now we can write this info into the config for status.net... and bam!15:58
m_3_take a minute to browse the db-relation-changed hook15:59
m_3_BTW all hooks are optional... only implement what you need... events will fire for {joined,changed,departed,broken}16:00
m_3_does this 'relation-get' exchange of information make sense to everybody?16:00
m_3_any questions about this16:00
m_3_it's this very separation of config info into 'install' and 'relation'-specific config that allows juju to start handling horizontal scaling quite nicely16:01
m_3_butmore on that later :)16:01
m_3_ok, take a sec to look at the website-relation-changed hook too16:02
medberrym_3_, compare "relation-get" with "config-get" which occurs later.16:02
medberryconfig-get comes from config.yaml?16:02
m_3_it's perdy darned simple16:02
m_3_was just gonna do config-get next16:03
medberryokeydokey16:03
m_3_so relation-get gives you info from the other side of a relation... another service16:03
m_3_config-get gives you info from a couple of different places:16:03
m_3_defaults are in config.yaml16:03
m_3_I can set them at deploy-time on the command line16:04
m_3_( juju deploy -elocal --repository ~/charms --config ~/my_status_net.yaml local:statusnet status16:04
m_3_or I can also set them individually via the command line:16:05
m_3_at any time during the life of the service, I can 'juju set statusnet var1=val1 var2=val2'16:05
m_3_there's a config-changed hook that can handle these changes in addition to the install or relation config16:06
m_3_ok, so one more thing about relations and relation-hooks and then we can move on16:07
m_3_when a relation is joined, relation-changed hooks can fire repeatedly16:08
m_3_they do this as long as either side is calling relation-sets16:08
m_3_what this means is that your code has to be able to be called over and over again without barfing your config16:08
=== jrgifford_webcha is now known as jrgiffordwebchat
m_3_(idempotency for you math geeks out there.... i^2=i)16:09
m_3_it's not hard, but it's good practice to make all of your hooks idempotent16:09
m_3_alright, I could ramble on all day about scaling service and show you example stacks... but let's get on with charm school!16:10
m_3_any questions about the status.net charm before we move on?16:10
jcastrono questions so far?16:12
jcastrothere's no way you guys can be that good. :)16:12
* m_3_ is just that exciting to watch type :)16:13
amithkkjcastro: lol16:13
mainerrorWhat do I do if there is no install_cli.php script for configure the site?16:13
m_3_mainerror: wow, that's a tough one16:13
chmacm_3_: I thought I'd read somewhere that juju only supports EC2 compatible clouds at the moment.16:13
chmacm_3_: Does juju support rackspace right now?16:14
* jrgiffordwebchat has same question as chmac 16:14
amithkkm_3_: Cant juju be installed on any server?16:14
m_3_mainerror: I'd write the install scripts myself and have the charm's install hook call my install scripts16:14
marcoceppimainerror I had a problem like that, in where I just had to re-write the web-based installer into the charm16:14
m_3_chmac: yes, during the last ODS we even did the meta thing on openstack...16:15
mainerrorI see. Thanks. :)16:15
m_3_i.e., we had a bare-metal rack16:15
m_3_chmac: we used juju to deploy openstack itself on the bare metal rack16:15
chmacm_3_: Wow, awesome, so juju can deploy new Rackspace servers just as it deploys new EC2 servers?16:15
medberryopenstack is not per se the same thing as rackspace.16:15
chmacm_3_: Great, I'll get into the documentation in greater detail.16:15
m_3_chmac: then we backed out and used another juju environment to spin up a hadoop cluster on that openstack cloud16:16
m_3_chmac: note that juju doesn't support the rackspace-api... just the ec2-compatible-api on openstack16:16
m_3_medberry: thanks16:17
chmacI've read that juju's not production ready, is that really true, or is it more cautionary? :-)16:18
m_3_chmac: sorry, I don't know if rackspace has a public-facing openstack cloud yet16:18
m_3_chmac: definitely true16:18
m_3_chmac: there are components that need to be made highly available before it's totally production ready16:18
jcastrochmac: it's a tech preview in 11.1016:18
chmacm_3_: Really? It's so tempting to use it in production :-)16:19
jrgiffordwebchatso.. it was a tech preview in 11.04/11.10, for 12.04 it'll be production?16:19
m_3_chmac: we're shooting for production-ready in 12.04 (long-term-support) version of ubuntu16:19
m_3_chmac: I would use it in production16:19
jcastrochmac: but certainly we encourage people to run it in dev so that we can get feedback to make it better in 12.04 for an LTS.16:19
chmacMakes sense16:19
jcastrochmac: this is why we want people banging on it now16:19
m_3_but you've got to take some extra precautions atm to insure service/data integrity16:19
chmacm_3_: Now that's what I'm talking about, see, I'm usually happy to test earlier than most :-)16:20
m_3_it does spin up EBS-rooted instances in ec2 atm for instance just to be on the safer side16:20
chmacI'll investigate the openstack api issue with Rackspace, maybe there's an alternative provider in the UK.16:20
chmacThanks for the snappy response, gotta run now, being taken shopping! :-)16:20
* m_3_ totally ignorant16:20
jcastrothanks for coming!16:20
m_3_fun fun!16:20
jcastroany other questions?16:21
jcastroamithkk: I believe you asked if juju can be installed on any server?16:21
m_3_amithkk: sorry missed your question16:21
m_3_did the above discussion asnwer that?16:22
mainerrorWhat is the best practice to create an install script for a service if there is no direct download option?16:24
m_3_mainerror: best is to use apt-get install16:24
m_3_mainerror: next is to download a payload... binary or tarball16:24
medberry.. then git clone?16:25
m_3_then install accordingly... cli.sh or ./configure && make && make install16:25
m_3_git clone's totally cool... we have several charms that do it already16:25
m_3_(safer to 'git clone <url> -b stable_branch_name')16:25
amithkkm_3_: yep16:26
mainerrorWhat I meant is, what if there is no wget usable direct URL but only a redirect URL?16:26
m_3_mainerror: so in the latter case, you'd need the install hook to install 'build-essential'16:26
amithkksorry for the slow responce16:26
m_3_or whatever's needed for that build16:26
m_3_mainerror: hmmm... not sure I'm following, but perhaps a ppa for that charm would work?16:27
medberryI think I know the answer... but clarifying:16:27
medberryjcastro,  m_3_, if I want to populate some content, does that happen after juju deploy? Assume I'm using public charms--should I mod them or just do the population on the host after the fact?16:27
mainerrorAh, right. That would be an option.16:27
medberry(ie, load web content, etc.)16:27
jcastroI think mainerror means16:28
m_3_medberry: sure, you can pull/install during a relation hook even16:28
jcastrowhat if I can't wget a tarball directly?16:28
jcastroand it's buried in some website that has redirects, etc.16:28
mainerrorIndeed but m_3 actually answered it, I think.16:29
m_3_so you _could_ just stick a tarball in the charm itself... there're some size limitations to that, but I don't remember them off-hand16:29
mainerrorAs I understood his answer was to create a package for it in a PPA. Maybe I misunderstood.16:29
medberrym_3_, but that's no longer really a public charm (if it has my content in it). So I've locally forked the charm?16:30
m_3_mainerror: heck, let's go over the specific thing you're trying to do16:30
m_3_medberry: yes, exactly16:30
m_3_medberry: which is ok... anything goes in charms16:30
medberrythanks all.16:30
m_3_medberry: your choice to make something harder to maintain, and/or private/proprietary16:30
mainerrorUhm, it was more of a general question. Luckily I can wget it directly.16:30
medberrymainerror, is there an example--some actual issue you can point us at?16:30
medberryah.16:31
m_3_medberry: but contrib back to community set of charms in the 'charm store' is different16:31
medberrynod.16:31
m_3_they get tagged according to all sorts of different criteria16:31
jcastroI wouldn't consider a tarball in a charm best practice16:32
jcastroideally if it was an open project you could get them to fix that16:32
m_3_prefer packages if available16:32
jcastroor ask them to mirror their tarball releases on launchpad16:32
jcastroor package it in a PPA as a contribution to ubuntu and that project16:32
m_3_marcoceppi has a 'use_upstream' config option on a charm16:33
marcoceppiyeah, it switches between latest stable tarbal and what's in the repos.16:33
m_3_true => pull from source, otherwise install the package16:33
marcoceppibut it always defaults to the repo, you have to juju set inorder to get the upstream version16:33
m_3_which is really a beautiful way to handle that from a user-perspective (as long as default is pkgs :)16:34
jcastrobut if it's some horrible program that you can't improve and need it for work or something then feel free to get as ugly as you want, but for the public charms in the charm store we're looking for nice clean charms that people can use and adapt.16:34
jcastrook, we've gone through the charm16:34
jcastroand this ends the official charm school16:34
jcastrohowever16:34
jcastrowe certainly encourage you to hang out16:34
jcastrosmoke if you got em16:34
jcastroand feel free to ask us questions16:35
jcastroor let us know what you're working on16:35
jcastroor ask for help or a review16:35
jcastrowe hold office hours (see topic) or you can always post to the list16:35
jcastrobut the juju team works a ton, and usually are always in here and love to answer questions from users16:35
jcastroso please don't be shy!16:35
medberrytx guys.16:36
amithkkawesome session!16:36
mainerrorThanks for this session!16:36
jcastrowe'll make the logs handy for everyone16:36
dannfthanks guys - is service maintenance within the scope of juju? e.g. keeping mysql up to date w/ security patches?16:37
marcoceppiThat's a good question actually16:37
m_3_dannf: yes, there's an upgrade action called from the command line 'juju upgrade <service-name>'16:38
dannfand that is implemented with a hook, i presume?16:38
m_3_that you can customize with a dedicated upgrade hook16:38
dannfsweet16:39
m_3_usual practice is to make 'install' idempotent and then symlink to the upgrade hool16:39
m_3_s/hool/hook/16:39
dannfmakes sense16:39
m_3_dannf: rolling upgrades can be done, but you have to segment the service a bit... i.e., plan for it... this'll improve over time16:40
m_3_i.e., if you've got a 20-unit service and only wanna upgrade a few of them at a time16:41
m_3_scaling in juju is just cool!  but that'll be another charm school :)16:41
jcastroyes, it's actually unfair to juju not mentioning scaling this time16:42
jcastrobut when we get to it you'll really start to see the power16:42
m_3_it's a kind of magic16:42
m_3_sorry, had to16:42
m_3_:)16:42
* m_3_ now has song stuck in head16:43
* mainerror too16:43
m_3_hazmat niemeyer: y'all can have the channel back... thanks!16:48
mplwheee16:48
mplfeels good to come out of the dark irc corner16:49
niemeyerOh, hey.. #juju is back16:58
niemeyerrog: Review sent16:58
rogniemeyer: w.r.t. Bootstrap, I said that I would change the test (to test for len(ms)==1) once Bootstrap actually starts a machine, but for the time being i think it's ok.17:00
niemeyerrog: It's not..17:02
niemeyerrog: Comment the test out if you can't satisfy it.. a test assertion that asserts something wrong is doing what exactly17:03
niemeyerrog: Or, maybe better17:04
niemeyerrog: Comment Bootstrap out17:04
rogthat's a better idea17:04
niemeyerrog: Then the test is probably correct17:04
niemeyerrog: It should not Destroy, though17:04
rogniemeyer: why not?17:05
niemeyerrog: Because that's the complement of Bootstrap17:05
niemeyerrog: Destroy doesn't work in a real deployment without Bootstrap, I think17:05
niemeyerfwereade_: Does it?17:05
rogniemeyer: currently, Destroy takes down all machines that were started from the current environment17:05
rogniemeyer: which seems ok17:06
fwereade_niemeyer, reading context17:06
niemeyerrog: Hmm.. fair enough.. that sounds like a good behavior, even if we don't do that in Python17:06
fwereade_niemeyer, I don't think destroy-environment is actually an *error* if you don't have an environment17:06
niemeyerfwereade_: The question is whether it kills all machines, even if we don't find the data about it in e.g. S317:07
fwereade_niemeyer, checking17:08
fwereade_niemeyer, it gets ec2 machines by reservation, so it should be safe17:09
niemeyerfwereade_: Cool, thanks17:09
rogniemeyer: i replied with one question about about open vs Open17:19
niemeyerrog: and I already replied to it17:19
rogniemeyer: i think i'd prefer to wait until the occasion arises, if that's ok17:21
niemeyerrog: Sure, no prob17:21
rogniemeyer: the previous weekly builds find with all tests passing btw, so it's *something* that's changed recently17:22
niemeyerrog: You mean re. http?17:22
rogniemeyer: yeah17:22
rogniemeyer: https://codereview.appspot.com/5448085/17:27
niemeyerrog: goamz should be entirely fixed, tagged, and shiny already17:28
rogniemeyer: i just pulled and it didn't seem to be17:29
rogunless...17:29
rogah, rename!17:29
rogno17:30
rogniemeyer: http://paste.ubuntu.com/757292/17:30
rogit still needs fixing, i think17:31
rog(that was done just after i'd removed the aws directory, BTW)17:31
niemeyerrog: I think I screwed up pushing to ~niemeyer.. let me see17:32
rogniemeyer: renames are awkward - it should lazily evaluate aliases i think17:32
niemeyerrog: yeah, I'm sorry17:32
niemeyerrog: The rename worked fine, but I forgot the --remember17:33
niemeyerrog: Which means the fixup and tagging afterwards went to the wrong location17:33
niemeyerrog: Ok, I _think_ everything should be fine now, including the more unknown packages (sdb, etc)17:34
rogniemeyer: if i push to lp:goamz/aws, it should remember that, even if it's later changed to be an alias for something else, i reckon17:34
niemeyerrog: It doesn't17:34
rogi know17:34
niemeyerrog: Unless you say so with --remember17:34
niemeyerrog: Ah, you're expressing a wish, sorry17:34
rogyeah17:34
niemeyerrog: Yeah, it makes sense to me too17:34
rogniemeyer: PTAL17:45
niemeyerrog: e.Destroy has already been mentioned in two other reviews.. please fix it or respond to the point.17:46
rog[17:06] <niemeyer> rog: Hmm.. fair enough.. that sounds like a good behavior, even if we don't do that in Python17:47
niemeyerrog: That's not the same issue17:47
niemeyerrog: We should be able to Open without Destroy17:47
niemeyerrog: Or do you think we shouldn't?17:48
rogniemeyer: i think that the destroys will happen at the end17:48
rogniemeyer: so it shouldn't matter17:49
rogniemeyer: what do you propose as a solution?17:49
niemeyerrog: So if I open the same environment 10 times, you think we should destroy it 10 times17:49
rogniemeyer: yeah.17:49
niemeyerrog: That's silly isn't it?17:49
rogniemeyer: probably :-)17:49
niemeyerrog: So let's do something else..17:49
rogniemeyer: your suggestion was to have suite.Bootstrap, right?17:50
niemeyerrog: I suppose each environment only has to be destroyed once, and that we don't really have to do through the same object that created it17:50
rogniemeyer: so the environment that got bootstrapped gets destroyed17:50
niemeyerrog: Does that make sense?17:51
fwereade_happy weekends everybody :)17:51
niemeyerfwereade_: thanks, have a great one too17:51
rogfwereade_: have a good one17:51
niemeyerrog: I don't mind to change the original suggestion.. just want to have some conversation going about the topic17:51
niemeyerrog: You say Destroy shouldn't depend on Bootstrap.. that's fine by me too17:52
rogniemeyer: i think that if we're wanting to test Bootstrap/Destroy with different opens, we can bypass the suite environment handling17:52
niemeyerrog: I don't want to test.. it's the opposite.. I don't want the suite to be doing something that makes no sense all the time17:53
rogmost tests will be against a single environment, i think17:53
rogniemeyer: isn't it worth doing something that makes sense most almost all of the time? hmm, i dunno.17:55
niemeyerrog: Sorry, I don't get that point..17:55
niemeyerrog: The same environment shouldn't be destroyed twice.. it will fail, and the test will fail because Destroy fails17:56
roganyway, my thought was that we could have a Bootstrap method as well as an Open method. the  Bootstrap method marks the env to be destroyed at the end.17:56
niemeyerrog: That was my suggestion, that you advocated against by saying Destroy should always be called :-)17:56
rogwhich will happen exactly once for each env created via bootstrap17:56
niemeyerrog: Which is fine by me17:56
rogniemeyer: that was then :-)17:57
niemeyerrog: The only point I'm trying to address is not destroying thing twice17:57
niemeyerrog: and it's easy to do that17:57
rogniemeyer: yeah, ok i'll do that17:57
rogsee whether i can do it in 3 minutes!17:57
niemeyerrog: Well.. let's do this17:57
niemeyerrog: Please merge it as-is..17:57
niemeyerrog: We'll sort it out later17:58
rogok17:58
rogit's ok as is?17:58
niemeyerrog: yeah17:58
niemeyerrog: I'm starting to think we should just Destroy it within each test as necessary and be done with it. Let's see how things show up in practice once we have a few additional tests17:59
rogniemeyer: the problem with that is that the env is left around if you do a failed Assert17:59
niemeyerrog: defer17:59
rogok17:59
niemeyerBut let's see.. it's bothering a bit knowing this will blow up but I'm probably concerned too soon18:00
rogbugger, conflicts18:01
niemeyerHuh.. how come?18:02
rogniemeyer: all sorted now. jeeze. i *think* i got all the steps right.18:08
roggotta go, i am required to pack for the weekend. see ya monday. thanks for all the reviews, i love 'em really :-)18:09
niemeyerrog: Thanks a lot for everything this week, it was awesome18:10
niemeyerrog: and you're very welcome18:10
rogniemeyer: and if you did manage to have a look at ec2-region before then i'd be very happy indeed...18:10
niemeyerrog: Oh, wait18:10
niemeyerrog: I've checked it out, but the proposal includes unrelated changes from the previous branch18:11
niemeyerrog: I mentioned that in the codereview itself18:11
rogfuck18:11
rogwhich changes?18:11
rogniemeyer: i can fix it if you let me know right now, otherwise i'll have to leave it18:13
niemeyerrog: See the codereview18:13
niemeyerrog: I think it had all the ec2-initial changes in18:14
rogniemeyer: which file?18:14
niemeyerrog: All of them18:14
niemeyerrog: Or most, anyway.. checking out18:14
rogniemeyer: i thought ec2-initial was approved, bar these changes18:14
niemeyerrog: It is!18:14
niemeyerrog: and it's merged even, right?18:14
rogyeah18:15
niemeyerrog: My point is that this: rog: https://codereview.appspot.com/5449065/18:15
niemeyerrog: Has a ton of unrelated changes coming from other branches18:15
rogah, sorry, i thought you were referring to the review just done18:15
rogone mo18:15
rogniemeyer: there, is that better?18:17
rogniemeyer: it looks like the changes are relevant now18:18
roggotta go18:18
niemeyerrog: Superb, thanks!18:19
niemeyerrog: Enjoy18:19
_mup_Bug #899433 was filed: YAML errors in charms should be obvious to users <juju:New> < https://launchpad.net/bugs/899433 >23:01

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