/srv/irclogs.ubuntu.com/2014/06/18/#juju-dev.txt

bodie_would be great if I could get a quick LGTM so I can get this dep update in00:23
bodie_https://github.com/juju/charm/pull/500:23
bodie_nvm, think I'm covered00:23
jcw4I would appreciate a quick review on https://github.com/juju/names/pull/8 ... it's only documentation and variable name changes to clarify intent00:25
jcw4diffstat +14 -1400:26
bodie_just stepping away to eat, I'll get you after if nobody else has00:30
jcw4bodie_: thanks00:30
rick_h_thumper: will check back with you.00:35
jcw4wallyworld: tx00:36
wallyworldnp00:36
waiganithumper: you about?01:08
jcw4wallyworld; new pull request https://github.com/juju/juju/pull/116  (diffstat +56/-43)01:12
jcw4I'm afraid I don't know the irc nick for Horacio?01:12
wallyworldjcw4: jut finishing another review, will look real soon now01:12
wallyworldjcw4: it's perrito666 but he's likely asleep now01:12
jcw4thanks wallyworld01:13
jcw4perrito666: Sorry didn't know you were he :)01:13
* jcw4 steps away for a while01:15
sinzuithumper, I want to do that in 2 days. Juju HA/backup-reatore is broken. If I must release, I will take a revision from last week. This what we had to do for 1.19.3 as well01:21
thumperwaigani: ya01:27
thumpersinzui: ack01:28
thumperrick_h_: hey, back now01:28
sinzuiperrito666, I not really. I see a few of these cases, but they resolve themselve in a 2nd run http://juju-ci.vapour.ws:8080/job/aws-deploy-precise-amd64/1323/console01:29
waiganithumper: in the factory tests e.g. TestMakeUserAny, if I add c.Assert(saved, jc.DeepEquals, user), it fails01:30
waiganithumper: ... mismatch at (*(*).doc.DateCreated.loc).name: unequal; obtained "Local"; expected "UTC"01:30
waiganithumper: if I call user.DateCreated().Location().String() - it returns "UTC", even when in the doc the loc name is "Local"01:31
wallyworldsinzui: there's some critical stuff landed this week which we can't ship 1.20 without, so if we do release 1.19.4 with a rev from last week, we'll need to do a 1.19.5 as well01:31
thumperwaigani: push up your latest, and I'll grab it and look here01:32
sinzuiperrito666, Merge pull request #79 from perrito666/translate_backup_to_go is the last good rev for backup-reatore. A lot of branches landed while joyent and ha stalled ci for 21 hours01:32
jcw4wallyworld: you're a machine... thanks :)  I'll add those comments and split that test01:32
rick_h_thumper: hey, let me know when you get a sec01:32
wallyworldawesome, thank you01:32
sinzuiperrito666, commit ba83d11 is the last good commit for backup-restore01:33
thumperrick_h_: I'm just munching right now, let me finish eating and help waigani01:33
rick_h_thumper: rgr01:33
sinzuiwallyworld, I think that is a given, juju has not proven itself to be stable for user01:33
wallyworldsinzui: i've not got to the joyent root cause of suckiness yet. how is hp looking?01:34
sinzuiin a word, *fucked*01:34
waiganithumper: I don't have anything to push. Just add this test to testing/factory/factory_test.go and you'll see the problem: http://pastebin.ubuntu.com/7661265/01:34
thumperok, let me look01:35
wallyworldsinzui: but we think it's because of cloud resourcing issues rather than juju per se right?01:35
sinzuiwallyworld, I region-b doesn't have writable provider storage. The test failed, This is the error I always see with HP http://juju-ci.vapour.ws:8080/job/hp-upgrade-precise-amd64/1349/console01:35
wallyworldaxw: morning. any chance of you looking at bug 1329477 today?01:36
_mup_Bug #1329477: Destroying a juju machine with the manual provider, does not completely shutdown any services installed on that machine <destroy-machine> <hs-arm64> <manual-provider> <juju-core:Triaged> <https://launchpad.net/bugs/1329477>01:36
sinzuiwallyworld, since that error is with 1.18.4. I know the problem is Hp01:36
axwwallyworld: yep, sure. just fixing up ec2 again, will take a look after01:36
wallyworldaxw: ta01:36
wallyworldsinzui: that may be, still makes it horrible to know if juju is good or not01:36
sinzuiwallyworld, the functional tests that failed do have working stable and devel jujus. The only change I made to the functional tests was to extend the timeout01:37
waiganithumper: the test name is out of date - I started with testing s.Factory.MakeAnyUser(), but the root, it seems, is in s.State,AddUser which is storing DateCreated with a local location01:38
wallyworldsinzui: you talking about the "functional-*" jobs?01:38
sinzuiyes01:38
wallyworldso they're all red right now except for one01:39
wallyworldi guess that's with the smaller timeout01:39
waiganithumper: do you want to pair?01:39
thumperwaigani: actually, what is your problem?01:40
thumperyeah01:40
thumperhangout01:40
thumperwaigani: start one01:40
davecheneyomg, state has it's own version of names.ParseTag01:41
davecheney        for _, name := range bad {01:41
davecheney                c.Logf(name)01:41
davecheney                coll, id, err := state.ParseTag(s.State, name)01:41
davecheney                c.Check(coll, gc.Equals, "")01:41
davecheney                c.Check(id, gc.Equals, "")01:41
davecheney                c.Assert(err, gc.ErrorMatches, `".*" is not a valid( [a-z]+)? tag`)01:41
davecheney        }01:41
davecheneywhich has IDENTICAL FUNCTIONALITY01:41
waiganithumper: https://plus.google.com/hangouts/_/gwtpvhcmdtc52fcnhi4c2bmglya?hl=en01:41
thumperdavecheney: colour me unsurprised01:42
* davecheney is running out of furnature to throw01:42
davecheneythis will be the next victim once I get this PR proposed01:42
davecheneycoll, id, err := state.ParseTag(s.State, m.Tag().String())01:43
davecheneythis function takes a tag, as a string, and parses it into it's kind and its id01:43
davecheneym is a machine01:43
davecheneywhere does m.Tag() get the string it returns from ?01:44
davecheneyby calling NewMachineTag(m.tag)01:44
davecheneywhere m.tag is the string versino of the tag without the prefix01:44
davecheneyso all that nonsense is just to get the value of m.tag01:44
davecheneyand you know what the collection is, because you passed in a machine01:45
davecheneyso clearly it's the machines collection ...01:45
sinzuiwallyworld, http://juju-ci.vapour.ws:8080/job/hp-deploy-precise-amd64/ is a first time pass. My tuning the the env and extra cleanup of HP has had a positive affect.01:53
wallyworld\o/ well done!01:53
sinzuiha ha canonistack passes when I serve streams from other clouds01:56
* sinzui needs to file an rt tomorrow01:56
sinzuiI wrote a script last Friday to delete 10 terabytes of disk files left on Azure.01:59
* davecheney shrieks02:05
thumperrick_h_: around?02:12
rick_h_thumper: hanging in there02:12
thumperrick_h_: wanna hang with me?02:12
rick_h_sounds like a party02:12
rick_h_your link or mine?02:12
thumperhttps://plus.google.com/hangouts/_/gtnotdg6x5r34ae6zuuwuenssia?hl=en02:12
axwwallyworld: can we have an "investigating" section under Doing in leankit?02:17
wallyworldsure, sounds reasonable02:17
wallyworldaxw: done02:19
axwwallyworld: thanks02:19
waiganithumper: okay got it, you needed to return a pointer reference in order to be able to return a nil02:20
jcw4davecheney: yep I stumbled across that today... I thought maybe it was a legacy of when the code was organized differently02:42
davecheneyjcw4: it's on my shit list02:43
jcw4let me know if there's any grunt work you want me to do on that02:45
jcw4davecheney:02:45
davecheneyjcw4: you can review my branch in an hour or so02:47
jcw4davecheney: will do02:47
davecheneybasically i'm starting at state and working outwards02:47
jcw4yes, I have a pending PR that touches some of that too02:47
davecheneyurgh02:48
davecheneyin state02:48
davecheneyor the api we have a thing called params.Entity02:48
davecheneyand an entity has a tag02:48
davecheneywhy _isnt_ it a Tag02:48
davecheney?!?02:48
jcw4You mean the Tag() that returns string :)02:48
davecheneyjcw4: that is also on my shit list02:49
jcw4sweet02:49
bodie_https://github.com/juju/juju/pull/11802:57
bodie_Actions as a Hook in uniter02:57
bodie_pretty simple02:57
jcw4Addressed comments by wallyworld, PTAL https://github.com/juju/juju/pull/11603:29
wallyworldjcw4: will do, thanks. i marked the previous version as LGTM as I trusted you to make the changes. i'll take another look though :-)03:30
jcw4Oh, right... thanks and then I'll $$merge$$ it after you look.03:30
sinzuiI have procs and files left behind from a manual provisioning test. There is no juju or juju-mongodb running, but I cannot provision the machine. What can I delete03:31
sinzuijuju-db.conf03:31
sinzui10.245.67.135 is already provisioned ["juju-db.conf\njujud-machine-0.conf"]03:31
wallyworldaxw: ^^^^^^^^^^^^^^^03:35
wallyworldjcw4: tests look much nicer, thanks for splitting them up03:35
wallyworldsinzui: axw is working on that bug now03:36
jcw4wallyworld: my pleasure tx03:36
axwsinzui: weird, I couldn't repro. do you have steps to?03:56
sinzuiaxw Not really. CI seems to be doing for the ppc manual tests03:57
sinzuihttp://juju-ci.vapour.ws:8080/job/manual-deploy-trusty-ppc64-devel/03:57
sinzuiaxw, I found jujud amd juju-mongod running on that machine and the failure. I deleted /var/lib/juju then killed the procs03:58
* sinzui doesn't know any other way to clean up after a failed provisioning03:59
sinzuiaxw, I have had lots of failed provisioning on these machines because of egress access to download the tools and charms. IS fixed the egress access today03:59
sinzuiaxw, ssh as jenkins@10.245.67.13504:00
axwta04:00
sinzuiaxw export JUJU_HOME=~/cloud-city/04:01
sinzuijuju switch kvm-local-trusty04:01
* sinzui thinks04:01
sinzuioh, axw , I have everything garbled04:02
sinzuijenkins@10.245.67.134 is bootstrapping 10.245.67.135 with the  manual-trusty env04:03
axwok04:03
sinzuiaxw, the staging key will get you in to look at the evidence04:04
axwsinzui: FWIW, the right way to clean up a machine is "sudo killall -SIGABRT jujud"04:06
* sinzui pastes that into notes04:08
davecheneyhttps://github.com/juju/juju/pull/11904:18
davecheneywow04:18
davecheneysorry for the massive changeset04:18
axwsinzui: also, "destroy-environment --force" will not terminate manually provisioned machine agents04:22
axw(apart from the bootstrap one)04:22
sinzuioh, then04:22
sinzuiI will need to add something to cleanup between tests04:22
axwsinzui: manual should always do destroy-environment without --force to be safe04:22
axwotherwise killall04:23
axwyeah, I think that's safest04:23
axwkillall -SIGABRT jujud and then wait until it's gone04:23
jcw4davecheney: my pull request that just went in may need a little work to get the same refactor applied04:25
jcw4davecheney: since my pr already landed it may have to be merged in your pr :-/04:26
jammgz: ping when you're around04:32
=== Ursinha is now known as Ursinha-afk
davecheneyjcw4: no worries05:07
davecheney'tis but a small matter of typing05:07
jcw4davecheney: hehe, but you only have so many keystrokes in your lifetime...05:08
davecheneyjcw4: thanks, thanks for that thought05:09
* davecheney prepares his resignation05:09
jcw4>:-}05:09
davecheneyjcw4: thanks for the review05:42
davecheneywhat TZ are you in ?05:42
jcw4davecheney: US West Coast... UTC -7 right now05:46
davecheneyo/05:46
jcw4\o05:46
jcw4Its a fun timezone, I get to hang out with the cool kids down under and in Europe05:47
davecheney\( ゚◡゚)/05:48
davecheneyi'm not child05:48
davecheneyi just act like one online05:48
jcw4haha05:48
jcw4me either/too05:48
jcw4davecheney: you in NZ / AU ?05:49
davecheneyAU05:49
jcw4cool05:49
davecheneygo, tests, go !05:59
jcw4if you're really compulsive like me you have the console output of the CI on your screen06:01
davecheneysame06:04
davecheneythe job's not done til finished: SUCCESS06:04
davecheneynow to address some of those TODOs06:05
davecheneyi gotta get a faster machine06:15
davecheneythis branch has taken too long because of how long it takes to run/fix/run/fix/run/fix the tests06:15
davecheneyand before anyone mentions the cloud06:17
davecheneythis 2 year old x220 laptop is _faster_ than anything aws has to offer06:17
davecheneyand I have graphs to prove it06:18
=== vladk|offline is now known as vladk
davecheneyhttps://github.com/juju/juju/pull/12006:44
davecheneyone more before i sign off06:44
=== Ursinha-afk is now known as Ursinha
bigjoolsjam1: your email about git diffs has (probably unintentionally) made me laugh a lot07:08
bigjoolsor are you jam2 today...07:09
jam2bigjools: probably jam2 by accident07:09
=== jam2 is now known as jam
jamthere we go07:09
jambigjools: I can certainly appreciate the humor.07:10
bigjoolsjam1: I know this particular horse has been flogged to death already, but that was just hilarious07:11
=== vladk is now known as vladk|offline
voidspacemorning all07:39
voidspacejam: wallyworld: thanks for the reviews guys07:39
jamvoidspace: happy to help07:39
voidspacejam: wallyworld: one point I disagree with07:39
jamhopefully its useful feedabck07:39
voidspacejam: yep, good stuff07:39
voidspaceespecially moving the code out of the ServeHTTP method and restructuring07:40
voidspacediscussion of headers etc07:40
voidspacejam: wallyworld: on moving the asserts into the "mockBackup" function07:40
voidspacejam: wallyworld: I actually really dislike that07:40
voidspacejam: wallyworld: I think it's much cleaner to have that function do the setup work / store the information about how it was called07:41
voidspaceand keep the asserts inside the body of the test method07:41
voidspaceif the issue is storing the parameters on the test suite I can provide another object to store them on and avoid polluting the suite07:42
voidspaceplus, state.Info() seems fine to me as a name (returning a state.Info). state.StateInfo() seems a bit redundant :-)07:43
TheMuemorning07:43
voidspaceI'll add these as comments for further discussion on the PR07:43
TheMuedimitern: happy birthday07:44
jamvoidspace: StateInfo isn't what I'd use, but IIRC ian was asking for MongoConnectionDetails or something significantly more descriptive.07:45
jamvoidspace: I don't think we want to use suite level attributes as they cross contaminate tests07:45
jam(the suite object is shared between all testts, which is how SetUpSuite can maintain its state)07:46
voidspacejam: oh, yuck07:46
jamvoidspace: I'm personally fine with asserts in functions that are defined inside that test07:46
jamvoidspace: arguably the "right" way is to create a struct type, and a channel, call the body, in the body have it push the updated info out the channel, and read in from the channel in the rest of the test07:47
voidspacejam: I prefer the pattern: call the code under test, then assert about how it behaved.07:47
jamthen it is asynchronous safe as well07:47
voidspaceheh07:48
voidspaceit's not asynchronous safe because of the patched module07:49
voidspaceat least in the sense that we can't parallelise the tests when we use PatchValue07:49
jamvoidspace: well once you've done the patching ,you can then call "go Backup()" and there isn't a race.07:49
jambut no07:49
jamwe can't parrallelise 75+% of our tests07:49
voidspaceI could push a struct into a channel, it's slightly unnecessary complexity but I like it conceptually07:50
jamvoidspace: it isn't terrible to just have a var struct if you prefer that to the complexity of a channel07:50
jamso "var data struct {backupName string; mongoPort int; ...}07:50
jamdata.backupName = backupName07:50
voidspaceyep07:51
voidspacethanks, I'll get on those fixes07:51
jamvoidspace: its certainly better than the "data = []" tricks I did in python because of local vs global vs notlocal scoping07:52
jamvoidspace: IIRC nonlocal fit the use case, but wasn't available in the versions of python we were supporting.07:53
dimiternTheMue, thanks! :)08:19
voidspacejam: yeah, nonlocal solves exactly that problem08:25
wallyworldvoidspace: hi, sorry, my car broke down when i was getting my kid from school. had to wait for tow truvk etc, back now. that pattern i suggested is what we use everywhere else. it asserts the values passed into the function are as expected and makes more sense to me08:56
wallyworldmgz: axw ok for standup now if you guys are free08:57
voidspacewallyworld: hey, we get to sprint with you guys in Lexington08:58
wallyworld\o/08:58
voidspacewallyworld: which is cool08:58
wallyworldvery cool08:58
voidspacewallyworld: do we have offices there?08:59
wallyworldyes08:59
wallyworldi'm told lexington is a hole though08:59
voidspaceright, makes sense08:59
voidspaceheh08:59
axwwallyworld: heya. can you give me 5-10 please? wasn't expecting you back, need to get my daughter dinner08:59
voidspaceit's not far from Boston though08:59
wallyworldmiddle of nowhere, nothing to do08:59
wallyworldno gun ranges08:59
axwlol08:59
voidspacewallyworld: the Boston Python user group (biggest user group in the USA) is on Monday08:59
voidspacewallyworld: ned batchelder and crew - it would be good if we can make it08:59
wallyworldaxw: sure, i may be eating myself, but we'll sync up i'm sure09:00
TheMuewhat’s the current status of the lexington sprint?09:00
wallyworldvoidspace: +1 to that09:00
voidspaceTheMue: it's been approved09:00
voidspaceTheMue: it's natefinch's team and wallyworld's team09:01
TheMuevoidspace: ok09:01
TheMuevoidspace: alexisb also asked who else of the other teams will join09:02
voidspaceTheMue: I didn't see anyone else on the sprint list09:03
TheMuevoidspace: ah, so maybe this plan changed09:04
=== vladk|offline is now known as vladk
mgzwallyworld: no one in the standup?09:09
axwmgz: wallyworld is having some dinner, he'll ping in a bit09:12
mgzk09:12
wallyworldmgz: axw: there now09:17
perrito666morning09:18
jamdimitern: thanks for the review. I believe I've responded to all your requests if you want to refresh https://github.com/jameinel/juju/pull/109:33
* menn0 is back for more...09:34
dimiternjam, cheers, i've reviewed it again, still LGTM09:34
jamgreat. I plan on just merging the last of the series, once we've gone through them all.09:35
jamthanks for starting on the next one.09:35
jammenn0: run, run while you still can ! :)09:35
menn0jam: it's ok... I had a lot of distractions today so am catching up now09:36
dimiternjam, next one is lgtm as well09:37
jammenn0:  you don't understand… its not safe for you here… dimiter…. oh my god, dimiter. He's reviewing all the code… he's.. reviewing… *all*… the code…. *sob*09:38
jamthanks dimitern09:38
menn0LOL!09:38
dimiternjam, last one reviewed as well09:54
dimiternfwereade, are you around?09:59
dimiternfwereade, when you can spare some time, i'd really like you to review the networking model doc https://docs.google.com/a/canonical.com/document/d/16SYAlZFc19YPXrB7BRwufZVoeLFpqGzBTAdo4EoQIHg/10:01
jamdimitern: fwereade said earlier that he isn't feeling very well today, so he may be in and out a bit10:02
jamI still need to finish looking at that doc as well.10:03
jamdimitern: I responded to the idea about FacadeVersions.10:03
jammy personal opinion is that a map is not a structure for the API itself.10:03
=== vladk is now known as vladk|offline
dimiternjam, ah, right ok10:04
dimiternjam, why?10:04
jamdimitern: it seems odd to me that the textual byte stream requires that results must be parsed into a dict10:05
jamyes that is what we actually do with it once we've gotten it10:05
jambut it doesn't seem like the stream of data itself is a map10:05
dimiternjam, i'm a bit thick today is seems :/ what's the byte stream textual rep has to do with it? :)10:06
jamdimitern: so the API returns data on the wire, which we then read, right?10:07
dimiternjam, it is essentially a map name-to-versions, right?10:07
=== vladk|offline is now known as vladk
dimiternjam, yep10:07
jamIt seems odd to me that you would require that to be a JSON object type, rather than a list type.10:07
dimiternjam, if it's an actual map, we can do fast lookups with the results directly, no need for helper methods10:07
jamWe do use it as a dict type10:07
jamdimitern: well, the first thing we do is put it into a map for storing, but that is just iterating the result and storing it.10:08
dimiternjam, it's not a dict per se, it's an object10:08
dimiternjam, right, but if that's something we need to do all the time on the client it seems sub-optimal10:09
jamdimitern: well it is being done anyway regardless of whether it is explicit or implicit10:09
dimiternjam, i.e. if the most common operation on these results will be "what versions has the facade named Foo?"10:09
jamdimitern: well, I liked that it was a sorted list, fwiw10:10
jamwhich you can't easily code into a map structure.10:10
dimiternjam, wait a sec :)10:10
jamdimitern: FacadeRegistry.List() returns a sorted list of the versions10:10
dimiternjam, are we talking about the same things here? I mean the FacadeVersions slice, not the Versions slice inside it - the latter will be sorted still if []FacadeVersions becomes FacadeVersionsMap10:11
dimiternjam, the only thing we'll lose with a map is the keys can't be sorted10:12
jamdimitern: it is a sorrted list of names each containing sorted versions.10:12
dimiternjam, so the names being sorted as well is nice, but doesn't contribute much (except for displaying them perhaps, which can be done with sorting), and makes lookups harder10:13
jamand putting that *into* a map is a rather trivial loop which is exactly what is done in line 48 of state/apiserver/state.go where you commented about us sorting the version ints.10:14
wallyworldjam: any chance of a review? https://github.com/juju/charm/pull/6 fixes critical 1.19.4 bug 133091910:14
_mup_Bug #1330919: local charm deployment fails with symlinks <charms> <regression> <juju-core:In Progress by wallyworld> <https://launchpad.net/bugs/1330919>10:14
wallyworldor fwereade10:14
jamwallyworld: fwereade is mostly out sick today, I'll give it a look10:15
wallyworldok, thanks, whenever you are free10:15
jamwallyworld: should we be checking that the target is inside the REPOSITORY ?10:16
jamI'm generally hesitant about just letting symlinks point anywhere10:16
wallyworldjam: hmmm. i could do10:16
wallyworldi guess i never figured it mattered10:16
jamwallyworld: I'm not *positive* about it, since maybe its ok10:16
jambut I'd like us to *think* about it first10:17
jamwallyworld: would we want to just use "filepath.EvalSymlinks" ?10:17
jamhttp://golang.org/pkg/path/filepath/#EvalSymlinks10:17
wallyworldprobably, i'm not very familaiar with those api calls10:18
wallyworldi can tweak it10:18
wallyworldjam: inside the dir.go code, i don't think we even know what REPOSITORY is10:19
wallyworldso i guess any check would have to be external to that10:19
jamwallyworld: sure. as for EvalSymlinks, I just mean we can potentially replace the resolveSymlinkRoot entirely with just rootPath, err := filepath.EvalSymlinks(rootPath)10:21
jamtechnically it resolves any symlink anywhere along the path, but I don't think that is a problem for us.10:22
jamand it means less code we have to write/maintaine10:22
wallyworldjam: yeah, just tried, that, test failed. but i'll make it work10:22
wallyworldjam: also, we seem to have a plethora of these new juju repos. the new lander just does juju/juju. tarmac doesn't handle them either i don't expect10:23
wallyworldlooking at previous pr's, it seems people landed by hand perhaps10:23
jamwallyworld: thats my guess10:24
jamwe *should* have them all under the bot,but people who have been pulling stuff out of Juju haven't been diligent about it10:24
jamat least IMO10:24
wallyworldyep, +1. that was my thought too, just wanted to check10:24
natefinchMOrning all10:24
jamwell, maybe in your opinion as well :)10:25
jammorning natefinch10:25
voidspacenatefinch: morning10:26
dimiternjam, ok, still LGTM though, I'd rather have this landed, we can refactor it later if need be10:31
jamdimitern: can you LGTM the juju/juju pr?10:32
jamhttps://github.com/juju/juju/pull/10010:32
stubwallyworld: (as the bug reporter) I think symlinks should be followed in the repository blindly, but symlinks in the charm should be contained within the charm. It is interesting currently that $JUJU_REPO/precise can be a symlink but $JUJU_REPO/precise/foo cannot (fails per bug report)10:37
wallyworldstub: yeah, that's how i've done the fix10:37
dimiternjam, done10:39
jamdimitern: thanks, I'll go look at the networking doc now10:43
=== vladk is now known as vladk|offline
=== vladk|offline is now known as vladk
dimiternjam, TheMue, standup?10:50
TheMueouch, yes, comming10:51
wallyworldstub: that bug is fix committed; if you run from source you can try it out. be sure to get the latest juju/charm code as well as juju/juju11:18
stubta11:18
mgzwallyworld: it's just on the bundling up side right, so no faffing with uploading alternative tools to test?11:21
vladkdimitern: please, take a look https://github.com/juju/juju/pull/12111:22
wallyworldmgz: yup11:22
wallyworldmgz: i think so11:22
wallyworldor hangon11:22
wallyworldno11:22
wallyworldi think you may need new tools too, not sure11:23
wallyworldi did test and seem to recall i needed to redo the tools11:23
wallyworldcould be wrong11:23
jamyay, it has finally landed !!11:58
jamvladk: while you are waiting for dimitern's review of your work, it would probably be helpful to have you look over his networking document: https://docs.google.com/a/canonical.com/document/d/16SYAlZFc19YPXrB7BRwufZVoeLFpqGzBTAdo4EoQIHg/edit?disco=AAAAAJrgVD8#heading=h.8afzt9469s6q12:28
dimiternvladk, you've got a review, ping me if you have questions please12:30
* perrito666 notices travel agency got something wrong and is trying to send him to london12:32
perrito666jam: you should also look into gitk/gitg which makes git trees navigation a lot less painful12:42
* perrito666 answers mails via irc, brain wires crossed12:42
jamperrito666: it still doesn't handle my diff problem well, as they do the equivalent of "git show"12:42
jamI have tried12:42
jamI've also tried Atlantassian's SourceTree12:42
perrito666jam: mm, I thought they had more features12:43
jamwhich is pretty nice, but doesn't do what I want12:43
jamperrito666: so you *can* select a range, and eventually get what you want, but it is clumsy12:43
jamthe default of just selecting a rev shows you the equivalent of "git show"12:43
perrito666ok, syntax highlight in the comments is nice12:53
mfoorddamn internet connection12:57
perrito666mfoord: again?12:58
mfoordperrito666: still12:58
mfoordperrito666: my line has degraded to 1.6mb downstream12:58
mfoordperrito666: I haven't sorted it yet12:58
mfoordperrito666: got on the case a bit this morning - but of course tech support from my isp is awful12:58
mfoordanyway12:59
* mfoord lunches12:59
wwitzel3natefinch: oops, just looked at the clock13:40
wwitzel3natefinch: hopefully you forgot too ;)13:40
natefinchwwitzel3: yeah, was busy helping with the kids, forgot we had a new meeting this morning13:56
natefinchwwitzel3: we can do it after the standup13:57
ericsnownatefinch, wwitzel3: standup in an hour, right?13:58
wwitzel3ericsnow: correct13:58
natefinchericsnow: yep13:59
bodie_morning all14:04
jcw4morning bodie_14:06
natefinchwwitzel3, ericsnow, voidspace, perrito666: the TOSCA meeting is running over, so we will need to move the standup back about half an hour15:00
perrito666natefinch: ok15:00
tasdomasI'm having a little trouble understanding the relation between state/api, state/apiserver and state/apiserver/client in juju15:22
jcw4tasdomas: me too; I think the doc/api.txt file may help some but I'm a little fuzzy about that myself15:35
voidspaceyay, internet back15:35
voidspacefor now anyway :-/15:35
voidspaceI *really* need a dongle15:35
voidspaceI also need the time to go and buy one15:35
voidspacemaybe tomorrow during the day as I can work late tomorrow15:36
wwitzel3if only there was some way you could just order one online and it would arrive at your home15:36
voidspacewwitzel3: yeah, because telecoms company don't *deliberately* make that shit confusing to buy online15:36
ericsnowwwitzel3, voidspace: :)15:36
wwitzel3voidspace: good point :)15:36
voidspacewwitzel3: plus, if I order it today it will probably arrive just after we've left for France on Saturday morrning15:36
voidspacewwitzel3: I did look online and the contract details available were either "too short to be useful" or "too long to be humanly possible to read"15:37
wwitzel3perrito666, natefinch: standup?15:39
wwitzel3voidspace: I guess you too :P15:39
voidspaceheh, ok15:39
natefinchyep15:45
voidspacejam: wallyworld: I've pushed changes to the backup-download PR15:49
voidspacehttps://github.com/juju/juju/pull/114/files15:49
voidspaceah, now I have internet I see I got an LGTM15:55
voidspacewallyworld: thanks!15:55
jcw4voidspace: internet is such a sweet thing15:55
voidspacejcw4: heh, it certainly is :-)15:55
tasdomaswhere does state/apiserver/client fit into the go stack described in doc/api.txt ?15:57
jcw4fwereade: ^^ (or anyone else with state knowledge since I believe fwereade is under the weather today)16:00
mgztasdomas: it's the api server side for client-oriented api calls16:09
mgzdoc/api.txt is all future-tense - I don;t think it's ever been updated from when the api actually got implemented, so probably isn't as clear as it could be16:10
tasdomasmgz, and state/api is the client-side api end-point?16:10
mgzyup, that's it16:10
tasdomasmgz, I don't see any tests that call the state/apiserver/client calls directly (they seem to all test that via state/api) - am I missing something?16:17
mgztasdomas: the client package there is a little different to all the other apiserver bits, they get tested through the client side only, not at both end16:19
tasdomasmgz, right - that makes things a bit clearer, thanks16:21
tasdomasmgz, a testing-related question, if I can bother you with it16:21
tasdomasmgz, in https://github.com/juju/juju/pull/115 I modify the EnsureAvailability call to make it a bulk API call16:22
perrito666lunch bbl16:23
tasdomasmgz, is there a way to patch the EnvironTag value in the state in state/api ?16:23
tasdomasmgz, I want to add a test that sends an incorrect environment tag, but since it's a private state property, I think it's not patchable16:24
mgztasdomas: can you not do it via state/conn_test.go ? that has some ability to do fiddling under the coversd16:29
mgzdimitern may have better ideas on how you want to check that something is a bulk call, if he's around16:29
tasdomasmgz, thanks - I'll pick it up with dimitern tomorrow then (EOD)16:30
jam1tasdomas: api.Open takes an api.Info object which specifies the EnvironTag to pass16:36
jam1though Open should fail if you pass an invalid one16:37
jam1you're trying to override it after the fact?16:37
jam1tasdomas: if its a state/api test, you could put a helper in state/api/export_test that let you explicitly poke at the internals16:37
* natefinch is finally having breakfast17:02
jcw4natefinch: you on the west coast today?17:02
jcw4;)17:02
natefinchheh nope.  Just busy morning17:02
perrito666man I wish I understood flight reservation sofware encoding17:03
jcw4software encoding?17:04
natefinchThe second best thing about having a sprint nearby is not having to do reservations and all that BS17:06
perrito666jcw4: they use this very old console soft17:08
perrito666like almost serial printer console old17:08
jcw4yeah?17:08
perrito666and each line of information is a fixed width columns set17:08
perrito666so, you get things like this as a result17:09
perrito6661  *LA2422  H  05JUL  COR  LIM   0455  0700   E0/32017:09
perrito666now, I understand most of it :p17:09
perrito666but the * in front of LA is amistery17:09
perrito666the H too17:09
jcw4I think it means you're on a TSA watchlist17:09
perrito666and the ocasional numbers in a column that is not there is also a mistery17:09
jcw4I'm always interested in those codes too... they sometimes give information that isn't published anywhere else17:10
perrito666jcw4: I am mostly interested because I am trying to decipher if I want or not that flight17:11
perrito666jcw4: you can make a tourism operator course, they teach you to use that thing17:11
natefinchcan't you just use kayak.com like everyone else? :)17:12
perrito666everything about tourism is so 80s17:12
jcw4haha17:12
perrito666I use despegar.com17:12
perrito666natefinch: but this is the email sent to me by the tourism guys :) which assume I also did the software course17:12
perrito666same happens to me when I go to a travel agency for vacations, they print me this monospaced font paper and give it to me :p17:13
jcw4perrito666: well, good luck with that.17:14
natefinchperrito666: just look up the flight number online17:16
perrito666natefinch: yup did that, seems normal :p17:17
voidspacenatefinch: I've found out that they're tinkering with the internet connection for the village17:25
voidspacenatefinch: adding "new boxes", so it will be ropey for at least another week17:25
voidspacenatefinch: and then hopefully better17:26
voidspacenatefinch: but I'm away next week *anyway*17:26
voidspacenatefinch: so hopefully all good when I get back17:26
voidspacegood to have an answer anyway17:26
ericsnowvoidspace: yay17:29
ericsnowvoidspace: it wasn't my fault ;)17:29
voidspaceericsnow: hah, I'm sure karmically it's still your fault somehow...17:30
ericsnowvoidspace: no doubt :)17:30
natefinchvoidspace: yeah, nice to know why it's happening, and nice to know it'll be done eventually17:33
voidspaceyep17:34
perrito666voidspace: they are changing the 6eths switch for an 8eths one :p17:34
voidspaceperrito666: I don't know what that means17:36
voidspacebut it sounds good17:36
perrito666voidspace: I was implying that the internet of your whole village was held by a 6port switch :p17:37
voidspaceperrito666: heh, I doubt we even get six...17:37
=== vladk is now known as vladk|offline
perrito666when I moved to my current city (capital of this state) one of the largest providers of dsl had such bad config that we where on a LAN I could fetch things from the shared MyDocuments folders from every other client on my subnet17:38
perrito666sinzui: any luck running in another provider?17:56
sinzuiperrito666, I just got more RAM for HP. I will move the functional-ha-backup-restore to HP and hope for a pass17:58
perrito666sinzui: I am having hell running on ec217:58
sinzuiperrito666, I think trusty is more brittle than precise on ec217:58
sinzuiI moved those tests back to precise17:59
perrito666I get a machine to create the state machine but it blows when trying to create the cs:ubuntu one17:59
voidspaceright, BBQ time!18:01
voidspaceEOD18:01
voidspaceg'night all - see you tomorrow18:01
natefinchnight voidspace18:01
perrito666nite voidspace18:02
voidspaceo/18:02
sinzuiperrito666, CI isabout 2.5 hour from running the failing test with tip. I started a run against hp with the last commit from a few hours http://juju-ci.vapour.ws:8080/job/functional-ha-backup-restore/168/console18:06
perrito666Ill go do some biking to cool off my head then see if I can finally crack this issue18:12
natefinchperrito666: good luck18:13
=== vladk|offline is now known as vladk
natefinchericsnow: just catching up on email... about the CLI for restore... it sounds like the question is basically whether or not you have to juju bootstrap before you can call juju restore.  Is that a correct summary?19:05
natefinchericsnow: or were you thinking something like juju bootstrap, juju upload-backup, juju restore?19:06
ericsnownatefinch: I'm not sure what the use case is for more than one command19:07
ericsnownatefinch: I was talking more about the API client side of things19:07
natefinchericsnow: ahh19:07
natefinchericsnow: it seems like all we really need is an http API called "Restore" that can take a file.  If it can restore, it does.  If it can't it says so.19:08
ericsnownatefinch: that makes sense to me for the immediate term19:09
ericsnownatefinch: and it may be all we need long-term too :)19:09
natefinchericsnow: YAGNI :)19:09
ericsnownatefinch: exactly!19:09
sparkiegeekif I have two units of the same subordinate service "hulk-smashed" onto a single machine, will I get hooks being run concurrently? (e.g. unit/0 hookX and unit/1 hookX being run at the same time)?19:10
sparkiegeekor does juju guarantee that they'll be serialised19:10
natefinchsparkiegeek: juju guarantees nothing if you have hulk smashed19:11
sparkiegeeknatefinch: so two agents = operate independently?19:11
natefinchsparkiegeek: that being said, I'm not sure of the current behavior right now, it's possible they'll be serialized.19:12
ericsnownatefinch: nice :)19:12
sparkiegeeknatefinch: anecdotal evidence suggests they *are* but I'm trying to hunt down a race condition which might be caused if they're not :)19:12
sparkiegeek(1.19.3 FWIW)19:13
natefinchmarcoceppi: do you know if two units of the same subordinate service will have their hooks serialized?  or is it possible they'll get run at the same time?  I don't actually know how hooks are serialized?19:25
natefinchsorry... ^^ if they are hulk smashed on the same machine19:25
marcoceppiwow, hulk smashing the same subordinate on a machine twice, sounds like someone is asking for it19:26
natefinchbasically what I said19:26
marcoceppinatefinch: afaik, it's serialized at the unit level, not the service level, so you could probably have two hooks on a unit running simultaneously19:26
marcoceppiI'd totally chaulk this up to "it's working as designed and you're wrong"19:27
sparkiegeekmarcoceppi: FWIW I was asking what the design/behaviour was, not for a change :P19:31
marcoceppiwell, this is my understanding, I've not confirmed this19:32
marcoceppibut it should jsut follow normal unit event dispatching, there's no special case for juju and events esp wrt hulksmashing19:32
marcoceppiI should also mention IANACD19:33
natefinchhaha19:33
sparkiegeekmarcoceppi: noted :)19:33
sparkiegeekit *seems* like events are serialised19:33
sparkiegeekI was hoping to shortcut lots of testing by asking you guys :)19:34
marcoceppiI'm under the impression they are serialized on a single unit basis and not nessiarily per service. I could be completely wrong though19:35
sparkiegeekmarcoceppi: thanks. That was my assumption too but logs suggest that they are serialised. Ho hum19:42
sinzuinatefinch, We have a ppc64el/gccgo regression https://bugs.launchpad.net/juju-core/+bug/133174419:45
_mup_Bug #1331744: panic: reflect: Call of unexported method ppc64el/gccgo unit tests <ci> <gccgo> <ppc64el> <regression> <juju-core:Triaged> <https://launchpad.net/bugs/1331744>19:45
sinzui^ we may need to wait for wallyworld or Dave to wake up19:45
natefinchsinzui: weird19:50
natefinchsinzui: that is some unfortunately gnarly code19:55
natefinchjam1 or jam2 will likely have a better understanding of it, I think.19:57
jam2natefinch: it is likely soemthing funny with the api versioning stuff, but I'm about to fall asleep. I assigned it to myself, but if wallyworld or someone else wakes up to it first, they are welcome to look at it.20:00
natefinchjam2: ha, yeah, pretty late there.  OK20:01
perrito666sinzui: back, the build failed for a reason I dont understand20:03
sinzuiperrito666, It failed because HA wasn't achieved in 15 minutes or was it 20 minutes20:07
perrito666sinzui:  did you see that it marked 3 machines just when it died?20:09
sinzuiI did20:09
sinzuiperrito666, I was going to let CI just play the test with the current build...20:10
=== lazyPower is now known as lazypower-travel
perrito666something interesting I noticed the other day, I sshd into the machine as it was doing the ha sync and the load was on the skyes20:10
sinzuiperrito666, but there is a gccgo problem with the current build...the arm64 builder took 3 hours.20:11
perrito666man, there is a huge load of bad karma with this issue20:14
sinzuiI am going to reboot the arm64 machine. I had to do that with the ppc64el machine because all the memory and disk was used up20:16
* perrito666 tries to reproduce the test by hand20:16
sinzuior not. The machine says it is healthy now20:17
sinzuiperrito666, I will run the test again...I want to extend the time to get to HA20:17
perrito666give it time, I am curious to know if the test goes trough regardless of the lag of HA, to see if I can finally figure out where is the problem20:18
perrito666I read the commits around the first failures, there is no indication of anything that goes even near restore20:19
=== vladk is now known as vladk|offline
perrito666sinzui: my local test failed, it restored the machine but status reports the old info21:01
sinzui:/21:04
perrito666is, as if the mongo query runs but takes no effect21:04
perrito666but when I go to the shell and do it by hand it works21:05
perrito666mm strange21:05
ericsnowperrito666: perhaps a difference in shell environment?21:07
perrito666yes, that is my current line of thought, mongo's client man page says that there might be differences between what is available to --eval and in the actual shell21:08
perrito666perhaps there was a version change in mongo that affected us21:08
perrito666Ill try something21:08
thumpermorning folks21:25
thumperomg, so many emails...21:28
* thumper needs to get some tweaking on pull request emails.21:28
lifelessthumper: heh, I read that as twerking on pull request emails21:51
waiganimorning thumper21:51
thumperlifeless: ha21:51
thumpermorning waigani21:53
mattywthumper, morning22:00
alexisbmattyw, you must be working the late shift22:23
mattywalexisb, I'm hoping to grab thumper to ask a couple of questions, I'm going to make up for it tomorrow morning :)22:24
thumpermattyw: hey, otp with fwereade22:24
alexisb:)22:24
mattywthumper, no problem, ping when you have 5 minutes22:24
perrito666large threads that include hazmat and fwereade should arrive to my kindle instead of my mailbox :p22:35
fwereadeperrito666, oh, I can get *much* worse if it comes to it ;p22:36
perrito666aghh juju robustness is biting me22:40
perrito666I edit out any possible reference to old apiservers from the machine and it comes back22:40
thumpermattyw: I have 5 minutes22:52
thumperperrito666: hahaha22:53
mattywthumper, ok cool - I'll just type questions then if that's ok?22:53
thumpersure22:53
mattywthumper, the change-password command, at the moment entering an empty password (or just calling juju change-password) will cause a random one to get generated, should I change this to expect the user to input the password, and have a flag for generating a password?22:54
thumpermattyw: hmm...22:54
thumpermattyw: to be honest, not quite sure...22:54
thumpermattyw: I have been spending a lot of time looking at the whole identity vs. user issue22:55
thumpermattyw: and all the stuff we have now is likely to change :-)22:55
mattywthumper, that's fine, change is good22:55
thumpermattyw: we have two main reasons for change password22:55
thumper1) as a user I'd like to change my password to something meaningful to me (or in my lastpass)22:55
thumper2) as an admin, I want to reset another user's password22:56
thumperthe problem is right now, everyone is an admin22:56
thumperas we don't have the permissions in there yet22:56
thumperso, for 1) we need to think "why is the user asking?"22:57
thumperperhaps we should always prompt, but accept empty to mean "please generate one for me"22:57
mattywhaving a prompt means the user's password doesn't appear in the bash history - but then again the password is stored in plain text in the jenv anyway22:57
thumpersure, for now22:58
thumperI think prompting is the correct approach22:58
mattywBut my next question was going to be: At the moment the setpassword call in the apiserver only allows you to change the password for the user you're logged in as22:59
thumperright...22:59
thumperwhich doesn't allow use-case 222:59
mattywand I wonder if that's a good approach or not - I will have to change.... - yeah exactly22:59
mattywchange-password and access-file feel like very similar commands to me22:59
mattywthumper, isn't your standup coming up - shall I join it?23:00
thumperI think... that we should make change-password a bulk call where is specifies a list of users/passwords23:00
thumperand worry about permissions later23:00
thumpermattyw: if you like23:00

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