/srv/irclogs.ubuntu.com/2013/10/10/#juju-dev.txt

* fwereade wishes axw was here, I've suddenly thought it would be a really good idea to drop null providers from environments.yaml entirely00:00
fwereadeit's probably time for me to go to bed, if it's actually sane I'll probably remember it in the morning00:01
wallyworldhopefully you'll wajke up and release will be good :-)00:01
wallyworlddavecheney: any chance of confirming that this works for you? https://pastebin.canonical.com/98846/00:05
* davecheney look00:25
davecheneyha, and you called my hack gross00:25
davecheney:)00:25
davecheneygive it a go00:25
davecheneycan't make it any worse00:25
wallyworldthis hack won't change cli though00:37
wallyworlddavecheney: if it works: https://codereview.appspot.com/1459204400:57
marcoceppi_anyone around?01:21
hazmatmarcoceppi_, whats up?01:22
marcoceppi_hazmat: any idea of `juju bundle` is going to be used at all in the near future?01:22
marcoceppi_ s/of/if/01:22
hazmatmarcoceppi_, there's some discussion for bundle v2 @ the sprint01:24
hazmatmarcoceppi_, afaik no use, what were you thinking of?01:25
marcoceppi_hazmat: okay, I've got plans to land a juju-bundle plugin I might hold off on that name for now01:25
hazmatmarcoceppi_, bundle plugin that would export a bundle?01:25
hazmatmarcoceppi_, there's already one of those in deployer fwiw01:25
marcoceppi_hazmat: I'm adding bundle support to charm-tools, ie `juju charm create --bundle`, wanted to make `juju bundle create` an alias of charm with --bundle flag01:26
hazmatmarcoceppi_.. hmm.. i think there's likely some confusion there with exporting a bundle01:26
hazmatmarcoceppi_, not sure i understand the value of an empty bundle though01:27
hazmatits not just a single file but the metadata format that gui is pushing?01:27
hazmatie. a dir and icon and export file?01:27
marcoceppi_hazmat: this would create a directory with a README on how to create bundles from the gui01:27
marcoceppi_hazmat: gui stuff01:27
marcoceppi_hazmat: also adding proof support for GUI bundles01:27
marcoceppi_I feel bundles are too commonly used for too many things01:28
hazmatmarcoceppi_, that's bad because?01:28
marcoceppi_hazmat: the bundle name, not the deployer config stuff itself :)01:28
hazmatmarcoceppi_, re the dir thing and readme, that sounds like it belongs the in the new gui help system01:29
hazmatie i don't generally go to the commandline to seek help on the gui01:29
hazmator perhaps in the docs01:29
hazmatmarcoceppi_, fair enough.. i'd love to see them back with their original name.. 'stack'01:30
marcoceppi_hazmat: good point, I might defer that portion and simply update proof to proof bundles. As for creating, I orininally spec'd that for charm-tools since there was mention of README, icon.svg, and bundle.yaml01:30
hazmatbut sadly too much baggage atm re stack01:30
marcoceppi_but the icon.svg req was dropped01:30
hazmatmarcoceppi_, yeah... the only place that spec is used is the unpublished/undocumented used internally by charmworld afaik01:31
hazmatalmost every real world bundle is just a yaml/json file01:31
hazmatargh.. grammar fail late night01:31
marcoceppi_hazmat: right, up until next week when bundles land in the gui and they expect a readme and bundle file01:31
hazmatmarcoceppi_, ic. hence the proof support01:32
hazmatmarcoceppi_, the create thing sounds like it would be better done as an addition to the doc01:33
marcoceppi_hazmat: right, proof and promulgation support01:33
hazmatthe gui has some significant issues with its bundle exports last i looked01:33
hazmatmarcoceppi_, the promulgation should just work the same as charms afaicr01:33
marcoceppi_hazmat: I'm going to defer the create stuff, since both promulgate and proof can determine if it's a charm or bundle automatically01:33
marcoceppi_hazmat: right, with the exception it's lp:~charmers/charms/bundles/<name>/bundle01:34
marcoceppi_hazmat: which is easy enough to sort out01:34
hazmatnamely it exported default config as explicitly set config, and some exporting of empty constraints.01:34
hazmatmarcoceppi_, cool01:34
marcoceppi_hazmat: I'm not aware of any of those issues01:34
* marcoceppi_ just needs to make sure proof and prom work01:35
hazmatmarcoceppi_, try an export in the gui, view the output, notice that all the config options are set01:35
hazmateven though none where actually changed from the charm default01:35
marcoceppi_hazmat: will give it a go01:35
hazmatjust filed a bug on it01:38
hazmatbug 1237739 fwiw01:39
hazmatthe empty constraints thing looks like its solved on comingsoon though not on jujucharms.com01:44
davecheneyjuju lucky(~/src/launchpad.net/juju-core) % juju ssh p1/001:58
davecheneyERROR unit "p1/0" has no public address01:58
davecheneygetting this quite a lot lately01:58
sinzuiwallyworld, did you say that sync-tools can send tools to a testing location, such as /juju-dist/testing/tools?01:59
wallyworldsinzui: i think user specified destination can currently only be a local directory01:59
wallyworldotherwise it uploads to control bucket in the "proper" location02:00
wallyworldlet me quickly check02:00
sinzuiwallyworld, that's all fine. I will use swiftclient to deliver the tools to /juju-dist/testing as I did last week02:01
wallyworldok02:01
wallyworldwe can add something to the tool if needed02:01
wallyworlddavecheney: is the logging change any good?02:02
davecheneywallyworld: try it now02:03
davecheneywil be a while02:03
davecheneyeverything is slow02:04
wallyworld:-(02:04
axwsinzui: 1.16.0 isn't cut yet right? fwereade OK'd merging in https://bugs.launchpad.net/juju-core/+bug/1235716 overnight02:12
davecheneywallyworld: what si the MP for that change ?02:13
sinzuiaxw, you can add to it.02:13
davecheneyagain02:13
davecheneysorry02:13
axwbueno02:13
wallyworlddavecheney: https://code.launchpad.net/%7Ewallyworld/juju-core/default-debug-logging/+merge/19028202:16
davecheneyta02:18
davecheneytesting now02:19
jpdsGuys, is there any away I can tell juju to just download the precise-amd64 tools AND NOTHING ELSE?02:27
jpdsI'm not deploying saucy-armhf any time soon.02:27
wallyworldjpds: this is when bootstrapping i assume02:27
jpdswallyworld: Yes.02:27
wallyworldthe logic to get all series has been around forever. it's not currently possible afaik02:28
wallyworldhow critical is it?02:28
jpdsNot critical, I'm just on a super slow link here and I just need one of the tools.02:29
wallyworldyeah, understand02:29
wallyworldyou could download just the one and then sync-tools manually02:30
wallyworldthen when you bootstrap, it will find it and not attempt to download anything else02:30
jpdsSo, how do I do that?02:31
davecheneywallyworld: works perfectly02:31
davecheneythank you for fixing it02:32
wallyworlddavecheney: \o/02:32
wallyworldjpds: get the tarball, copy it to <someplace>/tools/releases, then run juju sync-tools --source=<someplace>02:32
wallyworlddavecheney: if you can lgtm that would be great02:32
wallyworldjpds: that will upload that one tarball to your control bucket02:33
wallyworldwhich is one of the places bootstrap looks02:33
jpdshttps://pastebin.canonical.com/98849/02:33
wallyworldso it will be found02:33
davecheneysoordered02:33
wallyworldwow 18kbps02:34
wallyworldfast, not :-(02:34
wallyworldsinzui: i am about to land a logging fix for davecheney. is it too late to include that in 1.16?02:35
jpdswallyworld: It can trail at <1kB/s.02:35
wallyworldwow02:35
wallyworldjpds: this should make it so no outside net access is reuired02:35
jpdsYeah, it'll make my life so much easier.02:36
jpdsNow the customer is complaining that juju needs to download too much stuff from the internet.02:38
wallyworldonly the tools, and this will fix that02:38
wallyworldjpds: the doco for all this obviously needs to be written02:38
sinzuiwallyworld, no.02:38
wallyworldwe need a "how do i set up my private cloud" faq02:38
jpdsI want to complaing about places in sub-Saharana Africa having a better net connections.02:39
wallyworldsinzui: i've proposed for trunk. i'll put up a mp for 1.16 and then land02:39
jpdswallyworld: That would be nice.02:39
jpdsAll this stuff is just shoved in my head at the moment.02:40
wallyworldjpds: as with these things, the code comes first to make ti woek, then the doc follows02:40
wallyworldwe are all scrambling to make the 1.16 cut off02:40
wallyworldwe do know the doc needs to be written02:41
wallyworldmaybe one day we can shove a usb cable in our neck and it will all just flow out02:41
davecheneyall: if I do relation-set in a hook03:01
davecheneythen relation-get in the same hook without commiting the hook03:01
davecheneywill I be able to see the value I just set ?03:02
wallyworldsinzui: the logging change has merged03:12
sinzuithank you wallyworld03:23
wallyworldhopefully everything works ok :-)03:23
wallyworlddave tested it so should be good03:23
jpdswallyworld: Is 'juju sync-tools --source=' only in devel?03:25
wallyworldjpds: it was included before 1.16 branched03:25
wallyworldwhat version are you running?03:25
jpds1.14.03:25
jpdsstable.03:25
wallyworldoh. i'm not sure what's in that version. give me a sec to have a look03:26
wallyworldjpds: actually for 1.14, i'm not sure that using the private storage is even an option :-(03:27
jpdsI have a /home/ubuntu/tools/releases/juju-1.14.1-precise-amd64.tgz03:27
wallyworldi'll check03:27
wallyworldjpds: a quick look tells me that --source should work03:30
jpds$ juju sync-tools -v --source=/home/ubuntu/03:31
jpdserror:: no available tools.03:31
wallyworld1.14 may have required the tools just to be under tools not tools/releases03:32
wallyworldtry putting the tarball in /home/ubuntu/tools03:33
wallyworldthe releases location is a simplestreams thing03:33
jpdsThere we go.03:33
wallyworldand 1.14 did not fully support that when it was created03:33
wallyworldjpds: i have to go to the school - my kid has left his viola at home. do you need to ask anything or is it going ok with the tools uploaded? i'll be back soon anyways03:45
jpdswallyworld: Yes, it's bootstrapping.03:45
jpdsThanks!03:46
wallyworldgreat!!03:46
wallyworldnp03:46
bradmdavecheney: any ideas on a ETA for the squid charm merges I proposed?  I'm needing to do other work on the charms, and it'd be nice to not have to work around the unmerged code06:00
fwereadedavecheney, yes, you should be able to07:24
rogpeppemornin' all07:51
axwmorning rogpeppe07:52
axwand fwereade07:52
mattywfwereade, morning, don't suppose you can elaborate on the meaning of this comment? https://codereview.appspot.com/14389043/diff/9001/cmd/juju/helptool_test.go#newcode3707:54
axwmattyw: he loves it? :)07:55
fwereademattyw, it means "thank you, I sincerely appreciate you fixing this"07:55
fwereadeaxw, rogpeppe: heyhey07:55
mattywfwereade, axw  ok thanks :)07:55
fwereadeaxw, so, I'm sorry about the sudo password thing, I should probably have just approved it straight off... did you get an opportunity to get it in for 1.16? (and... eh, can *you* think of any way to use the values we ought to..? at all?)08:02
axwfwereade: not a problem - it's merged08:02
axwfwereade: I haven't come up with any good ideas08:02
axwfwereade: "any way to use the values we ought to?"08:03
axwnon capisco08:03
fwereadeaxw, sorry, to use the command context's stdin/out/err08:03
axwoh right08:03
axwfwereade: the only thought I had was to have some central package in juju, akin to "os", that has a pseudo Stdin/Stdout/Stderr08:04
axwbut... not really sure if that's any better than using os :)08:04
fwereadeaxw, eh,replacing one global with another ain't so great really08:04
axwindeed08:04
fwereadeaxw, there may be a case to be made for requiring a cmd.Context (OSContext or something maybe?) in a whole bunch more places... eg access to env vars is not usefully restricted, and they're even more global than globals08:06
fwereadeaxw, tedious to have to thread that through everywhere though ofc08:06
axwfwereade: hmm yeah good point on env vars.08:07
axwfwereade: when is ctx.Stdout ever going to be something other than os.Stdout? only for tests?08:08
fwereadeaxw, in jujuc commands it's not08:08
fwereadeaxw, they don't create envs/env configs though, so not really very relevant08:09
axwfwereade: ah yes.08:09
axwfwereade: not sure if it was quite obvious, but sshstorage's requirement is extra special: stdin must be a tty/pty08:10
axwfor remote sudo08:10
fwereadeaxw, ha, yes08:11
axwand its use of stdout only makes sense if it's interactive08:11
fwereadeaxw, rogpeppe, wallyworld: ok, I'm now thinking about the manual-bootstrap default-series problem08:20
wallyworldi'm not familiar with the issue08:20
axwwallyworld: https://codereview.appspot.com/14433058/08:21
fwereadeaxw, rogpeppe, wallyworld: it fails if default-series doesn't match the actual series of the bootstrap machine08:21
axwwallyworld, rogpeppe : gist is: null provider's bootstrap machine should dictate what the boostrap tools are08:21
axwbut bootstrap tools are always default-series08:22
fwereadeaxw, rogpeppe, wallyworld: and this is because we restrict the possibleTools we pass in by that series, even though there's no real reason to08:22
wallyworldyeah, i've always had doubts about our approach08:22
fwereadeaxw, rogpeppe, wallyworld: and ISTM that this is because we didn't manage to finish getting tools out of that interface entirely08:22
fwereadeaxw, rogpeppe, wallyworld: they should never have been there in the first place, but turning it completely inside out was too much work08:23
wallyworldi sorta kept them in the interface because that's how it was and i didn't want to change too much08:23
fwereadeaxw, rogpeppe, wallyworld: yeah, indeed, but I think we're now at the point where we have to push further there08:24
wallyworld+1 to that08:24
* wallyworld is about to eat dinner, bacl later08:24
fwereadewallyworld, enjoy08:24
rogpeppefwereade: sorry, i'm not quite with you here. what are you proposing to change?08:24
fwereaderogpeppe, I think we shouldn't be passing possibleTools into bootstrap (or really StartInstance for that matter)08:25
axwfwereade: one problem I can think of immediately, is how to ensure tools are in storage08:26
fwereaderogpeppe, does that make approximate sense, independent of the question of how we might get there from here?08:26
axwthat fun bit of code we were looking at yesterday08:26
fwereadeaxw, yeah, I think that code is just in the wrong place08:26
rogpeppeaxw: that's a good question08:27
rogpeppeaxw, fwereade: what if StartInstance itself was responsible for ensuring the tools are there?08:27
fwereaderogpeppe, I'm not 100% sure about StartInstance, but Bootstrap almost certainly should be08:27
axwthis would have to lead to --upload-tools disappearing08:28
rogpeppeaxw: really?08:29
axwand rely on sync-tools if you want to do those kinds of things08:29
rogpeppeaxw: i'm not sure i see the reasoning there08:29
axwrogpeppe: what would --upload-tools do if Environ.Bootstrap is responsible for ensuring tools are in storage?08:29
axwor you have the logic in two places08:29
axwI suppose08:30
rogpeppeaxw: they can potentially re-use some of the same logic08:30
fwereadeaxw, rogpeppe: I think that --upload-tools could probably still work -- putting the tools is conceptually independent of choosing them I think08:31
fwereadeaxw, rogpeppe: but the auto-sync logic would need to move inside bootstrap08:32
fwereadeaxw, rogpeppe: and I think we'd need to untangle upload from sync tomake that sane08:32
axwfwereade, rogpeppe: fair enough. you could upload in the command, and do the rest in bootstrap08:32
rogpeppefwereade: agreed. that would be a good thing anyway imho08:32
fwereaderogpeppe, +100008:33
fwereadebugger, I need to help cath a bit08:34
axwand I need to get dinner on08:34
axwbbs08:34
rogpeppeit would be nice if StartInstance would be responsible for fetching tools on demand; then we wouldn't need to push all that stuff up front08:35
rogpeppehowever, i'm not sure it's possible, as i don't think there's any way of syncing tools concurrently08:35
jamespagemorning folks! hows 1.16.0 looking?   milestoned bugs list looks great to me08:46
fwereadejamespage, I have not heard from sinzui since last night, but he said he was doing preliminary tests without the last (logging config) bug -- so I hope that if there had been problems I would have heard09:16
mattywfwereade, do you have a moment?09:18
fwereademattyw, sure09:18
mattywfwereade, thanks. just looking at your comment here https://codereview.appspot.com/14389043/diff/9001/worker/uniter/context.go#newcode69. I like the idea of putting all the args into a stuct, but it would look very similar to the HookConext struct which it builds anyway09:19
mattywso I'm wondering if there's much value in taking the args in as a struct?09:20
fwereademattyw, ha, yes, it would, wouldn't it09:20
fwereademattyw, the value is in documenting the meanings of the params, I guess09:22
fwereademattyw, but I'm not sure it's that valuable really09:22
fwereademattyw, just one client09:22
fwereademattyw, but then it is an exported func09:23
fwereademattyw, how about unexporting it? and adding a NewHookContext passthrough in export_test?09:24
fwereademattyw, or we could just say "this bit's a bit smelly" and move on09:24
fwereademattyw, if the unexport idea doesn't immediately strike you, personally, as a good idea, feelfree to leave it as it is09:24
mattywfwereade, I'll let the marinate for a bit, in the meantime I'll propose the changes I've made for the other comments if that's ok?09:27
fwereademattyw, sounds great, thanks09:28
axwsomeone on #juju having issues with OS X, if anyone has the time/knowledge09:31
axwhe's trying trunk to get past the EC2/VPC bug09:32
teknicohow do I get juju to show more output from hook errors?09:37
fwereadeTheMue, you're probably the man to respond to axw's suggestion09:42
axwfwereade: I think it's an impasse09:43
axwhe's trying to run 1.17.009:43
fwereadeteknico, if the env is already running, `juju set-env logging-config="<root>=DEBUG"`09:43
axwwell, trunk09:43
axwwhich can't find released tools, so tries and fails to upload09:43
fwereadeaxw, hum, yeah, that's need tools built09:43
mattywfwereade, whenever you're ready https://codereview.appspot.com/14389043/ thanks09:43
teknicofwereade: thank you, trying that09:44
TheMueaxw: will contact him09:48
fwereademattyw, ha, I just spotted something, I feel dumb now -- micro-review sent09:51
mattywfwereade, if I put it in the service doc doesn't that mean it goes into mongo? I thought we were trying to avoid that for the moment?09:54
fwereademattyw, the method can still return what we return from the service though, right?09:56
fwereademattyw, no need for a field yet09:56
fwereademattyw, I'm just thinking of where we put the logic09:57
mattywfwereade, do you mean I could just do OwnerTag: svc.GetOwnerTag() in megawatcher.go:134?10:06
mattywand then make GetOwnerTag() a method on serviceDoc - until we implement it properly?10:06
fwereademattyw, essentially, if you just put that method onto serviceDoc instead of Service10:06
fwereademattyw, yeah exactly10:06
fwereademattyw, you can even keep it on serviceDoc indefinitely I think10:07
fwereademattyw, just call through from Service10:07
mattywfwereade, there don't seem to be any other method on serviceDoc, so this would be the first?10:07
fwereademattyw, it would -- I'm not sure whether it's better as a method or a freefunc10:08
rogpeppefwereade: you've gone...10:20
mrammhttps://launchpad.net/juju-core/+milestone/1.17.010:21
fwereaderogpeppe, so it seems, I have been having some luck lately with sshuttle, thought it was goodenoughfornow10:21
rogpeppefwereade: :-(10:21
mattyw:b310:22
mattyw^^ that was meant for vim10:22
mattywfwereade, sorry me again :), is this basically what you had in mind? http://pastebin.ubuntu.com/6217438/10:32
mattywfwereade, you probably missed me asking if I roughly had the right idea here  http://pastebin.ubuntu.com/6217438/10:53
natefinchTheMue: do you drink coffee?  trying to plan for how much coffee to bring to SF.  I roast my own coffee and don't want to have to live off hotel coffee for a week.11:05
TheMuenatefinch: hey, cool. yes, i like coffee very much. sounds fantastic.11:06
natefinchTheMue: awesome.   I'll make sure to bring a few different kinds.11:07
TheMuenatefinch: having a coffee gourmet as roomie has been a good decision. :)11:07
natefinchTheMue: haha yep.  I have like 10 different varieties of beans at home right now., I buy them from here:  http://www.sweetmarias.com/prod.greencoffee.mvc.php11:10
mgznatefinch: that's slightly unbelievably coffee-snobish :)11:11
natefinchmgz: it's a hobby.  it helps that buying unroasted beans is 1/2 the price, and they're shelf stable for up to a year11:11
natefinch:)11:12
mgzit sounds fun, right up to the point where you have to start travelling with roasting and grinding apparatus :)11:12
natefinchwell, I won't be roasting in SF... it produces a bunch of smoke, I think the hotel would get mad at me... that and the roaster is rather large.11:13
natefinchI haven't decided what to do about grinding. Ideally you grind immediately before brewing, but my grinder weighs like 8 pounds11:14
natefinchI may have to suck it up and grind ahead of time like some sort of plebe11:15
TheMuejam, fwereade: unset is now exposed. a review of https://codereview.appspot.com/14439053 please11:40
TheMueor anyone else11:41
fwereadeTheMue, LGTM, thanks11:44
jamfwereade: TheMue: reviewed11:44
jamTheMue: it would be nice to have 1 more test, but I wouldn't block landing that for 1.16.11:45
TheMuejam: unset has so few options, had no idea what to test more ;)11:47
jamTheMue: just 'juju unset --help"11:47
jamwhich is the only way *I've* found of reliably asserting you've actually registered the command.11:48
TheMuejam: sound good, yes, will keep it in mind. just oriented at the set command11:48
TheMuefwereade: need some help, merging it in trunk is well known to me. but how do i get it in 1.16?11:52
TheMuejam: or you?11:56
jamTheMue: "lbox propose -for lp:juju-core/1.16"11:56
jambut you need to build it from "lp:juju-core/1.16"11:56
jamand then the same "Mark Approved, set commit message"11:56
TheMuejam: thx, and shit, built it from trunk11:57
jamTheMue: so generalyl something like "bzr branch lp:juju-core/1.16 $SOMEWHERE"; bzr switch $SOMEWHERE; bzr merge $EXISTING_BRANCH -c -1, bzr commit -m "Just the cmd_unset change"; lbox propose -for lp:juju-core/1.1.611:58
jamthe merge might need to be a bigger range11:58
jamif you have more than one commit11:58
TheMuejam: no, just one commit11:59
TheMuejam: will try now, thx11:59
TheMuejam: don't get it with the switch, where do i have to call it? because from where i've done the branching or inside the branch it doesn't work12:06
* TheMue feels like a bazaar noob12:06
jamTheMue: use whatever mechanism you usually do to create a new branch, just base it from "lp:juju-core/1.1.6"12:06
jam`1.16" of course12:06
TheMuejam: yeah, branch is created12:07
jamTheMue: so for the merge you can do: bzr merge -c -1 lp:~themue/juju-core/052-expose-unset12:07
jamyou don't have to do the switch, it is just what *I* do to create a new branch and point src/launchpad.net/juju-core to it12:08
TheMueic12:08
TheMue"All changes applied successfully." welcome to the world of branching and merging.12:11
TheMuejam: so, now proposed. now approving with message.12:16
TheMuejam: done. and for trunk? simply approve the first one too?12:17
jamTheMue: so we can do it that way. The way *I*'ve done it on other projects was to just continually merge a stable branch => trunk (so once your patch lands on 1.16, then merge 1.16 => trunk)12:18
* TheMue has to write this down in his work process document12:18
jamTheMue: but there is a bit of discussion as to whether we are landing on trunk and backporting12:18
jamor landing on stable and merging up12:18
jam*I* like the latter, but I was part of developing bzr :)12:18
TheMueI prefer the simpler way. so if you you got one with one command and another one with two or more I'll take the first one. ;)12:19
jamTheMue: well what you just did was cherrypick the trunk proposal back to 1.16, so it is obviously more straightforward for *this* patch to just land it on trunk12:20
jambut going forward12:20
jamif you know we want a change in the stable branch12:20
jamit doesn't require thinking about it as much to just commit to something branched from 1.16 and merge it up12:21
jamTheMue: does that make sense/12:21
jam?12:21
TheMuejam: yes, absolutely12:21
jamyou don't have to think about how to cherrypick which is sometimes confusing to get the right bits12:21
TheMuejam: so for this time i'll take the simple way but next time i start with the according branch directly. has been my fault.12:21
jamTheMue: well the team as a whole hasn't done much stable + dev development12:22
jamin Bazaar, we had 3+ stable branches for various Ubuntu releases12:22
jamimagine if we were supporting 1.12, 1.14 and 1.16 for 6+ months12:22
jambeing able to land in 1.1212:22
jamand then just merge into 1.14 and then 1.1612:22
jamwas very nice12:22
TheMuejam: gna, so multiple switches the whole time every day. fantastic12:23
TheMuejam: in my former jobs we mostly worked on trunk and only tagged it (no product business, all linear projects)12:24
TheMuejam: only once in good old cvs times worked on a product which has to be maintained12:24
jamTheMue: to be fair, that is pretty close to what we're doing in juju-core so far12:24
jamTheMue: yeah, CVS made it very hard to manage multiple ongoing branches12:25
TheMuejam: but what will change12:25
TheMuejam: I'm happy that I now get more and more into git workflows for my private projects12:26
jamTheMue: yeah, I'm not sure how much we'll actually commit to a "stable" juju. I would hope we commit to a stable *client* for Ubuntu 14.0412:28
jam 12:28
TheMuejam: but to be more philosophical, what in the world is stable? ;)12:29
jamTheMue: committing that you'll make changes that can be rolled out directly to clients that won't accidentally introduce regressions because of introducing new functionality they aren't using12:30
TheMuejam: that's how it should be12:32
TheMuejam: btw, thanks, branch has landed in 1.1612:32
jamsinzui: TheMue's patch for exposing "unset" has landed in 1.16, so you should be good to go12:34
sinzui!12:34
sinzuithank you very much jam12:34
* TheMue => lunch (wife just called)12:35
* fwereade needs to look after laura for a while, she's about to get back from school and cath isn't yet; bbl13:21
rogpeppea simple review for anyone that wants to take a look - no logic changes, just a bit of type juggling: https://codereview.appspot.com/1452905013:33
* rogpeppe goes for lunch13:33
mgzlooking13:33
natefinchanyone interested in looking at my new constraint that covers ec2 instance names?cd ../13:49
natefinchheh oops13:49
natefinchhere's the CR for ^^ https://codereview.appspot.com/1452305213:50
TheMue*click*13:51
TheMuenatefinch: what is when you're using a type which is not matching the hardware constraints?14:23
natefinchTheMue: not sure I understand the question. But if you're asking about types other than EC2 instances.... right now we don't support it, and it would be a constraint that can't be fulfilled, like if you asked for a machine with 10T of memory14:24
natefinchTheMue: we probably should just error out early and tell the user they've specified a constraint that isn't valid... but I wasn't sure if I should special case the type constraint, or if we should write a general constraint validator (since other constraints can also just be plain wrong... like tags that don't exist in MaaS)14:25
natefinchTheMue: it's also possible to mix type constraints with other constraints to produce an impossible combination.... like asking for an m1.small with 4 CPUs.  We could error out early on that, as well.14:26
* sinzui really must optimise what is uploaded to azure for testing14:34
TheMuenatefinch: that's what I meant. I could use constraints regarding mem and cpu that doesn't match the type14:35
TheMuenatefinch: and I'm not sure what has precedence14:35
TheMuenatefinch: or how it is detected and reported as problem14:36
natefinchTheMue: right now it is not specifically reported as a problem... what it will do is simply not match any existing instance types, so the procurement will fail14:42
natefinchTheMue: type is just another attribute, like number of CPU cores.  It just happens to be an attribute that is unique to a single type of EC2 machine.14:43
natefinchTheMue: so it would be like asking for a machine with 8 CPUs and 32G of RAM, if EC2 didn't have such an instance - it would fail to find any matching instance14:44
TheMuenatefinch: ok, so I can use the type to ease my work but I also can add more constraints with the risk that the command fails14:44
natefinchTheMue: correct.  For example, root-disk will work just fine with it.  You can ask for a m1.medium with 20G of root-disk, and that'll work.14:45
natefinchTheMue: I think sanity checking constraints before sending them off to the server is something we should do, but it involves more than just the instance type constraint I just wrote.  It probably should be done as a separate changelist14:46
TheMuenatefinch: ok, thx, got it14:48
rogpeppemgz: did you get around to reviewing that CL? https://codereview.appspot.com/1452905015:09
mgzrogpeppe: sorry, still have that tab open, resuming15:16
rogpeppemgz: np15:16
rogpeppefwereade, mgz: FYI this is the mechanism i'm implementing to enable filtering of RPC log events: http://paste.ubuntu.com/6218476/15:24
mgzrogpeppe: lgtm'd15:24
rogpeppemgz: ta!15:24
fwereadenatefinch, fwiw axw has a prechecker mechanism that will enable just that15:28
natefinchfwereade: swet15:28
natefinchsweet too15:28
fwereadenatefinch, but I *think* that we need some additional complexity around instance-type vs mem/cpu/etc15:29
fwereadenatefinch, in python we had the notion of conflicting constraints15:29
fwereadenatefinch, ie you cannot specify both mem and instance-type together15:29
fwereadenatefinch, and if you have an instance-type env constraint, and a mem service constraint, the mem constraint masks out the instance-type one when you combine them15:30
fwereadenatefinch, but *that* then introduces root-disk confusion15:30
fwereadenatefinch, because openstack instance types do mask them, but ec2 ones don't15:31
sinzuijamespage, fwereade I am blessing lp:juju-core/1.16 r1969. I will make the tarball15:32
fwereadesinzui, <315:32
natefinchfwereade: I think we need per-provider constraint resolution... because it's entirely possible that constraints could be easily detectable as impossible on EC2 and easily detectable as ok on azure15:38
fwereadenatefinch, we do indeed, but while we're still using one provider per environment it's not too bad15:39
natefinchsinzui: I just merged a branch to 1.16 btw, after 196915:39
fwereadenatefinch, as we move towards multi-provider environments, we'll need to disambiguate by provider15:40
sinzuioh? I don't need to panic15:40
natefinchsinzui: it's just docs changes, but it would be good to have in 1.1615:40
sinzuinatefinch, okay. I don't see it in lp yet: https://code.launchpad.net/~go-bot/juju-core/1.1615:41
mgznatefinch: it seems to... what sinzui said15:41
natefinchmgz, sinzui: I forgot to put in a commit message, should be going now15:42
sinzuiAs I need make a last minute change to roll tarballs from non-trunk. I will not worry about r1970 yet15:42
natefinchfwereade: I just meant, we can't have checks that don't take the provider into consideration, because what works on one might not work on another15:43
natefinchfwereade: even aside from provider-specific constraints15:43
sinzuiabentley, do you have a few minutes to hangout and talk about bzr reconfigure tricks to makr tarballs without undermining "go get"?15:44
fwereadenatefinch, the checks are delegated to the provider itself15:44
abentleysinzui: Okay.15:44
fwereadenatefinch, but we're going to have to do a bunch more of that as well, indeed15:45
mgzsinzui: can't we just undermine go get?15:45
natefinchfwereade: good, yeah, that's what I was thinking - ask the provider if it thinks the constraints make sense.15:46
sinzuimgz I have diligently worked to ensure the tarballs and deb cannot be infected by my setup. I really like using "go get" I just realised though that I am not releasing trunk so the wrong branch is gotten. I need lp:juju-core/1.16 to be lp:juju-core15:47
natefinchsinzui, mgz:  that's the problem with go get.  Very common.  There's a whole google group created to discuss how to fix it: https://groups.google.com/forum/#!forum/go-package-management15:49
natefinchsinzui: for now, go get won't work to build juju.  maybe someday we'll be able to fix that15:49
natefinch(well, go get won't work to build juju except at trunk, and assuming all third party packages are ok to be built from trunk/tip/etc)15:50
jamespagesinzui, great news!16:03
sinzuinatefinch, I see and accept your change. I am retagging 1.16 r 1970 as juju-1.16.0 and remaking the tarball16:03
natefinchsinzui: awesome16:04
mgz`bzr pull --overwrite-tags` all16:06
jamespagesinzui, are there any new binaries we need to be building as part of the packaging?16:38
sinzuijamespage, no16:38
jamespage(preparing for upload now)16:38
jamespagesinzui, marvellous16:38
sinzuijamespage, for 1.17.0, I will make the unstable recipe's base closer to your packaging branch. It would then be obvious when something has/must change16:41
jamespagesinzui, you could just use the distro packaging branch for the unstable recipe16:41
jamespagelp:ubuntu/juju-core16:41
sinzuiyep, that's the one16:47
sinzuiI have just had my best idea today. bootstrap the juju 1.14.1 now while the packages build. no waiting for azure16:57
natefinchsinzui: 1.16 windows installer - http://ubuntuone.com/1aRNVzEv0VDUS5s9Exh53B17:10
sinzuithank you natefinch . I think we want to ask IS to sign it. Do you have a place it is normally delivered to?17:11
natefinchsinzui: to arosales ;)17:11
jamespagesinzui, uploaded to saucy and backports to stable PPA now in flight17:11
natefinchsinzui: after that it's all magic and unicorns as far as I know17:11
sinzuithank you very much jamespage17:11
jamespageI tested upgrade for maas and openstack provides and bootstrapped and tested with klocal provider as well17:11
jamespagenice work guys!17:11
natefinchyay, we didn't break stuff! :)17:12
sinzuiAgain thank you jamespage . I don't need to worry about that upgrade test17:12
jamespagesinzui, the load on my maas server is back under control again - 1.15.1 had it ticking over at 2.017:12
sinzuithere is still time. I can put all the public tools in the wrong place or corrupt them.17:13
sinzuiouch17:13
jamespagesinzui, re armhf in PPA's; we have an issue with golang compilation I'm looking at17:14
sinzui:(17:14
jamespagethe arm PPA builders run everything under qemu which I think is the issue17:14
jamespageI can't reproduce locally17:14
natefinchrogpeppe: you around?17:19
rogpeppenatefinch: i am17:19
jamespagesinzui, out for a few hours - everything is building now17:20
natefinchrogpeppe: I had a bootstrapped environment on windows under 1.14 and now I'm getting  "environment has no bootstrap configuration data"  when I try to use the environment17:20
jamespagesinzui, even if a juju-core builds on armhf in the stable ppa don't use it - it will be using older golang I think17:21
sinzuioh, thank you for the warning17:21
rogpeppenatefinch: try removing the .jenv file for that environment (or moving it to somewhere else, in case it might contain important info)17:21
natefinchrogpeppe: ahh crap17:22
natefinchC:\Users\Nate>juju bootstrap17:23
natefinchERROR cannot create environment info "amazon": cannot rename new environment info file: rename C:\Users\Nate\AppData\Roaming\Juju\environments\561471723 C:\User17:23
natefinchs\Nate\AppData\Roaming\Juju\environments\amazon.jenv: Cannot create a file when that file already exists.17:23
rogpeppenatefinch: you're going to get that error if a Prepare has been done on a legacy environment (the client can't really know any better tbh)17:23
rogpeppenatefinch: ah frick17:23
natefinchrogpeppe: I just renamed the old amazon.jenv to something else17:23
natefinchrogpeppe: so it definitely wasn't there before bootstrap17:23
rogpeppenatefinch: what are you trying to do with the env?17:23
natefinchrogpeppe: just testing bootstrap etc17:24
natefinchrogpeppe: I can try starting from scratch, see if that fixes anything17:24
rogpeppenatefinch: um, i think i misunderstood your problem17:24
rogpeppenatefinch: i thought you were trying to reconnect to an already bootstrapped environment17:25
natefinchrogpeppe: my fault... mispoke17:25
rogpeppenatefinch: which is when you might come across the problem that my instructions were trying to solve (it would happen if you had an existing environment, but bootstrapped anyway)17:25
rogpeppenatefinch: i'm a bit concerned by the above error though17:26
rogpeppenatefinch: what's the accepted way to atomically replace an existing file under windows?17:26
natefinchrogpeppe:  move /y in the CLI17:27
rogpeppenatefinch: not very helpful from Go :-)17:28
natefinchrogpeppe: haven't had to do it in Go.  Let me look17:28
rogpeppenatefinch: thanks17:28
natefinchrogpeppe: uh so... Go right now doesn't have a facility to do that.  We'd have to wrap our own windows API call to do it (which is not a big deal).17:39
rogpeppenatefinch: ah. if we want the client to work on windows, we need to do that, unless there's another possibility17:39
rogpeppenatefinch: because that's the way .jenv files are written such that the client can work concurrently with issue17:40
rogpeppes17:40
natefinchrogpeppe: that's the only way I can see to replace a file atomically.  There's basically two windows API calls that can do it, and neither of them are currently used in syscall for windows17:40
rogpeppenatefinch: rats17:41
natefinchrogpeppe: it's really not a big deal to write it ourselves, it's just kind of annoying17:41
rogpeppenatefinch: how much work do you think?17:41
rogpeppenatefinch: (i'd think we'd make a utils/file package containing a ReplaceFile function, or something similar)17:43
arosalesnatefinch, thanks for creating the installer17:46
arosalesnatefinch, could you open an RT to have it signed>17:46
natefinchrogpeppe: yeah.. no big deal, like an hour, if that17:46
natefincharosales: sure17:46
rogpeppenatefinch: cool. it would be great if we could get that working, especially as it might rebound on us17:47
arosalesnatefinch, thanks may need to reference RT 6463817:47
adam_gis there an ETA on when 1.16.0 tools will be available ? stable PPA has 1.16.0 but no tools are available for bootstrapping17:59
natefinchadam_g: there was just some talk about that internally.  The tools should be available shortly, but we realize pushing 1.16 to the ppa before the tools were available was a mistake.18:05
TheMuegood night18:11
=== ahasenack is now known as andreas
natefinchTheMue: g'night18:11
* sinzui sighs18:23
sinzuithe saucy packages has a different version than I expected.18:24
* sinzui hacks the script18:24
natefinchsinzui: there's a bug in the windows client that I am fixing, but for now, i can't give the installer to IS to sign, since... it's broken.  Like totally.  Can't bootstrap.18:25
sinzuinatefinch, and that isn't because I have not put the tools there yet?18:25
natefinchsinzui: nope, totally a problem of the code itself trying to do something that just doesn't work on windows.18:26
natefinchsinzui: it's trying to replace file a with file b by just renaming a to b.... which evidently works on linux, but returns an error on windows.18:26
sinzui:(18:27
natefinchrogpeppe: so... basically anywhere we use os.Rename, we should probably use this new Replace function, assuming the idea is that it's supposed to always overwrite an existing thing.  Is that correct?18:29
rogpeppenatefinch: pretty much, yes18:29
rogpeppenatefinch: it would be worth having a quick audit18:29
rogpeppenatefinch: in some places we use mv, but those places are already hopelessly parochial18:30
natefinchheh18:30
natefinchrogpeppe: trying to decide if I should just replace every instance, or only those ones that might possibly run on the client.   FWIW for non-windows, the new function just passes through to os.Rename18:44
rogpeppenatefinch: for the time being, perhaps do only those that might possibly run on the client18:46
natefinchrogpeppe: the only one I'm not really sure about - charm/repo.go   func (s *CharmStore) Get(curl *URL) (Charm, error)18:47
natefinchrogpeppe: does the charm get downloaded to the client before getting uploaded, or is that only ever called by the agent?18:47
rogpeppenatefinch: that's definitely client side18:47
natefinchrogpeppe: ok, thought so18:48
rogpeppenatefinch: it's probably server side too, FWIW18:48
natefinchrogpeppe: ok18:48
sinzuionce again hp/openstack spits in my face18:55
natefinchprorgamming would be so much easier without all these pesky "environments"18:56
natefinchrogpeppe: once my VM finished rebooting after installing windows updates, I'll be able to test the changes.  Luckily, I had done the windows API wrapping before, otherwise it would have been a pain in the butt to figure out.18:58
rogpeppenatefinch: yeah, thanks!18:58
rogpeppenatefinch: that's why you're here :-)18:59
natefinchrogpeppe: actually, trivia fact, it's what got me this job.  Gustavo asked me to write a named pipe implementation for windows, probably for use in a windows agent of some sort18:59
sinzuibugger, none of the tools arrived at HP18:59
* rogpeppe has a lovely vision of a bag of hammers lost in transit19:00
natefinchrogpeppe: and thus I wrote this: https://github.com/natefinch/npipe/19:00
natefinchrogpeppe: lol19:00
rogpeppenatefinch: nice. it would be nicer if it provided a portable interface that worked cross platform, of course :-)19:01
natefinchrogpeppe: blah blah :)  He specifically asked for windows and gave me the weekend to do it, so I'm gonna call it pretty good.  You're welcome to contribute ;)19:02
rogpeppenatefinch: lol, yeah19:02
sinzuiI am dropping anvils on sync-tools19:03
natefinchsinzui: very looney tunes of you19:03
* rogpeppe tried to lift an anvil once, so feels sorry for the poor sync-tools19:04
sinzui:)19:04
sinzuiI watched the Anvilainia episode of Animanics over the weekend19:04
natefinchnice nice, love the animaniacs19:05
natefinchrogpeppe: tests are running... had to stop my vm so I could run the tests... was getting OOM errors.  I'd add more RAM if I wasn't planning on replacing my laptop soon.  Running on 4G right now19:07
* rogpeppe has never heard of the Animanics19:08
natefinchrogpeppe: cartoon... I doubt it's running anymore19:08
sinzuirogpeppe, It is in the vain of classic Looney Tunes.19:08
rogpeppesinzui: cool19:09
sinzuiLooks like 1.16.0 is genuinely released and works on the public clouds. I need to retest canonistack though since it too did not get 1.16.0 with my initial upload19:09
natefinchrogpeppe: http://www.youtube.com/watch?v=4YzTXxt9oOY19:10
natefinchok, all tests pass, I'll test the fix on windows19:10
rogpeppenatefinch: ha, that doesn't go so well with the sounds that are currently playing here... (http://open.spotify.com/artist/6LtwY43IVeNpnireOVay0H)19:11
rogpeppeg'night all19:27
natefinchrogpeppe: night.  Thanks for the link to the music, sounds great19:28
rogpeppenatefinch: it's one of the albums of the year for me20:01
natefinchrogpeppe: very cool.  I don't have a spotify account, but I can find some live versions on youtube.  Pretty cool20:02
rogpeppenatefinch: i think spotify should give you a certain amount of free listening20:02
natefinchrogpeppe: I've been resisting signing up... but whatever, I'm a sucker, especially if I can't get the music anywhere else.... it's pretty great.20:05
rogpeppenatefinch: i'm not a big fan of subscription services in general, but i think spotify are pretty special20:05
rogpeppenatefinch: their metadata is brilliant because it was all provided by the labels themselves20:06
natefinchrogpeppe: I have a google music account which so far has had everything I've asked for... but it doesn't have this :)20:06
rogpeppenatefinch: (with the exception of dates of albums, annoyingly, which often come up as the date they were digitised)20:06
rogpeppenatefinch: hey, buy it off amazon :-)20:07
natefinchrogpeppe: buying music is so 90's20:09
rogpeppenatefinch: better quality though20:09
natefinchrogpeppe: yeah, and it's good to support the artists more directly20:10
rogpeppenatefinch: indeed20:10
rogpeppenatefinch: particularly below-the-radar stuff20:10
natefinchrogpeppe: absolutely20:11
natefinchrogpeppe: https://codereview.appspot.com/1450205820:11
natefinchsuper simple if you have time20:11
rogpeppenatefinch: i think utils.Replace should probably be utils.ReplaceFile20:13
rogpeppenatefinch: there's nothing about "utils" which suggests that Replace might be a file-oriented operation20:13
natefinchrogpeppe: good point20:18
natefinchrogpeppe: I was kind of going by os.Rename... but since we're in utils, not os, that's fair20:18
rogpeppenatefinch: when might UTF16PtrFromString fail?20:19
natefinchrogpeppe: If s contains a NUL byte at any location, it returns (nil, EINVAL)20:19
rogpeppenatefinch: i think we should perhaps panic in that case, or at the very least we should return a more descriptive message20:20
natefinchrogpeppe: we could... but really I'm just doing the exact same thing all the rest of the syscalls do, which is just return the error.  I think the cases where it can fail are vanishingly small.20:22
rogpeppenatefinch: hmm, i think that vanishingly unusual cases are just the place where you want something more than just "invalid argument"20:23
rogpeppenatefinch: although i suppose in this case that's a little more appropriate than the millions of places that usually return it....20:23
natefinchrogpeppe: actually, looking at os.Rename for windows, it wraps the error in a LinkError struct20:24
natefinchrogpeppe: I should do the same thing20:24
rogpeppenatefinch: or return "filename contains null bytes" ?20:25
natefinchrogpeppe: I strongly prefer doing things the same way as os.Rename, so our code can be a drop-in replacement20:26
rogpeppenatefinch: fair enough20:26
natefinchrogpeppe:  reproposed with the change to wrap the error20:35
rogpeppenatefinch: the name's still the same though...20:36
rogpeppenatefinch: did the fslock tests pass under windows?20:38
rogpeppenatefinch: reviewed20:39
natefinchrogpeppe: doh, name, right, sorry20:42
natefinchrogpeppe: it does work with directories as well, which is a little... confusing20:42
rogpeppenatefinch: there are a few places where "file" is used to mean either file or directory20:43
rogpeppenatefinch: os.File being a good example20:44
natefinchrogpeppe: fair enough20:44
rogpeppenatefinch: reciprocal review? https://codereview.appspot.com/14531048/20:45
natefinchrogpeppe: certainly20:46
rogpeppenatefinch: thanks20:47
rogpeppenatefinch: not quite as small as yours, i'm afraid20:47
natefinchrogpeppe: haha no problem.20:47
natefinchrogpeppe: btw, I haven't run any of the tests under windows.  you can cross-compile, but running the tests still has to be done on the native OS20:50
natefinchrogpeppe: and I don't have my environment quite set up on windows yet.  Getting there though.20:50
rogpeppenatefinch: for this change, the fslock tests would be good to try to run, i think, as they they're quite dependent on the functionality21:14

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