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

thumper-afkdpb1: yes, you have the wrong mongodb00:13
=== thumper-afk is now known as thumper
thumpersinzui: yay00:14
thumpersinzui: I wonder if the hp upgrade failure was to do with the security group changes00:14
thumpersinzui: it is the only thing that has changed and is different from azure/ec200:14
thumpersinzui: this occurred to me on the drive up the hiill00:14
thumperdpb1: can you do apt-cache policy mongodb?00:17
* thumper -> fud00:29
davecheneydpb1: you do not have the correct versino of mongo installed00:34
davecheneydid ppa:juju/stable get added during cloud init00:34
davecheneycheck00:34
davecheney/var/log/cloudinit-output.log00:35
davecheneyplease00:35
fwereadeaw ffs how is it 2:4500:42
axwwhoa, you're still awake :)00:43
fwereadeaxw, didn't really intend to be, but I started programming00:43
* axw knows how that can be00:44
fwereadeaxw, so I still haven't done your reviews, you may have to ask thumper00:44
axwfwereade: okey dokey00:44
axwfwereade: if I'm stuck, I'll start looking at the environ updater thing00:45
fwereadeaxw, please quickly check with thumper & sinzui if there's anything we need to do with azure simplestreams fallbacks -- but I see an "azure upgrade PASS" above so you might not need to00:46
axwfwereade: ok00:46
sinzuifwereade, azw: azure is 100% happy when the image-metadata-url is set00:47
fwereadesinzui, ah ok -- but still screwed if not?00:47
* thumper has some dots in the middle of his vision...00:48
sinzuithats right00:48
* thumper tries to read around the floating dots00:48
thumperI'm just looking at fixing the file permissions on the $(JUJU_HOME)/environments dir and files00:49
fwereadeaxw, ok, I think unfucking the fallbacks is more important00:49
thumperthen I can look at the image-metadata-url00:49
fwereadeaxw, but I actually must sleep00:49
axwfwereade: no worries, I'll have a look00:49
fwereadeaxw, thumper has context :)00:50
davecheneydpb1: ping00:50
fwereadeaxw, thumper: and I'd love a review of https://codereview.appspot.com/14254043 if you get a moment00:51
* thumper nods00:51
axwfwereade: sure, will have a look later today00:51
* sinzui reboots to purge sshuttle non-sense00:52
=== hazmat` is now known as hazmat
hazmatsinzui, iptables -F -X and --policy to reset01:08
sinzuisuper. Thanks!01:08
hazmatsinzui, http://ubuntuforums.org/showthread.php?t=138151601:08
axwsinzui: is there a bug for this image-metadata-url thing? I can't find anything in LP01:14
sinzuiaxw: no. my bad.01:15
sinzuiaxw I can report it now01:15
axwsinzui: if you don't mind, I don't know what the issue is that's all01:15
axwsinzui: I'm getting "The affinity group name is empty or was not specified. (http code 400: Bad Request)" when I try to bootstrap01:16
axwis that the issue, or something new? :)01:16
sinzuidifferent01:16
sinzuiaxw, When the azure provider goes looking for the os image, it bails early wne it does not find a match in the "daily" stream set01:17
axwok01:17
sinzuiaxw: this is all the info I have https://bugs.launchpad.net/juju/+bug/123392401:26
_mup_Bug #1233924: cannot bootstrap azure because no OS image found <azure> <bootstrap> <juju-1.15.0> <juju:Triaged> <https://launchpad.net/bugs/1233924>01:26
axwsinzui: thanks!01:26
sinzuiaxw, one moment, I need to move that bug to juju-core.01:27
axwsinzui: I'm having trouble getting *anything* to work on azure at the moment, so may take me a little while to get to it...01:27
sinzuiaxw: my setup is just this https://juju.ubuntu.com/docs/config-azure.html with the addition on tools-url: https://jujutools.blob.core.windows.net/juju-tools/tools01:30
axwsinzui: likewise, tho I am using the Southeast Asia location01:32
axwhmm maybe if I set tools-url..01:32
axwnope01:33
sinzuiaxw, I think you should try West US. The other bug you found is about not being able to deploy from any other region/affinity01:33
axwsinzui: this was working before01:34
sinzuiThen I hope it will work again01:34
dpb1davecheney:01:40
dpb1sup?01:40
axwsinzui: ok, reproduced the 1233924 on West US. I'll log a bug for the other one later, if I can reproduce it in a fresh env01:45
sinzuifab01:45
davecheneydpb1: you had questions ?01:49
davecheneythumper: what the balls ?!02:08
thumperwhat balls?02:08
davecheneyip-10-240-27-224:2013-10-02 02:07:08 INFO juju.worker.uniter uniter.go:105 unit "w1/0" shutting down: tomb: dying02:09
davecheneyip-10-240-27-224:2013-10-02 02:07:08 ERROR juju runner.go:211 worker: exited "uniter": permission denied02:09
davecheneyip-10-240-27-224:2013-10-02 02:07:08 INFO juju runner.go:245 worker: restarting "uniter" in 3s02:09
davecheneywhat the hell happened here02:09
davecheneyall I did was remove the w1 m1 relation02:09
* thumper shrugs02:13
davecheneyhttps://bugs.launchpad.net/juju-core/+bug/123393602:15
_mup_Bug #1233936: worker/uniter: uniter restarts when relation removed <juju-core:New> <https://launchpad.net/bugs/1233936>02:15
davecheneyhttps://bugs.launchpad.net/juju-core/+bug/123393802:17
_mup_Bug #1233938: cmd/juju: debug-log lines appear out of order <juju-core:Triaged> <https://launchpad.net/bugs/1233938>02:17
davecheneyaaand that is enough bugs for the morning02:17
thumperdavecheney: dude, rsyslog interleving messages from remote clients may well not have them in strict time order02:20
thumperdavecheney: and, seriously, not critical02:22
thumpercritical means "down tools and fix right now"02:22
thumperwhich this certainly isbn't02:22
thumperaxw: https://codereview.appspot.com/14258043/02:32
thumperaxw: and lets skip the package review02:33
axwthumper: sgtm02:33
thumperaxw: did you want to chat through the fallback mechanism?02:33
axwthumper: I've got a fix for the azure thing, just writing a test02:33
thumperaxw: is the the "to maintain existing behaviour, don't fall back" ?02:33
axwthumper: uhh maybe we should chat, not sure what you mean02:34
thumper:)02:34
axwthumper: https://plus.google.com/hangouts/_/e2ed2f3559f1cd0314405f2303d3c222e83803c4?authuser=1&hl=en-GB02:35
* thumper -> coffee time02:43
axwaxw -> hammer time02:43
dpb1error command line: unknown option sslOnNormalPorts03:10
dpb1davecheney: getting that error when juju-db is starting on a maas node.  Wrong version of mono being used?03:11
dpb1why do I keep doing that.03:14
dpb1*mongo03:14
thumperdpb1: yes, wrong mongo03:15
thumper<davecheney> dpb1: you do not have the correct versino of mongo installed03:15
thumper<davecheney> did ppa:juju/stable get added during cloud init03:15
thumper<davecheney> check03:15
thumper<davecheney> /var/log/cloudinit-output.log03:15
thumper<davecheney> please03:15
davecheneydpb1: can you provide /var/log/cloudinit-output.log03:15
davecheneythat will answer all the questions03:16
dpb1thumper: how is that happening?03:16
dpb1ya sec, checking03:16
davecheneydpb1: apt-add-reposutory ppa:juju/stable is failing03:16
davecheney^ best guess03:16
dpb1d'oh, right at the top03:17
dpb12013-10-01 16:26:17,159 - cc_apt_update_upgrade.py[WARNING]: Source Error: ppa:juju/stable:add-apt-repository failed03:17
davecheneydpb1: does this maas environment have access to the interwebs ?03:17
dpb1kind of a sneaky little error there though03:17
dpb1no... it's behind a firewall, this is for the OIL lab if you have heard of that effort03:17
dpb1but I can selectively allow things through, and have.  probably something with a keyserver.03:18
davecheneydpb1: you could try the apt-squid-proxy03:18
davecheneyif you do that03:18
davecheneyyou need to configure it on the machine that initiates juju bootstrap03:18
davecheney(the client)03:18
davecheneywhich is automagically sniff the settings03:18
dpb1davecheney: davecheney even keys?  I think keyserver.ubuntu.com still needs to be faked03:19
davecheneydpb1: never had to do that03:19
dpb1ok03:19
dpb1I'll run it by is in the morning.  thanks, that gives me what I need to go on next. :)03:20
axwthumper: https://codereview.appspot.com/14218044/ when you're free03:29
thumperaxw: ack03:35
thumperaxw:  https://codereview.appspot.com/14260043, and I'll review yours before getting back to the other.03:49
axwthumper: okey dokey03:49
axwthumper: I don't suppose you'll have time to review null provider stuff today?03:49
thumpersure, after these two :)03:49
thumperI HATE that we match log messages03:50
thumperI think it is a FAIL on so many levels03:50
axwthumper: I was going for expediency, but I do agree03:50
axwI would prefer a dummy data-source that checked it was called03:50
thumperaxw: I understand03:50
thumpernot critical of this in particular, just that it exists03:50
thumperaxw: what needs the most urgent review?04:11
axwthumper: https://code.launchpad.net/~axwalk/juju-core/null-provider-customsources/+merge/18797804:12
axwthumper: then this: https://code.launchpad.net/~axwalk/juju-core/null-provider-storage-auth/+merge/18796404:12
thumperack04:12
axwlunch, bbs04:28
thumperaxw: https://codereview.appspot.com/14258043/04:30
thumperaxw: looking at "Wire up authenticating httpstorage", if you are back, I'd like to chat, if not I'll continue with the review04:35
axwthumper: I'm here04:49
thumperaxw: do we care that we are putting the auth token in the url?04:50
axwthumper: shouldn't do, it's HTTPS04:51
thumperalways?04:51
axwthumper: should be, let me just double check...04:53
axwthumper: yep. only if you use ClientTLS, then it'll send an auth-key. and it'll only send it for modifying requests04:54
axwthumper: modifying requests always go via HTTPS04:54
thumperkk04:54
axwthumper: did you want to hangout, or was that all you wanted to ask?04:55
thumperI was going to ask about the boilerplate additions04:56
thumperthose are being moved into this extra env.jenv files in $(JUJU_HOME)/environments04:57
thumperhave you considered that?04:57
thumperor is it deferred04:57
thumperaxw: also, for null provider, under what circumstances would the storage certs not be there?04:58
axwthumper: I'm not really abreast of what I need to do for env.jenv04:58
thumperaxw: ok, we'll defer that bit04:59
axwthumper: the storage certs are the same as those used for mongo05:00
axwthe CA cert is I mean05:00
thumperaxw: so surely by the time we want to use them, if they aren't there, we should be erroring?05:01
thumperjust thinking about the null provider Storage method05:01
axwthumper: yeah, except Storage() doesn't reutrn an error05:01
thumperand the just use http if the certs aren't there05:01
axwI could have it panic05:01
thumperis it an error for them to be not set?05:01
axwthumper: that's what it's doing now05:01
thumperI think it is by the time it gets there05:02
* axw checks05:02
axwthumper: it's not an error in config.Validate05:03
axwbootstrap ensures there's one tho05:03
* thumper nods05:03
thumperI think the validate bits are not errors for testing :)05:03
axwugh, I hate that05:04
axwit's one thing to mock something out, but to change all behaviour to accommodate testing...05:04
thumperreview done05:08
* thumper called for dinner05:08
axwthumper: thanks!05:08
axwif you're around later, I updated this: https://codereview.appspot.com/14218044/05:08
jamaxw: I think your fix is actually incorrect06:24
jamwhat we *want* is to use the released steram06:24
jamstream06:24
jamby default06:24
jamaxw: so "provider/azure/environ.go" should be "http://cloud-images.ubuntu.com/released"06:25
axwjam: ah, ok06:25
jamaxw: we might *also* need to do your fix06:25
jamfor whatever reason06:25
axwwell, either way my change makes the simplestreams code do what it's meant to do06:25
axwI can update it to use released first tho, if that's what should be done06:26
jambut the fix for bug #1233924 is that we should point to the released stream by default06:26
_mup_Bug #1233924: cannot bootstrap azure because no OS image found <azure> <bootstrap> <juju-1.15.0> <juju-core:In Progress by axwalk> <https://launchpad.net/bugs/1233924>06:26
jamaxw: I'm testing now, but I think this is fallout from before. We used to only have dailies for Azure06:26
jamand then you would specify "image-stream: daily"06:26
jamand it would use the daily cloud-url06:26
jambut I think we just want to ignore that dailies exist06:27
jamand if someone wants to try really hard they can set their imagemetadata-url to the daily stream06:27
axwjam: ok. that sounds sensible06:28
jamaxw: it is a shame that they can't just set "image-stream: daily" and have it switch the metadata for you, but I think we can punt on that for now06:28
axwjam: there's two different issues tho, so I'll create a new MP that fixes this in the proper way06:28
axwjam: ah, you can't do that anymore?06:29
jamaxw: so there are 2 options06:29
jam1) we always only search cloud-images.ubuntu.com/released06:29
jam2) we also add a baseURL for cloud-images.ubuntu.com/daily06:29
jamwhich 99% of the time won't have what you want06:29
jambut *if* you set "image-stream: daily" then /released doesn't have what you want but /daily does06:30
jammy above point is that (2) can be taken care of by a *user* setting imagemetada-url: *and* image-steram06:30
jamimage-stream06:30
jamaxw: does that make sense?06:30
axwjam: yep06:31
jamthe reason they have to set 2 things, is that the files they need to *read* are in a different location, and the index key *in those files* is also different06:31
jamI'd like to unify it, but I think it is something users won't really use06:31
jamand not worth our time today06:31
jamaxw: have you bootstrapped on azure before?06:31
jamI did just the 1-line fix to point at '/released'06:32
jamand it has gotten to "finding products at path" ...06:32
jambut it seems to be stuck06:32
jamah ffs06:32
jamthe URL is "/releases"b06:33
jambut the data inside the file is "released"06:33
axwjam: yes I have bootstrapped before06:33
jamhttp://cloud-images.ubuntu.com/releases/streams/v1/com.ubuntu.cloud:released:azure.json06:33
jamnotice the "releases" at the beginning and the "released" at the end06:34
axwjam: I think you don't want to put "releases" on at all06:34
axwno prefix06:34
axwjust .com/streams06:34
jamaxw: maybe, but looking at http://cloud-images.ubuntu.com/daily/06:34
jamto differentiate it from http://cloud-images.ubuntu.com/releases/06:34
jamaxw: DefaultBaseURL = "http://cloud-images.ubuntu.com/releases"06:35
axwhrm yeah...06:35
jamaxw: ah you know what, you might be right06:35
axwI'm thinking of image-stream I think06:35
jamthat azure is providing an optional location06:35
jamand we should be finding the real fallback for all clouds06:35
jamaxw: in which case, we probably just need your fix06:36
jamas in, it is finding daily it appears configured correctly, but doesn't have the data we want, so we need to keep searching.06:36
jamI'm wondering if we just remove daily from baseURLs06:36
axwjam: well, my fix does actually work. but I kinda get your point about not wanting to go to daily all the time06:36
axwyeah that's what I was thinking06:36
jamaxw: I think it is silly to look at daily for most people06:37
jamIt isn't terribly harmful (with your fix :) but it isn't useful and adds roundtrips to bootstarp06:37
jambootstrap06:37
jamaxw: I'm trying to look at the logic just before what you change06:39
jamchanged06:39
jamnamely, it has "if err != nil && len(items) == 0 && ..."06:39
jamhow would we have items and an error?06:39
jamthat sure seems like it should be06:40
jamif (err != nil || len(items) == 0)06:40
axwjam: hmm yes, I think you're right06:40
jamaxw: anyway, it doesn't really change what you need to do06:41
jamwhich is, simplestreams was expecting that it would get an error if nothing matchedb06:41
jamaxw: actually, we are supposed to06:41
jamif len(matches) ==0 { return nil, newNoWatchingProductsError}06:41
axwjam: not even; the function directly below GetMetadata (which calls it) has a comment saying that err == nil if no matches06:41
axwthat's internal stuff anyway06:42
jamaxw: ah, I see, it traps that error and says the higher up will go to the next, but the higher up doesn't because it has a "if err != nil { break }"06:42
axwyup06:42
jamaxw: interestingly if we *did* return the error06:42
jamthen the higher up code would have continued properly06:43
axwheh yes :)06:43
jamaxw: so I think it is a case of "ok, loop until we don't get an error, and the lowest level has an error if nothing matches" and forgetting that the intermediate step filters that error out06:43
jamaxw: so offhand, I would be fine with either fix06:44
jamreturn the error06:44
jamor trap for empty item list06:44
jamI *think* we want to log that we didn't find anything, and just continue06:44
jamand returning it as an error might cause us to double log it06:44
jambut it might also give us a better final message when you don't run with "--debug"06:45
jamaxw: can you try both and see if there is a clear win?06:45
axwjam: sure, I'll give it a shot06:45
axwjam: hmm, if GetMetadata is changed to not return the error, it's going to require a lot of changes in callers I think.06:47
axwseems reasonable for it to return an error if it doesn't find anything from any of the sources06:47
axwoh but...06:48
axwit's nil06:48
axwnever mind :)06:48
jamaxw: my point was, rather than putting "len(items) == 0" before breaking06:49
jamchange the function it calls to *not* filter out the noMatchingProductsError06:49
jamaxw: for context, rev 1878.1.1 was where Ian introduced GetMetadata06:50
jamand inverted the logic about how to handle noMatchingProductsError06:50
jamaxw: it *used* to be that we would search across all data sources06:50
jamfor signed data06:50
jamand then all data sources for unsigned data06:50
jamaxw: and note that environs/tools/simplestreams.go Fetch() has:06:52
jamif (err != nil || len(items) == 0) && !onlySigned06:52
jamaxw: which is why it used to work06:52
jamaxw: have I succeeded in confusing you? Because I think I did make sense of it06:52
axwjam: slightly ;)06:53
axwso in other words, this logic used to be outside06:53
axwand it used to check len(items) as well as err06:53
axwwhen going to the next source06:53
axw?06:53
jamaxw: so it used to be we would return nil, [] so that we would try the unsigned metadata06:54
jambut the len(items) == 0 is still only used for the signed/unsigned check and not the rest06:54
jamaxw: *however* the old code had the same bug06:55
jambecause err.noMatchingProductsError would break out of the search loop06:55
jamso if it succeeded in reading any stream06:55
jambut just didn't find anything06:55
jamit would stop searching06:55
jam(bzr revert -r 1878; and inspect environs/simplestreams/simplestreams.go line 419)06:55
axwta06:56
jamaxw: and I might understand why06:56
jamaxw: so imagine you put data into your private bucket06:56
jamand then ask to boostrap06:56
jamdo you want it to read that data, and then say "oh, I didn't find what you requested in your personal store, I'll just go read cloud-images.ubuntu.com"06:57
jamor do you want it to fail right away with "your request couldn't be fulfilled with the data you provided"06:57
jamthis is the sort of "either way could be valid"06:57
axwurgh, yeah I can see that06:57
jamEither could be a WTF for the user06:58
jamWhy did you start something when I asked you to use my personal image06:58
jamvs06:58
jamWhy is this failing to start.06:58
jamSo I'm *tempted* to just nuke the daily stream :)06:58
jamAnd then talk about it in depth as a team06:58
axwjam: yeah that's fair enough, I hadn't considered private cloud metadata06:58
jamaxw:  does that sound reasonable to you?06:58
jamThe person who thought about it the most is on vacation this week (Ian)06:59
axwheh yeah :)06:59
jamfwereade: are you around ?06:59
jamaxw: so I know the reason we wanted the shortcut-to-failure was because originally we had a different bug because of the Signed first then Unsigned07:00
jamwhich is that users can only really upload unsigned metadata07:00
jamand if we read all signed metadata firs07:00
jamthen it would have fallen back to cloud-images.ubuntu.com (the only source for signed data) and users could never override it07:00
jamwe switched it to search each location signed then unsigned07:01
axwyeah that bit makes sense07:01
jambut we need to figure out what helps users the most07:01
jamfalling back so that when you ask for an armhf but have only configured amd64 in your images07:01
jamwe still give you the cloud-images instance07:01
jamor not falling back so that we don't accidentally give you the non-customized image if your constraint accidentally doesn't match07:02
jamaxw: either way, current logic is just broken for Azure since it is injecting a source that won't ever have released data in it07:02
axwjam: I think we should just do what you said; take out daily, and people can put in the stream if they really do want it07:03
axwthen we can revisit this when Ian comes back07:03
jamaxw: yeah, I still think we need to decide whether we want to fallback or not. but we can address it separately that way07:03
axwI'll do that now07:03
jamfwereade: when you get in, I'd like to G+ with you about simplestreams fallback-or-not I can give you context when you get in07:03
jamaxw: fwiw right now I think I'd rather fallback and give users something than just fail, so I'm happy you wrote the patch, but I want to make sure we understand it as a team07:04
axwjam: no worries. I'll leave that MP there, and do a new one that just touches azure07:05
jamaxw: afaik Azure was the only one that ever actually supported the daily stream, and they only did because they had to (there were originally no full releases for azure)07:06
jamaxw: and I'm pretty sure on it, because Azure is the only one that supports "image-stream:" and you can't *read* the daily cloud images without that (because they use a different simplestreams key).07:09
jamaxw: and I'm pretty sure on it, because Azure is the only one that supports "image-stream:" and you can't *read* the daily cloud images without that (because they use a different simplestreams key).07:10
jamwelcome back, btw,07:10
axwjam: my laptop just froze07:10
axwta07:10
axwjam: last line in my log is from me, saying "jam: no worries..."07:11
jamaxw: so I'm thinking we just remove all the daily support from the Azure provider07:12
jamnone of the other ones ever supported it07:12
jambecause you have to have "image-stream:" in order to actually read the daily streams07:12
jamand we *had* to do it back in the da07:12
jamday07:12
jambecause there were only Daily Saucy images being published to Azure07:12
axwjam: sgtm, that was just while saucy was in development afaik07:12
jamnow that we have official LTS releases07:12
axw*nods*07:12
jamwe just treat Azure like the others07:12
axwer 12.04.03 I mean07:12
axwyep07:13
axwjam: so does that mean taking out image-stream altogether?07:13
jamaxw: I think so, because it isn't a *juju* supported config07:13
jamso the overhead of making sure it works for just one provider07:14
jamseems a bit much07:14
jamI can see a point to having it, but if we wanted it, we should have it everywhere07:14
axwjam: can we defer that change? or are you concerned that people will rely on it in 1.16.0?07:15
jamaxw: defer away, I'm just thinking out loud07:16
jamit is the natural follow on to removing daily from the search path07:16
rogpeppemornin' all07:36
rogpeppedimitern: i found out a little bit more about my dns name query problem BTW07:36
axwmorning rogpeppe07:38
rogpeppeaxw: hiya07:38
rogpeppeaxw: how much do you know about dns?07:38
rogpeppedavecheney: ^07:40
* rogpeppe reboots07:46
axwjam: https://codereview.appspot.com/1426604307:55
axwrogpeppe> axw: how much do you know about dns?07:55
axw<axw> rogpeppe: not a heap, why?07:55
jamaxw: he was just rebooting just before you got back07:57
jamhe was saying something about having a dns name query problem07:57
axw_grr, net keeps going up and down07:59
dimiternrogpeppe, hey08:01
rogpeppedimitern: hiya08:01
jamaxw_: reviewed08:01
dimiternrogpeppe, so what was it?08:01
rogpeppedimitern: the dns client is doing two lookups, one for an A (ipv4) record, which returns immediately, but another for an AAAA (ipv6) record, which always times out08:02
rogpeppedimitern: i'm not sure where the problem is - probably in my ISP's DNS server08:02
rogpeppedimitern: i can't currently work out a way of disabling the ipv6 request08:03
axw_jam: ta08:03
=== axw_ is now known as axw
dimiternrogpeppe, I think you can tweak the sysctl.d or something to disable ipv6 on an interface08:03
rogpeppedimitern: i've already done that - it doesn't seem to make a difference08:04
jamrogpeppe:  http://askubuntu.com/questions/32298/prefer-a-ipv4-dns-lookups-before-aaaaipv6-lookups ?08:04
jamsays you can tweak /etc/gai.conf08:04
jamrogpeppe: are you using v6 on your local network ?08:05
rogpeppejam: no, i don't think so08:06
rogpeppejam: afaic the gai.conf suggestion will only affect the order of the requests, not whether AAAA requests are issued08:06
rogpeppeafaics08:06
jamrogpeppe: the link above mentions adding "options single-request" to /etc/resolve.conf08:07
jamor disable ipv6 entirely (in a link from the one I gave)08:07
rogpeppejam: that's similar - it means both requests will be issued in series rather than parallel, i think08:08
rogpeppejam: and i've just disabled ipv6...08:08
jamrogpeppe: but if the first succeeds will it do a second ?08:08
jamanyway sure08:08
rogpeppejam: yes, i think08:08
rogpeppejam: i can see that the first is succeeding already (host -v prints an address almost immediately, then waits for 10-20s for the next request to time out)08:09
jamrogpeppe: host isn't getaddrinfo IIRC, though I'll note if I do "host google.com" it has a valid ipv6 address08:10
jamthough I get v4 first08:10
jamhost arbash-meinel.com doesn't have ipv6 though it seems to pause for only 1s or so, not 10-2008:10
TheMuefwereade: happy birthday08:18
dimiternfwereade, yeah, dude!08:18
allenapDoes juju-core work with ARM okay? See comment #3 on https://bugs.launchpad.net/ubuntu/+source/maas/+bug/123383108:26
_mup_Bug #1233831: maas doesn't return zookeeper instances for newly provision environment <amd64> <apport-bug> <raring> <maas (Ubuntu):New> <https://launchpad.net/bugs/1233831>08:26
rogpeppejam: i see 10s pause if i use 127.0.1.1, 6.64s if i use my provider's DNS server directly, and 2.9s if i use google's dns service (8.8.8.8)08:26
=== axw_ is now known as axw
jamallenap: "zookeeper" would be python-juju08:27
dimiternor a really old juju-core08:28
jamallenap: though the log messages look a whole lot like juju-core08:28
jamso the person might just be reporting it poorly08:28
dimiternjam, juju-core used zookeeper for a while after the migration to go08:29
jamallenap: so digging through the bug more I see the follow up posts. So we might-ish support it, but I don't think we were building the binaries for arm as of last week08:30
jamsomeone was just requesting sinzui do an arm build for 1.1508:30
jamso we might in the near future08:30
jamhmm... I see armhf for 1.14.008:31
fwereadeTheMue, dimitern: cheers08:31
fwereadejam, heyhey08:31
fwereadesorry I'mlate, Iwas uprather late last night08:31
allenapjam: The message is: stick with PyJuju on ARM for now?08:32
jamtools/juju-1.14.1-saucy-armhf.tgz08:32
jamfwereade: happy birthday (to continue the trend)08:32
jamallenap: so we only have *saucy* builds with arm08:33
fwereadejam, so, I would like to say "drop the daily datasource in azure and have done with it"08:33
jamfwereade: right, we still have the open question about whether we want to fallback or not08:33
fwereadejam, but I don't know enough about how/if it will react with the image-stream config setting, and other associated snippets of code inside that provider08:34
allenapjam: I'll ask him to deploy saucy with 1.14.1 to see what happens. It may be he's okay with saucy in general. Thanks.08:34
jamallenap: so I think we want to support it, but only having saucy builds is going to make things harder to debug rather than easier, I imagine08:34
jamfwereade: so (1) we're going to just delete the azure daily stream lookup, no problem there we all agree08:34
jamfwereade: but (2) if you have some data that gets found, but without matching, should we go to fallbacks?08:35
jameg, I upload a custom Precise image, set up the simplestreams for it, and then go "juju deploy cs:saucy/mongo"08:35
jamfwereade: current implementation just fails because it finds your private-bucket simplestreams data and goes no further08:36
jamfwereade: axw's patch would let us keep searching and find the Ubuntu stock images for saucy08:36
fwereadejam, one possibility that crossed my mind was to give datasources a bool method meaning "if there's an index, fall back no further"08:36
jamfwereade: which way seems less WTF for a users?08:36
fwereadejam, and so anything explicitly user-set will mask out everything else08:36
fwereadejam, ie image-metadata-url, tools-url, and synced tools08:37
jamfwereade: but is that better than just allowing them to override certain settings (augment cloud-images) rather than lose everything from there entierly08:37
axwfwereade: I had the same thought too (a flag to say whether or not to keep going). But I sorta think daily shouldn't be in there by default anyway.08:37
jamfwereade: also, I wouldn't mind chatting about the fact we *cannot* upgrade 1.14 => 1.1508:38
jamfwereade: I saw you going WTF yesterday, so you might have a plan of attack08:38
jamthough I have one that I'm willing to try08:38
fwereadejam, dimitern has been looking at the worst of the upgrade problems and I think has a plan of attack08:38
jamfwereade: so download-tools.txt vs download-url.txt comes to mind, but beyond that ?08:39
fwereadejam, there's a sort of nexus of suck around tools, setagenttools,and upgrader08:39
dimiternfwereade, jam, yeah  - just filing a bug about it08:40
jamdimitern: bug #123393408:40
_mup_Bug #1233934: upgrade from 1.14.1 to 1.15.0 fails <hp> <juju-1.15.0> <upgrade-juju> <juju-core:Triaged by jameinel> <https://launchpad.net/bugs/1233934>08:40
fwereadejam, so yeah, those text files are part of the problem08:40
fwereadejam, which I propose we handle by just never reading them08:41
fwereadejam, and never storing any of the associatedinformation in state08:41
fwereadejam, write them out as we unpack, sure, why not08:43
jamfwereade: well arguably we'd also like to cache the lookup in state, but that is pretty removed from the issue at hand.08:43
jamso we *do* want FindTools to report them (hopefully it always can, as it seems to be a hard requirement right now if we actually want to validate the binaries we've downloaded)08:43
jamBut we could have a type FoundTools struct { Tools, SHA256, ...}08:44
jamytpe08:44
jamtype08:44
jamfwereade: as for reading downloaded-url.txt, that has been the indication of if we have done a download08:44
fwereadejam, but it's only there so ReadTools can hack together a *Tools08:44
jamrather than statting the directory08:44
fwereadejam, ok the fundamental thing is that SetAgentTools shouldnot beSetAgentTools08:45
fwereadejam, it should be SetAgentVersion08:45
fwereadejam, so the upgrader should not be dicking around with ReadTools at all, ever08:46
dimiternfwereade, jam, there it is - bug 123403508:46
_mup_Bug #1234035: upgrading from 1.14 to 1.15 fails (tools not found, upgrader) <juju-core:Triaged by dimitern> <https://launchpad.net/bugs/1234035>08:46
fwereadejam, because the only useful piece of information is the version08:46
jamfwereade: we need the Binary information08:46
jamfwereade: so it has to be at least SetAgentBinary08:46
fwereadejam, all the rest is just N copies of redundant data, one per agent, that's never even looked at08:46
jamdimitern: isn't that just a dup of bug #123393408:46
_mup_Bug #1233934: upgrade from 1.14.1 to 1.15.0 fails <hp> <juju-1.15.0> <upgrade-juju> <juju-core:Triaged by jameinel> <https://launchpad.net/bugs/1233934>08:46
fwereadejam, ehh, maybe, but really why bother denormalising it?08:47
fwereadejam, we know hardware characteristics (ie arch) and machine series *anyway*08:47
jamfwereade: we need the arch and series so that when you ask for "what tools do I need to upgrade to" we can point you to the right URL08:47
jamfwereade: from where?08:47
jambecause we can search around for the machine the agent is running on ?08:47
dimiternjam, maybe that one is a duplicate of mine, because it has more context inside?08:48
fwereadejam, but yeah, it's convenient enough, I don't really have a quarrel with a version.Binary08:48
fwereadejam, er, version.Current?08:48
fwereadejam, the only other client of ReadTools is the lxc provisioner, which is a bit cracky itself, because we can get all the relevant information from the tools-for-this-machine API call08:49
jamfwereade: so we have Upgrader.Tools() as an API, which needs to return a URL to download from, and preferably a Version so that we can make sure it actually changes something08:49
jamwe currently do the lookup just on Machine.Tag()08:49
jambecause we already ha08:49
jamhad the desired version in EnvironConfig08:50
jambut we needed the Arch and Series informaction08:50
fwereadejam, yeah, which we have08:50
jamWe get that from whatever the agent previously recorded from an earlier SetTools call08:50
jam(agent always calls SetTools on start)08:50
jambefore it asks if it should upgrade08:50
fwereadejam, I know all this... and none of it has any reason to ReadTools because *all* that info is in version.Current08:51
jamfwereade: right, except URL, which we don't need to pass around08:51
jamwe need it *from* Upgrader.Tools08:52
jamto tell us what to download08:52
fwereadejam, and we could even just send version.Current.Number because we *do* actuall know series/arch, but that's a smentic change to a field so let's not go there08:52
fwereadejam, ok, agreed08:52
fwereadejam, so we've implemented this Tools method08:52
fwereadejam, and we can drop ReadTools *completely* if we just use it in provisioner instead of messing around grubbing up our own data instead of asking the authoritative source08:53
jamfwereade: so lxcBroker wants the full tools information because of ? It wants to give the instances identical tools with the same source?08:55
jam(I'm pretty sure you can run a Saucy machine and have a Precise LXC on i t)08:55
jamfwereade: so I'm not 100% sure why lxcBroker needs tools at all08:56
fwereadejam, well, at the moment, we're restricted to the same series08:56
jamfwereade: why ?08:56
fwereadejam, exactly because we had this readtools thing to mes about with, and *didn't* have an api method to talk to08:56
jamfwereade: k, but even there do we actually use the URL?08:57
jamif we are requiring the instances to use the file we have08:57
jamwe have it right here on disk08:58
jamfwereade: anyway, sounds reasonable to change the SetAgentTools api09:00
jamand then get rid of having to read the URLs everywhere09:00
fwereadejam, right09:01
fwereadejam, but saying "download it from the same place" seemed like the easiest way to get them there at the time09:01
fwereadejam, fwiw "download from somewhere" will I think be the right answer in general anyway, once we have eg kvm machines that might not even be the same arch09:01
fwereadejam, doesn't look like we actually enforce the series restriction in state though09:02
fwereadejam, maybe that's ok, it'snot really state's concern09:02
jamfwereade: right, you *should* be able to switch series, even if you can't switch arch on containers (though I also know that you can run 32-bit LXC on 64-bit very easily and have done it many times)09:04
jamyou probably can't run 64-bit lxc on 32-bit host, or arm on i386, etc.09:04
fwereadejam, yeah09:05
jamfwereade: anyway, this sounds like a great plan, and if dimitern is picking it up, I'm happy to let him do it and focus on other things.09:05
fwereadedimitern, you ok with that?09:05
dimiternfwereade, jam, cheers09:06
dimiternI'll deal with it09:06
jamfwereade: the nice effect is that it leaves us in a better place going forward, rather than "ok at least the upgrade works for 1.14 => 1.6"09:06
jam1.1609:06
fwereadejam, yeah, that's the hope, just strips away a little bit of unnecessary complexity09:07
jamcertainly good to step back and say "why do I need this field" rather than adding another kludge to handle the previous one09:07
fwereadejam, the provisioner API will probably have to evolve a little as we progress, but that shouldn't hurt too much09:07
fwereadejam, so, I am also mildly freaking out about this maas business09:08
jamfwereade: which bit ? bootstrapping maas with juju to have juju on maas ? or some specific bug about juju and maas ?09:09
fwereadejam, https://bugs.launchpad.net/gomaasapi/+bug/122267109:10
_mup_Bug #1222671: maas provider must only attempt to stop machines in the allocated state <cts-cloud-review> <Go MAAS API Library:Triaged> <https://launchpad.net/bugs/1222671>09:10
jamah, can we just do the name thing and not try to get it perfect ?09:10
fwereadejam, so basically we have this stuff documented both in maas and juju, going back to python times09:13
fwereadejam, "issue yourself a fresh maas api key for each juju environment and everything will be fine"09:13
fwereadejam, apparently that is horsepoo09:13
fwereadejam, rvba informs us that it doesn't work and I'm getting a string impression that it never did09:13
fwereadejam, which kinda leaves me WTFing a bit hopelessly09:13
fwereadejam, but I guess it'snot directly a1.16 thing09:13
fwereadejam, so I should probably be off to review some things that *are* 1.16y09:13
fwereadejam, hell, I thought I'd published comments on https://codereview.appspot.com/13962043/09:18
fwereaderogpeppe, can we land https://codereview.appspot.com/13968043/ ?09:22
rogpeppefwereade: will do09:22
rogpeppefwereade: i'm looking for a review of https://codereview.appspot.com/14207046/ BTW09:24
fwereaderogpeppe, and https://codereview.appspot.com/14123043/ looks like it was blocked by a known intermittent failure so that might be worth another shot?09:25
fwereaderogpeppe, looking at that now09:26
rogpeppefwereade: thanks09:26
fwereaderogpeppe, LGTM essentially, bit of waffling in the CL, let me know your thoughts09:41
rogpeppefwereade: thanks. will do.09:41
jamfwereade: I think you're right about FinishMachineConfig, I didn't really know it existed, and it feels a *bit* funny to have stuff not initialized until you "Finish" but it is absolutely a place that takes Config data and puts it into the MachineConfig (which New* don't)09:52
rogpeppefwereade: the ErrPrepared thing is a good point. it *can* currently leak out to the user in at least one circumstance, i think, which is when the user hasn't bootstrapped, invokes a juju command that expects a prepared environment, and the provider needs extra attributes created by Prepare.09:52
rogpeppefwereade: part of the problem is deciding on an appropriate error message in this case09:55
jamfwereade: provisioner_task calls environs.NewMachineConfig but does *not* call environs.FinishMachineConfig ?09:55
fwereadejam, FinishMachineConfig happens elsewhere, I think, just a mo...09:56
jamfwereade: inside StartInstance09:56
jamso... fairy nuff09:56
fwereadejam, heh, I see, by hand every time :/09:56
jamfwereade: probably why I didn't think about it in the first plcae09:57
jamplace09:57
fwereaderogpeppe, surely we can infer non-bootstrappedness from non-preparedness?09:58
rogpeppefwereade: not really09:58
jamfwereade: you may not have prepared it on your machine, but someone else bootstrapped already09:58
jamI'm guessing09:58
rogpeppefwereade: bootstrapped-ness is somewhat orthogonal (actually, totally orthogonal currently)09:58
rogpeppefwereade: because you can be prepared without being bootstrapped09:59
jamrogpeppe: fwereade's point is that you can't be bootstrapped without being prepared09:59
rogpeppefwereade: and currently, for backward compatibility, you can be bootstrapped without being prepared09:59
jambut I think that is only if you are running on one machine.09:59
fwereaderogpeppe, ok, got you09:59
rogpeppefwereade: in the future, i want to make it so that if there's no environment then you'll get an "environment not found" error or something10:00
fwereaderogpeppe, ok, that one slightlynasty error messageshould not block it10:00
rogpeppefwereade: ok, thanks.10:01
rogpeppefwereade: i wonder if "incomplete environment configuration" might be a better message10:01
fwereaderogpeppe, not sure it helps a lot tbh10:02
jamfwereade: the other *really* nice thing about FinishMachineConfig is that I can actually test that setting the Config entry has an effect on the MachineConfig NewBootstrapConfig sort of stuff is not well isolated from actually starting an instance.10:03
jamfwereade: so thanks for the pointer10:04
jammakes me a lot happier there10:04
fwereadejam, cheers :)10:04
dimiternfwereade, fix done hopefully, live testing now10:10
fwereadedimitern, <310:10
natefinchjam: did we decide on a review target? I think you mentioned something, but I don't remember an email about it, and searching for code review in my inbox is not helpful ;)10:12
jamfwereade: https://codereview.appspot.com/13962043/ has been updated10:12
jamnatefinch: I didn't10:12
jamwith the release I decided lets focus on getting code done10:12
natefinchjam: ok, cool10:12
fwereadeaxw__, responded on https://codereview.appspot.com/14254043/ -- will be landing unless you still think it's wrong10:15
* TheMue => short lunch break10:22
fwereadedimitern, actually if you have 5s would you take a quick look at https://codereview.appspot.com/14254043/ and let me know if my comment's obviously insane10:22
dimiternfwereade, looking10:22
dimiternfwereade, as I get it - it's better not to kill the environment if we fail to stop the instances?10:25
fwereadedimitern, yeah, exactly, that's the original behaviour10:25
dimiternfwereade, sgtm10:25
fwereadedimitern, the env is not considered destroyed until its storage is trashed10:25
dimiternfwereade, yeah, sounds sane; and (*drumroll*) there it is https://codereview.appspot.com/1423104410:26
jamfwereade: fwiw, I think we want to just punt about the bootstrap-state file, we didn't really follow through with that and now it gets us into "juju bootstrap" failing leaving us in a state where we thing it is bootstrapped and you have to destroy something that never existed.10:28
jamfwereade: I also agree that if we fail to stop something we don't delete the storage based on how the if/return works10:32
jamdimitern: don't we want SetAgentTools to actually strip the values? Or are you thinking to add a SetAgentVersion ?10:33
fwereadejam, expand on the first comment a little please -- punt on what exactly?10:33
jamfwereade: we added bootstrap-state so we could try to notice "you're running a python-juju env"10:33
jamand not muck it up10:33
jamfwereade: however, if you're running python-juju environment, you won't have a Cert file to talk to the state node anyway10:33
jamso we fail really early10:34
jamfwereade: so *I* think we should just nuke all the bootstrap-state code because it just complicates things for no gain10:34
fwereadejam, except that we have hard dependencies on it10:34
fwereadejam, LoadStateFromURL in jujud bootstrap10:34
jamfwereade: I think all of those could be adjusted. We have provider-state rather than bootstrap-verify10:35
dimiternjam, I don't plan on adding SetAgentVersion10:35
jamfwereade: but notice that LoadState *doesn't* read the file10:35
jametc10:35
jamI may be wrong on the naming10:35
jambut we have 2 ways of "loading" and *one* checks the file, and the other *doesn't*10:35
jamdimitern: in which case, I would actually strip the fields that we don't actually want in the DB10:35
jamnamely URL Size and SHA10:35
fwereadedimitern, I like what jam's saying10:36
jamwe need Tools() to give the caller those values, but SetAgentTools doesn't need to record them.10:36
dimiternjam, fwereade, we do want them, don't we?10:36
fwereadedimitern, leave the API alone but make the SetAgentTools in state into SetAgentVersion?10:36
fwereadedimitern, no10:36
dimiternfwereade, why?10:36
jamfwereade: it was something danilo had been working on, but he left and it didn't realyl get that polished, and other changes mean it is just like your appendix10:36
jamcruft that is likely to get you in trouble :)10:36
fwereadedimitern, because we do not want any of that crapin state10:37
fwereadedimitern, full stop10:37
dimiternfwereade, which crap?10:37
dimiternfwereade, size, checksum or url?10:37
jamdimitern, fwereade: sha size, URL10:37
fwereadedimitern, anything except the agent'sbinary version10:37
dimiternfwereade, so no verification of what we're trying to install?10:38
fwereadedimitern, no verification of what we've *already* installed10:38
fwereadedimitern, it's verified perfectly well before the code that sets it even runs10:38
fwereadedimitern, if the verification worked, no need to set it10:38
dimiternfwereade, so are we doing pre-install verification?10:38
dimiternfwereade, we can't just remove the Tools method from the upgrader and change it to Version10:39
fwereadedimitern, I never mentioned Tools10:39
fwereadedimitern, we need to et that info in order to verify10:40
dimiternfwereade, so only SetAgentTools -> SetAgentVersion10:40
dimiternfwereade, in state and no changes in the API except for that?10:40
fwereadedimitern, yes, and that just in state, leave the API alone as much as possible -- just ignore/drop fields, don't change names or anything10:40
dimiternfwereade, I need to change the API to call SetAgentVersion instead of SetAgentTools at least10:41
dimiternfwereade, but that's internal, won't change the interface10:41
fwereadedimitern, yep, that's all good10:41
dimiternfwereade, and I suppose that's another live ec2 tests after that10:41
fwereadedimitern, probably, but I'll try to hit the rest of the review soon too10:42
dimiternfwereade, ok10:42
fwereadedimitern, ie I'll try to save you having to do more than one more round of live testsing ;p10:43
dimiternfwereade, ah well, that's nice :)10:43
jamdimitern: right, so Tools doesn't change because we need a URL and when we download it we need to validate the SHA, but SetAgent*  doesn't need the URL or sha, etc. Arguably we should have different types10:45
jambut we can live with 1 type and just ignore bits of it10:45
jamfwereade: should we be adding "omitempty" flags to the Tools object ?10:45
dimiternjam, machine and unit will have SetAgentVersion(version.Binary) methods instead of SetAgentTools10:45
dimiternstandup10:45
fwereadejam, what, are we storing Toolses directly in state?10:45
dimiternfwereade, we are storing coretools.Tools in state10:46
fwereadejam, dimitern: can't we just make it a one-field struct?10:46
jammgz fwereade: rogpeppe:https://plus.google.com/hangouts/_/3b7ffbb7710f75a160f5ae900736d7276d6b241f10:46
dimiternfwereade, I'd rather not explode the complexity of this already not-so-small CL10:47
fwereadedimitern, jam: or, ehh, keep the stupidity, just construct a Toolswith just the version field10:47
jamfwereade: so the issue is that we've been using it in the API and writing it to State10:47
jamand they need to be a bit different now10:47
jamfwereade: but that means we've written empty values into the DB unless we have omitempty, right?10:48
dimiternit's ok if we just set the version10:48
jamfwereade: anyway, standup we can live chat this after10:48
dimiternwe have omitempty only for the sha I think10:48
dimiternwe can make all the others except version omitempty as well10:48
jamdimitern: +110:49
fwereadejam, I don't care what's in the DB, nobody has ever read anything from the db apart from the version10:50
fwereadejam, it's straight-up crack putting external objects directlyinto the db *anyway*10:50
dimiternfwereade, I did btw11:04
mgzgahhh... deliver th11:17
mgze packets google11:17
fwereademgz, I feel a bit better if it hates you too :/11:22
fwereadedimitern, reviewed11:22
dimiternfwereade, thanks11:22
fwereadedimitern, I observe that ReadTools is now basically unused, but that can wait11:22
fwereadedimitern, I am fairly heavily weirded out by what you do in Upgrader though11:23
jamfwereade: going over https://launchpad.net/juju-core/+milestone/1.16.0 right now11:24
jamare we actually intending to do all of them11:24
fwereadedimitern, looks like you're getting the proposed tools and setting them as the current ones, this will mean you can't upgrade now11:24
jamlike bug #108929111:24
_mup_Bug #1089291: destroy-machine --force <juju-core:Triaged> <https://launchpad.net/bugs/1089291>11:24
fwereadejam, that one? not a chance11:25
rogpeppefwereade: what do you think about the status os https://bugs.launchpad.net/juju-core/+bug/1089291?11:25
dimiternfwereade, ReadTools is used in a few places, so I didn't want to remove it just yet11:25
_mup_Bug #1089291: destroy-machine --force <juju-core:Triaged> <https://launchpad.net/bugs/1089291>11:25
rogpeppes/os/of/11:25
dimiternfwereade, not sure what you mean for the upgrader11:25
dimiternfwereade, the upgrade works actually11:25
fwereadedimitern, yeah, but no future upgrade ever will11:25
fwereadedimitern, https://codereview.appspot.com/14231044/diff/1/worker/upgrader/upgrader.go#newcode10111:26
dimiternfwereade, ok11:27
fwereaderogpeppe, jam: that bug in particular is at least a few day's work I think11:27
rogpeppefwereade: thought it might be11:27
fwereaderogpeppe, jam: https://bugs.launchpad.net/juju-core/+bug/1217781 is smaller and more important though11:27
rogpeppefwereade: we're going through https://launchpad.net/juju-core/+milestone/1.16.0 BTW11:27
_mup_Bug #1217781: machine destruction depends on machine agents <cts> <cts-cloud-review> <juju-core:Triaged> <https://launchpad.net/bugs/1217781>11:27
rogpeppefwereade: that's not targeted to the milestone11:28
fwereaderogpeppe, I think it's somewhat unrealistic regardless, but unquestionably a better candidate than 108929111:29
fwereadeoh ffs11:36
rogpeppefwereade: gone again?11:36
fwereadeindeed11:37
fwereadeeverything is working just fiine, except for hangouts :/11:37
rogpeppegah11:37
rogpeppefwereade: finished now11:39
fwereadeheh11:39
rogpeppei see sporadic test failures on provider/null11:39
fwereaderogpeppe, would you hand them over to axw_ for tonight or tomorrow or whatever "soon" is in his timezone please?11:41
* fwereade is grabbing a quick lunch11:41
rogpeppefwereade: will do11:41
jamfwereade: what was the bug I was asking if we had (and didn't see) ? I can't remember now that I've gone through 10 other bugs.11:45
jamfwereade: for "provider.Tools()" this is a bug that might be serious11:57
jamfwereade: https://codereview.appspot.com/14231044/patch/1/100511:57
jamdimitern: ^^11:57
jamspecifically, for one of our releases Upgrader was calling Tools as well11:57
jambut we didn't have Provider credentials yet11:57
jamso it spins and keeps killing the API server.11:57
fwereadejam, cloud-tools-archive11:58
jamFor Upgrader this was fixed with adding the DesiredVersion API call11:58
jamfwereade: thanks11:58
fwereadejam, surely that shouldn't be killing the whole api server though, just the failing task?11:59
fwereadejam, was that when we were still using allFatal perhaps?12:00
jamfwereade: my point being, "bouncing workers" seems like a bad thing to think is just-ok-to-do12:02
jamand asking Tools before first "juju status" means it will keep bouncing12:02
* fwereade grabbing a bit more lunch12:02
jamdimitern: ^^ Calling Tools requires us to have the Environment/Provider credentials enabled on the API server (aka, juju status has transferred the secret attrs).12:13
jamI *believe* we are ok because of the call for WaitForEnviron12:13
jamis that true?12:13
jamor are we going to see LXC Provisioners start bouncing once their up because they call Tools and it can't access the Storage to search for tools ?12:13
dimiternjam, we have an environ before we call Tools12:21
dimiternjam, that's WaitForEnviron's job12:21
jamdimitern: not in upgrader12:21
jambut yeah12:21
jamI tihnk Provisioner is ok12:21
jamdimitern: so if you make the change William suggests here: https://codereview.appspot.com/14231044/patch/1/101512:22
dimiternjam, the upgrader won't call Tools - i'm changing it to set the current tools, as fwereade suggested12:22
jamI think we're ok12:22
fwereadedimitern, well, it and the provisioner will still both call Tools12:22
jamdimitern: https://codereview.appspot.com/14231044/patch/1/1002 is still odd to me12:23
jamfwereade: so Upgrader will definitely only call Tools after calling SetTools which is just fine. And It won't call Tools until it has called DesiredVersion12:23
jamso we are generally ok12:23
jam(if someone asks for "juju upgrade-juju" they should have connected and passed the secrets)12:23
jamfwereade: there is a small race if Provisioner starts up first, sees we have a configured environment, and Upgrader hasn't finished calling SetTools first12:24
jamI think12:24
fwereadejam, ok, but provisioner *might* get in there -- indeed12:24
dimiternjam, I commented on it, and will be removed - rogpeppe already fixed it in trunk12:24
fwereadejam, imo that doesn't matter enough to invalidate the technique12:24
fwereadejam, that's almost the whole point of runner, so we can be resilient to this sort of thing12:25
jamfwereade: so I feel like the whole thing is a bit incorrect, though.12:25
jamWe shouldn't be calling tools to *instantiate* the broker12:25
jamwe should have the lxc broker calling Tools when it is asked for a new instance.12:25
fwereadejam, the broker should not be responsible for tools in the first place afaict12:25
jamfwereade: My faith in non-bouncing runners is quite low12:25
jamfwereade: Environs provide tools in the current layout12:25
jamand LXC Broker is environ-lite12:26
jamI guess12:26
fwereadejam, broker is clearly not responsible for tools, because it *takes* possibleTools and doesn't look them up itself12:26
fwereadejam, provisioner should be thinking "broker" not "environ"12:26
jamfwereade: provider.StartInstance looks up tools for the broker12:26
fwereadejam, afaict tools should be coming from the api in exactly the same way in both cases frankly12:27
jamand uses either "environ.Environ.FindTools" or broker.Tools if it has the attribute12:27
fwereadejam, that however is too big a change to make here and now12:27
fwereadejam, I know what it does12:27
jamfwereade: right, I wasn't going to block on it, but notice "this is really messed up" :)12:27
fwereadejam, I'm just saying it's crap :)12:27
jamfwereade: and has the advantage that we avoid a boot-time race condition12:27
fwereadejam, yeah, I think it's tolerable12:28
* rogpeppe goes for lunch12:28
jamfwereade: probably should be documented in a bug12:29
fwereadejam, I'm just not quite sure what the bug is -- "lxc provisioner might bounce once or twice on upgrade"?12:31
jamfwereade: lxc provisioner calls Tools before it actually tries to start an instance12:31
fwereadejam, or possibly "lxc broker pretends to know about tools"12:35
fwereadejam, hey, is there any reason to do *that* even?12:35
jamfwereade: given we can just search for tools again, I don't see why.12:36
fwereadejam, can we just drop lxc broker's Tools full stop?12:36
jambut I don't know why the LXCBroker is playing games with tools12:36
jamfwereade: so you do still need to find tools, and you don't have Env creds to search directly12:36
jamfwereade: can I get a final LGTM on https://codereview.appspot.com/13962043/ ?12:36
jamI think I addressed your comments12:36
fwereadejam behind api, though, so irrelevant?12:37
fwereadejam, looking12:37
jamfwereade: if we change it to call the API, +1 from me12:37
fwereadejam, that LGTM, thanks12:38
=== jtv2 is now known as jtv
dimiternfwereade, so we're changing SetTools of the upgrader API to take only a version and ignore the others as well ?12:45
dimiternjam ^^12:46
jamdimitern: version.Binary (aka with Arch and Series)12:47
jamso version.Current content12:47
dimiternjam, yeah, ok12:47
jamaxw_: what are you doing working? :)12:48
axw_jam: just culling my inbox :)12:49
jamaxw_: and responding to IRC, and reviewing code, and ? :)12:49
axw_hehe12:49
axw_and now playing skyrim ;)12:49
jamaxw_: very fun game12:50
jamPC?12:50
axw_yup12:50
axw_I don't play games all that often, but this one has me hooked for now12:50
jamaxw_: Steam claims I played it for 153 hours....12:51
axw_jam: only 105 here ;)12:52
natefinchman I wish I still had time for games.  Maybe once the kids are in school :)12:54
mgzor when they leave home12:55
mgzonly a decade and a bit till freedom?12:55
natefinchmy kids are 0 and 2, so, like 18 years :)  Hey, at least graphics ought to be pretty awesome by then12:56
TheRealMuenatefinch: be promised it will get better13:01
fwereadenatefinch, I was playing a game just the other day!13:02
natefinchTheRealMue: thanks.  I think it's pretty awesome, I just mourn for my free time, especially now that our 3 month old has decided 6am is a good time to get up (previously, I had been able to get up early to get some free time before the rest of the house woke up)13:02
fwereadenatefinch, iirc it was "dora the explorer saves the crystal kingdom", but hopefully laura's tastes will mature13:02
=== TheRealMue is now known as TheMue
natefinchfwereade: haha.  Yeah, I'm hoping to encourage good tastes in games, both digital and tabletop, since I enjoy both13:03
rogpeppefwereade: ha, i've discovered why the jujutest live tests are failing13:05
fwereaderogpeppe, oh yes?13:06
rogpeppefwereade: the jujud that gets uploaded is a fake! (it's just a temp file containing the text "jujud contents 1.15.1-precise-amd64")13:06
rogpeppes/temp file/text file/13:06
fwereaderogpeppe, arrgh13:06
rogpeppefwereade: it was pretty awkward to find out though, because it seems that there's no default key pair used for new instances13:07
rogpeppefwereade: i used to be able to ssh into an instance even before cloudinit had finished13:07
rogpeppefwereade: so i had to detach the instance's volume and attach it to another instance so i could see what was going on13:07
fwereaderogpeppe, that's odd, I didn't think we had any awareness of amazon keypairs13:09
fwereadeever13:09
rogpeppefwereade: me neither. i wonder if an amazon default has changed.13:09
rogpeppefwereade: ah, looks like the live tests were broken here: https://codereview.appspot.com/14031043/diff/7001/environs/jujutest/livetests.go13:14
rogpeppefwereade: i *think* all those UploadFakeTools calls are spurious in a live test context, but i don't really understand why they were added.13:15
dimiternso ian goes to a holiday and all tools break loose :)13:15
rogpeppedimitern: it's not easy to review 4700 line diffs...13:16
fwereadedimitern, ehh, less hell than I feared13:17
dimitern:)13:18
dimiternrogpeppe, any idea why I see this failing? http://paste.ubuntu.com/6183812/13:19
rogpeppedimitern: that test is new on me; just introduced in https://code.launchpad.net/~thumper/juju-core/environments-dir-permission/+merge/18875413:23
rogpeppedimitern: i'll have a look13:24
rogpeppedimitern: that's pretty weird13:25
rogpeppedimitern: what go version are you using?13:26
dimiternrogpeppe, the one from the archive13:26
dimiternrogpeppe, go version go1.1.1 linux/amd6413:26
rogpeppedimitern: from which archive?13:26
rogpeppedimitern: i.e. is it from a PPA? it's quite an odd error to get, because Current *is* (or should be) implemented on linux/amd6413:27
dimiternrogpeppe, there http://paste.ubuntu.com/6183836/13:27
dimiternrogpeppe, it's not from a PPA13:28
fwereaderogpeppe, there may well be some opportunity to pull the tool-fiddling up to a higher level so we can upload real or fake as indicated by the, er, liveness of the test13:28
dimiternrogpeppe, there's a golang bug with might be relevant https://code.google.com/p/go/issues/detail?id=637613:28
rogpeppedimitern: that *shouldn't* be relevant as it won't have been cross-compiler13:29
rogpeppecompiled13:29
dimiternjamespage, do you know how is the golang 1.1.1 package in main compiled in raring/amd64? is it possible for it to be cross-compiled?13:29
rogpeppeoh i hate it when apt-get tries to use the terminal13:32
dimiternrogpeppe, looking here https://launchpad.net/ubuntu/saucy/amd64/golang-go-linux-amd64/2:1.1.1-3ubuntu313:35
dimiternrogpeppe, from the description one might assume it's actually cross-compiled on i386?13:36
rogpeppedimitern: BTW you've got two golang packages in the list you pasted - if i apt-get install golang, i get the second one, not the first13:37
rogpeppedimitern: (i.e. 1.0.2 not 1.1)13:37
rogpeppedimitern: if we are cross-compiling the standard go compiler, that's a potential problem13:38
dimiternrogpeppe, yeah, but I forced the version I think13:38
rogpeppedimitern: ah, how do you force a version?13:38
dimiternrogpeppe, ah, no sorry13:38
dimiternrogpeppe, it seems i used jamespage's raring backports ppa: http://ppa.launchpad.net/james-page/golang-backports/ubuntu raring main13:39
rogpeppedimitern: right, i wondered13:39
jamespagedimitern, please don't use that ppa13:39
jamespageppa:juju/golang13:39
jamespageis the right one to use13:39
dimiternrogpeppe, you force a version by setting it explicitly golang=2:1.1.1-3ubuntu3 .. something13:40
rogpeppedimitern: could you try what jamespage says and see if you still have a problem?13:40
jamespagethe packages in my ppa won't work13:40
dimiternjamespage, rogpeppe, ok, will try13:40
jamespagethey cross compile in a way that is broken13:40
rogpeppejamespage: +113:40
dimiternaha!13:40
jamespagethe packages in juju/golang ppa do it right13:40
rogpeppejamespage: that looks like the issue dimitern was seeing13:40
dimiternrogpeppe, ok it's fine now - using go version go1.1.2 linux/amd64 and the tests pass13:43
rogpeppedimitern: cool13:43
dimiternjam, fwereade, updated https://codereview.appspot.com/14231044/ - live testing on ec2 in the mean time13:43
fwereadedimitern, cheers13:45
jamdimitern: I don't think we want to change the API do we ?13:45
jamIf you aren't changing the Tools struct, I don't see the point of changing the name of the API13:45
dimiternjam, what do you mean?13:45
jamchange the state.SetAgentVersion but state/api/params/internal.go13:45
jamhttps://codereview.appspot.com/14231044/patch/10001/1100513:45
dimiternjam, the name of the type doesn't matter13:46
dimiternjam, just the fields should be the same to be compatible13:46
jamdimitern: fair enough, but I wouldn't change the type name when it still has a Tools object, we can change the type when we change the content13:46
dimiternjam, that's why I put the DEPRECATE tag there13:46
dimiternjam, it's ok we've done this before13:47
jamdimitern: but *why* bother to change X when it does nothing when you have to change Y that actually does something and you can change X when you change Y13:47
dimiternjam, because I wanted to clean up all refs to SetAgentTools in the code13:47
dimiternjam, and I think it's properly documented, so it's not confusing13:48
jamdimitern: so I think we wanted to change "tools.Tools" to add omitempty entries13:50
jamand I'm still not sold on changing the name of the struct13:51
jambut the rest LGTM13:51
dimiternjam, I forgot the omitempty, will add that13:51
jamI'll let fwereade and you discuss the other bits, I'm off for now13:51
dimiternjam, thanks13:51
dimiternbugger.. another random test failure http://paste.ubuntu.com/6183904/13:52
fwereadejam, dimitern: I'd just as soon define (in params) `type Tools struct {Version version.Binary}` and use that -- seems equivalent, right?13:52
dimiternthat *evil* EnvironBootstrapStorager strikes again13:52
dimiternfwereade, not really13:53
dimiternfwereade, we do want to keep the logic with getting the url + size + sha from the environ, right?13:53
fwereadedimitern, ehh, right13:54
fwereadedimitern, type Version struct ;p13:54
dimiternfwereade, we can change all that in 1.18 as we deprecate that stuff13:54
fwereadedimitern, EntityVersion struct {Tag string, Tools Version}13:54
fwereadedimitern, ok, I guess I don't see why we have future deprecation considerations13:55
fwereadedimitern, all that any server requires today is Version, right?13:55
dimiternfwereade, but that way we'll change the type of an API type's field13:55
dimiternfwereade, I chose the most backwards-compatible approach I think13:55
fwereadedimitern, if it's just a struct with compatible fields, what's the problem? it's the field names that screw us,not the types themselves13:56
dimiternfwereade, but if an older client sends fields for that type which are missing?13:56
fwereadedimitern, dropped on the floor automatically, aren't they?13:56
dimiternfwereade, we'll just ignore them I guess13:56
dimiternfwereade, yeah, ok, will do13:56
fwereadedimitern, lovely, thanks13:57
fwereaderogpeppe, is this the one you saw? http://paste.ubuntu.com/6183904/13:57
rogpeppefwereade: yes13:57
rogpeppefwereade: and i know why it happens - i raised a bug13:57
rogpeppefwereade: https://bugs.launchpad.net/juju-core/+bug/123412513:57
_mup_Bug #1234125: provider/null: sporadic test failure <juju-core:New for axwalk> <https://launchpad.net/bugs/1234125>13:57
dimiternrogpeppe, if it's sporadic, add an intermittent-failure tag (I did that now)13:58
fwereaderogpeppe, nice, thanks13:59
dimiternfwereade, EnvironVersion has to be type EnvironVersion version.Binary, right?14:01
dimiternfwereade, no Tag to be seen14:01
dimiternfwereade, and if it is, then I don't see why we need to even define a type - just use version.Binary14:02
fwereadedimitern, we need a type to be where the Tools struct was, surely14:03
dimiternfwereade, yes14:04
dimiternfwereade, so it we redefine Tools *version.Binary should be enough?14:04
fwereadedimitern, surelynot no14:04
dimiternfwereade, ok, I'm confused now, why not?14:04
fwereadedimitern, {Tag: "foo", Tools: {Version: "bar"}} != {Tag: "foo", Tools: "bar"}14:05
dimiternfwereade, ah14:05
dimiternfwereade, so we have type Version stuct { Version: version.Binary } and use that in SetAgentVersion struct14:06
fwereadedimitern, yeah14:07
fwereadedimitern, although it would be great if we didn't continue the practice of verbing sumb structs14:07
fwereades/sumb/dumb/14:07
fwereadedimitern, afaict that data there is an AgentVersion, or possibly an EntityVersion -- not a *Set* anything14:08
dimiternfwereade, there's already AgentVersionResult and Results14:09
rogpeppefwereade: i'm looking at the changes in SetUpSuite in https://codereview.appspot.com/14031043/diff/7001/provider/ec2/live_test.go and they look like crack but i don't know what the current status w.r.t. public buckets is14:09
dimiternfwereade, don't you thing it would be confusing to have AgentVersionResult, AgentVersionResults, AgentVersion and AgentsVersion ?14:09
rogpeppefwereade: the reason for the "verbed" structs in params is that params.X is supposed to mean "the parameters to the call X"14:10
fwereadedimitern, and AgentVersionResult doesn't actually have an agent reference anywhere in it, it's just a VersionResult, surely?14:10
dimiternfwereade, ok, will rename AgentVersionResult* to VersionResult*14:10
rogpeppefwereade: if we want to change that convention, i think we should do it all at once rather than changing some things not others14:11
fwereaderogpeppe, I think that justification breaks down pretty quickly in practice, doesn't it? I haven't really spotted anything resembling consistency in params names thus far14:11
dimiternfwereade, how about AgentToolsResult(s) ?14:12
fwereadedimitern, ToolsResult? no agent mentioned in there...14:13
dimiternfwereade, ok14:13
rogpeppefwereade: they might not be utterly consistent, but *most* of them abide by that convention AFAICS14:13
fwereadedimitern, rogpeppe: sorry I must go, I think laura is crying about me not coming to see the birthday cake she's decorated for me and I amfeeling like a Bad Person14:13
fwereadebbs14:13
rogpeppefwereade: happy birthday, BTW!14:13
fwereaderogpeppe, cheers14:14
fwereadeand cath has mollified laura so I have breathing space14:14
* fwereade still a bad person14:14
fwereadedimitern, ok, reviewed with a few more thoughts, bbs14:21
dimiternfwereade, cheers14:21
rogpeppefwereade, jam, mgz: it's my understanding that an environment's PublicStorage is now entirely ignored when checking for existing tools - is that right?14:23
jamrogpeppe: PublicStorage (afaik) is completely ignored14:24
rogpeppefwereade, jam, mgz: so that the old logic on line 94 of https://codereview.appspot.com/14031043/diff/7001/provider/ec2/live_test.go can't be replaced decently14:24
rogpeppejam: the new code breaks any of the live tests that actually want to run the tools14:24
jamrogpeppe: you can create a storage bucket, write tools to it, and set tools-url: in config14:25
abentleysinzui: I believe we can disable auto-discovery in elasticsearch by setting discovery.zen.ping.multicast.enabled to False.  We would then enable discovery.zen.ping.unicast and use a peer relation to determine discovery.zen.ping.unicast.hosts.14:26
rogpeppejam: how does that help? what we need here is a fallback, not something that will be used if we've uploaded the actual tools14:26
abentleysinzui: http://www.elasticsearch.org/guide/reference/modules/discovery/zen/14:26
rogpeppejam: ah, i see, you mean tools-url points to the simple-streams thingy14:27
rogpeppejam: presumably you'd need to generate simplestreams metadata too14:27
jamrogpeppe: sync-tools / upload-tools generate all that stuff14:28
jamso you need a bucket and then publish tools into it14:28
rogpeppejam: and from within Go ?14:28
TheMuehmm, bzr tells me "This transport does not update the working tree of: bzr+ssh://bazaar.launchpad.net/~themue/juju-core/049-prepare-ec2/" but the branch can be seen in launchpad. anyone an idea?14:28
jamrogpeppe: upload tools from withing go does create simplestreams metadata for the tools it publishes14:28
jamTheMue: there shouldn't be a working tree for a bazaar.launchpad.net branch14:29
jamso there shouldn't be any user files there14:29
rogpeppejam: ok, i'll have a look14:29
rogpeppejam: thanks14:29
TheMuejam: ok, but why does bzr think i want to do so?14:30
jamTheMue: I don't know, I don't see one here: http://bazaar.launchpad.net/~themue/juju-core/049-prepare-ec2/.bzr/14:30
jamTheMue: I could probably do a better diagnose if you had more of the .bzr.log file (found in $HOME)14:31
jamrogpeppe: sync.Upload14:31
rogpeppejam: ah, i was looking at tools.WriteMetadata14:31
mgzTheMue: did you do something funny like `bzr pull -d REMOTE` rather than `bzr push REMOTE`?14:31
TheMuejam: thx, i'll take a look in there14:31
jamrogpeppe: sync.Upload does all the work for you, from what I can tell it is used by bootstsrap14:31
jambootstrap14:31
TheMuemgz: no, a standard push --remember ...14:32
rogpeppejam: in this case i don't want to build and upload the actual tools14:32
TheMuemgz: and it is visible at https://code.launchpad.net/~themue/juju-core/049-prepare-ec214:33
rogpeppejam: hmm, looks like more work than i want to do currently - i'll just go with even slower live tests for the time being14:35
jamrogpeppe: can't you then do UploadFakeTools ?14:46
jamthere is a GenerateFakeTools somewhere14:47
jamrogpeppe: provider/openstack/live_test.go14:49
jamdoes:14:49
jamt.metadataStorage = openstack.MetadataStorage(t.env)14:49
jamenvtesting.UploadFakeTools(c, t.metadataStorage)14:49
jamrogpeppe: MetadataStorage is a testing thing that points at the location pointed to by the LiveTest config14:50
rogpeppejam: yes, i could probably something like that, but i can't afford the hour or so it would take currently.14:50
rogpeppejam: because testing it is so slow14:51
rogpeppejam: and i'm hoping to push the addresser branch14:51
rogpeppejam: and i already have *something* that makes the live tests work14:51
rogpeppejam: i'll leave it as a todo14:51
jamrogpeppe: fine with me14:52
mattywI'm a little confused by the new logging stuff, if I want to deploy a charm and have debug logging do I need to supply "--log-config=<root>=DEBUG" is that right?14:59
rogpeppemattyw: i'm afraid i'm not sure - it's new to me too15:05
rogpeppefwereade: would you be able to take another look at https://codereview.appspot.com/14038045/ please?15:06
rogpeppefwereade: it addresses your concerns i think15:06
rogpeppefwereade, jam: BTW i'm a little concerned about these changes: https://codereview.appspot.com/14258043/diff/6001/environs/configstore/disk.go15:08
rogpeppefwereade, jam: ISTM that they might not work on windows15:08
rogpeppenatefinch: how much of our stuff is supposed to work under Windows?15:09
fwereaderogpeppe, hell, that sounds very plausible15:09
rogpeppefwereade: i have a feeling that ensurePathOwnedByUser should be in an foo_unix.go file15:10
rogpeppefwereade: with a fallback for non-unix15:11
fwereaderogpeppe, that sounds very likely to me to be correct15:14
natefinchrogpeppe: define stuff?  The client builds under windows.  I'm not sure about the tests for the packages the client uses, though. And definitely, a lot of the code outside the client is linux-specific15:16
rogpeppenatefinch: this is client stuff15:16
rogpeppenatefinch: i suppose this stuff *might* work under windows, because os.Chown will still be there15:16
natefinchrogpeppe: I'm taking a look at the code review15:17
rogpeppenatefinch: thanks15:17
fwereadenatefinch, if you concur there's a probablem, would you kick it over to thumper and cc me please?15:17
natefinchfwereade: sure thing15:18
rogpeppefwereade, natefinch: i think that it'll probably work actually.15:18
rogpeppefwereade, natefinch: because SUDO_[GU]ID won't be set, so it won't ever try to do the os.Chown15:18
natefinchrogpeppe: interesting... true, but is that still the correct behavior?  I'm not sure what uid == 0 means15:20
natefinch(in the linux case)15:20
fwereadenatefinch, don't suppose you have a windows box handy to try it out on?15:20
natefinchfwereade: sure do.15:20
fwereadenatefinch, great :)15:21
rogpeppenatefinch: it means SudoCallerIds didn't find SUDO_UID and SUDO_GID i think15:21
dimiternfwereade, updated https://codereview.appspot.com/14231044/ and the live upgrade from 1.14 to 1.15 passes15:21
dimiternfwereade, but I decided to try changing version to 1.16.0 and try to upgrade to that, just in case15:22
dimiternfwereade, but I'm running into issues, like phantom debug logs which are not where they say they are in the source and indeed nowhere to be seen15:22
* fwereade does not like the sound of *that* -- they're not 1.14ones, are they?15:23
dimiternfwereade, http://paste.ubuntu.com/6184278/15:23
dimiternfwereade, no15:23
dimiternfwereade, in tools/list.go:107 there's indeed a loop to match tools in a slice/List but there's no log message there saying "trying to match tools..."15:24
dimiternfwereade, neither in trunk, nor in 1.1415:24
fwereadewhat version do you have installed locally?15:25
fwereadebecause that "found existing jujud" is a bit scary to me15:25
dimiternfwereade, I have my branch15:25
fwereadedimitern, oh wait that's not so scary, I think, ok15:25
dimiternfwereade, and I did rebuild jujuc and jujud after changing the version to 1.16.015:25
dimiternfwereade, the problem is from line 29 on in that paste - before that all seems fine i think15:26
fwereadedimitern, delete pkg/linux_amd64 or whatever it is, maybe?15:26
dimiternfwereade, I'll try15:27
rogpeppefwereade: any chance of a look at https://codereview.appspot.com/14038045/ please? it's a prereq if addressing is going to get done today15:28
rogpeppefwereade: (and you have gone over it before, so shouldn't be too onerous)15:28
dimiternfwereade, ok, so the phantom message is gone, but I still get these on lines 30 and 3115:29
dimiternfwereade, why is the filter empty i wonder?15:29
rogpeppemgz: it'd be nice if you could look too, as it's our branch: https://codereview.appspot.com/14038045/15:30
natefinchrogpeppe, fwereade: uh, hmmm...   C:\Users\Nate>juju --debug bootstrap15:30
natefinch2013-10-02 15:29:05 DEBUG juju.environs.configstore disk.go:77 Making C:\Users\Nate\AppData\Roaming\Juju\environments15:30
natefinch2013-10-02 15:29:05 INFO juju.provider.ec2 ec2.go:215 preparing environment "amazon"15:30
natefinch2013-10-02 15:29:05 INFO juju.provider.ec2 ec2.go:193 opening environment "amazon"15:30
natefinch2013-10-02 15:29:05 ERROR juju supercommand.go:282 cannot create environment info "amazon": cannot rename new environment info file: rename C:\Users\Nate\AppDat15:30
natefincha\Roaming\Juju\environments\098297807 C:\Users\Nate\AppData\Roaming\Juju\environments\amazon.jenv: The process cannot access the file because it is being used b15:30
fwereadedimitern, 1.16.0.*1* is dev15:30
natefinchy another process.15:30
rogpeppenatefinch: oh great15:30
rogpeppenatefinch: i think i know the fix15:31
dimiternfwereade, 1.16.0 is what I set - .1 is added by upload-tools15:31
rogpeppenatefinch: yeah, we need to avoid the defer tmpFile.Close15:32
rogpeppenatefinch: that's useful, thanks15:32
natefinchrogpeppe: I figured it was something like that15:32
natefinchrogpeppe: I don't think I actually tested the changes in that CL, though15:32
dimiternfwereade, i'm trying 1.17.1 now15:32
dimiternfwereade, now it works15:33
rogpeppenatefinch: actually i think you probably have15:33
fwereadedimitern, if you want 1.16.0 I think you'll need to generate tools metadata and sync *that*, won't you?15:33
dimiternfwereade, so we can't use --upload-tools with even minor versions15:33
rogpeppenatefinch: it would have failed earlier if they hadn't worked15:33
fwereadedimitern, we can, but juju knows damn well that uploaded tools arenot releasedones ;p15:33
natefinchrogpeppe: oh, ok.  It wasn't clear to me if I'd gotten to that code or not.  good.15:34
dimiternfwereade, whew.. ok, 1.17 works and upgrades ok15:34
dimiternfwereade, I'm not even trying to understand that whole complex process just now15:34
dimiternfwereade, maybe tomorrow, once I start on minor version upgraders15:35
dimiternupgrades15:35
mgzrogpeppe: sure, looking15:35
mgzrogpeppe: while you're between things, what's the correct way to run amazone live tests right now?15:36
mgzI get a panic when cdng into provider/ec2 and using -gocheck.f15:36
rogpeppemgz: i run them with "go test -amazon -test.timeout 2h"15:36
mgzhm, probably can't do the cd15:36
rogpeppemgz: some of the live tests don't work in isolation15:36
rogpeppemgz: and many of the live tests are broken currently because they don't upload the tools correctly15:37
mgzhm, indeed, not singling out one test to run does things15:38
rogpeppemgz: i have a fix that makes some of the live tests work, but breaks the normal tests. i want to do better, but i'm concentrating on addressupdater for the moment.15:38
dimiternfwereade, btw https://codereview.appspot.com/14231044/ still waits final approval, now after live tests passed15:38
rogpeppemgz: which test were you trying to run and how did it fail?15:38
mgzokay, the test lacks a prepare...15:39
mgzpanic on first line, which uses t.Env15:39
mgzokay, that's an easy fix15:40
mgzman, we realy should just isolate by default15:40
mgzsloppiness15:40
rogpeppenatefinch, fwereade: fix configstore under Windows: https://codereview.appspot.com/1428504315:42
rogpeppemgz: the live tests are deliberately not isolated because we don't want them to take 4 hours to run15:43
rogpeppemgz: but i've been thinking we could do better15:43
mgzrogpeppe: point there is they should have code to share stuff, not need code to not-share stuff15:43
natefinchrogpeppe: looking15:43
rogpeppemgz: we could have one suite that just bootstraps once for the whole suite, and no tests in it destroy the environment15:44
rogpeppemgz: and another which isolates and lets the tests do whatever they like15:44
fwereaderogpeppe, addresspublisher LGTM15:45
rogpeppefwereade: thanks15:45
fwereadedimitern, rereviewing15:45
fwereadenatefinch, would you do rog's review please?15:45
natefinchfwereade: was already looking :)15:45
fwereadenatefinch, have to do dimitern's and become coherent andprofessional before client call in 15 mins15:45
fwereadenatefinch, <315:45
natefinchfwereade: good luck ;)15:46
fwereadedimitern, Idon't understand what's incompatible about the name change -- it's not the API, it's just code15:48
dimiternfwereade, you mean change only the client-side?15:49
dimiternfwereade, SetTools is an API call15:49
fwereadedimitern, it's just a method on an object as far at the provisioner knows15:50
dimiternfwereade, when it's client-side, yes15:50
dimiternfwereade, I though you wanted me to change the SetTools server-side and client-side API calls to SetVersion15:51
dimiternfwereade, to be compatible, we can just change the client-side15:51
natefinchrogpeppe: I see the same pattern in utils.WriteYaml, but that's only called by the uniter, so shouldn't get run on Windows.  It's a good thing to keep in mind, though.15:51
rogpeppenatefinch: yeah15:51
fwereadedimitern, state object changes: good15:51
fwereadedimitern, wire protocol changes: bad (except when analyzed carefully)15:52
fwereadedimitern, state/api code changes for clarity: good, I think15:52
fwereadedimitern, and the state/api interface change has nothing to do with compatibility15:52
fwereadedimitern, just what wesend on the wire15:52
dimiternfwereade, yeah15:56
dimiternfwereade, ok I'll change the client-side to be SetVersion, and keep the server-side as SetTools15:56
fwereadedimitern, but, look, I'm not really bothered about the *actual* name of that method in state/api -- but essentially I think that everything marked DEPRECATE is just unnecessary15:56
fwereadedimitern, I don't want to change the wire protocol further unless there's a behaviour benefit15:57
fwereadedimitern, the suckiness of Version{Version: "foo"}} is not worth the churn IMO15:57
dimiternfwereade, how is it unnecessary?15:57
dimiternfwereade, if we change these right away we're making it incompatible15:57
dimiternfwereade, if we change it at a later release, it'll be ok15:58
fwereadedimitern, I'm telling you *not to change them* unless there's a reason involving something being broken15:58
dimiternfwereade, I'm not changing them15:58
fwereadedimitern, our updating and compatibility story is, yu may have observed, shit15:58
fwereadedimitern, you're apparently saying "I will change them later"15:59
fwereadedimitern, I don't think that's worth committing to15:59
fwereadedimitern, lots of places the API is inelegant15:59
dimiternfwereade, well it is, for clarity15:59
dimiternfwereade, having Tools field which is actually just a version15:59
fwereadedimitern, every such change carries a massive cost in compatibility15:59
dimiternfwereade, I want to commit to improving the api over time16:00
dimiternfwereade, without breaking anything now, hence the DEPRECATE tags16:00
dimiternfwereade, g+?16:00
fwereadedimitern, sorry, meeting started16:01
dimiternfwereade, ok16:01
dimiternfwereade, although please ping me when done16:02
mgzoh gawd, this is amusing16:09
mgzI've actually got the change needed for vpc down to one thing, as the real behaviour is quite a bit more liberal than docs and earlier experimentation implied16:09
mrammawesome!16:11
natefinchmgz: it's nice when things turn out easier than expected16:14
hazmatmgz, nice16:27
hazmatmgz, you mean the sec group id vs name distinction isn't black and white?16:28
mgznope, it *only* matters for filters, not general params, the online docs state it should matter for everything16:30
mgzso, it's fewer extra apis calls to fix for now16:30
mgzthe fun bit being we have zero test coverage for this inside juju-core...16:30
mgzthe one security group focused live test actually passed on default vpc as it didn't exercise the problem case16:31
mgz...or something else weird is going on with live tests16:33
mgzah, ciute, I see16:34
TheMueso, will leave now until monday. tomorrow national holiday17:00
TheMueenjoy your evenings/weekend17:00
fwereade_right, I might go and see my family for a bit -- does anyone need anything from me imminently?17:05
natefinchfwereade_: it's your birthday, stop working! :)17:10
hazmatadam_g, the problem with switching to lp:juju-deployer atm appears to be i don't have access to it. the branch needs to be owned by the group juju-deployers, atm its owned by you, ie for comparison darwin series branch is owned by the group17:42
adam_ghazmat, updated17:43
hazmatadam_g, thanks17:47
hazmatadam_g, not quite.. you have to push the branch to lp:~juju-deployers/juju-deployer/trunk and update the series branch.. branch is currently pointed to a  personal branch. lp:~gandelman-a/juju-deployer/trunk -17:48
adam_ghazmat, one sec17:49
hazmatjamespage, deployer 0.25 uploaded to pypi fwiw, no support yet for to = [1,2,3]17:51
adam_ghazmat, look better?17:52
hazmatadam_g, looks good, thanks17:55
hazmatpushed latest darwin merges to that17:56
hazmatahasenack, could you update your recipe to point to trunk instead of darwin when you have a chance.17:56
ahasenackhazmat: oh, sure, I must have forgotten17:57
ahasenackno, wait, that was something else17:57
ahasenackhazmat: so your "fork" was merged then17:58
hazmatahasenack, yes17:58
ahasenackhazmat: is lp:juju-deployer enough, or do I need to specify the full path? Depends on how "development focus" is setup17:59
natefinchAnyone else think it's a little weird that the help from the juju client includes how to install the juju client? :/17:59
hazmatahasenack, lp:juju-deployer is enough18:00
ahasenackok18:00
hazmatahasenack, thanks.. also fwiw, the version is now at 0.2.518:01
ahasenackon it18:01
jamespagehazmat, thanks - uploaded to saucy18:42
mgzyak #1 of the day: https://codereview.appspot.com/1430204319:18
sinzuiI see this file in a place I don't think it belongs19:22
sinzuis3://juju-dist/tools/releases/juju-1.10.0-precise-amd64.tgz19:22
sinzui^ I think it is a test19:22
sinzui^ I want to delete it, or else I need to write a rule to never pull it down19:22
jamsinzui: delete it, it isn't referenced in the released:tools.json file19:24
sinzuijam, thank you19:24
fwereade_jam, hey... we could actually delete all that public-bucket-related code now, couldn't we?19:32
jamfwereade_: I would need to actually audit for it, but I believe so19:32
jamfwereade_: I was looking around earlier and it seemed that way, but it is still mentioned in some tests, tec.19:33
jametc19:33
fwereade_jam, indeed19:33
jamfwereade_: hopefully my patch lands, I'm off to sleep19:34
fwereade_jam, tyvm, sleep well19:34
rogpeppemgz: i reviewed https://codereview.appspot.com/14302043/20:00
mgzrogpeppe: thanks, rest incoming, was going to break up, but not *too* huge I think (though will take me a little longer to test out)20:06
rogpeppemgz: i've done the rest of the address updater BTW, but still lack most of the tests20:07
thumpermorning20:11
natefinchthumper: morning20:13
thumpernatefinch: how are things going?20:14
natefinchthumper: good good.  documenting stuff.20:14
thumperfwereade_: anything I need to be aware of?20:14
thumpernatefinch: the maas tags?20:15
natefinchthumper: and azure provider (and cleaning up some of the docs on the other providers)20:15
* thumper nods20:15
natefinchthumper: tags are really pretty much already documented as a part of the constraints docs I did yesterday20:16
natefinchoh, I also bugged the web guys to put a menu item for Docs on juju.ubuntu.com20:16
natefinchwell, I bugged Nick, and he bugged the web guys20:17
thumper:)20:18
natefinchthumper, mgz, rogpeppe, fwereade_: I noticed juju help aws is just about the only place we use the term aws, everywhere else we use ec2 or amazon.... in fact, I went through juju help amazon and juju help ec2 before going to juju help to find out what the right term was.20:19
thumperhmm... we really want topic aliases20:20
rogpeppenatefinch: ec2 would probably be a better term to use20:20
thumperagreed, since it is the type we use in the config20:20
rogpeppeyup20:20
natefinchyeah, I was thinking ec2 being the displayed topic, and then having aliases for amazon and aws20:20
thumperrogpeppe: do you know the current api only for non-bootstrap nodes is going?20:21
rogpeppethumper: i'm having difficult parsing that question...20:22
rogpeppeulty...20:22
thumperrogpeppe: we are wanting agents on non-bootstrap nodes to not access state directly20:22
thumperrogpeppe: do you know if this is done?20:22
rogpeppethumper: i think it is, yes, although it's possible the final branch hasn't actually landed yet20:23
thumperrogpeppe: do you know the status of the CLI using the api?20:23
rogpeppethumper: not done20:23
rogpeppethumper: there's one command that uses the API20:23
thumperis it status?20:23
rogpeppethumper: i wish20:23
rogpeppethumper: no, it's get20:23
thumperah...20:23
thumperI heard that status is particularly shit with low latency to the cloud20:24
thumperrogpeppe: have you started on the ha stuff?20:24
rogpeppethumper: no20:24
thumperI'm looking at the address publisher and thinking that's what it is for20:25
thumperis it not?20:25
rogpeppethumper: it's a necessary prereq, but it's also for the addressability stuff20:25
* thumper nods20:25
thumperok20:25
rogpeppethumper: and it's also for the API endpoint caching20:25
fwereade_thumper, rogpeppe: fwiw, get and add-unit use the API20:45
rogpeppefwereade_: ah, i'd forgotten about add-unit20:46
mgzwell, this is a barrel of laughs21:34
thumpermgz: what's that?21:36
arosalesthumper, whats your feeling on https://bugs.launchpad.net/ubuntu/+source/juju-core/+bug/121987921:37
_mup_Bug #1219879: [FFe] juju-core 1.16 for Ubuntu 13.10 <juju-core (Ubuntu):Confirmed> <https://launchpad.net/bugs/1219879>21:37
mgzsilly changes needed to goamz due to test server limitations/oddnesses with what the real stuff actually supports21:37
arosalesfor US Oct 3rd21:37
thumperarosales: I'm adding a comment21:38
arosaleshttps://launchpad.net/juju-core/+milestone/1.16.0 isn't looking good either21:38
thumperarosales: heh, no21:39
arosalesthumper, is your comment going to address what is going to land feature wise per the bug description?21:39
thumperarosales: https://launchpad.net/juju-core/+milestone/1.15.1 is better21:39
thumperarosales: well, with 1.14, the local provider is broken on saucy21:40
thumperarosales: 1.16 unfucks it21:40
arosalesnice to see some fix committed21:40
arosalesthumper, lol21:40
arosalesthumper, please add that to the release notes21:40
mgzyak #2: https://codereview.appspot.com/1430404321:42
arosalesthumper, I can defer bug 1214178 to post 1.1621:43
_mup_Bug #1214178: Azure provider configuration is difficult to configure <azure> <papercut> <juju-core:Triaged> <https://launchpad.net/bugs/1214178>21:43
arosalesthumper, I'll look for a couple others to retarget21:44
thumperarosales: I have a feeling that most of those on 1.16 will need to be pushed off21:44
arosaleswe'll need to hit some, but I agree most will have to be re-targetted21:45
* arosales just wanted to defer the low hanging fruit21:45
natefinchthumper, mgz, anyone else: https://codereview.appspot.com/14207048/    just some doc changes.  Except for help_topics.go, most of it is just formatting changes, not content changes.21:51
fwereade_rogpeppe, hey, what's the deal with verifyAllConfig in ec2?21:52
* rogpeppe looks21:52
rogpeppefwereade_: ah, ok21:53
fwereade_rogpeppe, looks like it's already gone through validation before it's called21:53
rogpeppefwereade_: i'm coming to that conclusion21:54
rogpeppefwereade_: i think what i was aiming towards is that no defaults come into play at that point21:56
fwereade_rogpeppe, I think it's too late for that21:56
rogpeppefwereade_: yes, we need a better SetConfig21:57
rogpeppefwereade_: i think we should leave those changes for another day21:57
fwereade_rogpeppe, sorry, which? picking control-bucket?21:58
fwereade_rogpeppe, I'm not seeing the issue, expand please21:58
rogpeppefwereade_: the issue i'm suggesting leaving alone for now is that providers should not pick default values except right at the beginning.21:58
fwereade_rogpeppe, ah, ok, makes some sense; and rest easy, I have no intention of touching it :)21:59
rogpeppefwereade_: cool. just throw validateAllConfig away.22:00
mgzgeh, what's the idiom for returning an empty struct in an error case, without needing to type `return package.StructName{}, err` everytime?22:04
rogpeppefwereade_, mgz: review would be much appreciated: https://codereview.appspot.com/1430604322:13
rogpeppemgz: var zero = package.StructName{}22:13
mgzrog, perfect timing, just started livetest run so otherwise idle22:13
rogpeppemgz: lovely22:13
mgzrog, just at the top of the func? guess it makes sense as I use it twice22:14
mgzrogpeppe: while I read, see 14304043 for me :)22:14
rogpeppemgz: looking22:15
rogpeppemgz: reviewed22:19
mgzI'm about half way :)22:19
rogpeppemgz: pretty good considering yours is about 1/16th the size :-)22:21
rogpeppemgz, fwereade_: do you think addressupdater should be part of JobManageState or JobManageEnviron ?22:21
fwereade_rogpeppe, feels a bit statey tome22:22
fwereade_to me22:22
rogpeppefwereade_: i started off with that, but just decided otherwise22:22
fwereade_rogpeppe, but it's most closely connected with the provisioner, indeed22:22
rogpeppefwereade_: currently everything in ManageState could theoretically live without a valid Environ22:23
fwereade_rogpeppe, nice theory :)22:23
rogpeppefwereade_: lol22:23
rogpeppefwereade_: that's my aim, eventually anyway22:23
fwereade_rogpeppe, I think it's safe to say that whatever we pick we'll find out why it was wrong soon enough22:24
fwereade_rogpeppe, follow your heart :)22:24
rogpeppefwereade_: ok will do...22:24
fwereade_rogpeppe, (I take particular pleasure in that phrase as a simpsons echo... "hey, boss, should I shoot him gangland-style or execution-style?" "follow your heart"22:26
fwereade_)22:26
rogpeppe.22:26
rogpeppe:-)22:26
hatchhey all - in charm options are .'s a valid word delimeter? 'foo.bar.baz' vs 'foo-bar-baz'22:27
fwereade_hatch, I would not personally stake money on .s working right22:28
hatchfwereade_ ok there is an issue with the Hadoop charm, and the GUI because it uses .'s22:29
hatchcould we set a rule that they are invalid? :)22:29
fwereade_hatch, hmm, is it just hadoop, do you know?22:29
hatchfwereade_: I haven't been able to find another22:30
hatchand I have been looking :)22:30
fwereade_hatch, ok, then, I'm more than happy to call that invalid -- do you know what happens if you try to use those settings on the CLI?22:31
hatchrumor has it it works22:31
hatchI'm going to try it now22:31
hatchit'll take a bit for it to deploy22:32
fwereade_hatch, ok, it would be great if it did break somewhere so I could declare it to be poor input validation with a 100% clear conscience22:32
hatchcertainly - the fact it's an approved charm with them made me a little curious22:32
hatchso once it spins up I'll see if I can set a config option22:32
fwereade_hatch, would you also debug-hooks it please, and see whether you can config-get it correctly too?22:33
hatchfwereade_: I've never done that before - would it be `juju debug-hooks hadoop/0 config-changed` ?22:35
fwereade_hatch, that sounds right, but yu can skip the hook name to debug everything iirc22:35
fwereade_hatch, (do it in a separate terminal or it will be frustrating)22:36
hatchwill do22:36
rogpeppemgz: "22:40
rogpeppeI assume this gets cleaned up at test end anyway, so doesn't need any of its22:40
rogpeppeown?22:40
rogpeppe"22:40
rogpeppemgz: i don't get that remark22:40
mgzwe're fiddling with something global-lloking that gets passed in22:43
mgzI'm just used to change-thi-thing-for-testing function coming with their own cleanup22:43
mgzrogpeppe: do you know any way of switching region with the goamz live tests?22:44
rogpeppemgz: state is reset at test end, yeah22:44
rogpeppemgz: not sure.22:44
rogpeppemgz: i'm not sure where they take their region from22:44
mgzyeah, I couldn't see at a glance22:45
mgzI have a hack that works for the juju-core ones...22:45
mgzhm, the live TestBootstrapAndDeploy test is failing for me... and I think causing other fallout22:58
mgzguess I just propose without confidence of the live tests passing for now22:58
hatchfwereade_: I am not able to set config options via the CLI with .'s FYI23:01
fwereade_hatch, awesome! sounds like an input-validation bug in juju-core, and bad-config bug in the hadoop charm :)23:02
hatchyup - ok thanks, I appreciate the help23:02
fwereade_anyone free to review https://codereview.appspot.com/14307043 quickly?23:03
mgzfwereade_: looking23:09
mgzyaks shaved, payoff: https://codereview.appspot.com/1430904323:10
mgzand day done23:20
rogpeppemgz: well done23:26
rogpeppemgz, fwereade_: this actually integrates the address updater: https://codereview.appspot.com/1425104423:26
rogpeppefwereade_: looking23:26
rogpeppefwereade_: reviewed23:38
rogpeppethumper: any chance of a review of https://codereview.appspot.com/14251044 ?23:39

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