/srv/irclogs.ubuntu.com/2014/09/25/#juju-dev.txt

menn0thumper: I was going to add a test to make sure the machine unit watcher doesn't show things from other environments but that's opened a whole can of worms in terms of filtering work we need to do and required test infrastructure00:35
menn0thumper: do you want me to press on or do the minimal work required to get the units env UUID work landed?00:36
menn0thumper: I'm aware that the identity work needs to get done too00:36
=== mup_ is now known as mup
ericsnowhow do you get an agent.Config from state?01:03
axwericsnow: you don't. agent.Config is read from disk, and only from disk01:07
thumpermenn0: how big is that can of worms?01:08
menn0thumper: at least the rest of the day01:08
* thumper hears "and Friday"01:09
ericsnowaxw: my real question is where do I look up the environment's data dir01:09
menn0thumper: likely01:09
ericsnowaxw: from what I could tell environs.Config doesn't give it to you01:09
thumpermenn0: well, we know we will need a bunch of extra tests later anyway01:09
axwericsnow: that'd be encoded in the upstart job01:09
thumpermenn0: I say punt on it for now, but leave notes in the code01:09
menn0thumper: and actually, since writing to you last i've realised that we can't really do this until at machiens have been migrated too01:09
axwericsnow: the agent is told where it is as a command line arg01:10
thumpermenn0: that makes sense01:10
axwericsnow: what are you trying to do?01:10
thumpermenn0: because they all have dependencies on each other01:10
ericsnowaxw: that's what I gathered01:10
ericsnowaxw: for backups we currently have a bunch of paths hard-coded01:10
menn0thumper: I was trying to set up a second env it's own machine, services and units to test with and kept running into collisions with the initial env01:10
thumperheh01:10
* thumper nods01:10
menn0thumper: I will add some TODOs01:10
ericsnowaxw: I'm looking at how to pull those from elsewhere01:11
axwericsnow: IIRC, datadir is passed into the apiserver as a "resource" ... one sec01:11
ericsnowaxw: you're right01:11
menn0thumper: I have a fair idea of how the test infrastructure for this should look (i.e. a new method on ConnSuite to create a new env and an easy way to get a Factory for that)01:12
* thumper nods01:12
axwericsnow: can you not take it from there then?01:12
thumperaxw: CI blocker: http://reviews.vapour.ws/r/104/diff/ ?01:12
ericsnowaxw: yeah, I guess I was hoping for a single-source-of-truth for paths01:13
axwthumper: looking01:13
thumperericsnow: are you guys looking at https://bugs.launchpad.net/juju-core/+bug/137361101:14
mupBug #1373611: cannot restore a HA state-server <backup-restore> <ci> <ha> <regression> <juju-core:Triaged> <https://launchpad.net/bugs/1373611>01:14
thumperperrito666: is this your fix from before?01:14
ericsnowthumper: no01:14
axwthumper: bugger, I thought our compatibility was only the other way around...01:15
thumperaxw: I pasted back in the code I deleted earlier01:15
ericsnowthumper: http://reviews.vapour.ws/r/101/ has a fix01:16
axwthumper: yep. LGTM01:16
thumperaxw: yeah... see the bug description https://bugs.launchpad.net/juju-core/+bug/137342401:16
mupBug #1373424: method Client.AddMachinesV2 is not implemented <api> <ci> <compatibility> <regression> <juju-core:In Progress by thumper> <https://launchpad.net/bugs/1373424>01:16
ericsnowthumper: for #137361101:16
mupBug #1373611: cannot restore a HA state-server <backup-restore> <ci> <ha> <regression> <juju-core:Triaged> <https://launchpad.net/bugs/1373611>01:16
thumperericsnow: I was wondering if that was it01:16
thumperericsnow: has it been submitted?01:16
ericsnowthumper: don't think so: https://github.com/juju/juju/pull/83601:17
* thumper submits it01:21
wwitzel3does anyone know where in the API call steps we unmarshall values?01:32
thumperwwitzel3: in the magic bit of the code01:38
thumperwwitzel3: juju/rpc maybe?01:38
wwitzel3thumper: well, I'm getting ERROR json: cannot unmarshal object into Go value of type names.Tag01:38
thumperyeah...01:38
wwitzel3but the logs have no information on where the is being generated from at all01:38
thumperthe wire protocol needs to use strings01:39
thumperuntil we fix the wire protocol01:39
thumperwwitzel3: we could fix it...01:39
thumperwwitzel3: you just need to provide the json serialization functions for all the concrete types01:39
thumperwwitzel3: the error is being raised by the json serialization code01:40
wwitzel3thumper: where is that code? apiserver? the jsoncodec call?01:40
thumperwwitzel3: the json code? inside the standard library01:40
thumperjson.Marshal01:41
wwitzel3thumper: I mean within our code, where is the unmarshalling happening?01:41
thumperwwitzel3: I'm guessing, but probably in juju/rpc where it puts the code on the wire01:41
thumperwwitzel3: api.client unmarshals actually01:41
wwitzel3thumper: if I could fucking spell, I'd probably have less questions01:43
wwitzel3acking for unmarshall exact match wasn't ever going to be helpful01:43
wwitzel3I'm a moron01:44
wwitzel3thank you01:44
wwitzel3Umarshall that is01:44
wwitzel3I at least had the puncuation right01:44
wwitzel3thumper: so, is the solution to switch back to strings? or to define how to unmarshal names.Tag?01:45
thumperwwitzel3: yes...01:45
thumperwwitzel3: for assistance, version.go:11701:46
thumpernot sure if you want to go that way or not just yet01:46
wwitzel3thumper: a Tag is pretty easy type to implement that for01:46
thumperwwitzel3: yep01:47
wwitzel3thumper: and it is still that something based on string isn't easily serializable to JSON anyway01:47
thumperwwitzel3: because we even have the magic parseFooTag mthods01:47
wwitzel3s/still/silly01:47
wwitzel3ok, I'll go that route since I think it makes things better01:47
thumpergood luck01:47
wwitzel3it's just typing01:48
thumperand tests :)01:48
wwitzel3yep01:48
davecheneycan someone help me01:59
davecheneyfor some reason I can no longer see both the comments and the diff on the same screen01:59
thumperdavecheney: maybe01:59
davecheneysomething has happened and reviewboard does not show me the comments that others have made on a review02:00
davecheneyunless I go to the "view review" screen02:00
davecheneybut then it doesn't show me the code02:00
davecheneyand I need to go to the "view diff" screen02:00
thumperdavecheney: I've had to go to view diff screen too02:06
thumperI thought it was just me getting used to the tools02:06
perrito666thumper: did you merge my fix?02:07
thumperperrito666: aye02:07
perrito666thumper: thank you sir02:07
davecheneythumper: this worked a few weeks ago02:08
davecheneyie, on the diff screen you would see inline comments02:08
davecheneynow they are all hidden on another screen02:08
perrito666btw axw you might have inadvertedly fixed a problem in environs.Environ StateServerInstances congrats, you now subconsciously rock02:08
thumperhow the hell do I change the topic02:08
axwperrito666: heh, what was that?02:09
davecheneymassive storm in sydney atm02:09
davecheneyif i go offline02:09
davecheneyplease sent paramedics02:09
thumperheh02:09
perrito666axw: well the bug I fixed should have been triggered long ago but apparently StateServerInstances was returning only one instance :p and after your commit it now returns all the state servers02:09
thumperugh02:10
axwperrito666: ah :)  that only happens for new environments tho02:10
thumperthe bot still things there are ci blockes02:10
perrito666davecheney: dont you prefer us to send an internet technician? I mean I dont see paramedics getting you back online02:10
thumperbut they are both fix committed now02:10
perrito666thumper: takes a bit I think02:10
axwperrito666: it was an intentional improvement, didn't know it fixed anything in particular tho :p02:10
* thumper taps his fingers impatiently02:11
perrito666axw: neither did I, in fact none of us knew it was broken02:12
perrito666axw: the test you added does the same restore did that is why I realized02:12
davecheneythumper: http://reviews.vapour.ws/r/79/diff/#02:12
davecheneycan you go to line 100 in filestorage/wrapper.go02:13
davecheneyand tell me if the line is properly gofmt'd on your screen02:13
davecheneyi'd like you to the line if that was something that RB could do02:14
* thumper looks02:17
davecheneyor this one http://reviews.vapour.ws/r/103/diff/#02:18
davecheneyapi/backups/list_test.go lines 27 onwards02:18
davecheneyit looks liek RB gives up after three levels of indentation02:18
thumperdavecheney: looks properly formatted to me02:18
thumperdavecheney: list_test looks fine to me too02:19
davecheneyhang on, screenshotting02:20
davecheneythumper: check your mail02:21
thumperdavecheney: yeah, yours looks different to mine02:21
thumperdavecheney: I see proper formatting02:21
thumperdavecheney: may I suggest it is your shitty browser?02:22
thumper:)02:22
davecheneychrome, just like everyone else02:22
thumperhmm...02:22
thumperit really does look fine here02:22
thumperchromium here02:23
davecheneyfine, i'll just ignore any formatting issues02:23
davecheneythe bot will catch them for me02:23
thumpergah... why is the bot not working out that we have fixed the blockers?02:55
menn0thumper: http://reviews.vapour.ws/r/93/diff/ PTAL02:58
thumpermenn0: ok02:58
cmarsthumper, i told the buildbot that those blockers were fixed. it seemed to accept builds now03:01
thumpercmars: how?03:01
thumpercmars: I thought it looked at LP03:02
cmarsyou put $$fixes-<bug#>$$ in the merge comment03:02
davecheney$$__JFDI__$$03:05
cmarsah, crap. buildbot is not remembering the fixes-NNN. i suppose that was already tried..03:16
menn0thumper: are you still looking at that PR?03:18
thumperyup03:19
menn0thumper: ok03:19
thumpercmars: I did that03:19
menn0thumper: just making sure you didn't forget to hit publish03:19
thumpercmars: that is how it landed the fixes03:19
sinzuicmars, CI is blocked by the two critical bugs in the topic. a fix for 1 of them is being test now03:19
thumpersinzui: I thought the blockage got removed when we committed them?03:20
sinzuino03:20
thumpersinzui: are they removed later now?03:20
thumperah03:20
sinzuiCI was being reopen but the tests dfailed03:20
sinzuiwe not wait for someone to make the bug fix released when the test is passed03:20
thumpersinzui: ack03:24
wwitzel3oh man, so apparently if you implement a method on an interface with a pointer receiver .. every single place in the world you've ever used that break03:24
thumperwwitzel3: you can't implement a method on an interface03:24
thumperat least I didn't think so...03:24
thumperdavecheney: ?03:25
thumperwwitzel3: yeah, the more I think about it, the more I think that you can't do that, it makes no sense03:25
thumpermenn0: published response03:26
wwitzel3thumper: no, I mean on the concreate implementation03:28
wwitzel3thumper: sorry, it's late, shitty wording03:28
thumperwwitzel3: ok03:29
thumperwhy does it break?03:29
wwitzel3thumper: I added the UnmarshalJSON method to the tag interface and then added an implementation on MachineTag. Now I have several dozen errors for does not implement Tag (UnmarshalJSON method has pointer receiver). Every where we reflect tag.(MachineTag)03:30
wwitzel3which makes sense03:30
wwitzel3I would need to pass in a pointer03:30
wwitzel3but there are a ton of touch points in the test :/03:30
thumperwwitzel3: you don't need to add the marshal and unmarshal methods to the tag interface...03:31
thumperwwitzel3: or at least, not yet03:31
wwitzel3but the params we are sending over the wire are []names.Tag03:31
thumperwwitzel3: yes, the unmarshal needs a pointer03:31
thumperwwitzel3: as it changes the instance03:31
thumperwwitzel3: and not a copy of it03:31
thumperwwitzel3: hmm...03:32
thumpermaybe you do need it ?03:32
wwitzel3if I don't add them to the interface, it complains it doesn't know how to Unmarshal a Tag, which makes sense03:33
wwitzel3I'll figure it out eventually03:34
wwitzel3tag.(*MachineTag) .. is probably want I want03:35
menn0thumper: thanks03:36
menn0thumper: I did make the change in service.go!03:36
thumpermenn0: did you03:37
menn0thumper: the tests wouldn't be passing without it03:37
thumpermust have missed it03:37
menn0thumper: but you're right that a migration step would also be needed so I might just undo that03:37
thumpermenn0: ah, so you did03:37
thumperyeah, it makes me a little sad, but probably faster for now03:37
menn0thumper: or *evil grin* could we just strip a trailing "/" off the prefix if it's there?03:40
thumperhaha03:40
menn0thumper: I'm half-serious03:40
thumperdo it03:40
menn0thumper: alrighty03:41
wwitzel3that's my favorite exchange of the night03:46
menn0thumper: http://reviews.vapour.ws/r/93/diff/04:04
thumpermenn0: do your upgrade test while I have a coffee04:05
thumperthat sounds a bit weird04:05
thumperbut Rachel just got home04:05
* thumper cracks the whip04:06
menn0thumper: doing it already :)04:06
menn0thumper: what's a quick and easy subordinate charm I can add to my test environment?04:06
davecheneymenn0: nagios-nrpe04:11
menn0davecheney: thanks04:12
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: see calendar | Open critical bugs: 1373611
menn0thumper: well that didn't go so well...04:30
menn0thumper: some services have disappeared04:30
menn0thumper: I'm going to check the DB04:30
thumperoh...04:40
thumperjam: hey there04:43
thumpermenn0: so... how is the db looking?04:51
thumpermenn0: did you want to talk it through?04:51
menn0thumper: the db looked as I expected it but obviously something wasn't right04:52
wwitzel3so the Marshal methods have to be part of the interface definition for the generic names.Tag to support json encoding, and eventually I got it all working on the names package, but there are just too many places where we do something like []names.Tag{NewUnitTag()} .. which no longer works the momemnt you have a pointer receiver04:52
menn0thumper: I'm just testing the same env with master so that I can be sure it was the units change04:52
thumpermenn0: ok,04:52
menn0thumper: ok master is fine04:54
menn0thumper: going to rebase my branch to upstream and recreate the problem again04:54
thumperkk04:54
* thumper notices that st.AllServices() definitely leaks services across environments...04:56
menn0thumper: there's tons and tons of stuff that leaks across envrionments04:57
menn0thumper: once we have the base DocID changes done we'll need to circle back and deal with all that, writing tests as we go04:57
thumperagreed04:57
menn0thumper: I was thinking it might be a good idea to set up an alternate environment in the setup of ConnSuite that doesn't get directly referred to in tests but will expose places that leak04:58
menn0thumper: unexpected data should show up all over the place and cause tests to fail04:59
menn0thumper: this canary env should be fairly well set up with several machines, services, subordinate units etc to maximise the stuff it'll expose05:01
* thumper nods05:02
menn0the mediawiki charm just won't install at the moment05:03
thumperthat seems reasonable, but potential overkill05:03
menn0I keep having to ssh to the box and do a "apt-get update" and then run "juju resolved --retry mediawiki/0 to get it to install05:03
menn0is that expected?05:03
menn0this is with 1.20.705:03
thumpermenn0: local?05:04
menn0thumper: yep05:04
thumpermenn0: could be due to the apt upgrade / update thing05:04
thumperyour template is out of date05:04
menn0thumper: right05:04
menn0thumper: very likely05:04
menn0thumper: delete the template machine or is there a faster way? (start the template and update it?)05:05
thumperyeah05:05
thumperyes to starting the template05:05
thumperand logging in, and doing an apt-get update/upgrade05:06
menn0thumper: ok, i'll do that05:06
thumperthen shutting it down again05:06
wwitzel3(╯°□°)╯︵ ┻━┻05:08
thumper┬─┬ ノ( ゜-゜ノ)05:09
bradmhey, do we have a stable 1.20.8 yet?  wondering when I should expect to need to change to it05:09
menn0thumper: http://paste.ubuntu.com/8423049/ :(05:09
menn0thumper: the exact final result doesn't appear to be deterministic either05:10
thumpermenn0: oh crud05:10
thumpermenn0: is it the status collection?05:10
thumpermenn0: units have status05:10
* menn0 checks05:11
thumperthe status command would be looking there, right?05:11
menn0yeah but we haven't changed the statuses collection keys yet.05:11
menn0maybe that's the problem.05:11
menn0it didn't break services...05:11
* thumper nods05:11
thumpermenn0: I think...05:12
thumpermenn0: that status should still keep local ids05:12
thumperbut need to check05:12
thumperit is how it gets the underlying entity05:12
thumperI'm being called for dinner05:12
* thumper will be back for team-lead meeting later 05:12
=== thumper is now known as thumper-afk
dimiternmorning all05:24
menn0thumper-afk: the migration steps for units and services have mixed everything up.05:26
menn0thumper-afk: for example, all services now have a name of "rsyslog-forwarder-ha" I can only tell them apart from the _id.05:27
menn0thumper-afk: must be something with the generic upgrade function. I'll take a look05:27
dimiterndavecheney, hey06:03
davecheneydimitern: o/06:03
dimiterndavecheney, due to the way names.NewEnvironTag() works, you *can* create an invalid tag without panicking, i.e. tag := names.NewEnvironTag(""), then tag.Id() == "" is equivalent to tag == nil if tag used to be names.Tag06:04
davecheneydimitern: thanks for confimring06:04
davecheneyi think it is still a bug06:04
davecheneyi think the problem is NewEnvironTag("") should fail06:05
dimiterndavecheney, I agree06:05
dimiterndavecheney, but environ tags are relatively recent, and we still have to support the case when it's not set06:05
davecheneydimitern: i wish thumper was here06:06
davecheneyenviron tags are basically manditory for mees06:06
davecheneymess06:06
davecheneywhatever06:06
davecheneywe can't keep continuing to say, oh well, if you don't have an env tag we can just overlook it this time06:06
dimiterndavecheney, since I saw your comments too late, I'll do a follow-up to do some of your suggestions and reply about NewEnvironTag06:07
davecheneyok, thanjs06:08
davecheneythanks06:08
menn0thumper-afk: I've figured out the garbled data following the migration. if you read data into a map using mgo and then save that map in a slice you need to recreate that map before starting the next loop. setting it to nil was sufficient.06:11
menn0thumper-afk: there's still what looks like a presence issue. after the upgrade the units are marked as down. the agents are started (in the DB too) but the presence check is failing.06:13
menn0thumper-afk: I'll continue tomorrow. I need to EOD.06:13
=== menn0 is now known as menn0-eod
dimiterndavecheney, wanna have a look? http://reviews.vapour.ws/r/105/06:27
davecheneylooking06:30
davecheneydimitern: looks good, two issues06:32
dimiterndavecheney, cheers06:33
dimiterndavecheney, I don't think returning an error there is sensible, due to the possibility of not having environ UUID at the endpoint level06:35
dimiterndavecheney, and the login *will work* without it, for the same reason06:36
davecheneysure06:36
dimiterndavecheney, but maybe adding a warning and continuing will be useful06:36
davecheneyvar e names.EnvironTag06:36
davecheneye.String()06:36
davecheneyno06:36
davecheneye.Id() => ""06:36
davecheneyso there is no way to distinguish between presenting an environ id that is "", and the environ id being invalid and passing "" as a fallback06:37
davecheneysimply put, there is no point validating if we're not going to reject values which are not valid06:37
dimiterndavecheney, given a names.EnvironTag already, Id() == "" is the same as it being invalid06:38
=== uru_ is now known as urulama
dimiterndavecheney, but names.IsValidEnvironment(uuid-or-tag.Id()) works06:38
davecheneycrap06:38
dimiterndavecheney, the point of that code there is to only use the uuid if it's valid (an improvement from before when we didn't even validate the uuid)06:39
dimiterndavecheney, that's why I suggest to do a logger.Warningf("API endpoint has invalid environment UUID %v", uuid) when it's not valid, but still let it through06:40
davecheneyi guess that is all we can do06:40
davecheneythis will end up being a buig06:40
davecheneyi'm sure of this06:40
davecheneybut what else can we do06:40
dimiternor maybe "ignoring invalid API endpoint environment UUID %v"06:40
davecheneysure06:41
dimiternyeah, we can incrementally make it better :)06:41
dimiterndavecheney, updated - http://reviews.vapour.ws/r/105/diff/1-2/06:48
=== uru_ is now known as urulama
dimiterndavecheney, is it good to land like this?06:53
axwjam: contributions to things like gwacl still need CLA signing, right?06:55
jamaxw: I'm pretty sure all our stuff is (c) Canonical under the same CLA06:56
jamso they don't need to sign it separately06:56
jambut it does need to be signed06:56
axwjam: ok - someone sent in an MP for gwacl specifically06:56
axwif they've signed, it shows up on their LP ~ page right?06:57
jamaxw: I see "Canonical Contributer Agreement" as one of my groups on  https://launchpad.net/~jameinel/+participation06:57
jamso I think so06:57
axwthanks06:58
jamthough I don't see it for https://launchpad.net/~axwalk/+participation06:58
dimiternjam, hey, can you have a look at http://reviews.vapour.ws/r/105/diff/ please?06:58
jamI'm not sure that everyone in "Canonical" is also in CCA06:58
jamdimitern: can you actually compare Tag objects? I thought it was an interface, and you don't want to compare exact internals06:59
jamif you can, those changes seem fine06:59
axwjam: AFAIK, only required if you don't work for Canonical; employment contract covers employees07:00
jamI'm just concerned if doing "t1 := names.Tag("foo"); t2 := names.Tag("foo"); t1 != t2"07:00
jamaxw: right, you don't need to sign it, I just mean you need to look for one or the other07:00
axwah yep07:00
dimiternjam, only names.Tag is an interface, the others are simple structs implementing it07:01
jamdimitern: axw: https://launchpad.net/~not-canonical :)07:01
axwhehe07:01
jamI got there from jelmer, who used to work at canonical07:02
jamTrying to find someone who isn't me or at canonical who should have signed the agreement to confirm participation07:02
dimiternjam, yep that's the "former employees and people often mistaken as employees" list :)07:02
jamdimitern: is there a simple way to link part of an RB diff?07:03
jamI'm looking at one that is very-much comparing a names.Tag to a names.Tag07:03
dimiternjam, you can link a X-Y diff, like this http://reviews.vapour.ws/r/105/diff/1-2/07:03
jamdimitern: yeah, I want to link a line in the review: http://reviews.vapour.ws/r/105/diff/#107:04
jamone of those is *definitely* a names.Tag07:04
dimiternjam, apistate.EnvironTag() (names.EnvironTag, error)07:04
dimiternjam, and environ.EnvironTag() (names.EnvironTag)07:05
dimiternjam, confusingly enough, environ has at least 4 more Tag methods - ServerTag, Tag, etc.07:05
jamfunc(tag names.Tag) bool {07:05
jamdimitern: ^^07:06
jamfrom 3 lines above that07:06
dimiternjam, aah, this one07:06
dimiternjam, yeah, but it really is a names.EnvironTag07:07
dimiternjam, because we do tag, err := ParseEnvironTag(strTag) and then call canAccess(tag)07:07
dimiternjam, it's just wrapped inside a names.Tag due to the way AuthFunc is defined07:08
jamdimitern: http://play.golang.org/p/wbU4gcGnWe seems to work07:09
jamthe interface isn't the same, but it seems to compare the underlying object07:10
dimiternjam, http://play.golang.org/p/DzZ6RmhiE307:11
dimiternjam, :) yep07:12
jamdimitern: in your example you're using concrete types, Tag isn't doing anything07:12
jamah, I guess 'u' was wrapped in a Tag07:13
dimiternjam, exactly07:13
dimiternjam, if I had func(tag Tag) bool { return tag == internalTag }, I could call it like f(Tag(u))07:14
dimiternoops, I meant just f(u)07:14
jamdimitern: so what I was more concerned about was the e1 == e207:14
jambecause the interface comparison *could* compare the underlying pointers07:14
jamrather than the objects that those pointers represent07:14
jamdimitern: but you can use all kinds of wrappers, "==" seems to just compare the underlying structs07:15
dimiternjam, yeah, but if that's the case st.EnvironTag() will return some different pointer than the tag arg points to07:16
dimiternand they'll never be ==07:16
dimiternyeah, I seem to recall some doc or article about golang that comparisons work like that07:17
dimiternjam, so, is it good to land?07:18
dimiternjam, I have at least 2 follow-ups queued :)07:18
jamdimitern: this seems strange: if names.IsValidEnvironment(apiInfo.EnvironTag.Id()) {07:20
jamconvert it from being a tag, just to check if it was a valid tag07:20
jamnot saying there is a better way07:20
jamLGTM07:20
dimiternjam, if you follow the discussion we had earlier with davecheney07:20
dimiternjam, NewEnvironTag does not panic or validate at all what you give it07:21
dimiternit's a bug, but kinda intentional wrt backwards-compatibility for envs without uuid07:21
dimiternjam, thanks!07:21
jamdimitern: sure, it just feels like something that should be "tag.IsValid()"07:21
davecheneyjam: no07:22
davecheneyi disagree07:22
davecheneyyou should never have to ask tag.IsValid07:22
davecheneythere are two possiblitues07:22
davecheneyvar t names.Tag07:22
davecheneyt == nil { // not a valid tag, in fact not a tag at all07:22
davecheneyvar t names.UserTag07:22
davecheneyt _must_ have a valid value07:22
davecheneyie, don't do this07:22
davecheneydo this insteat07:22
davecheneyt := names.NewUserTag07:23
dimitern-> panic07:23
dimiternbetter do ParseUserTag07:23
davecheneyyes07:23
jamdimitern: well, you should never panic in response to user input.07:23
davecheneyjam: good point07:23
dimitern+10007:24
davecheneywilliam thinks we should only use tags over the api07:24
davecheneyso in a way they are not user input07:24
jamdavecheney: validating in the client sending the data != validating in the server receiving the data07:24
dimiternbut they are still strings when passed over the wire07:24
jam"just don't send bad data"07:24
davecheneyyes, and we do that across the api boindaries with ParseUserTag07:24
jamand then my servers won't crash07:24
davecheneyit gets more interesting when you're writing the implementation of, say07:25
davecheneyjuju ssh unit/007:25
davecheneythe command needs to convert that string into a unit tag07:25
davecheneyand it isn't as simple as07:25
dimiterni'm itching to write a simple DoS script that given an api endpoint tries API calls with all sort of crazy tags07:25
dimitern:)07:25
davecheney"unit-"+argv[1]07:25
davecheneydimitern: you're welcome to try07:26
davecheneythat path is very well tested07:26
dimiterndavecheney, yeah, at least for all facades I wrote; not all of them check all cases though07:27
aznashwanhey guys; I'm currently working on some tests in which I need to patch the container type as obtained from (juju/api.State).Agent().Entity(machineTag)08:21
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: see calendar | Open critical bugs: None
jamah, ffs. "github.com/juju/txn" depends on "github.com/juju/juju/testing" not "github.com/juju/testing"...09:34
axwjam: just commented on the PR - we can fix that by disabling TLS. I can do that now if you like09:41
axwI don't think there's any need for TLS in these tests09:41
jamaxw: yeah, I brought that up to bogdan, but seems fine as long as someone else agrees.09:43
axwdimitern: was there a particular reason for choosing ^ over ! for excluding networks?09:57
axw(I'm just curious)09:58
natefinchheh I was just going to ask that.09:58
axw:)09:58
natefinchman, I swear the calendar on my phone said the team meeting was now... must be an old copy10:01
dimiternaxw, natefinch, yes, mainly due to ! having special meaning in bash and also fwereade and jam recommended ^ vs. ! IIRC10:01
axwdimitern: ok, I had suspected bash. makes sense.10:02
natefinchwow, that is a damn shame10:05
natefinch(bash, that is)10:05
natefinch! is so much more obvious, but yeah, since bash decided no one ever gets to use !, there's no real alternative10:06
axwnobody's very happy with bash today10:07
=== fabrice is now known as fabrice|lunch
jamdimitern: TheMue: taking the dog out, will try to be back in time10:27
dimiternjam, sure10:27
TheMuejam: no problem10:28
natefinchgsamfira: nice point on Juju units not needing rsyslog anymore10:30
natefinchremoving external dependencies is already paying dividends :)10:30
gsamfiranatefinch: I should have removed that dependency in the same commit. I don't know where my head was10:31
gsamfiranatefinch: less moving parts, the better10:31
natefinchgsamfira: especially since we let people install random stuff on the same machine10:32
jamdimitern: standup?10:48
dimiternjam, sorry, brt10:53
=== thumper-afk is now known as thumper
jamTheMue: I think you clicked the link :)11:01
TheMueouch11:01
jamTheMue: I'll give it a look, right now i'm in the team leads meeting11:01
TheMueok11:02
=== fabrice|lunch is now known as fabrice
=== jacekn_ is now known as jacekn
* thumper -> bed11:54
cmarsjam, hangout?12:02
jamcmars: brt12:02
=== AndChat|9081 is now known as bogdanteleaga
=== urulama is now known as urulama-afk
=== jheroux_away is now known as jheroux
cmarsjam, re: login API PR, just pushed a minor comment fix, and confirmed v0 facade fallback on current master12:57
jamcmars: thanks12:58
jamwe just had: FAIL: upgrade_test.go:420: UpgradeSuite.TestLoginsDuringUpgrade fail in a seemingly unrelated change12:58
jamis that a known flaky test?12:58
jamIt failed with:     c.Assert(err, gc.IsNil) ... value *params.Error = &params.Error{"", "upgrade in progress - Juju functionality is limited"} ("upgrade in progress - Juju functionality is limited")12:59
natefinchspurious "upgrade in progress" errors is definitely a problem we've hit with the tests before... I forget exactly what causes it13:00
perrito666natefinch: its a race-ish condition iirc13:00
perrito666authenticator enters upgrade mode because of the upgrade worker and this doesnt finish before the test does whatever its trying to do13:01
perrito666dimitern: ping13:01
dimiternperrito666, pong13:04
perrito666dimitern: I see that you assigned me a card during the night/mornign13:04
perrito666was that a mistake or you really wanted to assign that to me?13:04
dimiternperrito666, mistake, sorry - it was about the AddMachinesV2 API not implemented on 1.18; I added a card, found the issue, commented on the bug and realized I won't have time to fix it, but thumper did it13:05
perrito666np, just trying to figure out if action was required from me13:06
perrito666I wonder if this is the image people has of us http://io9.com/scorpion-brings-the-stupidest-most-batshit-insane-hack-163833387713:25
natefinchWTF13:28
natefinchseriously, totally unrealistic.  If you have to stop as fast as possible, why would you turn your tires SIDEWAYS?!13:29
cmarsperrito666, lol, that was amazing13:34
natefinchI don't care about the ridiculous antics of flying an aircraft  20 feet off the ground w/ ethernet dragging behind... but the fac tthat they think you can't land an airplane without software is just ridiculous.13:36
Spadsespecially when they show you can get most of a touch&go13:37
perrito666natefinch: apparently his car doesnt have abs13:38
perrito666also, really? nobody has a laptop? does not seem to be a very large quantity of data13:40
perrito666they can copy it to a sd and then just throw that over the window :p13:40
wwitzel3I know it is my own fault, but perrito666  .. you own me 2:17 of my life back13:40
cmarsi'm just still amazed at the strength of that rj45 connector13:41
perrito666I believe that these shows are written the following way: "we have the following stunts on budget, lets add some argument around13:41
wwitzel3cmars: that is the only believable thing from the video .. I've seen the damage a cable accidently hooked around a foot does ;)13:41
cmarsooh ouch13:42
perrito666cmars: I am equally amazed of the strength of the rj45 adapter of the laptop which should be as strong as a mini usb connection13:42
cmarsjam, what do you think re: https://github.com/juju/juju/pull/392. ok to land?13:44
wwitzel3perrito666: also if you're driving a 458 you should probably have flipped the ABS to off anyway, otherwise you shouldn't be driving a 458.13:45
perrito666wwitzel3: I drive an opel corsa from BEFORE abs so I wouldnt know13:45
wwitzel3I have arrays, I'd like all their content to be in a single array .. there are points in the code where we validate each item, in each array .. so should just add an append to the validation loops of each array?13:48
perrito666wwitzel3: you lost me a bit there13:48
wwitzel3I have 3 []string, I want to make a 4th []string that holds the contents of the all the []string. There are loops that already validate each item in the original []string.13:50
wwitzel3So, should i just add an append for my new array to each of the original []string loops?13:50
wwitzel3Or is there a better Go way13:50
jamwwitzel3: is it ok to modify in place?13:52
jamwwitzel3: you can do "ar1 = append(ar1, ar2...)"13:52
jamar1 = append(ar1, ar3...)13:52
jamelse, you can create a new ar, and then do appends13:52
jamwwitzel3: but "append(foo, slice...)" will append all of slice to foo13:53
jamwwitzel3: no loop needed13:53
natefinchwwitzel3: there's no "mash these N slices together".  foo = append(foo, bar...); foo = append(foo, baz...); foo = append(foo, bat...) is the best you get13:56
perrito666natefinch: that would be a nice feature to have13:56
natefinchnatefinch: not really.  The 3 lines are perfectly clear.  If you really want, you can make it into a single loop  for _, s := range [][]string{bar, baz, bat} { foo = append(foo, s...) }13:57
perrito666talking to self?13:58
katconatefinch: you could chain your appends too: append(append(append(foo, bar...), baz...), bat...)13:59
perrito666katco: nice listp13:59
perrito666lisp13:59
katcooh camon that's not lisp lol13:59
cmarsappend is like a cons... hmm14:00
katcohaha14:00
wwitzel3yeah perrito666, lisp is 2 brackets per every other character.14:00
perrito666lol14:00
wwitzel3I actually like lisp, but it is just so much fun to pick on14:01
perrito666wait, you can actually use it? I thought it was just for the lulz14:01
perrito666:p14:01
perrito666natefinch: ericsnow wwitzel3 stdup?14:01
natefinchperrito666, ericsnow, wwitzel3: there's actually a TOSCA call now, and wwitzel3 and I should probably be on that14:02
natefinch can we delay until the afternoon?14:02
natefinchI have another meeting after tosca today14:02
perrito666natefinch: np, better for me I can continue with my enrique iglesias playlist14:03
ericsnowperrito666: nice14:03
natefinchhaha14:03
perrito666you guys laugh as if it was a joke14:05
natefinchI'm just sad you don't share during standups14:05
ericsnowperrito666: I wasn't laughing :)14:05
natefinchI was14:05
ericsnowperrito666, natefinch: now I'm laughing14:06
perrito666its very good to concentrate, there is no way you can get carried away with his music14:06
natefinchheh14:06
ericsnowperrito666: so it's like a white noise generator/sound machine14:06
perrito666ericsnow: latino white noise :p14:07
natefinchlol14:07
perrito666its much like listening to fm radio without the guy speaking and the pub14:07
wwitzel3interesting, so if a method returns type FooBar, which is a concrete implementation of an interface Foo, I can write var f Foo .. then f = GetFooBar()14:34
wwitzel3but I can't create a function that takes a function that returns type Foo and then pass it a function that returns type FooBar14:34
perrito666wwitzel3: I believe it compares the identity of the function there, what you propose requires a bit more inteligence14:47
perrito666you can double wrap though14:48
perrito666func () (yourinterface){func()(your concrete type)}14:48
ericsnowis there an easy way to restart the jujud process running on machine-0 ("service" and "initctl" don't see the upstart job)?15:02
natefinchericsnow: kill it and let upstart restart it?15:03
ericsnownatefinch: isn't initctl an interface for upstart (it doesn't see the job)?15:04
ericsnownatefinch: I'll try it15:04
ericsnownatefinch: well, that worked15:05
ericsnownatefinch: thanks15:05
ericsnowha, since starting with Go I keep typing $GOHOME instead of $GOPATH15:06
ericsnowguess my subconscious is trying to tell me something15:07
perrito666ericsnow: something strange indeed, since you work at home15:09
ericsnowperrito666: yeah, but in the context of programming languages, Go isn't home :)15:10
perrito666}15:10
perrito666well I hope never need to go home bc I dont really feel like making assembly and BASIC again .p15:11
perrito666:p15:11
ericsnowha15:11
=== fabrice is now known as fabrice|family
natefinchericsnow: for me $GOPATH=$HOME ,so in essence, $GOHOME is correct :)15:48
ericsnownatefinch: :P15:48
natefinchalthough, what really revolutionized it for me was $CDPATH=$GOPATH/src15:49
natefinchso I can do cd github.com/juju/juju and it does the right thing15:49
natefinchanyone know lxc and want to help a user in #juju?  he has a bunch of lxc containers that aren't coming up, though existing ones work fine15:57
jcw4OCR: trivial change to fix go vet warning http://reviews.vapour.ws/r/106/16:00
natefinchAnybody?  I am the world's least helpful person when it comes to lxc16:02
jcw4natefinch: my only bit of wisdom about lcx containers is when the templates get messed up : http://irclogs.ubuntu.com/2014/07/30/%23juju-dev.html#t02:0816:04
katcodoes juju not harvest machines if there are no running units on them?16:08
natefinchkatco: if you remove the last service on them it will, yes16:09
natefinchit used to not, by default, but now it does, by default, and there's a setting somewhere to turn it off16:10
katcowell i worked on the harvest mode settings16:10
katcoi thought it worked like that, but i wanted to 2x check before replying to nick moffitt's email16:10
Spadshi16:10
Spadskatco: so even if it's supported, it can be important to remove a unit, do a postmortem, and then manually destroy it later16:15
Spadskatco: so having the tools show you the states of things is essential even if you can have it auto-destroy16:15
katcoSpads: oh hi :)16:15
Spadsmy last name has an unique spelling, so I tend to highlight on it :)16:16
katcoSpads: right i was just about to respond... i love your idea to return 0 if nothing is errored. i'll add that to the spec and look into it16:16
katcoSpads: :D16:16
katcoSpads: so does the filtering take care of your post-mortem use-case? exit-code aside16:16
Spadskatco: can you filter machines that are not associated with services?16:17
katcoSpads: sure, if you specify a state, it just looks for that state16:17
Spadskatco: but "not used by any service" isn't a machine state16:18
Spadsthe machine shows up in machines: but nowhere else16:18
Spadsalso again, I'm not interested specifically in ERROR16:18
katcoSpads: oh sorry, i misunderstood16:18
Spadsbut also in anything that isn't perfect16:18
Spadsanything in progress16:18
katcoSpads: so you'd like a filter on un-utilized?16:18
Spadsanything pending16:18
Spadsyeah16:19
Spadsbasically when I run juju status it's to learn about things that are out of the ordinary16:19
Spadsso I don't want to see services that are STARTED or machines that are JUST_FINE_THANKS16:19
katcohaha16:19
SpadsI want to see everything that's *not* those16:19
Spadslike I want to filter *out* states16:19
Spadsdoes that make sense?16:20
katcoSpads: hm. wondering if it would be acceptable to add a not conditional to the filter16:20
Spadsyeah16:20
katcoor if that's too fancy/scope creep16:20
Spadswell I think that filter/filter-out are a common pattern16:20
Spadsgrep/grep -v16:20
Spadsetc16:20
katcoi don't think i can make the decision, but i at least understand what you're saying now16:20
Spadsselect where not...16:20
katcoi'll write up a user-story for you to look at to make sure i have it right, and then i'll check in with a lead16:21
Spadscool, do you want to summarise it for the list?16:21
katcoSpads: sure will do16:21
SpadsThat's perfect.  Many thanks!16:21
katcoSpads: thank you for the input :)16:21
Spadsif I had my druthers16:21
Spadsjuju status would behave as I described above16:22
Spadsand juju status --verbose would dump the whole state16:22
Spadsbut I think that ship has sailed :)16:22
katcoas default16:22
katco?16:22
Spadsyep16:22
katcoi believe we're planning on moving to --format summary as default16:22
katcowhich makes the sitaution at least a little better16:22
SpadsI'll have to find time to take a closer look at tip16:22
katcobut i don't think that decision has been made yet (hint hint)16:22
katcolike a 1.21 or 1.22 thing i think16:23
* Spads nods16:23
katcoat any rate. good discussion. i'll update the spec16:23
Spadsexcellent.  Thanks for your time!16:25
bodie_so what's the policy on gopkg dep versioning?17:12
bodie_I have a breaking change to charm I need to make, and a juju/juju branch ready to land which unbreaks it, I just need to figure out whether I need to move to charm v5 or how to properly integrate my work17:13
mgzbodie_: what specifically?17:13
bodie_it's just a variable rename but it does cause juju to fail the tests without the core branch, so I'm thinking it would need a new gopkg charm version17:14
rick_h_bodie_: on the charm package?17:14
mgzah. not sure that's been fully argued yet. in theory, yes, vNEXT and change imports and dependencies.tsv for juju17:14
mgzbut there was a thread recently with jam and rog about charm specifically17:14
rick_h_bodie_: because we have stuff on that as well to keep up to date. rogpeppe has done a lot of work around the charm package and versioning and would be good to make sure we're in the loop17:14
rogpeppebodie_: what's the variable?17:15
bodie_rogpeppe, renaming ActionRequested to Action per fwereade, and removing it from unitHooks17:16
rogpeppebodie_: in general if something's in gopkg.in, we try very hard to keep changes backwardly compatible according to the rules specified in http://gopkg.in/17:16
jcw4rogpeppe: fwiw, I'm fairly sure no-one has actually depended on that variable in production yet....17:17
rogpeppebodie_: you could just keep the old ActionRequested variable around17:17
rogpeppebodie_: and document it as deprecated17:17
jcw4rogpeppe: +117:17
bodie_hmm...  so use both17:17
rogpeppebodie_: it can be deleted if/when we change the version17:18
bodie_ok, and then leave it as v4 since it's not a breaking change?17:18
rogpeppebodie_: yeah17:18
rogpeppejcw4: i also am tempted to agree with you about known users17:18
rogpeppejcw4: but...17:18
bodie_rogpeppe, that makes sense.  my other question is whether I need to rebase it on master or on the godeps'd version17:18
rogpeppejcw4: i think it's nice to exercise this stuff so we know what to do when we *do* have users...17:19
jcw4rogpeppe: +217:19
bodie_rogpeppe, jcw4, there's already code in core using ActionRequested17:19
bodie_fwiw17:19
rogpeppebodie_: i don't understand that question17:19
rogpeppebodie_: why do you need to rebase anything?17:19
bodie_rogpeppe, I have a commit to charm I want to land on top of the commit history... what I normally do is rebase my changes on top of master to ensure they're compatible with the current version17:20
rogpeppeFWIW, i agree with fwereade about the name change17:20
rogpeppebodie_: that seems usual, yes17:21
rogpeppebodie_: (i often don't actually rebase, but merge then reset)17:21
bodie_rogpeppe, but in this case, the version of charm in use by juju core (i.e. the hash from godeps) isn't master, unless I'm mistaken17:22
rogpeppei seem to get less conflicts that way17:22
bodie_interesting17:22
rogpeppebodie_: that shouldn't influence how you land changes to charm17:22
rogpeppebodie_: it just means that juju-core hasn't caught up with recent charm changes17:23
bodie_rogpeppe, I just don't want to make a change to godeps that implicitly includes a charm version that juju isn't built against17:23
bodie_i.e. if Juju is on charm version C and my change is version A (i.e. master), but A includes B because A was rebased onto B instead of onto C.... am I making sense here?17:24
bodie_say B was the previous master17:24
rogpeppebodie_: the entry in godeps should always reference a commit in the dependency's history17:25
rogpeppebodie_: you'll just be adding to the head of that history, so juju will be pointing somewhat back in time17:26
rogpeppebodie_: and when juju is ready, it can change godeps to point to the new charm master17:26
rogpeppebodie_: i'm not really understanding your question in fact17:27
rogpeppebodie_: godeps *specifies* which charm version juju is built against17:27
bodie_right17:27
rogpeppebodie_: and all that matters is the state at that actual referenced commit. if there are some commits in the history that juju was never built against, it doesn't matter17:28
rogpeppebodie_: in the end, just commit to the charm repo as if juju didn't exist17:29
rogpeppebodie_: then change juju to refer to the newly pushed commit by changing godeps17:29
rogpeppebodie_: does that make sense?17:30
bodie_rogpeppe, then, I guess my question is more about juju; I notice godeps indicates a version of charm older than master, so if I land my charm changes on top of charm master, then update godeps to the new charm master, it will implicitly include the charm master that I landed on top of, which previously wasn't in juju's deps17:30
rogpeppebodie_: yeah, that's fine. it's water under the bridge17:30
rogpeppebodie_: the charm package could change very frequently, but juju wouldn't need to update godeps for every commit17:31
bodie_rogpeppe, I assumed that if godeps points to an older charm hash, it's because juju isn't ready to have the newer charm master17:31
bodie_ah17:31
bodie_hm17:31
natefinchbodie_: you're right that one of those new commits could break juju17:31
rogpeppebodie_: it's usually a good idea to update godeps to the latest commits to all dependencies17:31
natefinchbodie_: (one of the ones that you didn't author)17:31
bodie_natefinch, exactly17:32
rogpeppebodie_: particularly for gopkg.in deps17:32
rogpeppebodie_: for others, you have to be more careful because changes might not be backwardly compatible17:32
natefinchbodie_: there's not really anything you can do about that except try it, and if it breaks, figure out who made the intervening commits, and figure out why it broke17:32
bodie_rogpeppe, regarding gopkg.in deps, that does make sense; I think my confusion about gopkg came because I had previously used gopkg for charm and been advised not to do so17:32
natefinchbodie_: but in theory, the whole pooint of using gopkg.in is that you're *not* supposed to make breaking changes on the same branch17:33
rogpeppebodie_: but you can't do anything too bad because the 'bot will throw your PR out if the updated dep breaks something17:33
rogpeppebodie_: yeah, davecheney doesn't like gopkg.in17:33
rogpeppebodie_: but it's too late now17:33
bodie_true, and it passes all my tests.  hmm...  the current charm master must be for a juju branch that hasn't landed.17:34
rogpeppebodie_: and i think it makes a lot of sense, although there are potential issues too17:34
natefinchI don't see what the difference is, really.  We could also just use github.com/juju/charm.v3 instead of a branch called v317:34
rogpeppenatefinch: except then you'd need a different repo for each version17:34
rogpeppenatefinch: so you couldn't share issues between them17:34
natefinchrogpeppe: right... .my point is, gopkg.in isn't hurting anything.  It's just like using a completely different package whenever you change version numbers17:35
rogpeppenatefinch: yup17:35
natefinchrogpeppe: and it makes many things nicer, like issues on the17:35
natefinchrepo17:35
rogpeppebodie_: the recent charm changes were probably just me adding to the bundles in the charm testing dir17:35
bodie_single point of failure, bus factor of one... just saying17:35
rogpeppenatefinch: yeah. dave's objection is to having the version encoded in the package path17:36
rogpeppebodie_: it's not a spof17:36
rogpeppebodie_: there are fallback servers17:36
bodie_well, assuming whoever's paying for gopkg.in stops paying for it17:36
rogpeppebodie_: and the code is almost trivial17:36
rogpeppebodie_: you're assuming that it costs something to run17:36
natefinchif gopkg.in goes away ,the biggest thing we have to do is move our branches into separate repos and find/replace in the code17:36
rogpeppebodie_: i suppose the domain name costs something17:37
natefinchor run our own redirector17:37
bodie_fair enough17:37
natefinchrogpeppe: servers that fail over to one another generally aren't free17:37
natefinchrogpeppe: though I guess thinks like heroku and GAE do offer free tiers17:38
bodie_yeah, I didn't mean a technical single server but rather the service itself, but I don't see it going away if people depend on it and it's foss17:38
bodie_just the domain is mildly problematic17:38
bodie_potentially17:38
natefinchbodie_: the domain name can go away ,and that's nearly as bad as the service going away.  But still, all it requires is a find&replace and you're back in business.17:38
bodie_haha, I'm seriously not saying I *think* this would happen17:38
bodie_yeah, good point17:39
bodie_heh, I always wonder how long github is going to be around17:40
rogpeppebodie_: one nice thing about gopkg.in is that it needs no persistent state at all17:40
rogpeppebodie_: yeah17:40
rogpeppeanyway, i gotta17:40
rogpeppego17:40
bodie_sure, take care.  thanks for the advice17:40
rogpeppebodie_: np, good chat17:41
rogpeppeg'night all17:41
rick_h_thanks for the help rogpeppe, night17:41
bodie_for the gopkg deprecated variable, should I mention it in README or is it sufficient to comment the variable with a TODO?17:52
=== BradCrittenden is now known as bac
natefinchbodie_: I'd say in the code is fine17:56
perrito666natefinch: meeting18:05
perrito666ericsnow: likewise18:05
stokachuis there a situation where juju would not run kvm-ok? like maybe on an amd system?18:30
stokachuhttp://paste.ubuntu.com/8427274/, line 1484 just says kvm container creation failed18:30
stokachubut thats it18:30
natefinchis trunk broken?18:52
natefinchI tried to bootstrap on ec2 and it takes a long time and then says "no instances found"18:52
natefinchmmm.. godeps out of date.... will retry18:53
bodie_can I get an LGTM on https://github.com/juju/charm/pull/53 please?18:56
bodie_it's a -3/+2 pr18:57
natefinchand yet it took two commits19:01
* natefinch is just giving you a hard time19:01
natefinchbodie_: is that right, you just removed action-requested from unitHooks?19:02
bodie_heh19:03
=== katco` is now known as katco
bodie_natefinch, yeah, and added Action kind19:03
bodie_labeled ActionRequested DEPRECATED19:03
bodie_it's just a dep for 617, is the thing, which is horribly overripe and finallyready to land19:04
natefinchok, I guess?  I don't know that I have a good enough idea of how this stuff is used to have any clue if you're breaking everything or not.   I guess as long as no one calling UnitHooks() relies on ActionRequested being in there, that's ok.19:07
sinzuinatefinch, bodie_ I hope both of you can help with the situation in https://bugs.launchpad.net/juju-core/+bug/137408719:10
mupBug #1374087: Joyent is not deploying services reliably <joyent-provider> <juju-core:Triaged> <https://launchpad.net/bugs/1374087>19:10
bodie_natefinch, doesn't break juju core19:10
sinzuinatefinch, bodie_ I don't have much information :( I can collect what you advise19:10
bodie_natefinch, the goal is to prevent people from calling using an Action as a UnitHook19:11
bodie_"calling using" = using... derp19:11
natefinchbodie_: lgtm'd19:15
bodie_natefinch, thanks19:16
natefinchsinzui: looking19:16
=== Ursinha is now known as Ursinha-afk
natefinchsinzui: do we have a contact at Joyent we could talk to?  You'd think that a change that breaks outside users would be somethign they'd want to communicate with partners19:26
sinzuinatefinch, I don't know who it is, but I know who I can ask19:27
=== Ursinha-afk is now known as Ursinha
jcw4mgz: how do we persuade CI to pick up a merge when there are LOTS of comments on the review?19:45
perrito666jcw4: that should be no blocker19:47
sinzuijcw4, I think mgz merged his paging fix19:47
jcw4perrito666: I vaguely remembered a discussion where lots of comments pushed the $$merge$$ onto a new page19:48
jcw4sinzui: I see19:48
perrito666jcw4: what sinzui said19:48
jcw4sinzui: bodie_ is trying to land 61719:48
jcw4and it's not being noticed by CI19:48
jcw4sinzui, mgz if you get a chance can you help us out in getting CI to notice that 617 is ready to land?19:51
sinzuijcw4, I don't have access to the machine or experience with the server19:52
jcw4sinzui: okay, thanks!  I don't know who else to ask... wallyworld maybe?19:52
jcw4I guess he's not on19:52
sinzuiI see the paged comment support is merged https://github.com/juju/jenkins-github-lander/commits/develop19:52
natefinchbtw if anyone wants to lend a hand in #juju, it would be appreciated.  Trying to debug one guy's mystery machine and now a second guy has come on.19:57
jcw4natefinch: feel like a one armed paper hanger?19:57
natefinchyep19:58
natefinchug... people really need to remember to update the help on commands20:10
natefinchjuju upgrade-juju still says odd minor versions are considered development versions20:10
hazmatdumb golang question.. i'm looking at the ec2 provider / ec2.go ...  its got a couple lines like this var _ environs.Environ = (*environ)(nil)20:30
hazmatis that some sort of side effect for the compiler to check?20:30
hazmatie. another.. var _ simplestreams.HasRegion = (*environ)(nil)20:30
natefinchhazmat: yes, it's a compile-time check that environ fulfills the environs.Environ interface20:31
natefinchjust a belt and suspenders check, really, since tests should also be checking that... but it can't hurt to have the compile-time check, too.   It's useful for packages that intend to fulfill an interface, but don't actually use their type as that interface inside the package20:32
hazmatmagical side effects ;-)20:34
hazmatcool20:34
hazmatmore like inline assert instance creation cast20:35
natefinchsure20:37
natefinchexcept not magical at all.  :)20:38
bodie_any sufficiently advanced technology is indistinguishable from magic20:48
bodie_:P20:48
katcosinzui: thank you for all your efforts with releasing 1.20.820:51
sinzuiyour welcome katco20:52
bodie_hmmm, so how should I land 617?  the CI bot doesn't seem to be picking up my $$merge$$21:14
bodie_I guess I have to wait for wallyworld?21:15
thumperbodie_: I wouldn't wait for wallyworld, he on holiday for a bit :)21:15
bodie_thumper, any suggestions?21:20
thumperbodie_: which PR?21:20
bodie_https://github.com/juju/juju/pull/617 @thumper21:21
* thumper shrugs...21:23
thumperI wonder if the bot is awake21:23
bodie_thumper, I think so.  jcw4 was saying he landed a trivial earlier today, I believe21:27
jcw4yep21:27
bodie_thumper, we thought it might be the pagination issue with PR comments, but apparently a fix for that was landed21:27
bodie_I almost wonder if the fixed code is running on the ci server?21:28
thumperbodie_: I have no idea, sinzui?21:28
bodie_already pinged him earlier..21:28
sinzuithumper, the lander is not connected to CI. It does defer testing to CI though21:29
bodie_ah21:29
=== jheroux is now known as jheroux_away
bodie_so this is a dead end until wallyworld is back?21:37
ericsnowrunning a local environment, should an "ubuntu" user exist on my box?21:40
sinzuiericsnow, the answer is NO but...21:44
sinzuiericsnow, there is an insane edge case that is not fixed. If your local host is a server ubuntu, you cannot delete the ubuntu user. its ridiculous because localhost on server or desktop always creates the container under the login users name, but when the os is the ubuntu server an  the ubuntu user is deleted, juju trys to use it anyway21:46
ericsnowgot it21:47
ericsnowthanks21:47
sinzuibodie_, I have a cunning plan...can you create a new pull request for your branch, and leave a comment with a link to the stuck PR and $$merge$$21:53
sinzuibodie_, maybe the problem with the lander is that it is a few revs behind trunk, which has the paginated comment fix21:54
bodie_sure, I'll try that.  thanks sinzui21:55
rick_h_thumper: working on getting back in network went boom or something21:58
sinzuiI need to EOD now and it will be a hard reset because I need to switch to OS X to build juju and let my computer get the reboot it wanted on Monday21:59
bodie_oh thank zombie baby jesus, the lander picked it up22:06
bodie_anyone know what the deal is with godeps -t reporting differences even on master?  I'm scouring my inbox but not seeing a discussion about a new "right way"22:29
menn0thumper, waigani, davecheney: standup?23:00
thumpermenn0: geez on the dot of 1123:00
=== mup_ is now known as mup

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