/srv/irclogs.ubuntu.com/2011/10/06/#juju.txt

jimbakerindeed very sad news about steve jobs00:02
niemeyerCool: http://wtf.labix.org/01:11
hazmatsadness01:29
hazmatniemeyer, having some problems building go-tip01:30
hazmatoh well01:30
niemeyerhazmat: What's up01:30
niemeyer?01:30
hazmatit error'd out. cleaned and retrying01:31
hazmatniemeyer, http://pastebin.ubuntu.com/703116/01:32
niemeyerReading01:32
hazmatlooks like it failed the acceptance tests01:32
* hazmat tries to figure out scrollback buffers in tmux01:32
niemeyerhazmat: It's missing the start of the traceback01:32
niemeyerhazmat: Where the actual reason is mentioned01:33
niemeyerhazmat: Hmm.. I'm not sure.. I've changed my keys01:33
niemeyerhazmat: Mine is CTRL-X PGUP01:33
niemeyerWhere X is the tmux special key01:33
hazmathmm... maybe its confused by the pkg being installed01:35
hazmatniemeyer, full traceback http://paste.ubuntu.com/703119/01:37
hazmathmm.. not full01:37
niemeyerhazmat: Strange error that is01:38
niemeyerhazmat: Looking at the code01:38
niemeyerhazmat: Can you please paste the contents of your /proc/net/igmp01:38
hazmatniemeyer, http://paste.ubuntu.com/703122/01:42
hazmatjimbaker, i think your problems might be related to firewalling.. perhaps the firestarter pkg01:43
* hazmat falls asleep01:45
niemeyerhazmat: Looks fine.. we can figure it tomorrow01:45
niemeyerhazmat: Today was already most excellent :-)01:46
niemeyerhazmat: We even have a clean wtf: http://wtf.labix.org/01:46
jimbakerhazmat, i removed firestarter, but the wordpress example still does not come up; same issue of Network is unreachable by the ZK client03:05
jimbakeron second thought, i believe that firestarter simply configures the firewall. so removal probably does nothing. something i'll look at again tomorrow night03:24
jimbakererr, tomorrow03:24
jamespagemoring - I got my local juju environment working with bscaller's patch for dns resolution08:39
jamespagenice08:39
jamespagejust killed my laptop but runing to many cassandra units -ooops08:40
kim0hazmat: Andreas mentioned he's already writing the docs for orchestra/juju interaction, see bug 85598909:00
_mup_Bug #855989: Document usage with orchestra <juju:Confirmed for kim0> < https://launchpad.net/bugs/855989 >09:00
kim0nice, lxc deployment works great!11:46
kim0wordpress connects woohoo This is so awesome \o/11:48
hazmatkim0, nice!12:04
kim0hazmat: this is great man :)12:04
hazmatkim0, indeed, much more fun12:04
hazmatkim0, fwereade_ comitted some work to auto increment version when you do an upgrade, should help solve one of the common charm author gotchas12:04
kim0hazmat: yes .. to actually get this lxc stuff working, I had to add revision: to metadata.yaml of some charms12:05
hazmatkim0, hmm.. really? what was the error?12:05
hazmatthe version separation should have been backwards compatible12:06
kim0hazmat: 2011-10-06 13:11:40,137 ERROR Bad data in charm info: /home/kim0/Documents/code/juju/juju/examples/oneiric/php/metadata.yaml: revision: required value not found12:06
kim0there's probably a better way to handle this ? like add revision in a separate file? but I disn't know about it12:06
hazmati'm not even sure what that php charm is supposed to be doing12:06
kim0hazmat: it's all of em ..2011-10-06 11:30:29,797 ERROR Bad data in charm info: /home/kim0/Documents/code/juju/juju/examples/oneiric/wordpress/metadata.yaml: revision: required value not found12:07
kim0all charms in local "repo" .. were being checked12:07
hazmatfwereade_, ^12:07
hazmatyeah.. the revision got moved to a separate file12:07
kim0so like, echo 1 > revision ?12:07
kim0then it needs that file added to trunk I suppose12:08
hazmatkim0, it should have already been on trunk, which is why i'm curious12:08
* hazmat tries it out12:08
kim0hazmat: I'm on 388 from ppa, too old ?12:09
hazmathmm12:09
hazmat388 doesn't have the auto upgrade work, and it shouldn't have changes to revision in the charm metadata12:10
hazmat388 works for me, trying again with trunk12:12
hazmatyeah.. both seem fine12:12
kim0weird12:31
fwereade_hazmat, kim0: oh crap12:38
hazmatfwereade_, i couldn't reproduce it12:38
fwereade_hazmat: it doesn't, indeed, look like it should happen12:39
hazmati should try the package  just to be sure12:39
fwereade_hazmat, kim0: the "required value not found" implies that some of the code is out of date -- before I made that optional12:40
kim0fwereade_: that's the pkg: 0.5+bzr388-1juju1~oneiric112:40
fwereade_kim0: hmm, I guess that would be the problem, I'm pretty sure 389 was when the change landed, let me double-check12:41
fwereade_hazmat: I guess this was another instance in which I should have rebuilt the PA as soon as it landed?12:41
kim0cool .. if anyone can force a pkg rebuild, I'd love to test again12:41
hazmatfwereade_, i'm not sure why.. was there a rev that hit trunk that would be broken?12:42
hazmatafaik no12:42
hazmatkim0, sure, i'm just testing out the pkg first12:42
kim0great12:42
fwereade_hazmat: likewise, but we knew that 389 wouldn't work with <=388, so anything that would cause mixed code could trigger it12:42
hazmatfwereade_, yeah.. but this is all client side12:43
fwereade_hazmat: oh12:43
fwereade_hazmat: I guess the old code won't work with a new-style charm, though12:44
fwereade_kim0: where are the charms coming from?12:44
hazmathmm12:44
hazmatkim0, are you using charms from version control and pkg from ppa?12:44
kim0fwereade_: yeah .. charms are from trunk12:44
kim0yes12:44
fwereade_kim0: bingo12:44
kim0you got it12:44
hazmatfwereade_, nice catch12:44
kim0I thought it would be a tiny difference :)12:44
* hazmat rebuilds the ppa12:45
hazmatlooks like someone beat me to it12:45
fwereade_kim0, charms will work just fine with the revision in both places, so you can just re-add it to metadata.yaml for now; it won't hurt when you try to run with newer code12:47
fwereade_kim0, it will whine at you a little but that's it12:47
kim0cool! fwereade_ great work :)12:47
kim0I hated manual versions too hehe12:47
fwereade_kim0: (for reference: when both exist, the revision file overrides the value in metadata)12:47
kim0got it12:47
fwereade_kim0, cheers :)12:47
kim0:)12:47
SpamapSLooks like r388 builds w/ clean unit tests in my PPA ..13:03
jcastroSpamapS: are you in your room or in this big room?13:16
SpamapSjcastro: in keynotes now13:20
SpamapSjcastro: I think I'll head back up to the room shortly tho13:22
fwereade_morning niemeyer13:32
niemeyerfwereade_!13:34
hazmathmm.. reflowing text is more involved than i'd hoped13:34
niemeyerhazmat: Hm?13:34
niemeyerhazmat: Good morning :)13:34
hazmatniemeyer, good morning.. doing a display of the schema13:34
hazmatbut their are newlines in the description which break up the formatting13:34
hazmatand then i came across this.. http://www.koders.com/python/fid7886C337B44AD65C83D334544E6CA3E4FBB7E050.aspx?s=timer13:35
hazmatwhich is a unicode aware reflow impl13:35
hazmatactually its not unicode aware13:35
hazmathmm.. maybe it is.. but its still way more than i want13:35
hazmatnot sure i can reflow correctly if there are examples in the description either that depend on formatting13:37
* hazmat surveys extant charms13:37
niemeyerStill waiting for the link to load, so I'm not sure about what this is really about yet13:38
niemeyerhazmat: I'm lacking context I guess.. why are we getting into reflowing text at all?13:38
hazmatniemeyer, just trying to pretty print the schema, pretty.print() doesn't quite do it if there are embedded newlines in the description13:39
hazmati'm using some indentation + newline to separate options, but the description field is freeform13:40
hazmatand breaks up the formatting13:40
* hazmat goes for a punt and some newline separation for context13:40
hazmatniemeyer, pls ignore -> server time :-)13:41
niemeyerhazmat: Sorry, but why aren't we simply dumping the config.yaml?13:42
hazmatniemeyer, try.. a pretty print on a dictionary with values that have embedded new line.. it ends up on a single line13:42
niemeyerhazmat: Ok.. let me try.. $ cat config.yaml..  yeah, looks good?13:42
hazmathmm13:43
hazmati guess i could try pretty printing with yaml instead of the python dict13:43
hazmatno.. still looks pretty bad13:47
hazmatniemeyer, http://paste.ubuntu.com/703396/13:49
hazmatfirst one is yaml dump with indent=4, second one is manually printing13:50
hazmatkeep in mind the data is not from file on disk but from the charm state13:50
SpamapSniemeyer: do we expect anything else to land after r388 ?13:55
hazmatSpamapS, i'd use 391 as a base13:55
hazmatSpamapS, it has the auto incrementing work for upgrade work which makes things quite a bit nicer, as well as the separation of revision into a separate file from metadata13:56
niemeyerSpamapS: Yeah, 391 is the current base13:56
niemeyerSpamapS: My hope is that we'll be looking after bug fixes now only13:56
niemeyerhazmat: The yaml there isn't right..13:56
niemeyerhazmat: It looks ugly because it's inlining the values13:56
niemeyerhazmat: plugin: {description:13:57
SpamapSoh ok13:57
niemeyerhazmat: It can do much better than that automatically13:57
hazmatniemeyer, that was with yaml.dump(schema_dict, indent=4) .. the docs on pyaml aren't very helpful13:58
niemeyerhazmat: I know.. I don't even recall how to print it nicely myself, but I'm sure it's possible and easy13:58
niemeyerhazmat: Let me look13:58
hazmati'll try.. maybe turning off the default flow style13:58
* SpamapS triggers rebuild w/ r39113:58
niemeyerhazmat: I know because I've tweaked the printing in goyaml13:59
niemeyerhazmat: Which is backed by the same code13:59
SpamapSreally a ton of buzz this week around juju14:00
hazmatniemeyer, i switched to 'default_flow_style' off.. http://paste.ubuntu.com/703402/14:00
hazmatwhich gets the key on a separate line, but is still less useable than doing it by hand14:00
hazmatimo14:01
niemeyerhazmat: Do you really want to get into serializing yaml by hand? :)14:02
* SpamapS wonders if that would be doable on mechanical turk ;)14:02
hazmatniemeyer, its just printing k,v in a dict14:02
hazmatniemeyer, we loose the user formatting when we serialize to the charm config node14:03
niemeyerhazmat: Hint: your manual yaml is broken.14:03
hazmatniemeyer, i'm not trying to print yaml.. i'm trying to print human consumable info14:03
niemeyerhazmat: Which we've agreed to print in yaml so far?14:04
hazmatin an easy to digest and normal fashion14:04
niemeyerhazmat: The yaml in that paste looks quite normal and easy to digest.. I'd really prefer to sustain the current convention we have of displaying human consumable information in yaml, since besides being readable and nice to digest it's also machine readable14:06
hazmatniemeyer, fair enough14:07
niemeyerhazmat: The decision we made in status is already paying off.. it's already being processed to do decisions based on the status14:07
hazmatniemeyer, does yaml guarantee key ordering?14:08
niemeyerhazmat: IIRC, maps should not assume a defined ordering14:08
niemeyerhazmat: There are ordered maps as well, IIRC, but we're not using them14:09
niemeyerhazmat: WEll.. there's probably _anything_ you can imagine in yaml, unfortunately :-)14:10
niemeyerIt's the only place I've ever seen a convention for base-60 floats (!)14:10
SpamapSr391 building in PPA https://code.launchpad.net/~clint-fewbar/+archive/fixes/+build/282665614:11
hazmatfun.. i'm sure doing yaml dump will save some unicode problems.. just curious if we can give the user a normalized presentation of description, default, type for a given option or ordering across options14:11
niemeyerhazmat: I suspect it's key-sorting on dump, but I'm not sure14:11
hazmatSpamapS, i hand't noticed  that streaming build log before, nice14:12
SpamapSyeah, keeps me from angrily pacing14:12
niemeyerWow..14:15
niemeyerhttp://blog.golang.org/2011/10/preview-of-go-version-1.html14:16
rogniemeyer: lots of tasty changes there.14:18
fwereade_niemeyer: btw, I have an MP for that deploy bug lying around, but I didn't target to eureka because I had a vague feeling it might be finished14:56
fwereade_niemeyer: what, if anything, should I be doing about it?14:56
hazmatfwereade_, eureka is still open for bug fixes14:56
hazmatnew feature dev is on florence14:56
fwereade_hazmat: ah, cool, thanks14:56
niemeyerfwereade_: What hazmat says14:56
hazmatniemeyer, so do we want to start a new series or separate merge branch for florence till eureka closes, or just hold off on  florence merges14:58
hazmatniemeyer, also we'll need a new kanban14:58
fwereade_niemeyer: also, lp:~fwereade/juju/charm-store-hack appears to work14:58
fwereade_niemeyer: python juju/charm/store -r REPO -k KEY -c CERT -p PORT14:58
fwereade_niemeyer: and edit juju.charm.repository to construct a RemoteCharmRepository with the appropriate url base14:59
fwereade_niemeyer: [edit] python juju/charm/store.py -r REPO -k KEY -c CERT -p PORT14:59
hazmatfwereade_, nice15:02
niemeyerfwereade_: Wow, sweet!15:03
niemeyerhazmat: I think let's hold off at least for this week, and focus on getting the last few fixes/polishes into eureka15:04
SpamapShttps://launchpadlibrarian.net/82132481/buildlog_ubuntu-oneiric-i386.juju_0.5%2Bbzr391-1juju1~oneiric1_FAILEDTOBUILD.txt.gz15:05
SpamapSbuildd failures for 39115:05
SpamapSlooks like a timeout..15:06
niemeyerSpamapS: Indeed15:08
niemeyerSpamapS: Worth a retry15:08
niemeyerSpamapS: The wtf is clean for a while, FWIW15:08
niemeyerSpamapS: http://wtf.labix.org/15:09
SpamapSniemeyer: yeah I don't even try the builds until that is "OK"15:12
niemeyerSpamapS: Sweet15:13
jamespagemorning/afternoon all15:14
jamespageI'm having issues with charm where the charm name contains a number15:15
jamespagefor example - cassandra is fine - but tomcat7 errors15:15
jamespageMessage: Bad charm URL 'local:oneiric/tomcat7': invalid name (URL inferred from 'local:tomcat7')15:15
niemeyerjamespage: I suspect this is a bug in the regex.. rog actually brought that up.. /me checks15:17
niemeyerjamespage: Yeah, it's bogus, sorry about that.. we'll fix15:19
jamespageniemeyer; ta15:20
fwereade_niemeyer, it's not necessarily *quite* as simple as that15:23
fwereade_niemeyer: sorry, I mentioned that in an MP discussion somewhere15:23
niemeyerfwereade_: It's not?15:23
fwereade_niemeyer: we could fix charm names to end with number, but then we need to make sure the final string of number is not preceded by a -15:24
hazmatSpamapS, i've been able to run that test a couple hundred times, haven't reproduced15:24
fwereade_niemeyer: cs:oneiric/foobar-715:24
niemeyerfwereade_: That sounds trivial15:24
SpamapShazmat: given that its building on a virtual host... could just be that it needs a slightly higher timeout.15:24
fwereade_niemeyer: well, it is really15:24
niemeyer:-)15:24
hazmatSpamapS, its not really a timeout per se, its a deferred being called twice, resulting in an uncaught exception, which leads to a timeout15:25
hazmatSpamapS, ie. it would always timeout with that circumstance regardless of timeout length15:25
fwereade_niemeyer: it's just that I reverted to the original regex when I noticed, pending further discussion, which I guess got lost15:25
niemeyerfwereade_: I lost it as well in the buzz, but I'll put another regex in place.. hold on15:26
hazmatSpamapS, hmm.. actually you might be right, its a 2.6 second test as is15:26
hazmatSpamapS, the timeout is causing the deferred to fire early15:26
hazmatSpamapS, i'll take a look, i think we can rework the config set tests to not use the status build infrastructure which is tons more stuff than it needs15:27
_mup_Bug #869272 was filed: charm names should be able to end with a digit <juju:In Progress by fwereade> < https://launchpad.net/bugs/869272 >15:28
fwereade_niemeyer: target to eureka, right?15:29
niemeyerfwereade_: Yeah15:30
fwereade_niemeyer: cheers15:30
_mup_juju/config-set-sans-status r392 committed by kapil.thangavelu@canonical.com15:36
_mup_simplify setup for status tests, takes runtime from 12.5s for 4 tests to 2s15:36
niemeyerfwereade_, hazmat, SpamapS, jamespage: Is this right:15:36
niemeyer"^[a-z]+([a-z0-9-]+[a-z][a-z0-9]*)?$"15:36
fwereade_niemeyer: I *think* so, but I haven't written any tests yet :p15:37
niemeyerfwereade_: Cool, can you take this over?15:38
fwereade_niemeyer: I intend to, but I need to pop out for a while in about 1 minute15:38
hazmatworks for the formulas i have locally15:38
* hazmat tries to remember the url to the latest charms from lp15:39
hazmathttps://api.launchpad.net/devel/charm?ws.op=getBranchTips15:39
fwereade_niemeyer: I'll fix CharmURL when I get back15:39
niemeyerfwereade_: Thanks!15:39
fwereade_laters15:39
hazmatniemeyer, works against all the extant charms on lp15:43
niemeyerhazmat: Super.. and it blocks the bad cases too I suppose (starting and ending with -, starting with digit, and ending with - and digit)15:44
* niemeyer => lunch!15:44
jamespageshould the expose/unexpose commands have context with the local provider?  I assume not as they make no difference :-)15:47
jimbakerjamespage, they are not meaningful for the local provider15:47
jamespagejimbaker: ack - thanks for the confirmation15:48
hazmatjamespage, they don't15:49
_mup_Bug #869289 was filed: Simplify config set tests to reduce runtime significantly. <juju:In Progress by hazmat> < https://launchpad.net/bugs/869289 >15:50
hazmatSpamapS, just put a MP into the queue which should reduce the runtime of those tests by 6x15:50
hazmatthat should hopefully avoid any issues on that particular test case15:50
_mup_juju/config-set-sans-status r393 committed by kapil.thangavelu@canonical.com15:54
_mup_remove commented out bits, oops15:54
negronjlhi guys:  Is there a way to deploy different releases on the same deployment.  Something like this charm on oneiric ( maybe specify ami and size ) and another one on natty ( maybe also specify ami and size ) ?15:55
jimbakerhazmat, i was about to ask about those commented-out bits ;)15:55
negronjlI have some charms that work on oneiric and others that work on natty.  I am wondering if there is a way to use them both by just telling juju to use oneiric for some and natty for some others15:57
hazmatrog, would you mind have a look niemeyer's go branches in review ?15:59
m_3negronjl: +1, but I'd like to specify image-id and instance-type in charm metadata15:59
negronjlm_3: I like that idea too :)15:59
roghazmat: sure. where do i find them?15:59
m_3negronjl: what I've been doing to solve that is just adding logic around `lsb_release -cs` in the charm15:59
hazmatrog, http://j.mp/juju-eureka15:59
hazmatnegronjl, we've added the notion of charm series which i think will correspond to what the distro series used to deploy them is, but its not easily intermixed atm as its an environment setting16:00
negronjlhazmat: Thanks.  Is it somewhere in your roadmap?  Do you know of any work-around to accomplish this ?16:02
niemeyerfwereade_, hazmat: Hmm.. was just thinking over lunch we might do something slightly more restrictive16:04
* niemeyer hacks something quick16:05
hazmatnegronjl, i don't think its functionally that way now, and its not listed on the roadmap atm, i'd need to defer to niemeyer and fwereade_ who've been discussing this.. ie. charm series atm doesn't correspond to distro.. hmm.. i don't see any way to capture this16:05
hazmatatm16:06
negronjlhazmat: ok.  that's too bad but, thanks for the info.16:06
niemeyernegronjl: Yes, charms are specific to a given Ubuntu series16:07
niemeyerfwereade_: In fact, we'll have to address a missing aspect in that regard, I think..16:07
hazmatnegronjl, atm the only way to address is via default-image-id modified between deploys16:08
niemeyerhazmat, fwereade_: "^[a-z][a-z0-9]+(-[a-z0-9]*[a-z][a-z0-9]*)*$"16:08
hazmatniemeyer, yeah.. atm charm series doesn't actually correspond to an image launch against a series afaics16:08
niemeyerhazmat: Yeah, but the idea is really to use the charm URL series for that16:09
negronjlniemeyer: It would be useful to be able to tell juju which release ( ami-id, size ) to use for diff. charms.  ATM I have a hadoop charm that only works on natty ( for now ) and a cloudfoundry charm that only works on oneiric.  It would be useful to be able to demonstrate the two of them without having to destroy the environment between them.16:09
niemeyerhazmat: It's not a big deal since there's a single one today, but that's definitely the intention16:09
niemeyernegronjl: The ami-id will come out of the charm URL series16:09
niemeyernegronjl: Size, etc, is a different issue we'll have to address16:10
niemeyerAnyway.. must go back to lunch, just wanted to propose the regex before fwereade_ worked on it16:10
negronjlniemeyer: thx for the info16:11
hazmatniemeyer, yeah.. we'll need some more leg work for that to happen, machine allocation happens without regard to the unit/charm being placed atm16:11
* niemeyer mumbles something about placement hack..16:12
* niemeyer => lunch, again16:12
hazmat:-)16:12
hazmatthat's not really the problem per se, we just need to propogate more info to the machine state regarding its type/series constraints, placement is just the abstraction layer that it needs to get to16:13
_mup_juju/safer-perms-on-juju-dir r392 committed by kapil.thangavelu@canonical.com16:31
_mup_stricter perms when creating default juju config and juju dir16:31
niemeyerhazmat: It is the problem in that the model is not suitable yet16:35
niemeyerWe'll get there, though16:35
_mup_juju/local-provider-docs r392 committed by kapil.thangavelu@canonical.com16:52
_mup_local provider docs16:52
* hazmat lunches17:08
roghazmat, niemeyer: reviews done17:20
hazmatrog, awesome thanks17:23
hazmatrog, via email?17:24
rogi replied on the comment form. doesn't that send an email to interested parties?17:24
roghazmat: ^17:25
hazmatrog, oh.. it does.. just to vote  on the mp in addition to the comment, right underneath the  textarea you can do a approve/needs fixing/etc on the merge itself17:26
hazmati missed it cause i was scanning the top of the merge proposal for votes17:26
rogdone17:28
niemeyerrog:17:31
niemeyerparts = append([]string{dir.Path}, parts...)17:31
niemeyerappending to parts directly is bad behaviour because17:31
niemeyerit could interfere with any callers that call join17:31
niemeyerrog: I'm not really sure about what you mean there?17:32
rogniemeyer: parts is an argument to the function. append has side effects.17:32
niemeyerrog: This example has absolutely no side effects.. I don't really get what you mean17:32
rogniemeyer: doh, sorry, i'd read it wrong17:34
rogignore!17:34
niemeyerrog: Phew, cool, np :)17:35
niemeyerrog: "Seems to me like the body of this loop would be better"17:37
niemeyerrog: Good idea there, thanks17:37
Zeelotmorning17:39
niemeyerZeelot: Morning!17:39
rogok, a little question. i'm trying to trace through juju actions on bootstrap.18:01
Zeelotso it seems like all the examples use one ec2 instance for each service. How bad of an idea is it to create a charm that installs a full php application onto a single instance? something like php+apache+couchdb+rabbitmq18:01
rogin this file, juju/control/bootstrap.py, it looks as if it's calling the bootstrap function defined in this file: juju/providers/common/base.py18:01
Zeelotis this all just preference of how we want to manage our instances?18:01
rogbut that function just seems to return a list of machines - how does the bootstrap process actually get initiated?18:02
rog(because the run function in juju/providers/common/bootstrap.py just seems to return a list of machines, and not actually do anything)18:03
niemeyerZeelot: php+apache sounds fine.. I'd put couchdb and rabbitmq in separate charms18:03
niemeyerZeelot: Note that this is just the beginning.. we'll be adding support for multiple charms in a single machine in the future18:03
rogwhat am i missing?18:03
niemeyerrog: Let me check18:04
niemeyerrog: Hmm18:06
Zeelotniemeyer: ah, perfect. I'm also wondering, is this just for EC2? So if I am developing on a local environment, I currently use a VM with a basic ubuntu server. Juju isn't going to help me with anything there, is it? So I still have my vagrant + chef/puppet recipes to set up my VM but at that point, why use juju to set up my software on ec2 when I already have my recipes from chef or puppet? I might simply just be misunderstanding the goals for juju18:06
niemeyerrog: I'm not sure how you got to the conclusion that it just runs a list of machines and doesn't do anything18:06
niemeyerrog: The bootstrap method in base.py calls Bootstrap.run, which does more than that18:06
niemeyerZeelot: juju deploys on EC2, OpenStack, Cobbler/Orchestra (physical), and locally through LXC18:07
rogit calls get_zookeeper_machines, but that didn't look like it did much more than interrogate the state for the list of machines18:07
Zeelotalright, I'll have to look at those other things then because I'm not sure what they are :) thanks18:08
niemeyerZeelot: If you already have something else that deploy your software on EC2 in a way you're very happy with, I wouldn't look for anything else :-)18:08
niemeyerZeelot: juju is very different from chef and puppet, though18:08
Zeelotniemeyer: we don't have anything for deploying to ec2 but we are looking into making puppet or chef recipes. If juju can help me also set up VMs, then I am fine with it18:09
niemeyerZeelot: Yeah, that's juju! :)18:09
Zeelotjuju looks like a much more complete solution to deploying to ec218:09
niemeyerZeelot: Not only set up the VMs, but we're working on the full orchestration experience18:09
niemeyerZeelot: Reusable building blocks a command away18:09
Zeelotexcellent18:09
niemeyerZeelot: and scaling up and down, recovery, etc etc18:10
niemeyerZeelot: There's a lot to do still, of course, but the future looks unlike anything else out there18:10
rogniemeyer: i can't see where the actual machine is bootstrapped. is it as a side-effect of find_zookeepers ?18:11
niemeyerrog: Just follow the pipeline18:11
rogi'm trying!18:11
niemeyer        machines = self._provider.get_zookeeper_machines()18:11
niemeyer...18:11
niemeyer        machines.addErrback(self._on_no_machines_found)18:11
Zeelotany useful tips for what I should be reading to get caught up on what I need to do in order to use juju for setting up my VM? Or is that part of a future feature?18:11
niemeyerrog: What happens on no_machines_found?18:11
* rog groans.18:12
hazmatZeelot, docs are pending in the merge queue, but theirs a message on the  mailing list which goes through the basics18:12
rogthat's a bit gross18:12
niemeyerrog: Yeah, I'm happy you're unhappy about it18:12
rogno wonder i couldn't see it18:12
Zeelotalright, thanks18:12
hazmatZeelot, https://lists.ubuntu.com/archives/juju/2011-October/000844.html18:12
hazmatZeelot, complete example of config in this one.. https://lists.ubuntu.com/archives/juju/2011-October/000847.html18:13
hazmatZeelot, that should work fine in a vm as well18:13
Zeelotawesome18:13
Zeelotlooks like I need to learn about LXC first18:14
hazmatZeelot, its basically os level namespacing for isolation.. a jail or chroot on steroids... much less overhead than full virtualization18:17
Zeelothmm, is it possible to use a VM like virtualbox? Mostly a requirement for the developers that work on windows or mac18:18
hazmatZeelot, just to be clear its not for setting up vms, its for a setting up a vm from inside the vm18:18
Zeelotah, then that's probably fine18:18
hazmatit will do isolation of the different services within the vm using lxc18:18
Zeelotinteresting18:19
hazmatits mostly meant for ubuntu physical machines, but it works fine in a virtual machine18:19
Zeelotso then I could simply have a basic ubuntu server VM that I never alter, and use juju to set up dev environments for my various projects?18:19
hazmatZeelot, outside of install juju and doing deploys from within the vm, yes.. you'd be using an environment per project as well probably to get separation between them18:21
Zeelotthanks for the info18:24
jimbakerrog, bootstrap is an example where the inlineCallbacks style works better, especially when the logic gets convoluted - do the bootstrap *if* there's a certain error (EnvironmentNotFound)18:38
jimbakerbut as you see here, it's currently quite convoluted and requires a twisted way of thinking, so to speak18:39
rogjimbaker: i still can't quite see what's going on. ahhh, the crux is returnValue, i think i see now18:44
rogoh, no, i still don't see it18:45
jimbakerrog, i'd be happy to walk you through it18:46
rogactually, i *think* i see it.18:46
rogbut i don't understand why a callback is added that is known to return an error, only to do something on the error.18:46
jimbakerrog, yeah, the logic is certainly more convoluted than what would pass a review now imho18:47
jimbakerrog, also the use of the command pattern with the run, vs just having a function is something that is not helpful18:48
niemeyerrog: Which callback is added that is known to return an error?18:48
rogjimbaker: couldn't you just yield launch_machine or something?18:48
rog_on_machines_found18:49
jimbakerrog, there is nothing in Bootstrap that couldn't just be a single inlineCallbacks function, correct18:50
rogAFAICS the only reason that ErrBack gets called is because _on_machines_found returns an error, which it always will (or is there some subclass subterfuge going on there?)18:50
niemeyerrog: _on_machines_found doesn't return an error18:50
rogniemeyer: oh. so why does errBack get called?18:50
niemeyerrog: errback gets called on errors18:51
rogniemeyer: so where's the error coming from?18:51
rogniemeyer: because without an error, nothing happens, right?18:51
niemeyerrog: Take a moment to read this: http://twistedmatrix.com/documents/current/core/howto/defer.html18:51
jimbakerthe errback is called from get_zookeeper_machines18:51
niemeyerrog: It will help you a lot in your understanding of the code base18:51
jimbakeror i should say, because of it :)18:51
jimbakerso machines in the run function is a Deferred18:52
rogyes, because of returnValue, right?18:52
rogwhich is why we can call addCallback and addErrback, yes?18:52
jimbakerrog, looking at its definition, but not because of returnValue18:52
rogoh18:52
jimbakerthat's just a convention required by the inlineCallbacks decorator18:53
niemeyerrog: returnValue is a hack related to inlineCallbacks18:53
rog    machines = []18:53
rogdoes that make a deferred value?18:53
rogoh, findZooKeepers is inlineCallbacks18:53
niemeyerrog: inlineCallbacks explores Python generators to try to avoid the callback-based logic (addErrback, addCallback, etc) and make the code a bit more linear18:53
rogi'm used to seeing inlineCallbacks functions yield things rather than returning them18:54
hazmatyeah.. its syntatic sugar using python generators under the hood18:54
jimbakerrog, yes, findZookeeper uses the inlineCallbacks decorator. so it wraps the function such that its invocation returns a Deferred18:54
jimbakerthat Deferred in turn is returned (trivially) by get_zookeeper_machines18:54
niemeyerrog: returnValue raises an exception that is caught by the inlineCallback decorator to stop the generator18:54
rogjimbaker: yes, i think i kind of understand that (although i haven't read that document)18:55
niemeyerrog: It's a "return" from a generator, because generators can't return18:55
rogah ok. i see. lovely stuff.18:55
niemeyerrog: I'd call it syntatic salt18:55
jimbakerrog, i highly recommend just looking at the source code of inlineCallbacks, it's pretty straightforward code18:55
rogrofl18:55
jimbakerin the sense that setting up trampolines can be18:55
niemeyerjimbaker: WHAT?18:56
rogjimbaker: i will some time. i get  the principle.18:56
niemeyerROTFL18:56
rogit's a kinda beautiful subversion of a few language features18:58
jimbakerrog, sounds good. one convention you will notice in our code is that we don't do use inlineCallbacks if we are just returning a Deferred (eg the passthrough in get_zookeeper_machines)18:58
niemeyerrog: http://paste.ubuntu.com/703548/18:58
rogjimbaker: yeah, that confused me18:58
jimbakerrog, i understand18:58
niemeyerrog: Look at that, and pay attention next time jimbaker tells you something is straightforward18:58
rogi understand what's going on now. the interplay between deferred stuff and exceptions wasn't... obvious.18:59
rogexc_info()[2].tb_next19:00
rogno that's not straightforward as i would understand the term19:00
jimbakerrog, a good reason not to just pass through is if you want to do something that logically occurs after a value that you would return19:00
jimbakerrog, hah, i didn't say straightforward meant easy19:01
jimbakerfor what it needs to do, it's straightforward19:01
rogjimbaker: i'll take it from you19:01
niemeyerjimbaker: Yeah, you meant straightforward as in extremely involved19:01
rogwell, it's less than 100 lines of code19:02
rogwell, having suffered that enlightenment, i shall go and cook some curry19:03
niemeyerrog: and most of them are comments even ;-)19:03
niemeyerrog: Do check the documentation about deferreds out later/tomorrow19:03
jimbakerrog, and it's also do something helpful - trying to diagnose improper use of returnValue, using the fact that the traceback can be interrogated19:03
niemeyerrog: It'll help a lot on your understanding of the base19:04
rogjimbaker, niemeyer: thanks for holding my hand through that. i feel.... better.19:04
jimbakeragain, for what it is trying to do, it's straightforward19:04
niemeyerjimbaker: Yeah.. a lot more straightforward than parsing apt-cache's output for sure19:04
jimbakerniemeyer, :( it helps to know what it should be, enough said. parsing is the easy part19:05
niemeyerOMG, what a feeling of emptiness on the eureka kanban19:06
_mup_juju/local-provider-docs r393 committed by kapil.thangavelu@canonical.com19:06
_mup_missing doc file, doh19:06
niemeyerhazmat: Danke :)19:07
rogniemeyer: ping re merge requests, BTW19:07
niemeyerrog: Cool19:08
niemeyerrog: Cheers19:08
hazmatbcsaller, jimbaker, fwereade_ even though there's no items on the kanban, i've just been going through low hanging bugs in the general queue.. till we get some new ones19:08
hazmatthere's alot to choose from19:08
rogsee y'all tomorrow19:08
jimbakerhazmat, ok, we might want to reserve some of them19:08
hazmatjimbaker, its better to pick them as your doing them, else we end up with reserved queues which serve no purpose except delay19:09
jimbakerhazmat, should have been more precise, reserve one per person :)19:10
jimbakeras in assigned19:10
hazmatjimbaker, sure.. but people need to self select what they want to tackle19:10
jimbakerhazmat, again sorry for my lack of clarity, this is what i meant19:11
niemeyerfwereade_: It's a bit late for you.. do you want me to handle the regex stuff?19:11
jimbakerhazmat, ok, i will do juju scp, low hanging and useful19:14
hazmatjimbaker, hmm.. thats actually a feature not a bug19:14
hazmatjimbaker, definitely would be nice, but we're trying to be feature freeze, bug fix only19:14
hazmattill next week and oneiric is out19:15
jimbakerhazmat, should this include branches that escaped review because they didn't have a milestone on it, like this trivial from SpamapS: https://code.launchpad.net/~clint-fewbar/juju/remove-default-ami/+merge/71278 ?19:20
hazmatjimbaker, i just push those to the correct milestone so they show up on the kanban19:20
jimbakerok, i will mark the corresponding bug for eureka then19:21
niemeyerhazmat: hmm.. what's the next milestone's name? florence?19:22
niemeyerhazmat: I'll put the kanban to build19:22
hazmatniemeyer, yup19:22
niemeyerCool19:22
jimbakerhazmat, i think we can do a fix released on bug 81064819:30
_mup_Bug #810648: The revision number in formula metadata is not very useful to users <juju:New> < https://launchpad.net/bugs/810648 >19:30
hazmatniemeyer, done19:31
jimbakerjust passing through, this looks like a good feature for florence: bug 81497419:32
_mup_Bug #814974: config options need a "file" type <juju:New> < https://launchpad.net/bugs/814974 >19:32
hazmatniemeyer, actually i'm not sure19:32
fwereade_niemeyer, just back: everyone's asleep, and I'd find it relaxing, if you haven't already done it19:32
hazmatniemeyer, its still a problem for a regular deploy19:32
hazmatniemeyer, definitely addressed part of it19:33
hazmatniemeyer, it will silently use the already env stored formula ignoring the one on disk19:33
hazmatwhich may have newer changes19:34
jimbakerbug 816621 looks invalid to me, based on the comments19:34
_mup_Bug #816621: Juju doesn't appear to set up a complete environment while running the installation scripts and hooks <cloudfoundry:New> <juju:New> < https://launchpad.net/bugs/816621 >19:34
niemeyerfwereade_: Haven't started it yet19:34
niemeyerhazmat: Sorry, ECONTEXT19:35
niemeyerhazmat: What are you referring to again?19:35
hazmatoh.. sorry jimbaker mentioned it .. i lost econtext19:36
jimbakerhazmat, i'm not certain what the context is, either, since i mentioned a number of bugs here ;)19:37
niemeyerhttp://j.mp/juju-florence is up19:38
hazmatniemeyer, great, thanks19:38
niemeyerfwereade_: Please note I've suggested a follow up regex that has probably scrolled up already19:39
niemeyerfwereade_: I can dig it again if you want19:39
niemeyerfwereade_: It's slightly more restrictive than the initial suggestion19:39
niemeyerfwereade_: But avoids things like foo------bar19:39
niemeyerfwereade_: and foo-32-bar19:39
jimbakerstill one usage of ensemble in trunk, debian/ensemble.docs - required to be that for any reason?19:55
niemeyerhazmat: have a sec for a quick review: http://paste.ubuntu.com/703602/20:49
hazmatniemeyer, is that the same regex from earlier today on the channel?20:50
niemeyerhazmat: It's the second one I mentioned in the channel20:51
niemeyerhazmat: Not the one you've run against existing formulas20:51
niemeyerhazmat: This is slightly more strict20:51
niemeyerhazmat: It forbids things like a--b20:51
niemeyerhazmat: and a-1-b20:51
niemeyerhazmat: But allows a1 and a1-b220:51
hazmatbut it allows n1-a1-n1 ?20:52
niemeyerhazmat: and even a1-2b20:52
niemeyerhazmat: Yeah20:52
niemeyerhazmat: Just the number can't be by itself without an accompanying char20:52
niemeyerhazmat: Nor can two dashes be seen next to each other20:52
hazmatniemeyer, sounds good, un momento going to try and break it ;-)20:52
niemeyerhazmat: Woot20:52
niemeyerhazmat: It forbids single letter names as well, which doesn't sound like a bad idea :-)20:53
niemeyerHmm.. actually.. it does sound like a bad idea20:54
niemeyerBecause it forbids a-foo20:54
* niemeyer changes20:54
niemeyerhazmat: Just changed the first + to a *20:54
hazmatniemeyer, cool20:55
hazmatniemeyer, looks good, we should have this documented in the formula author guide as well20:55
niemeyerhazmat: Hmm.. maybe.. but at the same time we can just say "use sensible names" :)20:56
hazmatwell lower case, must begin with a letter, can use numbers following letters, can use single hyphens between characters and numbers20:57
hazmatsensible is a state of mind ;-)20:57
niemeyerhazmat: Will mention it21:00
niemeyer(_formula_ author.. huh huh)21:00
niemeyerhazmat: http://paste.ubuntu.com/703606/21:02
niemeyerHmm.. the revision should be taken out21:02
* niemeyer does it21:02
hazmatniemeyer, sounds good21:03
niemeyerhazmat: http://paste.ubuntu.com/703607/21:03
niemeyerCool, cowboying it21:03
hazmatniemeyer, this thing gets bigger by the second ;-)21:03
hazmat+121:03
niemeyerhazmat: Yeah, I'll commit before this beast gets out of control!21:03
hazmatbcsaller, jimbaker if either of you have a moment, i'd appreciate a look over the local provider docs21:04
hazmatjimbaker, did rebooting after yanking that firewall software help?21:04
jimbakerhazmat, will do21:04
jimbakerhazmat, i didn't try a reboot21:04
hazmathttps://code.launchpad.net/~hazmat/juju/local-provider-docs/+merge/7846521:04
_mup_juju/trunk r392 committed by gustavo@niemeyer.net21:06
_mup_Fixed charm name URL so that mambo5 works as a name. Also documented21:06
_mup_the name format and removed revision from docs.  [r=hazmat]21:06
niemeyerStepping out for shaking the bones21:07
jimbakerhazmat, ok, i will try rebooting. after that, if it doesn't work, time to rtfm ;)21:10
hazmatjimbaker, you can probably verify pre reboot from sudo iptables --list21:10
hazmatrules which drop packets might be interferring21:11
jimbakerhazmat, hmmm, i guess it's possible these rules could cause issues - http://pastebin.ubuntu.com/703611/ - zk is running on the actual machine (so 192.168.0.106) iirc, whereas the agents are on lxc containers in the 192.168.122.0 network21:21
jimbakerlet's try a reboot anyway...21:23
jimbakerback21:26
jimbakertime to get coffee, i will check the local deployment shortly21:28
jimbakerhazmat, guess what, the reboot worked this time22:02
hazmatjimbaker, sweet!22:02
jimbakerhazmat, i suppose the iptables settings are transitory, in how they are managed by firestarter22:03
jimbakerstill need to rtfm, but definitely on the end of the queue now22:03
_mup_juju/trunk r393 committed by kapil.thangavelu@canonical.com22:04
_mup_merge config-set-sans-status [r=bcsaller,jimbaker][f=869289]22:04
_mup_Minor test optimization for config-set to get it under timeout threshold22:04
_mup_on low powered vhost used for automated test running.22:04
jimbakerhazmat, anyway, really glad we have the local stuff working, there were lots of branches involved, but the codebase specifically for local support is pretty minimal. nice.22:04
_mup_juju/safer-perms-on-juju-dir r393 committed by kapil.thangavelu@canonical.com22:24
_mup_update per review comments22:24
Aramhi.22:26
hazmatAram, hi22:34
_mup_juju/trunk r394 committed by kapil.thangavelu@canonical.com22:37
_mup_merge safer-perms-on-juju-dir [r=bcsaller,jimbaker,niemeyer][f=869289]22:37
_mup_Tighten up permissions up on default creation of environments.yaml and ~/.juju dir.22:37
hazmatSpamapS, did you want to merge the removal of the deb packaging? i just pushed into the review queue.. but wanted to double check23:24
hazmatreally need an interface repository23:46
jimbakerhazmat, i think we can mark this bug as fix released too: bug 81064923:50
_mup_Bug #810649: Revision number should be optional in metadata <juju:Confirmed> < https://launchpad.net/bugs/810649 >23:50
hazmatjimbaker, i realized its not quite the same23:54
hazmatjimbaker, the auto-increment stuff requires an upgrade23:55
hazmatjimbaker, common case is to just want to deploy a new service as you edit23:55
hazmatjimbaker, its probably as good as we'll have it for a little while though23:55

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