/srv/irclogs.ubuntu.com/2015/01/14/#juju-dev.txt

perrito666wallyworld: btw I began using quassel, it sucks that they dont support ubuntu indicator for messages00:20
wallyworldyeah, maybe htere's a plugin, not sure00:20
perrito666doesnt seem to implement plugins00:21
perrito666but having the server in amazon works better than bip00:22
thumperwallyworld: re bug 123647100:29
mupBug #1236471: Sporadic test failure w/ bot inside Uniter: FilterSuite.TestUnitRemoval <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1236471>00:29
thumperwallyworld: it seems to be just utopic00:29
thumperis there someone running utopic that could test it?00:29
wallyworldoh joy00:29
wallyworldi can00:29
thumperworks fine here00:29
wallyworldsigh00:29
wallyworldi'll try it now00:29
thumperwallyworld: although a key indicator to the problem could be the comment on line 11100:30
wallyworldthumper: works fine for me on utopic00:31
thumperwallyworld: reading the code...00:31
thumperwallyworld: it seems that sometimes destroy removes the unit, and sometimes it just sets it to dying00:31
thumpersmells like a race condition00:32
thumperthe filter that we check dies seems to not find the unit00:32
wallyworldyeah, sadly00:32
thumperso it feels like in that case, the doc was removed00:32
thumperas opposed to just set to dying00:32
thumperwallyworld: reading the comment in state/unit.go Destroy method00:33
wallyworldthat makes sense having now read the code00:33
thumperwallyworld: it seems that once destroy has been called, we can't depend on it being there00:33
thumperso the test looks fucked00:33
thumperor the filter is screwed00:33
thumperas it expects it to be there00:33
thumperand it has goine00:33
thumperperhaps the test should handle the missing unit error00:33
thumperI bet what is happening00:34
thumperis that the remove is being executed before the filter go routine starts00:34
wallyworldthumper: this comment00:34
wallyworld/ Ensure we get a signal on f.Dead()00:34
wallyworldseems to imply the test expects the unit to be Dead00:34
wallyworldbut it's either still dying or already removed as you say00:35
thumperseems like the test needs to ensure that the filter go routine has started00:35
thumperand it probably doesn't00:35
thumpernope00:35
thumperit doesn't00:35
thumperthere is the race00:35
thumperfilter.go line 281 will be where it errors00:37
* thumper grunts00:38
thumperwallyworld: perhaps the best way to fix this is to have NewFilter not return until the goroutine for the loop has hit a ready state?00:38
thumperwallyworld: thoughts?00:38
wallyworldthumper: i'm just reading the filter code and in various places there's this: IsCodeNotFoundOrCodeUnauthorized00:39
wallyworldso it seems that the filter can expect the unit to not be there00:39
wallyworldand in that case, it returns an ErrTerminateAGent which is what the test wants00:39
wallyworlddo you see what i mean?00:40
wallyworldin the loop()00:40
wallyworldoh, i just read what you posted above00:41
wallyworldlet me look at that00:41
menn0wallyworld, thumper: fyi I have made little progress with bug 140982700:42
mupBug #1409827: TestSetMembersErrorIsNotFatal fails <ci> <intermittent-failure> <regression> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1409827>00:42
thumperwallyworld: but you can see from the bug, the error is a "not found" one00:42
menn0wallyworld, thumper: mainly due to distractions at home00:42
wallyworldmenn0: i hate those tests00:42
thumperwallyworld: because it is a params.Error not an rpc.Error00:43
menn0wallyworld, thumper: I am questioning why it's a CI blocker though. it fails far less often than the other ones you're currently looking at00:43
menn0wallyworld, thumper: I can only find one recent failure00:43
wallyworldmenn0: maybe sinzui can answer00:43
menn0wallyworld, thumper, sinzui: it obviously needs to be dealt with, I just don't know if it's CI blocker material00:45
menn0wallyworld, thumper, sinzui: continuing with it now anyway00:45
wallyworldty00:46
thumperwallyworld: I think I know why it isn't being caught00:47
wallyworldthumper: so the test log shows the CharmURL() api call failing with a params.NotFound error but this error should have been caught in the defer and changed to ErrTerminateAgent00:47
thumperwallyworld: because if any of the errors are traced or wrapped, then they don't match the call00:47
thumpermaybe...00:48
wallyworldthumper: because ?00:48
wallyworldif err, _ := err.(rpc.ErrorCoder); err != nil {00:48
wallyworlderr could be wrapped?00:48
thumperI'm thinking it is a possibility00:49
thumperhowever...00:49
thumperno...00:49
thumperbecause the resulting error is a params.Error00:49
thumperwallyworld: I don't see how this could fail... :(00:51
wallyworldsigh, me either, but we might me missing something subtle not being familiar with the code00:51
wallyworldthumper: if i comment out the deferred error handling to convert a not found to a errterminateagent, i can get it to fail just like in the test00:59
wallyworldso that does suggest that that error handling being used is critical to making the test pass, and i can't see how the error could be escaping01:00
thumperlooking at the bug test log01:01
thumper[LOG] 67.77366 DEBUG juju.rpc.jsoncodec -> {"RequestId":12,"Response":01:02
thumperindicates that line 320 is the return statement in question01:02
thumperbut I agree, can't see why it wasn't chagned01:02
wallyworldthumper: sill, i do think we need an errors.Cause() instead of a straight cast tp rpc.Error in the params error code stuff01:02
wallyworldrpc.ErrorCoder i mean01:03
thumperwhile I generally agree01:04
thumperI'm trying to work out this failure01:04
thumperand this isn't it...01:04
thumperapi/uniter/unit.go line 44601:04
* thumper thinks...01:05
thumperhang on...01:05
wallyworldsure, that was a general cooment01:05
wallyworldnot for this fix01:06
thumperfucker01:06
thumper...01:06
thumperdamn it01:06
* thumper looks deeps01:06
wallyworldresult.Error won't be caught maybe01:07
wallyworldi saw that line before and assumed it would be caught01:07
wallyworldoh wait, yes it will01:08
thumperwallyworld: I need a reference to a recent failure01:08
thumperresult.Error is a pointer01:09
thumperand the *params.Error does match the interface01:09
thumperwe need to see the recent failure01:09
thumperlooking at modern code for an old failure is a waste of time01:09
thumpertoo much can change01:09
wallyworldthumper: attached to the bug01:09
wallyworldhttps://launchpadlibrarian.net/190620335/filter-failure.log01:09
thumperwallyworld: the 19th of November isn't recent01:10
wallyworldthumper: looks like a wrapping issue01:10
thumperah, that one is a wrapping issue01:10
wallyworldobtained *errors.Err = &errors.Err01:10
thumperhaha01:11
thumperyeah, that is one01:11
wallyworldso maybe we should do my previous suggestion01:11
thumperI'll fix this01:11
wallyworldawesome01:11
menn0wallyworld, thumper: I think I see a potential data race relating to bug 140982701:15
mupBug #1409827: TestSetMembersErrorIsNotFatal fails <ci> <intermittent-failure> <regression> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1409827>01:15
menn0mustNext in worker/peergrouper/worker_test.go01:16
menn0the return value is set in a separate goroutine01:16
menn0isn't that a no-no?01:17
menn0thumper: ^01:17
menn0might not be the source of the test failures but looks fishy01:18
wallyworldmenn0: just in meeting, will look soon01:18
axwkatco: standup?01:19
katcoaxw: shoot sorry01:20
thumpermenn0: /me looks01:21
thumpermenn0: which line?01:21
menn0thumper: from 513 onwards01:22
menn0thumper: the return value "val" is assigned directly from the goroutine01:23
menn0thumper: the more I think about it the more I don't think this is the test failure (because if nil was returned we'd see a different kind of failure)01:23
menn0thumper: but i'm clearing it up anyway01:23
thumperyou could be right01:24
thumperbut we aren't seeing "timeout waiting" are we?01:24
thumpermenn0: it is wrong, but not the source I think01:24
thumperwallyworld: this bug isn't a critical blocker, but done anyway...01:25
wallyworldthumper: in meeting, will look in a sec01:26
thumperwallyworld: https://bugs.launchpad.net/juju-core/+bug/123647101:27
mupBug #1236471: Sporadic test failure w/ bot inside Uniter: FilterSuite.TestUnitRemoval <test-failure> <juju-core:In Progress by thumper> <https://launchpad.net/bugs/1236471>01:27
thumpergah, wrong paste: http://reviews.vapour.ws/r/723/diff/#01:27
thumperaxw: test added01:36
axwthumper: thanks01:36
* thumper wonders if the bot will pick this up01:37
wallyworldthumper: yay, bot got your change. so i think the SetMembers test is now the only remaining blocker01:47
axwmenn0: I took a look at the test yesterday, it just looked like time sensitivity to me01:47
axwmenn0: if you double that last sleep, it'll fail each time01:48
axwthe sleep durations do not leave a lot of margin for error/jitter/whatever01:49
menn0axw: totally agree. i'm figuring out how to rewrite it to not be so fragile.01:53
menn0axw: in fact, checking that retries happen with exponential backup seems somewhat unnecessary01:55
menn0axw: what do you think about just ensuring that retries are occurring and leaving it at that?01:55
thumperwallyworld: branch landed, bug updated to fix released01:57
thumperwallyworld: as it was just a test failure bug01:58
wallyworldthumper: awesome, thanks01:58
axwmenn0: seems fine to me01:58
axwmenn0: it's a bit of an overkill test01:58
ericsnowwwitzel3: the patch to fix PortSet was pretty simple02:14
ericsnowwwitzel3: not that it affects us, but Intersection had the same problem02:14
ericsnowwwitzel3: anyway, I'm EOD :)02:14
menn0axw: I have a fix but thought I'd run one other possibility by you02:14
menn0axw: you don't think there's a possibility that the issue is to do with the way the count variable is being handled?02:15
menn0axw: it's being updated in another goroutine02:15
axwmenn0: moment02:15
menn0axw: davecheney tells me that there's no guarantees about how updates will be seen by other goroutines02:16
axwmenn0: yeah, I think that's wrong. it should just return the value on the channel...02:16
axwmenn0: I don't think that's the cause of the failure tho02:16
axwwell, it could be but I think the time sensitivity is more likely02:17
menn0axw: so do i but i thought i'd run it past you02:17
menn0axw: anyway, i've removed all the fragile timing checks... i'll have that up for review shortly02:17
axwcool02:18
axwmenn0: maybe just change the chan bool to a chan struct{bool, interface{}} while you're there? :)02:18
menn0axw: oh i've done that02:19
axwgreat02:19
menn0axw: but what I meant is the function passed to setErrorFuncFor in TestSetMembersErrorIsNotFatal02:19
menn0axw: it updates the voyeur with a integer02:19
axwmenn0: oh.. looking02:19
menn0axw: actually... never mind02:19
menn0axw: that's fine02:20
menn0axw: i'm looking too closely02:20
menn0axw: the variable is only used and updated from one goroutine so there's no issue02:20
axwyup02:20
menn0axw: http://reviews.vapour.ws/r/725/02:26
axwlooking02:26
menn0axw: the channel change is a separate PR02:26
menn0axw: here's the other one: http://reviews.vapour.ws/r/726/02:30
menn0axw: all ok?02:34
axwmenn0: reviewed, I'd prefer if we got rid of any explicit sleeps02:35
axwlemme know what you think - maybe I'm being too pedantic02:35
axwmenn0: alternatively just get rid of the sleep in the test, since mustNext will wait up to LongWait anyway02:37
menn0axw: I guess I was wanting to see multiple retries02:39
menn0axw: but that can be done with multiple mustNext calls02:39
menn0so i'll do that02:39
axwmenn0: hence the loop in my code, but yes, multiple mustNexts will do that too02:40
waiganiericsnow: is http://reviews.vapour.ws/r/724 really that big (about 40 files, 5000 lines changed) or has RB gotten confused?02:44
* _thumper_ headdesks02:44
=== _thumper_ is now known as thumper
* thumper headdesks02:44
ericsnowwaigani: oops, no it's like 15 lines :)02:44
thumperyay string constants02:44
thumpergo on, search the codebase for "90168e4c-2f10-4e9c-83c2-feedfacee5a9"02:45
* thumper fixes02:45
waiganiericsnow: few. I thought, "there goes my afternoon..."02:45
waiganiwhoha, that's a lot of feedface02:46
ericsnowwaigani: what you saw is the GCE provider patch (minus +/- 1500 lines of tests we're still writing)02:46
ericsnowwaigani: we'll be splitting that up into multiple review requests though :)02:47
menn0axw: http://reviews.vapour.ws/r/725/ updated02:47
waiganiericsnow: that would be good, otherwise it's a hell of a patch to review!02:47
ericsnowwaigani: :)02:48
axwmenn0: lgtm, thanks02:48
menn0axw: sweet. thanks.02:48
menn0thumper, wallyworld : fix for bug 1409827 merging. is the policy that I can mark the ticket as Fix Released once it's in b/c it's a test only fix?02:49
mupBug #1409827: TestSetMembersErrorIsNotFatal fails <ci> <intermittent-failure> <regression> <test-failure> <juju-core:In Progress by menno.smits> <https://launchpad.net/bugs/1409827>02:49
thumpermenn0: I think so02:50
wallyworldmenn0: not sure, what tim said02:50
menn0wallyworld: good answer :-p02:52
wallyworldyep :-)02:56
thumperwaigani: do you remember where we generate the uuid for new environments?03:02
thumperwaigani: I remember we moved it...03:02
thumperbut can't remember where03:02
waiganithumper: I think it's actually in util?03:03
thumperwaigani: well, where we assign it into the environ config03:03
waiganithumper: will look in a sec, hangon03:03
thumperenvirons.ensureUUID03:05
thumperwhich is in environs.prepare03:05
thumperhmm...03:07
thumperok03:07
waiganithumper: sorry, did you want me to hunt for anything else now?03:09
thumperwaigani: nope03:09
thumpergot it now03:09
waiganicool03:10
thumperdamn... how long do these tests take to run?03:23
thumpergeez03:23
anastasiamacwaigani: wallyworld: had to change http://reviews.vapour.ws/r/722/03:24
anastasiamacwaigani: wallyworld: could u PTAL again?03:24
* thumper taps his fingers03:24
anastasiamacwaigani: wallyworld: Get at apiserver now takes params.Entities03:25
anastasiamacwaigani: wallyworld: everything else should be the same03:25
anastasiamacwaigani: wallyworld: in fact, it's a revert to oirginal rather than a change...03:25
waiganianastasiamac: just read review, yep that makes sense to me03:25
anastasiamacwaigani: awesome - so I'll keep ur shipit :)03:26
waiganianastasiamac: sure :)03:26
wallyworldanastasiamac: +103:26
thumpercan someone tell me how long the tests should take in worker/provisioner plz?03:27
anastasiamacthumper: my last run03:27
anastasiamacthumper: github.com/juju/juju/worker/provisioner 56.706s03:27
thumperanastasiamac: ta03:27
anastasiamacwallyworld: thnx!!03:28
menn0merges are unblocked people03:30
anastasiamacmenn0: yes there r already changes qued up in jenkins :)03:31
anastasiamacmenn0: axw: thnx for unblocking it :)03:32
menn0anastasiamac: all those queued merges may or may not be mine03:32
* menn0 ducks03:32
anastasiamacmenn0: and here i was thinking to start the collection for a case of scotch...03:33
menn0ha03:33
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
thumperfark03:44
thumperfark fark fark03:44
thumperbitten by this same fucking issue again03:44
thumperFYI, machine config only has APIInfo structure set for state server machines03:45
thumperhmm...03:46
thumperno03:46
thumperdamn03:46
menn0thumper: i'm trying to get my head around how an API connection for a new environment will be opened04:13
menn0thumper: the password will always be the same right? it's stored on the user, not the envuser.04:13
=== kadams54 is now known as kadams54-away
menn0thumper: actually... how do passwords for machines work?04:14
thumperyes, machines have passwords04:14
thumpermenn0: but that bit isn't working right now04:14
menn0thumper: fixes in your branch?04:15
thumpermenn0: I've opened a huge pile of worms with this env uuid in the agent config stuff04:15
thumperbroken heaps04:15
thumperand slowly untangling04:15
thumperbut I'm being called away04:15
thumperto walk the dog04:15
thumperso I'm done04:15
thumperfor today04:15
menn0that sucks04:15
menn0ok04:15
menn0i will ignore that part for now04:15
=== kadams54-away is now known as kadams54
axwanastasiamac: looks like your branch failed on the bot, but I think it might be an infrastructure issue04:21
axwtake a look, you can probably just retry it04:21
anastasiamacaxw: thnx will look04:27
=== kadams54 is now known as kadams54-away
anastasiamacis there a comment I can send to bot to not try to $$merge$$?05:18
anastasiamaclike cancel a merge?05:18
wallyworldanastasiamac: you need to have credentials, i can cancel an in progress landing if you want05:20
anastasiamacwallyworld: ic05:21
wallyworldaxw: if have have a few minutes, i'd appreciate a review of http://reviews.vapour.ws/r/727/05:21
anastasiamacwallyworld: no big deal i have qd couple of branches and noticed too late that one of them has unresolved conflict05:21
axwwallyworld: looking05:21
anastasiamacwallyworld: it'll just fail.. but thnx :)05:22
wallyworldok05:22
wallyworldanastasiamac: annotations-tags?05:22
anastasiamacwallyworld: no sync-tools05:23
anastasiamacwallyworld: annotations tags are about to be backported to 1.22 ;)05:23
anastasiamacwallyworld: since they've merged well :P05:23
jamanastasiamac: wallyworld: aren't we in feature freeze for 1.22?05:24
anastasiamacjam: this is not a feature that's new to 1.2205:24
anastasiamacjam: it's kind of a bug... that needs to be fixed in 1.2205:25
anastasiamacjam: trying to get ckient signature right to avoid conflicts later05:25
anastasiamacjam: client*05:25
anastasiamacjam: s/conflicts/headaches05:26
jamk05:26
anastasiamacjam: thnx for checking :)05:27
axwwallyworld: reviewed05:36
wallyworldty looking05:36
axwgrrrrrr, shitty tests05:37
anastasiamacwallyworld: cherry picked annotations change http://reviews.vapour.ws/r/728/05:39
wallyworldaxw: i introduced a new bootstrap method to avoid churn on the other providers.  i can quite see how to wrap the finaliser though such that the instance id is available to it, since it's called from bootstrap/bootstrap.go with a machine cfg without the id and is only filled in inside the closure05:42
wallyworlds/can/can't05:44
axwwallyworld: maybe I'm wrong, gimme a sec05:45
axwwallyworld: yep, you're right, sorry05:45
wallyworldaxw: sure, np. you happy with the sig change to avoid churn?05:46
axwwallyworld: yes that'd be good, thanks05:46
wallyworldaxw: to be clear, I made the sig change to avoid updating all the other providers. but you didn;t like it05:47
wallyworldalso, the way i have it avoids the boilerplate error checking05:47
wallyworldthat would otherwise have to be introduced05:47
axwwallyworld: where would there be extra boilerplate?05:47
wallyworldaxw: what's inside the new Bootstrap() func - those 5 lines or so05:48
axwwallyworld: I don't follow. the existing code hasn't changed much, and the callers of Bootstrap still need to check an error05:49
wallyworldsince the environs.Bootstrap interface method i would think we'd want to retain05:49
wallyworldthey just return common.Bootstrap() directly since the signature matches that of environs.Bootstrap05:49
axwwallyworld: ah yeah, that would need to change05:50
axwok05:50
axwforget it05:50
wallyworldok, i'll make the err change though05:50
axwwallyworld: keep it as is. I'll comment on the branch05:50
wallyworldok, ta05:50
wallyworldaxw: also, i started looking at bug 1384259. it seems cloud init is directly running the various apt commands it is configured with , and something else on the machine locks apt and then cloud init is sad. but i haven't dug any deeper. not sure if you have any ideas05:52
mupBug #1384259: race condition running apt in bootstrap <bootstrap> <ci> <oil> <race-condition> <juju-core:Triaged> <juju-core 1.22:Triaged> <https://launchpad.net/bugs/1384259>05:52
wallyworldnot sure if we want to wrap the cloud init apt commands with a retry05:52
axwwallyworld: apt is called from the ssh script, not cloud-init (on bootstrap only)05:54
wallyworldah doh, yeah. i saw cloud init text in the log on the bug05:54
axwwe could lock... I don't *think* cloud-init does anything like that though05:54
wallyworldnot sure off hand how to solve this one, need to dig into it some more. any suggestions welcome.05:55
axwwallyworld: only thing I can think of is to add a script that waits for any apt or dpkg processes to stop running before we do anything06:01
wallyworldyuk, but may have no choice :-(06:02
wallyworldi've updated the pr too06:02
axwwallyworld: it'd be good to know what it's conflicting with, that might give us a better approach06:02
wallyworldi'll ask on the bug06:03
axwwallyworld: lgtm06:04
wallyworldty06:04
wallyworldaxw: in doing that branch i lost so much time due to not realising maas gave back instance ids that were different from the system ids to be passed over the api. sigh. i now know06:06
axwwallyworld: :(   any idea why we're using the resource_uri instead?06:08
wallyworldnope :-(06:08
wallyworldi found a helper function someone wrote to convert06:08
wallyworldso it must have been a deliberate decision06:08
axwwhee, finally. you can now provision ec2 instances with volumes06:13
wallyworldaxw: whoot! fantastic06:30
axwwallyworld: I forgot to ask before: is there a way we can flag some manual testing as being  required for the next release?07:12
axw(e.g. ensuring MAAS 1.7 deployments work well, for non-bootstrap machines)07:12
wallyworldaxw: yes, i plan on raising this with curtis tomorrow07:19
axwwallyworld: ok, cool07:20
axwwallyworld: but in general, should we be using launchpad bugs or what...?07:20
wallyworldfor recording testing notes? using lp bugs seems reasonable07:21
wallyworldthis close to release, i wanted to do it more explicitly07:21
axwwallyworld: not so much a note, as "we should not release unless we know this thing has been tested"07:21
wallyworldyeah that, sorry, was using the term generically07:22
axwok07:22
wallyworldbut we don't have a documented process AFAIK to flag critical testing issues07:22
axwwallyworld: in my previous job we used to create tasks for every new feature and major bug fix that would block a release. they'd generally need to be done by someone other than the implementer. we had the luxury of having big, dedicated testing teams though :)07:23
wallyworldaxw: yeah, we had something similar previously for me also07:24
wallyworldwe just need to make sure that wes the release manager and the QA team are informed, and that other stakeholders are brought in as needed to help test07:25
dimiternaxw, hey, are you still around?08:33
axwdimitern: heya, yes I am08:34
TheMuemorning *yawn*08:34
axwmorning08:34
dimiternaxw, a quick storage question: do we plan to mount devices in lxc containers?08:35
dimiternmorning TheMue08:35
axwdimitern: we want to be able to, yes. it's going to require some changes to lxc templates to allow mounting and so on08:36
axwdimitern: why do you ask?08:36
dimiternaxw, because due to the networking work I plan to make lxc config file templates more flexible08:37
dimiternaxw, and this should also help for storage08:37
axwdimitern: I see, yes, that will be helpful08:38
dimiternaxw, sweet, I'll let you know when my changes are in then08:38
axwdimitern: thanks very much. probably won't be getting to lxc for a little while yet, but that'll be much appreciated08:39
axwwallyworld: ^^ dimitern is helping with storage now ;)08:39
dimiternwallyworld, axw, :D more like side-effecting it08:39
dimiternwallyworld, axw, can any of you have a look at a small goamz PR? https://github.com/go-amz/amz/pull/16 thanks!09:31
voidspacedimitern: ping09:43
voidspacedimitern: cannot use parent (type names.Tag) as type names.MachineTag in function argument: need type assertion09:43
dimiternvoidspace, hmm09:44
dimiternvoidspace, yeah?09:44
voidspacedimitern: just getting the code09:44
voidspacedimitern: I want to know if it's safe to just do the conversion09:44
voidspacedimitern: if I actually have the right tag09:45
voidspacedimitern: just finding the place where I get the tag and where I'm using it09:45
dimiternvoidspace, it is safe if you actually have a names.MachineTag09:45
voidspaceparent := p.authorizer.GetAuthTag()09:45
voidspaceparentTag, err := names.ParseMachineTag(parent)09:45
voidspaceparentMachine, err := p.getMachine(canAccess, parentTag)09:46
voidspaceah09:46
voidspacenow the error is09:46
voidspace cannot use parent (type names.Tag) as type string in function argument09:46
voidspacedimitern: so just convert then...09:46
dimiternvoidspace, wait a sec09:47
voidspacedimitern: is the result of GetAuthTag() the machine tag?09:47
dimiternvoidspace, GetAuthTag does return names.Tag, but if authorizer.AuthMachineAgent() is true then it's safe to cast it09:47
voidspaceif it isn't true we shouldn't be running...09:48
voidspaceso I should check I guess09:48
dimiternvoidspace, yeah - have a look at NewProvisionerAPI in apiserver09:48
dimiternvoidspace, the very first check is if !authorizer.AuthMachineAgent() && !authorizer.AuthEnvironManager() { return nil, common.ErrPerm }09:48
dimiternvoidspace, actually, the getAuthFunc defined there is just what you need09:49
dimiternvoidspace, it already checks parent/child relationship09:49
voidspaceah09:49
voidspaceand I'm using that later anyway09:50
voidspaceso maybe I don't need a separate check09:50
voidspaceI'll look at that, thanks09:50
dimiternvoidspace, yes, *I think* you can just use that getAuthFunc to validate the passed tag09:50
voidspacecool, thanks09:51
dimiternvoidspace, standup?10:02
voidspacedimitern: oops, sorry10:05
dimiternvoidspace, I have a cunning plan :)10:56
dimiternvoidspace, you can't tag IPs, but you can tag NICs10:56
dimiternvoidspace, e.g. we can add tags like "juju:machine-id=<id>", "juju:<mid>:address:<#>=<ip>" to the NIC after calling RunInstances10:58
dimiternvoidspace, so each time we call AttachPrivateIpAddress successfully, we also add a tag "juju:0/lxc/0:address:0"="" (we don't know the address yet), but then when listing all instance IPs we use the tags to decide which goes where11:00
dimiternvoidspace, and the instance updater can set "juju:0/lxc/0:address:0"="<some yet-unassigned ip>" as a tag and also in state11:02
dimiternanyway.. just thinking out loud - tags can be pretty powerful way of adding metadata accessible via aws api even if apiserver dies/cannot be reached, we can use the tags to intelligently cleanup dependent resources11:03
TheMuedimitern: to stay with the golang naming conventions I would call it AttachPrivateIPAddress()11:06
perrito666morning11:07
dimiternTheMue, in goamz it's called AssignPrivateIPAddresses actually11:07
TheMueperrito666: heya and good morning11:07
dimiternmorning perrito66611:07
TheMuedimitern: +111:07
TheMuedimitern: just took a look at net package ;)11:07
dimiternTheMue, yeah :)11:08
perrito666dimitern: TheMue any of you knows what is the status of blocking bugs?11:37
dimiternperrito666, all resolved11:37
perrito666dimitern: and merged?11:37
dimiternperrito666, for now at least, so no longer blocked11:37
* perrito666 looks at the topic hoping it will dissapear11:37
perrito666wallyworld: do you not sleep?11:47
wallyworldsometimes11:47
wallyworldlike you can talk :-)11:48
perrito666heh fair11:49
perrito666anyway your mail makes sense, that is why i added a unit ptr as a member of the unitagent, we can use tag from there11:50
wallyworldperrito666: i don't think it makes sense to embed the whole unit into unitagent - i thought we talked about having unitagent very lightweight, just doing status get/set11:53
voidspacedimitern: that's a terrible abuse of tags :-D11:53
dimiternvoidspace, :) oh, I'm just getting started11:54
voidspace:-)11:54
perrito666wallyworld: I did not embed it, its just a member11:55
perrito666wallyworld: you might need some sleep and a couple of drinks11:55
wallyworldperrito666: the latter is taken care of :-)11:55
perrito666lol11:55
wallyworldbut i'm still not sure about even referencing unit11:56
wallyworldwe don't need all that baggage inside UnitAgent struct, which for now is just about get/set status11:56
perrito666I am all ears about Tag then :p11:57
wallyworldwe could invent a new one eg "unitagent-foo/0", or easier, just have SetAgentStatus pass the "unit" tag across the wire and the method knows how to deal with it11:59
wallyworldthe latter seems best, but maybe i'm missing something11:59
perrito666I am not sure of the implication of the latter, I guess it could work12:01
wallyworldi think it will be ok, but would need to start coding to see where it ends up12:02
perrito666well, that is what I am for12:03
perrito666and tonight I have meetings at 11pm and 00 (its 9am) so I seem to have time ahead of me12:03
voidspacedimitern: hmmm, I bet you can't set tags atomically though12:24
dimiternvoidspace, well it would appear so.. although you can't set tags on instance/NIC/etc. creation according to the docs, you *can* launch an instance via the AWS web console and add tags to it12:28
dimiternvoidspace, i've enabled the cloudtrail API logging and experimenting now to see how they do it12:28
voidspacecool12:28
perrito666mm, on a machine from scratch here and our tests seem to expect a /usr/lib/juju/bin/mongod12:28
perrito666that is sort of wrong for the tests isn't it?12:29
wwitzel3perrito666: short answer, yes ;)13:13
jw4backport PR to remove accidentally added file from 1.22: http://reviews.vapour.ws/r/731/14:25
jw4OCR PTAL ^^14:25
jw4:)14:25
dimiternjw4, ship it! :)14:25
jw4dimitern: :)14:25
perrito666that is so close to occipital14:27
jw4perrito666: http://en.wikipedia.org/wiki/Occipital_bone ?14:28
perrito666true14:29
perrito666the OCRPTAL bone14:29
jw4hehe14:29
* jw4 just got it14:29
TheMueo/15:05
perrito666OCR PTAL http://reviews.vapour.ws/r/732/15:12
dimiternperrito666, we should just start using "occipital" :D15:15
perrito666dimitern: yes, it was very hard to resist the temptation15:17
katcoone-line change and test; blocking 1.22; up for review: http://reviews.vapour.ws/r/733/15:35
dimiternkatco, wow!15:40
dimiternkatco, a return is all it takes?15:40
katcodimitern: i told you i had already thought of the possibility, but i ignored my own warning ;)15:41
dimiternkatco, hehe - you've got a review15:41
katcodimitern: ty, i'll add the bug#15:42
katcodimitern: would you be able to do a quick test of the code on your environment? or has the opportunity passed?15:44
dimiternkatco, sure, let me pull your branch15:45
katcodimitern: ty so much :)15:45
dimiternkatco, np - it's bootstrapping now15:51
katcodimitern: cool ty again15:51
dimiternkatco, ok, so no panic, just a few warnings about dns resolving - http://paste.ubuntu.com/9749392/16:06
katcodimitern: that's expected; looks good, yes?16:06
dimiternkatco, yes, however isn't the warning message a bit misleading?16:06
katcodimitern: how so?16:07
dimiternkatco, "Status may be incorrect" ?16:07
katcodimitern: well, it's showing that you're running on no subnets and utilizing no ports16:07
dimiternkatco, got it, right16:07
dimiternkatco, lgtm then16:07
katcodimitern: ty for all the help; finding it, reporting it, everything :)16:08
dimiternkatco, np, thanks for fixing it so quickly :)16:09
katcodimitern: it's much easier to troubleshoot/fix something when you know (almost) everything about it :)16:10
katcodimitern: and the fact that i could write a unit test sped up the process as well16:11
dimiternkatco, exactly!16:11
voidspacedimitern: ping16:43
voidspacedimitern: you still around?16:43
dimiternvoidspace, yep16:44
voidspace dimitern state.State supports adding a subnet that doesn't yet exist in state or fetching one that already exists16:44
voidspacedimitern: what I *want* is "get me this subnet - adding it if it doesn't exist"16:44
voidspacedimitern: better to do that in a State method or just hand code the logic16:44
dimiternvoidspace, too many "states" :)16:45
voidspacehah16:45
dimiternvoidspace, does not exist in which state?16:45
dimiternvoidspace, ah, sorry16:45
voidspacethe stored state16:45
dimiternvoidspace, got you16:45
voidspacemongo I guess16:45
voidspaceI mean, I know it's mongo16:45
voidspacebut I guess that's a better way of saying it...16:45
dimiternvoidspace, right - we can change AddSubnet to AddOrUpdateSubnet perhaps?16:46
voidspacedimitern: ok16:46
voidspacegah, and there's network.SubnetInfo plus state.SubnetInfo16:47
voidspaceI have a network.SubnetInfo, I need a state.SubnetInfo16:47
dimiternvoidspace, let me have a look16:47
voidspacedimitern: I wrote the code, I only have myself to blame16:48
dimiternvoidspace, right, so the unfortunate duplication is on purpose16:48
voidspacedimitern: I'm ok16:48
katcodimitern: backport of same change to v1.22: http://reviews.vapour.ws/r/734/16:49
dimiternvoidspace, state shouldn't depend on other packages, the same applies to params16:49
dimiternkatco, looking16:49
voidspacedimitern: although state does depend on network anyway I believe16:49
dimiternkatco, ship it! :)16:49
katcodimitern: woot! grats on quick turn around on this :)16:50
dimiternvoidspace, well it does for network.Address I think16:50
dimiternkatco, well I've seen it before lol16:50
katcodimitern: i mean the whole bug :)16:51
katcodimitern: wouldn't have gotten resolved, nor so quickly w/o your help16:51
dimiternkatco, ah, yeah - one of the fastest fixes lately16:51
dimiternkatco, np, glad to help16:52
dimiternvoidspace, so.. the state documents shouldn't depend on things outside of state, which might change out-of-band and lead to docs getting serialized differently16:53
voidspacedimitern: fair enough16:53
dimiternvoidspace, we're not entirely depend-less, but let's not make it worse :)16:53
dimiternvoidspace, as for params - same issue - serialization; we shouldn't change the on-the-wire format of the api incompatibly16:54
voidspaceI'm aware of that one16:54
voidspacefor state I don't think it's a *genuine* issue though as we populate a subnetDoc from the SubnetInfo16:55
dimiternvoidspace, sorry :/16:55
voidspaceso we're safe from "out of band changes" anyway16:55
voidspaceas we already have a layer of indirection for the actual serialisation16:55
dimiternvoidspace, yeah, that's right16:55
voidspaceadding SubnetInfo is *two layers* of indirection16:56
voidspace:-p16:56
dimiternvoidspace, we should consult fwereade here I think16:56
voidspacedimitern: let me work with the code and see how it feels - I'll just write a "caster function" I guess16:56
dimiternvoidspace, because not depending on packages for the sake of stable serialization format for mongo docs is one thing, but no dependencies at all might be too much16:57
voidspaceok16:57
voidspaceand Subnet representation (network package) is a low level dependency not a structural dependency16:57
dimiternvoidspace, I think so, yes16:58
=== Viperz28 is now known as Guest82007
voidspacedimitern: late ping18:25
dimiternvoidspace, yeah? i'm around on and off18:27
voidspacedimitern: you added network.InterfaceInfo recently, with the intention it be used by the ProviderAPI api?18:28
dimiternvoidspace, not over the wire though - there's a params.NetworkInfo for that18:29
voidspacedimitern: I have subnet info and ip address and am wondering how I get the extra information if that's what I'm required to18:30
voidspacedimitern: from the subnet CIDR I'll have to fetch the NIC info18:31
voidspacedimitern: it doesn't look like there's a provider method for this (that I can see), can I assume state will have it correctly?18:31
voidspacefor the host machine18:31
dimiternvoidspace, sorry, what extra info?18:33
voidspaceDeviceIndex, MACAddress, NetworkName, InterfaceName18:33
voidspaceetc...18:33
voidspaceeverything on NetworkInfo that isn't on SubnetInfo18:33
dimiternvoidspace, hmm18:34
voidspacelet me double check there's no environ.Interfaces18:34
dimiternvoidspace, from state you mean?18:34
voidspacedimitern: I call environ.Subnets() which returns []network.SubnetInfo18:34
voidspacedimitern: there is an interface collection in state though I *believe*18:34
voidspacedimitern: maybe a problem for tomorrow as it's late for me too18:35
voidspacedimitern: I thought you might know easily... :-)18:36
dimiternvoidspace, yeah - let's call it a day :) I'm a bit dumb now I'm afraid18:36
voidspacedimitern: it's even later for you than it is for me! Goodnight, see you tomorrow.18:36
voidspaceand goodnight everyone18:36
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
thumpermorning folks19:43
thumpergeez... you make one small thing required and suddenly heaps of tests break...19:44
perrito666thumper: what did you break while we where not looking?19:45
thumperperrito666: I'm needing to add the environment uuid to the agent config19:45
thumperperrito666: otherwise all the machine and unit agents don't know which environment to connect to19:45
thumperperrito666: but that opened a world of hurt19:46
thumperthat I've spent about five hours unpicking19:46
thumperI think I'm almost there19:46
thumperthen I need to write an upgrade step19:46
perrito666I am sure you said "this should be easy" before starting, that usually complicates things19:46
thumperI think I did19:46
thumperI expected it to be a few hours19:47
thumpernot days19:47
perrito666well, you should never jynx it19:47
thumperand I seem to have made the provisioner tests never exit19:52
thumper...19:52
thumpernot sure how that happened19:52
* thumper looks up and sees two open critical bugs19:53
thumperWTF19:53
thumperok... topic is wrong19:53
perrito666thumper: yep, I dont know why is not back to  none19:54
perrito666build is unblocked19:54
perrito666now, this is unexpected, there is an mtv channel that actually has music19:58
thumperhaha19:59
thumpermenn0: bot is unblocked, land your pending ones if you havent' already20:14
* thumper makes a sad face20:20
thumperjust found the most horrible fragile test20:20
thumperbut don't have time to fix it right now20:20
perrito666thumper: which is?20:21
thumperfunc (*cloudinitSuite) TestWindowsCloudInit(c *gc.C) {20:21
perrito666ah, oops20:21
thumperno shit, doing an equality test with a 850 line string20:22
thumperany change in any cloundinit stuff means the string has to change20:22
menn0thumper: I landed then all yesterday (I unblocked the bot and got them all in before telling anyone else :-0)20:22
menn0thumper: that sounds wonderful20:23
menn0thumper: (that test)20:23
thumpertech debt item: all cloudinit tests are awful and fragile20:27
=== kadams54 is now known as kadams54-away
thumperah ha...20:42
thumperI think I found the culprit20:43
wwitzel3ericsnow: ping20:52
ericsnowwwitzel3: hey20:52
=== kadams54-away is now known as kadams54
menn0waigani: Ship It!21:34
waiganimenn0: sweet, thanks21:35
menn0ericsnow: I just reviewed your Attempt PR again (Ship It if you like)21:50
ericsnowmenn0: thanks21:51
thumperby joves I think I may have fixed all the test failures22:04
thumper...22:04
* thumper runs full suite again22:04
thumpermenn0: 31 files changed, 185 insertions(+), 87 deletions(-) to get the tests passing on requiring environ uuid22:13
=== kadams54 is now known as kadams54-away
thumpermenn0: do you have a few minutes to chat? I need to talk through an issue22:16
thumperalthough I think I know the answer22:16
thumpermenn0, waigani_: beware with upgrade steps landing since 1.22 was branched, we should have 1.23 upgrade steps now22:24
waigani_thumper: right, noted22:24
thumperwe should check any that have landed since the branch (if any)22:24
thumperI was just thinking of this now as I'm about to write an upgrade setp22:25
menn0thumper: hi, sorry just noticed this. was deep in thought. chat now?22:39
thumper2 minutes, booking a shuttle for tomorrow22:40
thumpermenn0: standup hangout?22:43
menn0thumper: see you there22:43
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: see calendar | Open critical bugs: 1411024
sinzuithumper, wallyworld_ can you get someone to look into the windows regression reported in bug 141102423:35
mupBug #1411024: Win client/agent cannot bug built because of backup deps <ci> <regression> <windows> <juju-core:Triaged> <https://launchpad.net/bugs/1411024>23:35
davecheneythumper: is there an agenda for our feb sprint ?23:35
davecheneymenn0: so what i'm hearing is "no, don't install the latest kernel update if you want wifi to work"23:46
perrito666sinzui: I am the culprit, Ill fix it23:50

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