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

jcastrocjohnston, man, thanks for that00:26
cjohnston:-)00:27
menn0review please: https://github.com/juju/juju/pull/5100:29
menn0really keen to get this one landed00:30
waiganithumper: I'm writing the cmd branch, is there an example of mocking out the server api that you can point me to?01:20
thumperdebug-log mocks out the api01:20
waiganithumper: cheers01:21
thumpermenn0: just one comment on the PR01:22
menn0thumper: thanks. I'll add some comments along those lines.01:24
thumpermenn0: the guts of the problem is that they looked like they weren't needed, and if they are for some reason, there should be a comment explaining why01:25
wallyworldaxw: morning. do you know if any of the recent mongo related session fixes may address bug 1305014?01:26
_mup_Bug #1305014: panic: Session already closed in TestManageEnviron <intermittent-failure> <test-failure> <juju-core:Triaged by rogpeppe> <https://launchpad.net/bugs/1305014>01:26
axwwallyworld: don't think so01:26
menn0thumper: understood01:26
wallyworldok, a01:27
wallyworldta01:27
axwstill seeing them in CI01:27
menn0thumper: if API versioning lands soon then we might be able to avoid these backwards compatibility shenanigans altogether01:28
* thumper nods01:29
davecheneythumper: https://github.com/juju/names/pull/201:36
thumperdavecheney: hmm, weren't we going to squish commits before proposing?01:42
thumperaxw, wallyworld: was there a definitive answer?01:42
thumperalso, can someone tell me how to do it again?01:42
wallyworldthumper: sort of optional, devs call01:42
wallyworldrebase -i01:43
davecheneythumper:  i have no idea01:43
davecheneyis this documented ?01:43
wallyworldiow, i don't think there's necessarily definitive agreement01:43
wallyworldyes, in the contributing doc01:43
axwthumper davecheney: https://github.com/juju/juju/blob/master/CONTRIBUTING.md#proposing01:44
davecheneywhich one do I pick ?01:44
davecheneyseriously01:44
davecheneyi don't care about this rebase stuff01:44
davecheneyi opt to not do it01:44
wallyworldthere's no one correct answer01:45
davecheney % git rebase -i --autosquash master01:45
davecheneySuccessfully rebased and updated refs/heads/103-introduce-tags-type.01:45
davecheneyoh, i said don't do it an it did it anyway01:45
davecheneycest la vie01:45
wallyworldsome people like to rebase stuff out and throw away history, others don't01:45
axwuse "fixup" things like "go fmt"01:45
wallyworldi din't think we could get agreement on the ist01:45
davecheneyi'm in the latter category01:46
wallyworldme too01:46
wallyworldbzr makes it so you do't need to care01:46
bodie_thumper, it started making more sense to me when I realized rebase is actually for replaying your commits on top of another branch (such as master) after pulling latest upstream content01:46
wallyworldgithub's lack of support for pipelines really makes me sad01:46
wallyworldtotally screws up how i work01:46
thumperbodie_: sure, with bzr I just used to merge trunk01:46
thumperthe git way seems to be rebase01:46
wallyworldso now i can't propose more than 1 branch at a time01:47
wallyworldso have all this stuff left pending01:47
bodie_so, when you rebase, if you pass the -i (interactive) flag, it will also allow you to condense your noisy fix commits into a few more meaningful commits, for git log purposes01:47
bodie_as well as replaying them on top of master01:47
wallyworldthumper: git way = throw away history, no thanks :-(01:47
davecheneybodie_: so you have to have a commit, at the bottom of the list01:47
wallyworldone person's noise is another person's history01:47
davecheneywhich has the description that you want ?01:47
davecheneythen you chuck all the others ?01:48
bodie_not necessarily at the bottom, it will just take your commit history that deviates from master out of the way, then apply master's latest changes, and stick your changes at the end01:48
davecheneythat sounds insane01:48
wallyworldyep :-(01:49
wallyworldwelcome to the New World01:49
axwdavecheney: the rebase commands describe what they do. some discard messages, others squash them together, others you can amend01:49
bodie_I think it has to do with the way Git thinks of history chronologically.  that way, your commits appear when you apply them, instead of scattered through a pack of other people's commits01:49
bodie_also, condensed into a meaningful log entry or two01:49
bodie_s/apply/rebased/01:50
davecheneyi don't understand01:50
davecheneyif I want to 'condense' something01:50
davecheneyi'll just take a diff01:50
davecheneymake a new branch01:50
davecheneyapply it and propose01:50
rick_h_menn0: ty for the pull request, landed01:50
davecheneythis whole rebase nonsense sounds like a solution that was looking for a problem01:50
bodie_that's one way01:50
bodie_that would accomplish basically the same thing, I suppose01:50
davecheneythumper: ty01:50
thumpernp01:51
bodie_if you're a visual person, http://git-scm.com/book/en/Git-Branching-Rebasing has some really good diagrams that exlpain it01:51
davecheneybig branch coming on juju/juju01:51
bodie_explain*01:51
rick_h_davecheney: but you can reorder commits, perform work across commits, remove them. imo nice for a lot of things once you get used to it01:51
bodie_^01:51
davecheneyrick_h_: why do I need that01:51
bodie_the --interactive stuff can get interesting01:51
davecheneyreorder commits ?01:51
davecheneychange source code, but not inside an editor ?01:51
rick_h_but I went from bzr -> hg -> git and have been using it outside for a couple of years so maybe I've learned some brain damage :P01:52
davecheneymaybe juggle some chainsaws blindfolded at the same time for extra dexterity points01:52
bodie_http://git-scm.com/figures/18333fig0339-tn.png speaking of juggling chainsaws01:52
davecheneythis all sounds like a list of things you "could" do, but not a list of things that you "should" do01:52
rick_h_davecheney: you're not willing to admit that perhaps the rest of the world might know a little something and the 'different' is biting some devs around here a bit? :P01:52
davecheneyrick_h_: i'm sure it's my closed minded attitude01:53
axwrick_h_: do you have any suggestions for people used to bzr pipelines?01:53
bodie_the thing with Git is, if you just merge over and over, your log history turns into a giant nightmarish sea of mini forks and chronologically meaningless noise01:53
rick_h_not enough haskell in the script for you? :)01:53
davecheneybut I've never come across any reason do any of the things that bodie_ proposed01:53
rick_h_axw: I never got into pipelines. I'd just do branches off branches and use cherry-pick to move commits among the branches of work01:53
axwmk01:54
bodie_I bet if you brought it up with the folks in #git they'd be thrilled to have some cultural challenge01:54
bodie_;)01:54
bodie_it's actually a strangely kind arena01:54
wallyworldrick_h_: that sounds error prone and a pain inthe arse01:54
rick_h_davecheney: oh, the 90% use case for me is just 'feature branch...work work...commit so I don't lose crap...work work...rebase to make it all clean with nicer commit messages, pull request, make tweaks, rebase that clean, and then land01:54
rick_h_davecheney: so reordering commits and such tends to just be when someone keeps a long running branch going and needs a better merge to go down01:55
bodie_yep, that's the usual way.  when done properly and with very clear commit messages, it lends itself to a really great log01:55
wallyworldwith rewritten hisotry :-(01:55
rick_h_yea, have to get past that. I find no value in "lint lint lint"01:56
rick_h_in  1.5yrs of doing launchpad bzr work I only looked at the nested commits one time in a merge with trunk01:56
rick_h_I think that "every little thought the dev had in his head" is supremely over valued01:56
wallyworldthat's the point, bzr handles that for you01:56
rick_h_but I admit that's me01:56
rick_h_wallyworld: right, but to what end? I mean really. bzr came out of the box in the way that no one ever used it.01:57
wallyworldhuh?01:57
wallyworldno one?01:57
rick_h_and then you had to explain crap like lightweight checkouts and pipelines and colo and all that01:57
bodie_speaking of good commit messages -- https://github.com/erlang/otp/wiki/Writing-good-commit-messages01:57
wallyworldrick_h_: so how do you do stuff like propose 2 branches where branch 2 depends on branch 1, you have done branch 1, waiting for review, then want to also put up branch 201:57
rick_h_yes, you had to know all kinds of bzr voodoo to actually have it not suck and spend 30min branching01:57
rick_h_wallyworld: git co featurebranch101:58
wallyworldi feel the same about git voodoo01:58
rick_h_git push origin featurebranch101:58
rick_h_git co -b featurebranch201:58
rick_h_worky worky worky01:58
rick_h_"oh, a change for feature branch 1 is there"01:58
wallyworldrick_h_: sure but how do you propose branch 2 without the diff for branch 1 being included in the pr01:58
rick_h_git co feature branch one; vim file.py; git push origin...; git co branch2; git rebase branch101:58
wallyworldsince github has no pre-req support01:59
rick_h_wallyworld: that's the issue with github reviews. reviewboard supports that01:59
bodie_see also http://git-scm.com/book/ch5-2.html for more ugly merge history diagrams01:59
wallyworldis that what gui uses?01:59
wallyworldshould we switch to review board?01:59
rick_h_wallyworld: no, I'm trying it out, but find it doesn't match up well to the github workflow. So it's a fundamental change I'm not sure I want to go down01:59
axwI think we should switch to *something* eventually, GitHub review is a bit sucky01:59
thumperaxw: I looked at stg stacked git briefly02:00
thumperand discarded it as something I wanted to do02:00
* thumper will work manually for a while02:00
axwah yeah02:00
wallyworldstacked git is for patches02:00
rick_h_https://rbcommons.com/s/jujuui/dashboard/02:00
rick_h_wallyworld: happy to invite in a ccouple of people if you want to test it out02:00
wallyworldrick_h_: so right now, i'm really hamstrubg but how sucky the tooling is compared with bzr + lp02:00
rick_h_paying for it for a month to try it out and see if it's something we want to use02:00
wallyworldhave you tried gerrit?02:00
thumperdavecheney: do we not handle merges to juju/names through the lander?02:00
rick_h_wallyworld: definitely, bzr + lp was built for our workflow and our workflow was built to bzr + lp02:00
axwthumper: only juju/juju atm02:01
axwmore later02:01
thumperaxw: ok, ta02:01
rick_h_wallyworld: but the rest of the world doesn't agree unfortunately. I know hg has some other concepts, but even that is having issues gaining ground02:01
wallyworldrick_h_: well, i wouldn't have thought our workflow of several peieces in place at once was unique02:01
wallyworldi mean, do git people realy only work on one thing at once?02:02
wallyworldsurely not02:02
rick_h_wallyworld: well we're unique in a lot of ways. Others just deal with the tool, or use things like quilt/etc I think.02:02
thumperah fark...02:02
rick_h_wallyworld: most of them aren't doing code reviews and landings and gated lands and all that02:02
* thumper needs to dive deeper02:02
rick_h_wallyworld: they put it up and it lands02:02
wallyworldrick_h_: wtf? so they just land stuff unreviewed and untested?02:02
wallyworldyou have to be kidding02:02
rick_h_wallyworld: why do you think I work here? :)02:03
wallyworldseriously?02:03
rick_h_even big projects don't do a CI run post-review and pre-land like we do.02:03
wallyworldi'm shocked02:03
davecheneyrick_h_: none of atlassian's products handle pre commit CI02:03
* wallyworld is just astonished02:03
rick_h_wallyworld: when I brought it up to travisci they didn't feel it was their ball of wax. No one else I could find doing it.02:03
davecheneyland change, send it to ci02:03
davecheneyadd it to the review queue for someone to ignore02:03
bodie_I don't hate the git review02:03
bodie_but, that may just be me02:03
rick_h_davecheney: yea, we're pretty unique in the overall workflow02:04
rick_h_which is kind of sad once you live in our world for a bit02:04
davecheneythe martini framework does precommit ci with werker02:04
rick_h_bodie_: yea, honestly a lot of it is that you don't know what you don't have until you use something better02:04
axwbodie_: Rietveld had some nice things for long on-going reviews. you could see the difference between two patchsets for example. I miss that02:04
rick_h_but I never got into bzr. I did a happy dance when we got to move to git02:04
wallyworldrick_h_: or worse for me, using something great and being forced to use something crap02:04
bodie_yeah, I enjoyed what I saw of Rietveld02:04
rick_h_maybe it just fits my brain better, I even wrote two bzr articles for python magazine back in the day02:05
rick_h_wallyworld: with cherry pick running two branches dependent on each other isn't that bad tbh02:05
rick_h_<3 cherry pick and bisect02:05
bodie_not familiar w/ bisect02:05
wallyworldrick_h_: sure, but it's way more manual than bzr pipelines and you can't get stff reviewed02:05
rick_h_those two are worth their weight in gold02:05
rick_h_wallyworld: but you can do a pull request with any parent02:06
* rick_h_ wonders if you can git pr from another git pr02:06
wallyworldrick_h_: i did but it doesnt go against juju/juju02:06
rick_h_I think it has to be a real branch though02:06
wallyworldit went against the parent02:06
rick_h_wallyworld: right, but wtf is the point anyway. If branch 1 isn't ok you can't get signoff on branch 202:06
wallyworldrick_h_: sure you can02:07
wallyworldwe did it all the time in lp02:07
rick_h_is it really really an issue that blocks you for a significant amoutn of time.02:07
wallyworldyes :-(02:07
wallyworldcause if it takes a day for branch 1 to get reviewed and landed, i'm blocked on putting up branch 202:07
wallyworldso the reviews are serialised02:07
wallyworldand i have to manage it all locally without nice bzr pipeline support02:08
rick_h_It seems to me they should be. An ok on branch 2 while changes are still made to branch 1 that could effect branch 2 seems scary to me.02:08
rick_h_but yea, your killer feature is a bzr plugin, time to get a git plugin :P02:08
rick_h_or use a diff review tool that can take the diff vs a github pull request02:08
wallyworlddepends right. if branch 1 is api calls used by branch 2, then branch 1 can change and branch 2 doesn't care02:09
wallyworldsadly right now we are stuck with what github offers out of the box02:09
rick_h_how can the api calls not effect the second one?02:09
rick_h_you're assuming there's no bikeshedding around those calls :P02:09
rick_h_wallyworld: right, but your beef is with github not git in this case. So move beyond github.02:10
wallyworldif branch 1 gets a comment saying fix this implementation bit, then branch 2 doesn't care02:10
wallyworldi hate git too for other reasons02:10
rick_h_wallyworld: but as the reviewer on branch 2 I don't want to LGTM until I'm sure branch 1 won't change02:10
rick_h_wallyworld: :)02:10
wallyworldsee the canonical tech thread for comments by others that some u the issues02:10
rick_h_I don't doubt it02:10
wallyworldby why not lgtm branch 2? it is correct as is02:10
wallyworldwe did it all the time in lp02:11
rick_h_wallyworld: because nothing says the branch I reviewed will actually make it.02:11
rick_h_if there is a bikeshed over the api itself, and branch 2 has to change, but I already gave it a LGTM02:11
wallyworldthe author can ask for another review if stuff changes significantly as a result of branch 1 changing02:11
rick_h_wallyworld: yea, I don't say one is better than the other, but that you lose some gain some by the different tools02:11
wallyworldwe have lost significcant velocity02:12
davecheneylucky(~/src/github.com/juju/juju) % git rebase -i --autosquash master02:12
davecheneyCannot 'squash' without a previous commit02:12
davecheneylucky(~/src/github.com/juju/juju) % git rebase -i --autosquash master02:12
davecheneyIt seems that there is already a rebase-merge directory, and02:12
davecheneyI wonder if you are in the middle of another rebase.  If that is the02:12
davecheneycase, please try git rebase (--continue | --abort | --skip)02:12
davecheneyIf that is not the case, please rm -fr "/home/dfc/src/github.com/juju/juju/.git/rebase-merge"02:12
davecheneyand run me again.  I am stopping in case you still have something02:12
davecheneyvaluable there.02:12
davecheneywelk fuck02:12
davecheneyreally hate this02:12
rick_h_git works sans plugin management, fast, and gives me multiple remotes, cherry-pick, bisect (priceless for chasing bugs)02:13
rick_h_davecheney: git rebase --abort is safe02:13
rick_h_then git diff master to see what's up. If master was updated you'll have to rebase it with your feature branch02:14
rick_h_git rebase master && git rebase -i02:14
rick_h_I tend to leave off the autosquash just so I can see what it's doing.02:14
davecheneysorry folks, this is insane02:15
davecheneyif someone wants to teach the bot to squish things go for it02:15
davecheneybut i want no part of this02:15
rick_h_I thought you all weren't going to use rebase?02:15
wallyworldrick_h_: git forces all of these extra mental steps to understand the internals, kinda like outside classes looking into a something implementation. yuk02:16
rick_h_wallyworld: I'll admit I didn't care for git until I read the oreilly book that got into internals and it 'clicked' a bit for me02:16
rick_h_but then bzr never 'clicked' for me so I admit to being strange02:16
wallyworldbut why should anyone have to undertand the internal implementtion details02:16
rick_h_if I build a house of wood I should understand how wood work02:17
wallyworldi don't have to understand how an engine works to drive my car02:17
rick_h_works02:17
rick_h_imo02:17
rick_h_you need to know enough to debug 'does it have gas or is the oil low'02:17
rick_h_so I argue that's not quite right02:17
bodie_it helps to know why you shouldn't drive with your foot on the clutch02:17
wallyworldlooking at some dashlights is not the same as having to understand how a crankshatft works02:18
wallyworldbzr alllowed the former02:18
wallyworldgit forces the latter02:18
wallyworldway too many footguns02:18
rick_h_http://www.reviewboard.org/docs/rbtools/dev/rbt/commands/post/#tracking-branches wallyworld for the reviewboard ability to submit a review that's a diff of another branch02:18
wallyworldta02:18
rick_h_wallyworld: the great thing is that there's the reflog so no matter how well you aim the gun you can get your foot back02:19
bodie_perhaps we should be doing merge --squash on the bot?02:19
bodie_that way it doesn't really matter how the PR's come in.  I don't like it, but it's an option02:19
wallyworldrick_h_: good to know02:19
wallyworldbodie_: but does that throw away history02:19
rick_h_bodie_: the issue is that they often have longer running branches and I'm not sure they're rebasing those feature branches vs merging from trunk so they'll get a lot more conflicts and crappy intermingled commits that are impossible to rebase easily02:19
bodie_wallyworld, yes, but things that throw away history are the subject matter, really02:20
wallyworldrick_h_: so rebase vs merge. which the f*ck do i use. in bzr it just worked without having to worry02:20
rick_h_I thinki roger has had to update from conflicts with trunk trying to land his last 4 branches in a row. Hard to deal with using auto tools02:20
rick_h_wallyworld: rebase will roll back your commits, update the fork point to the current head, and then reapply your commits one at a time, resolving any conflicts02:21
rick_h_wallyworld: but it appears in the history that your first commit wasn't until the after the latest one in the trunk branch02:21
bodie_wallyworld, depends what you're trying to do.  generally speaking, when opening a PR, you want to rebase -i against master to condense your potentially noisy commit log into something more atomic and useful to the master log02:21
rick_h_wallyworld: merge just says "take X and git it into Y and interweaving of commits be damn"02:21
rick_h_wallyworld: then that gets into why you might want to move commits around and reorder them/etc02:21
wallyworldwhereas bzr handed that nicely by keeping your commits off to the side02:22
bodie_(after pulling your latest master from upstream)02:22
rick_h_wallyworld: it's a sign of using merge vs rebase02:22
rick_h_wallyworld: right, git doesn't have that. Never will. That's the one thing you can't have. :)02:22
wallyworldwhich is why i hate it sooo much02:22
rick_h_wallyworld: have to move past that one thing. It's the big blocker I know.02:22
bodie_we-e-e-lll... you could always keep your user branches around, and clone them for rebasing.02:22
wallyworldi guess rebase is the right workflow then for eeping your feature beanch up to date02:22
rick_h_just like I can't have C speeds in python and have to use Go, which means I lose exceptions. Have to get over it.02:22
wallyworldit's more than just that one thing02:23
bodie_sorry, s/user branches/feature dev branches/02:23
rick_h_different tools provide different + and different -02:23
wallyworldthat's just the current topic :-)02:23
davecheneylucky(~/src/github.com/juju/juju) % gb ./...02:23
davecheneystate/apiserver/apiserver.go:16:2: cannot find package "github.com/bmizerany/pat" in any of: /home/dfc/go/src/pkg/github.com/bmizerany/pat (from $GOROOT)02:23
davecheneyumm02:23
davecheneyhow did this dependency creep into the code ?02:23
rick_h_lol02:23
wallyworldnfi02:23
davecheneynot cool02:23
davecheneyhas anyone checked the licence on it ?02:23
rick_h_speaking of features...dep management wtf02:24
wallyworldyou mean in go projects?02:24
bodie_oy, don't get me started02:24
rick_h_wallyworld: yea, every time I try to get my head into go and start trying to use it I hit that and my brain shuts right down02:24
wallyworldrick_h_: if you think i feel strongly about bzr vs git ......02:25
rick_h_wallyworld: anyway, sorry to poke the bear and stir up the angst. waaaay past my EOD and past my bed time.02:25
wallyworldnp, thanks for discussing02:25
rick_h_thanks menn0 again for the patch.02:25
axwwallyworld: there's a good use-case for a rebase in https://github.com/juju/juju/pull/5002:25
wallyworldrick_h_: they'll be another patch coming to improve the initial bot message when a pr is picked up02:25
axwwallyworld: do "git rebase -i" and just delete the lines with the commits you don't want in it02:26
rick_h_wallyworld: coolio, yea it was definitely a MVP and love seeing it improved by others as well.02:26
wallyworldaxw: but i want them all - theyre history02:26
wallyworldrick_h_: we do appreciate having it, thank you :-)02:26
axwwallyworld: eh? you've got a commit in there and a commit that undoes it02:26
rick_h_wallyworld: ugh, but the merge's to update with trunk and fix conflicts should go and be a rebase :P02:26
wallyworldwhy? it's history02:27
bodie_but not necessarily history that someone who wants to understand juju's dev history needs to understand02:27
wallyworldhistory should be read only02:27
rick_h_the two merges of master add no value to anyone at all. If you rebase, the branch appears just like you branched master, did 3 commits, and landed it02:27
bodie_I agree with that in theory, though.  so I'm actually somewhat conflicted about rebase and never used it much before02:27
rick_h_and I don't care that you merged master and fixed conflicts I didn't ever know existed or cared to know02:27
axwyeah, once committed. I see no value. difference of opinion I suppose...02:27
bodie_however, getting familiar with it right now has made me much comfier with the idea02:27
rick_h_seriously, what value is that merge and fixed conflicts in a branch no one else is working on with you?02:28
wallyworldi guess if the general consensus is for rebase then i need to do it02:28
rick_h_if you want to say it's good because you and axw were both working on that branch at the same time, ok maybe...02:28
wallyworldimagine if financial institutions could do that02:29
axwwallyworld: IMO it is only confusing. I only want to see commits that I'm expected to review02:29
wallyworldrewrite audit logs02:29
rick_h_juju core's source is not a financial institution :P02:29
rick_h_you work on him axw :)02:29
bodie_he has a point, rebasing can nuke useful blame data02:29
axwheh :)02:29
wallyworldaxw: yiu review the diff, not the commits?02:29
rick_h_bodie_: any rebasing will lead to a commit. You can always bisect and find a blame point in a single chunk of diff02:30
wallyworldthe reviewer looks at the final diff, the commit are the audit log02:30
axwwallyworld: depending on the size of the review, that can be quite onerous02:30
waiganithumper: I'm blocked on all my branches now. Waiting on final reviews for https://github.com/juju/juju/pull/35 and https://github.com/juju/juju/pull/2202:30
wallyworldwhich is why we keep diffs small02:30
wallyworldand use pipelines02:30
thumperwaigani: ok, will look shortly02:30
wallyworldlarge diffs are very bad, cause if tere's one issue, the whole lot gets blocked02:30
rick_h_wallyworld: +1000 finally we can agree on something :P02:31
wallyworldwith pipelines, the downstream ones can stil get lgtm02:31
wallyworldindependent of the upstream02:31
axwwallyworld: agree on that. can you explain to me why I care about seeing you do something and then revert ithough?02:31
rick_h_plus large diffs means long running branches which means lots of conflicts and wasted time and loss of scope, wasted energy, and lack of potential to parallize work02:31
wallyworldyep02:31
wallyworldso who cares about the commits then02:31
wallyworldjust look at the diff02:31
wallyworldand let the commits be as they may02:31
rick_h_wallyworld: then why do you care if they go anywhere :P02:31
axwpeople may want to cherry pick things02:32
waiganiwallyworld: any plans for a pipeline workflow with git?02:32
axwthey should be independent units of work for that purpose02:32
wallyworldrick_h_: so i can use them later if needed02:32
rick_h_for what? that's what I mean. what use is https://github.com/wallyworld/juju/commit/1a799afdd8133c5d63031df225e7f5f4b63a0218 ?02:32
wallyworldaxw: in lp+bzr, we tended to cherry pick the final revision merged in02:32
axwsure, but we don't have that luxury here02:32
wallyworldwhy not?02:33
wallyworldwe can cherry pick a single merge?02:33
axwwell I suppose you can pick out the merge one02:33
axwyeah ok, you can do that.02:33
wallyworldrick_h_: i may not want to look at that particular one, but it's still hisotry02:33
wallyworldand shows the thought process and evolution of the branch02:34
rick_h_wallyworld: stop moving your argument on me. First commits aren't important, then you might want the commit, then "it's history"02:34
wallyworldrick_h_: they're not important for doing the review per se (necessarily)02:34
wallyworldjust se the diff for that02:34
wallyworlduse02:34
wallyworldbut, they are important for hisotry02:34
rick_h_and git bisect can narrow any bug/issue down to a single commit02:34
rick_h_which can get you the diff that introduced the issue02:35
wallyworldwell, i think of the diff that merged to trunk as that02:35
wallyworldwhich may be composed of several working commits02:35
rick_h_http://robots.thoughtbot.com/git-bisect02:35
rick_h_sure, but if the diff is small, and you keep a couple of the important commits in the history02:35
rick_h_it's not an issue at all02:35
rick_h_after all, you just said we'd agree to keep the diffs small :)02:36
wallyworldthe whole review generally should be small02:36
wallyworld< 800 lines was the lp guidelne02:36
rick_h_+1 we use c400 as the initial guide02:36
wallyworldif i want to bisect something, i'll do it at the granularity of the dev's final commit to trunk02:37
rick_h_over that you need 2 reviews02:37
axwwallyworld: there's actually a tool, "git bisect" that runs a command to find a commit that introduces a bug02:37
axwI don't think you can choose02:38
wallyworldok, well in that case it can find the commit. i don't care if the commit is for a go fmt or whatever02:38
wallyworldit just finds the commit02:38
rick_h_wallyworld: well anyway. Try to let go of what's lost, look forward to what's gained, and don't let things make you so cranky :P02:39
wallyworldrick_h_: sure, i'm still im mourning and trying to transition02:40
wallyworldand discussing these things is healthy cause the new tooling sucks and we do need to fix it or else veloxity wil suffer02:40
rick_h_wallyworld: there are things we can do better, but there's a certain amount of wasted energy in trying to stick too hard to what 'used to work'02:41
wallyworldjust at the moment i'm having trouble figuring out what's gained, apart from "everyone else uses it"02:41
rick_h_http://devopsdays.org/events/2013-telaviv/proposals/Jenkins%20and%20automatic%20multibranch%20GIT%20support/ is interesting02:41
wallyworldrick_h_: we just discussed above gated commits etc etc - that's what 'used to work' and we needed to (and need to) get to the same place02:42
rick_h_wallyworld: definitely, that's something we needed to find a way to do better.02:42
menn0rick_h_: sorry, just saw your messages. Thanks for getting the change in. Do I need to deploy it now or have you done that?02:42
rick_h_wallyworld: but the nested commit history isn't coming from anywhere.02:42
wallyworldand so i would argue the other stuff like pipelines etc falls into the same cathory02:42
rick_h_menn0: I don't have access to your jenkins install so that's up to someone on your end02:42
rick_h_wallyworld: well I said pipelines can be done using a diff review tool02:43
rick_h_wallyworld: that's not a git issue02:43
menn0rick_h_: ok cool02:43
axwmenn0: I think mgz has some changes to push up to trunk too, so check with him02:43
wallyworldrick_h_: there's discagreement on the list about throwing away hisotry, so it's not just me pushing this line :-)02:43
rick_h_wallyworld: definitely, fortunately there's more than one way to do it and it's completely possible to not throw away history02:43
wallyworldrick_h_: yeah, i'm not just talking about git, but the whole toling set up02:43
rick_h_wallyworld: I'll not argue that there's more than one way to do the history stuff02:43
menn0axw: ok np. I'll wait.02:44
wallyworldrick_h_: we need to do this oer a beer :-)02:44
wallyworldover02:44
wallyworldnot irc :-)02:44
rick_h_wallyworld: another +1000 :P in germany see you there02:44
wallyworldlooking forward to it02:44
rick_h_hmm, maybe I'll learn to like beer if I drink german beer02:45
rick_h_it's supposed to be all kinds of awesome right?02:45
* wallyworld dosn't like beer either :-)02:46
wallyworldwe'll discuss over a red02:46
wallyworldrick_h_: so if i want to do a 3rd branch in my pipeline off branch 2, i should "git checkout branch2; git rebase master" first? and then git checkout -b branch3 ?02:47
rick_h_wallyworld: the rebase is just to sync with trunk before you put it up for review.02:48
wallyworldwhat if i want to ensure trunk is all there before i start branch 302:48
rick_h_wallyworld: you can do it whenever, but I just sync my feature branch before review to make sure it's clean before CI takes it and tests it02:48
rick_h_wallyworld: you can do it at any point in time02:48
wallyworldcool, cause i may need stuff in trunk etc02:48
wallyworldor want to avoid conflicts later02:49
rick_h_rgr02:49
wallyworldactually, i think i need git rebase upstream master02:49
wallyworldor origin master02:49
rick_h_I find that it works well to create my feature branch from trunk, work on feature, get it all through and working/test passing. Then catch up with trunk, fix stuff, and then put it up for review02:49
wallyworldor something02:49
rick_h_wallyworld: heh, yea we have a shortcut for that02:49
rick_h_wallyworld: https://github.com/juju/juju-gui/blob/develop/HACKING.rst#syncing-your-feature-branch-with-develop-trunk02:50
wallyworldrick_h_: i can't create my next feature branch from trunk cause it has to come off branch 202:50
rick_h_wallyworld: it uses the sync-juju alias (we use develop as our master)02:50
wallyworldrick_h_: i looked at that but from memory you guys use a develop branch also02:50
rick_h_wallyworld: but you can rebase branch 2 from trunk, then create branch 3 from branch 202:50
wallyworldwe don't do that02:50
rick_h_wallyworld: right, so s/develop/master02:50
wallyworldok, ta02:50
rick_h_master is just sacred in our world. No one touches master but on release day02:50
wallyworldi'm getting there02:50
rick_h_ok, seriously bed time night02:52
wallyworldnight02:53
menn0thumper: updated agent status branch pushed. LGTY?02:59
* thumper looks02:59
thumperum... pushed where?02:59
thumperthe PR looks the same02:59
menn0look again... it seems like the GH web interface took a little while to see the change (the git push from my machine was done)03:01
menn0thumper: ^^03:01
wallyworldaxw: do you know how i make it so that "git push" will magically know to push to "https://github.com/wallyworld/juju/<foo>" without needing to type in the full path?03:10
axwwallyworld: push.default=simple -- see menn0's email from a couple of days ago03:13
axwsorry, =current03:13
wallyworldaxw: ah, i had simple03:13
wallyworldi wanted to use the non deprecated baheviour03:14
wallyworldthere must be a way of doing it with the new behaviour you would think03:14
wallyworldaxw: ah balls, that just pushed to github.com/juju/foo :-)03:16
axwwallyworld: what's deprecated?03:16
wallyworldnot github.com/wallyworld/juju/foo03:16
axwwallyworld: oops.. is your origin not set correctly?03:16
wallyworld[environ-resource-catalogs]ian@wallyworld:~/juju/go/src/github.com/juju/juju$ git remote -v03:17
wallyworldorigin  https://github.com/wallyworld/juju (fetch)03:17
wallyworldorigin  https://github.com/wallyworld/juju (push)03:17
wallyworldupstream        https://github.com/juju/juju.git (fetch)03:17
wallyworldupstream        https://github.com/juju/juju.git (push)03:17
axwhm03:17
wallyworldlooks like it went to upstream not origin03:17
axwgit branch -vv03:17
axwwhat's that say?03:17
wallyworldwhen i didn't have push.default set, it said i think current was deprecated03:18
axwfor the current branch03:18
wallyworld[environ-resource-catalogs]ian@wallyworld:~/juju/go/src/github.com/juju/juju$ git branch -vv03:18
wallyworld* environ-resource-catalogs c2001f6 [upstream/master: ahead 6] Add tests for put/remove races03:18
wallyworld  master                    4e7b047 [origin/master] Merge pull request #38 from axw/remove-instance-dnsname03:18
wallyworld  new-txn-package           1a799af [environ-resource-catalogs: ahead 5, behind 9] Merge trunk and fix conflicts03:18
axwyeah, it's tracking upstream03:18
wallyworldsigh03:18
axwthe bit in []03:18
wallyworldso how did it do that? and how do i fix it?03:19
wallyworldi didn't ask it to i don't thin03:19
wallyworldk03:19
axwdunno how you did that... I htink you just want to "git --unset-upstream"03:19
axwdid you set up branch.autosetupmerge?03:20
axwI think that's what does that03:20
wallyworldyeah, i did set that. i unset upstream and set it to the right thing and it seems happier03:23
waiganithumper, menn0 thanks :)03:24
wallyworldaxw: so with branch.autosetupmerge=true, i just did a checkout -b to create a new branch off an upstream one in my pipeline, and branch -vv shows no tracking. i guess it will wait till i've done the first push?03:28
axwwallyworld: you can either set it now, or pass "-u" to "git push" to set it to whatever you push to03:29
axwwallyworld: e.g. git push -u origin03:29
wallyworldok, ta. so that does autosetupmerge do then?03:29
wallyworldwhat03:30
axwlike --remember03:30
axwumm03:30
axwI don't actually know03:30
wallyworldi'd push to origin/foo right?03:30
wallyworldcause origin is my fork03:30
axwyes03:30
davecheney   /away lunch03:33
waiganiwallyworld, axw: I came across git-flow (https://github.com/nvie/gitflow) >9000 stars, don't know anything about it03:42
wallyworldlooks interesting03:43
axwseems master vs. develop isn't necessary if you have gated commits. am I missing something?03:46
axwgated merge I mean03:46
wallyworldaxw: that's what i think too03:48
wallyworldhence why for juju we only have master03:48
wallyworldi can't see the need for develop. just adds complexity for no good reason afaict03:49
thumpermenn0, davecheney: will we need to provide explicit json and bson serialisation of the new tags?03:59
* thumper watched many tests panic03:59
waiganithumper: do we only want to get a list of envs from jenvs and discard environments.yaml?04:03
thumperno04:03
waiganithumper: okay, do we look in both and merge the list?04:05
thumperI think so, but give preference to the jenvs04:05
waiganiwill do04:05
thumperhmm...04:12
* thumper thinks04:12
thumperwe are currently logging the passwords of all the login connections...04:13
thumperthat seems a bit suspicious04:14
thumperI'm at that stage of looking at code where I'm thinking "how could that ever have worked"04:25
* thumper goes to make a coffee04:25
jam1waigani: I think you need to set your membership in the Juju github team to public04:25
waiganijam1: oh04:25
jam1waigani: https://github.com/orgs/juju/members?page=204:26
jam1set your entry to Public04:26
jam1otherwise the Bot won't accept your $$merge$$ requests.04:26
waiganijam1: done. thanks for that04:27
waiganijam1: do I need to recomment?04:27
jam1waigani: I *think* it will see an old request, but give it a sec and see04:27
jam1If it doesn't post "queued" then vote again.04:27
waiganijam1: okay04:29
=== menn0 is now known as menn0-afk
jam1waigani: just looking through the merge queue, I'm pretty sure fwereade is clear that all API calls should talk in terms of Tags04:31
jam1so we don't pass raw Machine Ids, or Unit names, or Users04:32
jam1but "user-admin" and "machine-0" and "unit-mysql-1"04:32
jam1waigani: so for consistency, I'm pretty sure AddServerAPI method UserInfo should take Entities04:32
jam1waigani: you can assert that they are all UserTagKind early on and convert them into a list of usernames04:32
jam1but the *API* should be tags04:33
waiganijam1: ah right. I'll do a follow up branch to fix that.04:34
thumperwaigani: wait, I'd like to talk to fwereade about that04:38
thumperparticularly when we are talking about users and only users04:38
waiganithumper: no problem04:38
waiganithumper: I've got plenty to go on04:38
thumperjam1: I disagree on the premise that we should have ONLY tags for ALL the api04:38
jam1thumper: you can do so, but it should be debated, because it *has* been the API design that William has pushed heavily04:39
thumperI can see where that makes sense for general connections, or actions04:39
thumperbut when you are talking to a user end point, and only dealing with users04:39
thumperit is asinine to convert to and from user tags.04:39
=== vladk|offline is now known as vladk
jam1thumper: I disagree on the asinine part. I can see a point about "I'm in a particular context, I shouldn't need to wrap my requests with more context", but I can also agree with consistency across the API.04:45
jam1And fwereade did specifically ask for Entity here04:45
jam1and so we should have the discussion04:45
thumperI'm happy to have the discussion04:46
thumperbut I hold my asinine position :)04:46
* wallyworld gets some popcorn04:56
lifelessthumper: what flavor :)04:58
lifelessbah04:58
lifelesswallyworld: ^04:58
wallyworldum04:58
wallyworldcaramel04:58
thumpersalted caramel?04:59
thumperjam1: we have a meeting with fwereade in about three hours anyway05:00
thumperI propose claiming some of that time to discuss this05:00
* thumper is beating the tests into submission05:07
thumperwallyworld: you'll like this branch05:07
wallyworldyeah?05:07
thumperwallyworld: or better put, if you don't like it, it will make me very sad05:07
thumperwallyworld: trying to get some object factory concepts into out test suite05:07
wallyworld.me wonders if he should make thinper sad or not05:07
wallyworldyay05:07
thumpertime to go and make dinner05:10
thumperbefore meeting later05:10
=== thumper is now known as thumper-afk
wallyworldaxw: is running rebase again on a branch meant to remember merge resolutions from last time it was run?05:41
axwwallyworld: it's stateless. it just takes out your changes, and replays on top of the thing you're rebasing on. if it needs merging again, you have to do it again05:42
wallyworldsigh05:42
wallyworldso each time i change an upsream branch and rebase, i have to redo all the same conflict resolution :-(05:43
wallyworldthere has to be a better way05:43
axwwallyworld: what are you doing?05:45
axwa pipeline-ish thing?05:45
wallyworldyeah05:45
wallyworldi fixed the defers you mentioned05:45
wallyworldand now i want to pump those changes to the downstream branches05:45
wallyworldso i checkout to branch B05:46
wallyworldand rebase branch A05:46
axwah, you want to pick up the conflict resolution you did in branch A?05:46
wallyworldbut it comes up with all the same merge conflicts i fixed last time when i did a rebase05:46
wallyworldthe conflict resolution in branch b05:46
wallyworldi was in branch B ( the downstream branch) and wanted to pull in latest changes from branch A05:47
wallyworldi did it once and resolved things05:47
wallyworldnow having changed branch A i need to do it again05:47
wallyworldbut it is conflicting in the same places as earlier05:47
axwwallyworld: I think because it replays the commits in order05:48
wallyworldbranchB is the one I can't propose yet because github doesn't support dependent branches05:48
axwso the fixup you did comes later down the line05:48
axwalthough.. hmm no, it should apply to the commit you're processing at the time05:49
axwI dunno. I'm still a novice05:49
wallyworldyeah, i'm even more of a noob05:49
wallyworldi shouldn't be this hard to be productive05:49
wallyworlddo git people just do things serially05:50
axwgithub people05:51
wallyworldwell, git rebase seems broken too05:53
wallyworldi ended up having to cherrypick the rev05:53
wallyworldnot very desirable if there's more than one change to bring forward05:54
axwgotta get my daughter and pick up  a cake, bbl05:55
jam1TheMue: just a reminder that you're On Call Reviewer today.05:55
dimiternmorning all06:15
dimiternfwereade, jam, https://github.com/juju/juju/pull/4906:15
jam1morning dimitern06:16
vladkdimitern: morning, https://github.com/juju/juju/pull/5406:18
jam1dimitern: first comment on your proposal, do we want it as "environs/network" or just "network/" ?06:47
jam1it would be nice to not have stuff like State depend on things in Environment06:48
jam1which I thought is why we moved stuff into the top level 'instance/'06:48
jam1like 'agent/' shouldn't really depend on 'environs' IMO06:48
dimiternjam1, fwereade suggested that originally06:50
dimiternjam1, i also thought of network/ at first06:50
jam1dimitern, sorry was switchnig rooms and my laptop went to sleep. was there a "but" there? last I saw was "i also thought of network/ first"06:57
dimiternjam, sorry, no07:16
dimiternjam, I did make it network/ first, but IIRC fwereade asked me to change it to environ/network/, as it better describes its intent07:17
jam1dimitern: k, I think we should run it by him, since instance was intentionally to pull it out of environs, it seems odd to put it back in07:18
fwereadedimitern, did I? that sounds kinda like I was blithering at the time, sorry07:18
dimiternfwereade, that's what I recall :)07:18
fwereadedimitern, network/ is fine by me, I apologise for telling you to do stupid things :)07:19
dimiternfwereade, but now's the time to move it to network/ instead of environ/network/07:19
dimiternfwereade, sure, np ;)07:19
=== thumper-afk is now known as thumper
* thumper scowls at the code07:55
thumperI have no idea why this test is failing...07:55
voidspacemorning all07:57
=== menn0-afk is now known as menn0
mattywmorning folks, I was thinking of making a start on this: thought/ comments? https://bugs.launchpad.net/juju-core/+bug/121664408:11
_mup_Bug #1216644: allow open-port to expose several ports <addressability> <improvement> <strategy> <usability> <juju-core:Triaged> <https://launchpad.net/bugs/1216644>08:11
axwmattyw: it would be awesome, but it may be a deceptively large task08:14
axwthere's also status that needs fixing08:15
axwcondensing port ranges08:15
axwand possibly security groups changes needed08:15
mattywaxw, I'm wonder if those tasks could be split up (we can allow open-port to operate on ranges) and we change status later - although I guess specifiying a large range would make status unreadable08:17
axwmattyw: we could yeah, but the concern is that if we allow people to do it, then we're recommending something that's going to immediately lead to sucky UX08:18
axwit's sucky either way though I suppose08:18
TheMuejam1: just came online, so starting reviews08:24
TheMuemorning btw08:24
voidspacerebooting10:15
wallyworldfwereade: i have done the work to extract out a separate txn package if you wanted to look at some time. it's used in a downstream branch but i can't propose that yet because github doesn't support dependent branches https://github.com/juju/juju/pull/5010:45
jamdimitern: standup ?10:46
jamfwereade: wallyworld: I was thinking about dependent branches, one option is that you could propose the branch against the one it is dependent upon, and then propose it again against trunk but ask to have it reviewed against the other proposal10:47
jamthat would give you just the increment diff to review10:47
jambut still have something targeted to trunk when we are ready to land10:47
wallyworldjam: i did propose against the unlanded one in my fork, but then people don't get emails etc and it doesn't show inthe juju/juju pull requests10:48
wallyworldi guess i could also propose against juju/juju10:48
jamwallyworld: right,that is why I suggested *also* proposing against master, and in that PR you say "please review the one over here: http://..."10:48
wallyworlda bit clunky. there's got to be a better solution. sure we aren't the only ones wantint to do this10:49
jamwallyworld: in the github world, you rebase it all down to individual commits and they review incremental work that way10:49
jamso commit 1 is the first feature, commit 2 is using that, etc.10:49
dimiternjam, sorry, brt10:49
wallyworldwhat? all in one branch?10:50
jamwallyworld: AIUI, yes10:50
wallyworld:-(10:50
wallyworldthat makes me sad10:50
jamwallyworld: hence why people like to rewrite their commits because that is how they get reviewed10:50
wallyworldthat makes me even sadder10:50
wallyworldlet's just alter history as we see fit10:50
mgzit's the way of the world, wallyworld10:56
wallyworldit may be. i just don't get how people are comfortable changing history and making all that extra work for themselves in having to do it10:56
wallyworldit must kill velocity10:57
natefinchtalking about rebasing I guess?10:58
wallyworldyeah, and that github doesn't support dependent branches10:58
wallyworldso you can't propose more than one branch at a time10:59
wallyworldif they are in a pipeline10:59
wallyworldso you get blocked10:59
wallyworldand rebasing i did today kept tripping over the same merge conflicts again and again10:59
wallyworldso i had to cherry pick stuff i wanted form by upstream branch11:00
wallyworldway too painful comapred with bzr pump :-(11:00
natefinchI think there has to be a way to do it, we just don't know how yet.  And that's the problem.  We have a ton of bzr experts, but no git experts.11:01
natefinchI cab;t believe that we're the only ones who have ever stumbled on this problem and that no one has ever solved it.11:01
dimiternwallyworld, you can propose multiple branches11:01
jamnatefinch: so the github overview is to use the individual commits to review (at least, you can do inline comments on the step-by-step commits)11:01
jamdimitern: you can, but the dependent branch contains the diff of everything11:01
wallyworldsure, but if they depend on each other the diffs are screwed11:01
dimiternwallyworld, and rebasing into your fork just makes two things much better: 1) linear history, 2) much easier conflict resolution11:02
jamdimitern: I strongly question (2)11:02
dimiternwallyworld, because you're rebasing your changes on top of upstream11:02
jamand a linear, but false history is... something :)11:02
dimiternwallyworld, hence, you resolve conflicts as you rebase, rather than the other option - the merge workflow11:02
wallyworlddimitern: in my case i had branch A and branch B in a pipeline. changes to branch A i then switch to branch B and rebased. conflicts. so i fixed them. but then i had to make more changes and rebase again. and the same conflicts ahd to be resolved again11:03
dimiternwallyworld, which *forces* you to resolve conflicts out-of-context (i.e. a huge merge commit combining a lot of changes will need to be resolved *every time* you merge upstream)11:03
natefinchI wonder if the way to do a pipeline is to branch from juju to your branch A, then branch from A to B.  PR A -> juju, PR B -> A11:03
wallyworlddimitern: bzr doesn't have the issue11:04
jamdimitern: a good merge tool uses a new base when you merge upstream11:04
dimiternwallyworld, agreed11:04
jambzr certainly always does, and I definitely expect git to do so as well11:04
perrito666good morning everyone11:04
wallyworldnatefinch: that's what i did. i did a checkout -b when i was in branch A11:04
dimiterngit is not a DVCS, it's a platform to build your own DVCS on top of :)11:04
jamnatefinch: you can certainly do that, but mixing that model with rebasing is ... hard11:05
jamstacked git is another option, though it *clearly* is favoring 1-commit == 1 feature11:05
wallyworldgit i find is fircing me to try and understand all the internals and it's got sooo many footguns11:05
voidspaceperrito666: morning11:06
wallyworldjam: i get the impression stacked git is for producing patches for mailing llists11:06
natefinchso, again, I'm not a git expert.  It sounds like we need to do some research on how to get this workflow done.11:06
jamwallyworld: it is for evolving a series of patches11:06
jamthat can be viewed as a series of git commits11:06
perrito666are we bashing git again?11:06
jamand being able to pop them off, and make a change to an earlier one, and then pop them back on again11:06
dimiternstacked git is great only locally11:06
voidspaceperrito666: once you start a backup with mongodump can you cancel it - or is the only way to kill the running process? (And how would mongo cope with that?)11:07
dimiternbut it doesn't have the nice bzr pump equivalent11:07
wallyworldperrito666: no, trying to figure out how to deal with its limitations compared to bzr11:07
natefinchAlthough, it sounds like maybe we just need to get stuff reviewed faster, if wallyworld can create a whole new CL before someone reviews his old one11:07
voidspaceperrito666: natefinch has defined the backup api with cancellable backups - and I wonder if that is even possible11:07
wallyworldnatefinch: well, i often have 3 or 4 branches on the go in a pipeline11:07
jamnatefinch: it often makes a lot of sense to do things as a series of "introduce the API, use the API" rather than comingle those changes11:08
voidspacenatefinch: ah, hi - I didn't realise you were around11:08
wallyworldand can put up 1 or 2 at once11:08
wallyworldjam: yep exactly11:08
jambut you want to be writing the "use the API" at the same time, because you want to know the API you have is correct11:08
voidspaceright, I often want to split a feature into a series of branches that depend on one another11:08
perrito666voidspace: seems to me that you need to kill the process11:08
natefinchjam: right, so you write the API, propose... someone reviews the API.  If reviewing is a bottleneck, we should fix that11:08
voidspaceperrito666: would mongo be ok with that?11:08
natefinchjam: I guess so.11:08
jamnatefinch: but you develop them concurrently, as I mentioned11:08
wallyworldnatefinch: no, doesn't work. because the api evolves as you write the next branh to use it11:09
perrito666voidspace: absolutely, the new backup way behaves pretty much as a client11:09
voidspacenatefinch: it's not even so much that - sometimes you want a series of branches, and you want to be able to see the diffs of branch two from branch one11:09
voidspacenatefinch: not from branch two against master11:09
wallyworldyep, that too11:09
voidspacenatefinch: I've been looking at your backup api11:09
jamnatefinch: and the reviews from github that I've run across in the past have asked for rebased commits so that they can review each change in isolation, which is what multiple branches and pipeline model is11:09
voidspacenatefinch: you propose an asynchronous api that returns the name of the new backup immediately11:10
voidspacenatefinch: with a cancel call to cancel one  that's in progress11:10
voidspacenatefinch: how do you know whether or not it's finished?11:10
natefinchI think the way you do that in git is.... you write it all in one branch, then, once you're satisfied, you split up the branch into multiple PRs.11:10
voidspaceyuck :-)11:10
wallyworlddouble yuck :-(11:10
wallyworldwhat a lot of extra work11:10
natefinchno way, you don't have to juggle branches that way11:10
voidspacethis is a github problem not a git one though, right?11:10
wallyworlda bit of both i reckon11:11
natefinchwho wants to constantly switch branches?  Just write your code in one branch and THEN decide how it makes sense for it to go in11:11
jamvoidspace: tools are tools, though. and we're doing code review on github. but yes, it is mostly our code review tool that we're trying to figure out how to use.11:11
wallyworldswitching branche sis easy11:11
voidspacethat means you *have* to make monolithic changes that are harder to reason about11:11
natefinchthat's true voidspace11:11
voidspacethat's the use case for dependent branches11:11
jamnatefinch: voidspace: well you can write it all together, and then rebase it into incremental changes11:12
natefinchwallyworld: switching is easy, but syncing them can get annoying11:12
wallyworldnot with bzr11:12
wallyworldit's so easy11:12
jamnew history, but you do have "introduce here, use there" as a sequence11:12
jamwallyworld: fwiw "git checkout branch" is cheaper than even bzr11:12
jamjust missing pipelines' pump to correlate them11:12
wallyworldyep, that's the whole pont11:12
jamwallyworld: going further, trying to rebase with multiple branches is going to just bite you all over11:13
jamso I certainly wouldn't go there11:13
jambut you don't *have* to rebase11:13
wallyworldas i am finding out :-(11:13
wallyworldwell, how else do i pump changes from A into B downstream11:13
wallyworldlike with bzr pump11:13
natefinchwhat's the difference between pump and merge?11:14
wallyworldpump pushes changes all the way down a pipeline11:14
voidspacenatefinch: I've been reading through your proposed backup API11:14
wallyworldfrom A->B->C->D etc11:14
voidspacenatefinch: I have some questions *but*11:14
wallyworldand merges along the way11:14
natefinchwallyworld: and conflicts along the way?11:14
natefinchvoidspace: yep11:14
voidspacenatefinch: perrito666 doesn't think we can start work on the actual code behind the api until he's ready to merge his work11:14
voidspacenatefinch: so we can't really parallelise this yet11:15
jamwallyworld: "git checkout A", "git pull upstream", "git checkout B", "git merge A", "git checkout C", "git merge B"11:15
wallyworldnatefinch: if it finds a conflict is stops, you resolve and repump11:15
jamit is what pump is doing for you11:15
natefinchvoidspace: we can start the work to download the backups11:15
perrito666voidspace: I can merge that now :D11:15
voidspaceah, cool11:15
voidspacenatefinch: I'm not sure an asynchronous backup api makes sense11:15
voidspacenatefinch: how do you tell whether a backup is completed or not11:15
natefinchvoidspace:  the API tells you it's done11:15
voidspacenatefinch: where?11:15
wallyworldjam: i think we need a git pipeline tool :-)11:16
natefinchvoidspace: in list backups there's an in-progress backup listed, if one's not there, it's done11:16
jamwallyworld: if I actually knew git plugins a bit better, I have the feeling it would be pretty easy11:16
voidspacenatefinch: ah, ok11:16
jamthe only trick is figuring out how/where to store what the previous/next pointers are11:16
voidspacenatefinch: by the way, typo11:16
voidspacenatefinch: // NewBackupAPI creates a new server-side FirewallerAPI facade.11:16
wallyworldif i kew git and pluguns better maybe it woud be11:16
perrito666natefinch: voidspace perhaps a quick hangout to sort this?11:16
natefinchsee?  It's not a git problem, it's a "we don't know git well enough" problem11:16
natefinchso stop complaining about the problem and start figuring out a solution11:16
wallyworldjam: and then we just need a better code review tool than github11:17
voidspaceperrito666: natefinch: sure - I'm not around for standup today so it could be good11:17
natefinchvoidspace: haha11:17
wallyworldmaybe gerrit? or reviewboard?11:17
jamwallyworld: or reitveld :)11:17
wallyworldnoooooooo11:17
voidspacelet me grab coffee11:17
perrito666voidspace: natefinch going to the channel11:18
natefinchperrito666, voidspace:  ok, I don't have much time until I have to go help with the kiddos, but I can pop on11:18
perrito666and by chanel I meant our regular hangout11:19
davecheneyare /win1211:33
perrito666meh, I get no video on the tablet for hangouts11:35
* dimitern likes fast reviews, we need more of those :P11:35
perrito666voidspace: natefinch where do you think this thing should live? I have it in cmd/plugin/juju-backup, but only because in the beginning it was a replacement for the current juju-backup11:36
natefinchperrito666: state/backup sounds good to me11:39
natefinchbackup API for general comments: https://github.com/juju/juju/pull/56      jam, fwereade, anyone else?11:40
natefinchgotta run11:40
=== natefinch is now known as natefinch-afk
TheMuenatefinch-afk: will review it next11:46
rogpeppefrankban, dimitern, perrito666, jam: trivial PR to improve isolation a little more: https://github.com/juju/juju/pull/5711:56
jamrogpeppe: lgtm11:57
rogpeppejam: thanks11:57
voidspaceperrito666: I would leave it there for the moment12:01
voidspaceperrito666: it's only when we actually create the backup commands / api that we are able to move it12:01
voidspaceah12:01
voidspaceperrito666: or do as natefinch-afk says :-)12:02
natefinch-afkperrito666, voidspace: no reason to put it once place then move it to another place later, might as well create it in the correct place.  adding a package no one uses yet is perfectly ok.12:07
* natefinch-afk is not really here ;)12:07
=== BradCrittenden is now known as bac
voidspaceheh12:12
jammgz: you around?12:13
mgzjam: yeah12:13
jammgz: just wondering if you realized you're OCR today12:13
mgzI'm also reviewer today, so poke...12:14
jamclearly you do :)12:14
axwfwereade: this may interest you: https://github.com/juju/juju/pull/5512:18
fwereadeaxw, you and wallyworld are distracting me by doing awesome things I want to review ;p12:19
axwheh :)12:19
axwfeel free to ignore it12:19
mgzaxw: can I land your goose branch btw?12:21
wallyworldfwereade: i've replied to some of your comments, thanks for looking :-)12:21
axwmgz: if you're fine with the latest changes, then yes please12:21
mgzaxw: done12:26
axwmgz: thanks!12:26
jamI see an awful lot of red on the CI dashboard :(12:28
dimiternfwereade, ping12:34
fwereadedimitern, pong12:35
dimiternfwereade, re default public/private networks - they shouldn't be shown in status, right?12:35
dimiternfwereade, cause after we create them there will always be at least 2 networks in state right after bootstrap12:35
fwereadedimitern, I think we should show them12:36
fwereadedimitern, they're part of the model and special-casing those ones will be really odd12:36
dimiternfwereade, ok, but for now we don't know what their CIDR is12:36
dimiternfwereade, so we'll show something like: networks:\n    private:\n        provider-id: juju-private\n    public:\n        provider-id: juju-public12:38
fwereadedimitern, assuming there *is* a public network, yeah, and assuming those are really what the provider calls those networks12:39
dimiternfwereade, they are juju-specific, hence the "juju-" prefix of the provider-id12:40
fwereadedimitern, not sure I follow there12:40
dimiternfwereade, hmm.. i think it looks like a bit deeper than I thought12:40
dimiternfwereade, so you're saying we should get them from the provider, not just create them in state?12:41
fwereadedimitern, isn't the provider-id the equivalent of instance-id? ie it's what the provider would call that network even if juju weren't around12:41
fwereadedimitern, yeah12:41
fwereadedimitern, it's what you use to identify what's really going on if you know/care about both levels12:41
fwereadedimitern, I'd be fine calling those networks "juju-private" and "juju-public" though, it might be a good idea to reserve the juju-* namespace for our own use12:42
dimiternfwereade, so then: 1) add Environ.GetDefaultNetworks() - returns the info, 2) change all providers to implement it, 3) call it at bootstrap to save them in state12:42
fwereadedimitern, yeah, think so12:42
dimiternfwereade, should we also mark them as IsDefault: true in state?12:43
fwereadedimitern, sorry, I'm not up to date on that field's meaning12:43
dimiternfwereade, that's some amount of special handling, but it might pay off as we progress with the model12:43
dimiternfwereade, i'm proposing to add that field to the networkDoc12:44
fwereadedimitern, ah ok12:44
dimiternfwereade, and similarly expose it as IsDefault() on *state.Network12:44
fwereadedimitern, I'm not wholeheartedly +1 on that tbh... convince me?12:45
dimiternfwereade, as for the naming12:45
dimiternfwereade, we could always name them "public" and "private" (their juju name)12:45
fwereadedimitern, I guess my worry is clearer in the public case12:46
dimiternfwereade, well, i thinking wrt selecting a default network a relation is on when not specified and things like that - knowing which is the default might help12:46
fwereadedimitern, it only makes sense to have one default public network, I think12:46
dimiternfwereade, and one private at least12:46
dimiternfwereade, to model what we currently do anyway12:47
fwereadedimitern, yeah, I'm not quibbling about the notion of defaults12:47
fwereadedimitern, I'm quibbling about having as IsDefault field12:47
fwereadedimitern, once you have 2 docs with IsDefault:true things become confusing12:48
dimiternfwereade, well, if we stretch it further, we can just have a Environ.AllNetworks() instead an just call it at bootstrap and record whatever the provider knows12:48
fwereadedimitern, that's ideal tbh12:49
dimiternfwereade, that way we'll have the info already in state by the time you want to deploy a service and perform better (earlier) sanity checks on names12:49
fwereadedimitern, although it constrains us a bit12:49
fwereadewe need to give them good names12:49
dimiternfwereade, the provider will give us its id for each, but we can name them anyway we like in juju12:50
fwereadedimitern, we can either accept config at bootstrap time (I want these (provider-id) networks and I want to give them these (juju) names (including mapping a particular network to juju-private etc)12:50
dimiternfwereade, we can call them "public#" and "private#" # increasing from 1, and using the CIDR range to determine if it's public or private12:51
dimiternfwereade, hmm.. yeah, it'll be nice to be able to remap names as part of the bootstrap config12:51
fwereadedimitern, yeah, but I want users to be able to name them12:51
fwereadedimitern, (and pick which one *is* juju-private for that matter)12:52
dimiternfwereade, but if that's not the case, what should we pick as names?12:52
fwereadedimitern, well, the other option is *not* to pick names until the user asks12:52
fwereadedimitern, that's the add-network --existing case12:53
fwereadedimitern, ok, baseline case is that the user specifies nothing12:53
dimiternfwereade, i don't like that so much12:53
fwereadedimitern, we have to guess what the default private/public ones should be, and we name them12:53
dimiternfwereade, we'll already have added the network in state12:53
fwereadedimitern, (assuming there *is* a public one ofc)12:54
dimiternfwereade, for ec2 there is a way to get both the private (subnet(s)) and the public one12:54
fwereadedimitern, can we plausibly store proto-networks? ie not full network docs, but kinda notifications that there *is* a network that will become available for use once it's named?12:55
dimiternfwereade, for local and manual is easy - either no public or it needs to be explicit12:55
fwereadedimitern, then in the super-shiny case the user defines them all in bootstrap config12:55
fwereadedimitern, and has them all available and named from the beginning12:55
dimiternfwereade, i suppose we can have a pendingnetworks collection for these12:56
fwereadedimitern, yeah, something like that12:56
dimiternfwereade, identified only by provider id12:56
dimiternfwereade, and what other info we can get from the provider12:56
fwereadedimitern, if we don't have guidance, we pick a private and (maybe) a public to promote at bootstrap time12:56
fwereadedimitern, sgtm12:56
dimiternfwereade, then, either using bootstrap config (mapping) or the CLI to "add" them as proper networks12:56
fwereadedimitern, yeah, exactly12:57
fwereadedimitern, figuring out how to expose them tastefully might be interesting12:57
rick_h_bodie_: sorry for the delay but commented on the docs. Great stuff! Let me know if any of my questions don't make sense.12:57
fwereadedimitern, the unnamed nets probably shouldn't be part of the default status output12:57
dimiternfwereade, ok, so we need 1) Environ.ListNetworks(), which is called at bootstrap and 2) populates the pending networks (hidden for all intents and purposes except for ->), 3) CLI/API add-network --existing to promote them to real networks12:58
fwereadedimitern, yeah, sgtm12:59
fwereadedimitern, down the road we'll also want to poll the provider for network changes I think12:59
dimiternfwereade, and 4) a way to define the mapping before bootstrapping12:59
fwereadedimitern, yeah12:59
fwereadedimitern, definitely talk to me in detail before starting on (4)12:59
dimiternfwereade, right, we can have even a CLI like update-networks to do it manually at first13:00
fwereadedimitern, I think that'd be just as hard as a worker that polls them tbh13:00
dimiternfwereade, ok, i'll start with proposing the subbed-out ListNetworks and then we should decide which providers should get an implementation13:00
fwereadedimitern, cool13:01
dimiterns/subbed/stubbed13:01
dimiternfwereade, ok, thanks!13:01
sinzuiThe removal of instance dns-name broke CI. We need to rethink how to make the tests work without it13:03
mgzsinzui: what's the breakage exactly?13:04
sinzuimgz get_machine_dns_name helper never gets the info it needs to to verify the local stack is ready to confirm the charms are in a sane state13:05
mgzoh, that's actual breakage13:07
sinzuimgz, the tests need to learn the real host name so that we can ssh in even when juju ssh is busted13:07
mgzandrews pr also removed the dns-name field from status?13:07
mgzdid no one object to that in review?13:07
sinzuimgz, it was intentionally13:07
* mgz goes back and looks13:07
mgzI'd be surprised if we broke status compat intentionally13:10
mgzand it doesn't seem like that...13:10
* sinzui needs to bootstrap to see what the status really look like13:10
sinzuimgz, the specific call is status['machines'][str(machine)]13:10
mgzright, I'm looking at that13:10
sinzuiwe are looking for the bootstrap nodes data13:11
mgzthe line after is .get('dns-name')13:11
mgzwhich should absolutely still work13:11
sinzuithe joyent failure was joyent cloud's fault13:12
* sinzui disables CI13:14
sinzuimgz, I recall we use dns-name because aws wont let us use the ip address.13:15
axwmy change was only removing dead code. there have been some changes to "juju status", but I didn't think they had landed yet13:16
bodie_rick_h_, cool13:16
mgzsinzui: do you have blame on a specific revision?13:16
sinzuimgz Merge pull request #38 from axw/remove-instance-dnsname13:17
mgzaxw: I'll investigate, go to bed :)13:17
sinzuimgz, 3 revs ago 4e7b047113:17
perrito666back13:18
bodie_rick_h_, I actually made a separate PR against the juju/juju/docs docs (as opposed to the web docs)13:18
bodie_https://github.com/juju/juju/pull/4613:18
sinzuionly local lxc is affected. kvm is fine13:18
mgzo_O13:18
mgzno such request "FullStatus" on client - we also broke status compat?13:19
mgzor was this a really old deploy I have here...13:19
bodie_anyone have any thoughts on this test issue?  I'm trying to hit an external URL to get my schema definition: http://paste.ubuntu.com/7623520/13:23
bodie_why would juju testing runs be disallowed external access?13:24
natefinch-afkbodie_: tests that depend on the internet are a bad idea13:24
mgzbodie_: SERIOUSLY?13:24
=== natefinch-afk is now known as natefinch
mgzer, too much caps13:24
natefinchhaha13:24
mgzbut, seriously?13:24
bodie_*wipes sweat off brow*13:25
natefinchman, for a minute, I thought mgz was super mad13:25
mgzyou want your test runs to require an internet connection to pass?13:25
bodie_lol, when you put it that way...13:25
wwitzel3natefinch: haha, me too13:25
mgzsomehow nick-tab-shift-for-colon makes me it capslock way too often13:26
bodie_it's not the test itself that depends on the internet connection -- one of the features of json-schema is to reference schema specs by URL13:27
bodie_so, I'm thinking that's not one of the features we want to make use of ;)13:27
mgzbodie_: ANYWAY, PRACTICAL ... suggestions, override the url for the tests13:27
mgzbut having us hit their schema url at all seems like a bad thing13:28
bodie_practically every json-schema is supposed to have a $schema key with a URL value13:29
alexisbnatefinch, call?13:30
mgzsinzui: this is something local-specific, but what exactly I'm not sure yet13:30
mgzsinzui: can you log the status output perhaps?13:30
mgzbodie_: sure, but why are we resolving the url?13:31
sinzuimgz, I see a rouge machine left behind that could be the cause13:31
mgzthis is like the old w3c's issue with dtd urls13:31
sinzuimgz, the ppc64 machine was victim of another test13:31
sinzuiarm64 failed because the machine is too slow13:31
mgzsinzui: well, that'd be a relief13:32
bodie_mgz, well, the idea was to load the json-schema spec itself, which is json-schema, in order to validate our params schemae13:32
bodie_that would be simple enough to inline, I suppose, it just feels ugly.  but I guess it's not as ugly as requiring external HTTP GET-ability :)13:33
mgzbodie_: http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic/13:33
bodie_Hahaha, that's sort of awesomely bad13:34
bodie_nearly all-caps scream-worthy!13:34
rick_h_bodie_: oops, comments still valid?13:35
bodie_rick_h_, awesome comments, I realized in conversation with jcw4 and mgz yesterday that our docs probably have separate scope -- my PR is against the juju/docs/actions.md file so it's not totally clear how much the scope of our docs overlaps13:39
bodie_the public-facing stuff might need to be less technical and more UX oriented, while the ~/docs stuff might need to be more hacker / architecturally oriented13:39
rick_h_bodie_: definitely13:40
rick_h_bodie_: but I <3 that you've got docs on both ends in mind.13:40
bodie_:D13:40
bodie_I really want to get a hackers section pushed up to the public zone, I'd have gotten involved much sooner if I'd realized it was participation-friendly13:41
bodie_whether that's a high-level overview, or just a link to a highly usable github docs made of readable, interlinked markdown13:41
bodie_rick_h_, I do have a few more specific questions oriented to the frontend team that I'd love some input on, in that PR13:42
bodie_but take your time, it'll be there for a while probably13:42
rick_h_bodie_: sure thing, pointers?13:42
rick_h_bodie_: or just want to do a hangout?13:42
bodie_just specifically item 3, frontend hackers, it's all laid out there13:43
bodie_primary questions are, do you guys want a json-schema getter, and any requests for tech specs or API endpoints for you guys13:43
bodie_anything you need to know13:43
bodie_not even totally sure all that belongs in the backend /docs, really just wanted to get conversation started for those issues13:44
rick_h_bodie_: cool yea. I mean basically we need whatever you give the cli user except in a really nice machine readable form. One thing might be to provide a watcher api to the actions as they will be done async always, like bundles.13:44
bodie_so, something like a polling / push mechanism to open a connection so you guys can make a progress bar or some such?13:45
bodie_it might be pretty complicated to get insight into the status of the hook (i.e. the actual action on the unit) while it's running13:46
bodie_but, perhaps we could set up a hook-env level call so the charm author could add such a thing to his action script13:47
rick_h_bodie_: progress bars are evil :P13:47
bodie_heh13:47
rick_h_bodie_: so it's mainly so that we request an action and get back the UUID, then we request a watcher on that UUID so that when it changes we get that notificiation over the websocket13:47
bodie_most of ours at DO were completely fake... ^_^13:47
bodie_hmm, ok13:47
rick_h_bodie_: and that way we can make sure to get a notification to the user13:48
rick_h_bodie_: that it's completed, here's the status info, or it errored, more info, or it bombed out and crashed13:48
bodie_right13:48
rick_h_but we want it over the websocket vs polling in the GUI13:48
bodie_instead of just polling the status query13:48
rick_h_:(13:48
rick_h_bodie_: polling makes everyone sad when we've got such a nice always on websocket connection sending us messages we can process async13:49
* bodie_ socks that away in his ponderment satchel13:49
rick_h_bodie_: but we only want to worry about it while the connection is alive and someone's at the browser listening, so we ask for a watcher on it13:49
bodie_I'm going to ask for the favor of putting some of that in a brief comment on that doc just so there's something for us to look at and be reminded by13:50
bodie_s/doc/pr/13:50
bodie_however, it's in my awareness13:50
rick_h_bodie_: definitely, I've made a todo to try to spell out in more formal doc form what you've asked for there.13:51
bodie_awesome113:51
bodie_!13:51
rick_h_bodie_: it'll be a bit for me to get down to writing it out, but will try to get it today/tomorrow13:51
bodie_yeah, again this is a longer-term thing I'd like to have people jabbering over, no rush whatsoever13:51
bodie_(ideal goal state, anyway)13:52
rick_h_bodie_: ok, sounds like a plan. Just feel free to get stabby if you don't have the info you need. Don't want to be a blocker on anything13:52
bodie_sure, this is more like a long polling thing13:52
dimiternjam, vladk, fwereade, there it is - https://github.com/juju/juju/pull/58 - Environ.ListNetworks() call, PTAL13:54
bodie_mgz -- regarding that schema validation, I'd like to validate our param schemas against the actual json-schema schema itself.  do you think it would be best just to inline it in the charm/actions file?13:54
bodie_that seems so ugly13:54
rogpeppefrankban, dimitern, mgz: another trivial patch, avoiding the need for charm to import environs/config: https://github.com/juju/juju/pull/5913:55
frankbanrogpeppe: looking13:55
rogpeppefrankban: thanks13:56
dimiternrogpeppe, what's the IsolationSuite?13:56
wwitzel3fwereade: https://github.com/juju/juju/pull/213:56
rogpeppedimitern: it's what everything is moving towards using - it isolates all environment variables amongst other things13:57
rogpeppedimitern: it's the new BaseSuite13:57
rogpeppedimitern: but with a slightly more useful name13:57
dimiternrogpeppe, right, LGTM then13:57
rogpeppes/useful/self-explanatory13:57
rogpeppedimitern: thanks13:57
=== rharper_ is now known as rharper
TheMuejam: made a PR for the planning doc, see https://github.com/juju/juju/pull/60. could you LGTM it so that we can merge it and Nick can add it to j.u.c13:58
dimiternrogpeppe, I'd appreciate if you look at a similarly trivial https://github.com/juju/juju/pull/5813:58
TheMuerogpeppe: will review PR 5913:58
rogpeppedimitern: looking13:58
TheMuerogpeppe: oh, already reviewed13:59
rogpeppejeeze, it sometimes takes sooo long to add a github comment14:01
rogpeppeah, finally!14:01
wwitzel3ericsnow: ping if you're around for standup14:05
rogpeppedimitern: reviewed14:07
dimiternrogpeppe, thanks!14:08
jcw4bodie_, mgz I think the point of mgz's link to the w3 article is that the uri for the schema is intended as an identifier not as a validation lookup... i.e. that uri refers to a static published schema thats not gonna change... just use your local copy for validation.14:12
jcw4I don't know if we literally do store files like this locally, but it may be worth doing so if we *really* want to validate against that schema for every test run14:13
bodie_right, I get that, I'm trying to separately validate the schema against the json-schema spec, which is encoded as json-schema14:14
TheMueanyone else taking a look at PR 60 for me?14:14
bodie_so that we don't accept bad charm schemas that happen to be meaningless but parseable as jsonschemadocuments14:14
bodie_(which are basically just required to be json)14:14
bodie_maybe I'm barking up the wrong tree, though14:15
mgzTheMue: that's big14:15
mgzis [TOC}14:15
mgz*[TOC] at the top actually meant to do anything?14:15
jcw4bodie_: agreed... not sure if 'accepting bad charm schemas' is what we test in the tests though...14:15
bodie_I think [TOC] isn't parsed by github markdown14:16
TheMuemgz: will be replaced by a table of contents by the processor14:16
mgzTheMue: are we also sure we want all this in the tree? natefinch linked something earlier and had to private-ize it after14:16
TheMuemgz: nick has a toolchain to generate HTML for juju.ubuntu.com out of it14:16
bodie_jcw4, I guess the question I'm asking is whether charms can define bad schemas which we then try to use for validation and never work14:17
mgzTheMue: I hit render and github didn't do any magic14:17
TheMuemgz: it is sanitized14:17
mgzk14:17
bodie_I'm not certain this kind of critter exists at all though, since validation is going to be in the state scope14:17
rogpeppebodie_: i wouldn't inline the schema, but i'd suggest putting it into a file and reading it at test time14:17
TheMuemgz: nick uses the python markdown14:17
jcw4rogpeppe: +114:18
rogpeppebodie_: if you wanted, you could even set up a trivial local http server and change urls to point to that14:18
bodie_hmm, that's not a bad idea14:18
rogpeppebodie_: it's an approach we already use in several places14:19
bodie_rogpeppe, well, it's not for the testing, it's actually a validation step at the time the charm loads its Actions schema from YAML14:19
rogpeppebodie_: surely your code should be able to verify that the schema is valid?14:20
bodie_it happened to be breaking the tests because it wanted http access for that method14:20
rogpeppebodie_: or are we allowing charms to reference arbitrary schemas over the internet?14:20
bodie_well, that's part of the JSON-Schema spec14:20
rogpeppebodie_: if so, i might suggest that's perhaps not a great idea14:21
bodie_yeah, hehe.  got that input from mgz as well, and it makes sense14:21
sinzuimgz, local host breaks were NOT juju's fault. each test was broken by something else, and the report of what broke co-incidentally matched test in the commit under test.14:21
rogpeppebodie_: i think it's reasonable to restrict schemas to vanilla schemas that don't require further dereferences14:21
rogpeppebodie_: and... surely... it's possible to generally transform a schema-with-references to a schema-without-references?14:22
bodie_so you're saying that if there's a $schema key in the schema, it should be rejected?14:22
bodie_or simply stripped14:22
sinzuimgz: killing the rogue mongo was hard. I had to delete all the directories it used to get kill to really stop the service14:22
rogpeppebodie_: probably rejected is better14:22
mgzsinzui: yeah, it's really painful14:23
mgzsinzui: and one of the main issues with using a persistent machine for tests14:23
bodie_rogpeppe, I don't think the $schema key is actually loaded, rather used as an identifier for the schema version -- as mgz mentioned, much like the WC3 DTD's referenced in the DOCTYPE14:24
sinzuijoyent is still ill. I don't want it to curse this revision14:24
TheMuemgz: thx for review, will talk to nick how we can handle title and toc better in future14:24
rogpeppebodie_: so schemas can't reference arbitrary other sub-schemas that define parts of the schema?14:25
bodie_well, no, they can...14:25
bodie_the reason I'm hitting the issue is that I'm actually separately attempting to validate the loaded schema against json-schema itself; making references to the inner json-schema keys is not problematic, and I don't think external references are necessarily loaded (my test cases were passing with $schema URL keys defined)14:26
bodie_however, since we haven't gotten to the point where we're actually using the Validate method on any legit JSON objects, it's not totally clear yet since I haven't deeply grokked the spec itself yet14:27
bodie_it's possible that when Validate is run, those URLs try to resolve14:28
bodie_the gojsonschema stuff I wrote doesn't touch that part, it's more to do with properly breaking apart reference URLs into constituent bits14:28
bodie_right now, the reason my code is GETting is because I'm actually attempting to retrieve the remote definition for JSON-Schema itself, which I understand is a bad idea and I should probably store it as a resource in juju if I want to do that14:30
dimiternrogpeppe, https://github.com/juju/juju/pull/58#discussion_r1359638314:30
rogpeppedimitern: hmm14:31
rogpeppedimitern: what code does the public/private detection?14:31
dimiternrogpeppe, network.SelectPublicAddress14:32
dimiternrogpeppe, but it will need improvement14:32
dimiternrogpeppe, it's all part of the "we should automatically do amazing things" approach :)14:33
rogpeppedimitern: SelectPublicAddress doesn't look at the IP address itself14:33
rogpeppedimitern: just having any real IP addresses makes me think "potential isolation issue"14:34
dimiternrogpeppe, it's hidden in a couple of helpers below - internalAddressMatcher etc.14:34
dimiternrogpeppe, this ip range is isolated by design14:35
dimiternrogpeppe, and since it won't reach anything, if we happen to use them inadvertently we'll notice at once14:35
rogpeppedimitern: i bet i can route to those addresses on my machine14:35
bodie_rogpeppe, thoughts on that?  I'd really like to either ditch the validation or make a final call here so I can move on to the watcher/uniter stuff14:36
rogpeppedimitern: BTW when would anything be legimitately using network.NewAddress on the addresses returned from ListNetworks?14:37
dimiternrogpeppe, it won't be used directly14:37
bodie_if rogpeppe / mgz / etc think I need to enforce that JSON-Schema specs not include $schema keys, I can do that, but this is like the 5th thing that's pushed me back into this single file that should have been done ages ago -- I'm perfectly happy to make it flawless but I'm also antsy to get a product built here14:37
dimiternrogpeppe, it will be stored in state as "pending" or "potential" networks, and the user then can say - i want to use this as my private/public default network14:38
rogpeppedimitern: i don't quite get it then14:38
dimiternrogpeppe, or further down the line, we'll use ListNetworks to update what we know about14:39
rogpeppebodie_: so the issue is you need the schema for JSON-Schema in your tests?14:39
pindongahi, anyone around to help troubleshoot some issues with the local provider?14:39
mgzpindonga: have you tried turning it off and on again?14:40
pindongaseveral times (per hour)14:40
mgzpindonga: (more seriously, try dimitern's script for wiping out left over junk, it's helped before)14:40
pindongamgz, do you have a link to it?14:40
rogpeppedimitern: i think that for testing specific logic that automatically derives public/privateness from network CIDR addresses, it's fine to use addresses that tweak that logic. but for the default networks returned by the dummy provider, i don't think so14:41
dimiternpindonga, http://blog.naydenov.net/2014/03/remove-juju-local-environment-cleanly/14:41
dimiternpindonga, you might need to tweak it a bit14:41
pindongadimitern, thx, will take a look14:41
bodie_rogpeppe, negative, I'm attempting to validate the parsed schemas from YAML as useful JSON-Schema, by using gojsonschema's Validate method against the spec doc, which was at the remote URL -- so that's getting triggered by the tests and failing, which makes perfect sense.  I can simply ditch that bit, or keep the doc as a local file; I was under the impression you were saying I should enforce a constraint against references in the schemas themselves14:41
dimiternrogpeppe, so how's 0.1.2.0/8 better than 203.0.113.0/24 ?14:41
cmarsjam, i'm wondering if I should just defer Machine.Destroy in Unit.Destroy, and let the machine's advanceLifecycle checks sort out whether the machine is clean (re: https://github.com/juju/juju/pull/52)14:42
rogpeppedimitern: because it gets immediately rejected by the network stack14:42
rogpeppedimitern: try it14:42
bodie_i.e. oneTrueJsonSchemaSpec.Validate(userDefinedSchema)14:42
cmarsseems a simpler way to go about it, what do you think?14:42
rogpeppedimitern: e.g. try "telnet 203.0.113.3" and "telnet 0.1.2.3"14:42
bodie_where oneTrueJsonSchemaSpec is loaded from a URL now, which is causing the issue; rather, it should be loaded from a local resource, which I get14:43
jam1rogpeppe: of course the downside is that it fails with a different error14:43
rogpeppejam1: it *should* never be actually used14:43
rogpeppejam1: but better that it fails immediately, regardless of the error14:43
rogpeppejam1: rather than timing out (possibly, depending on external network state) after a minute or so14:44
jam1cmars: so… I probably prefer checking before calling Destroy, because otherwise you end up with something like errors/warnings because destroy realizes it can't be destroyed14:45
rogpeppebodie_: i am +1 on avoiding references in the schemas themselves (and i assume that gojsonschema does currently have code in it to go out to fetch stuff from remote URLs)14:45
dimiternrogpeppe, ok, i'm not sure i want to push for it now, i'll change both cidrs to 0.1.2.0/8 and 0.4.3.0/24 for example14:45
rogpeppebodie_: but i don't think it needs to be done now14:46
dimiternrogpeppe, if i need to use actual public ips in tests, will find a workaround14:46
bodie_rogpeppe, I'll know more once we get some Validate() tests written in State14:46
rogpeppedimitern: sgtm. maybe 0.10.0.0 and 0.203.0.0 to be reminiscent of the real things?14:46
bodie_but I definitely see the point of what you're saying14:46
cmarsjam1, ack. i'll try to set it on a reasonable path to success, without duplicating too many checks14:47
rogpeppebodie_: are you still planning to replace gojsonschema?14:47
bodie_I'm just getting ridiculously stir-crazy here in charm/actions.go14:47
rogpeppebodie_: ha ha14:47
jam1cmars: I'm happy to use a common helper that does the checks14:47
bodie_ah14:47
rogpeppedimitern: thanks14:47
bodie_rogpeppe, I went through that some with fwereade -- basically, there were some really hackish workarounds in gojsonreference / gojsonpointer14:48
rogpeppebodie_: it's not nice code :-)14:48
bodie_it was glossing over some test issues and simply faking good results on others14:48
bodie_so, I gutted that stuff and replaced it with much more idiomatic go14:48
rogpeppebodie_: it looks to me as if it's vulnerable to being crashed too14:48
bodie_gojsonschema itself looks pretty solid14:48
bodie_it was its dependencies that were more half-assed14:49
bodie_afaict, anyway14:49
rogpeppebodie_: i was pretty dubious about gojsonschema actually, but i haven't actually tried to implement it myself, so i guess it may be ok really...14:49
bodie_we're now using the rewritten deps from my personal github, I haven't opened a PR against xeipuuv's codebase since he was unresponsive to an Issue on the topic14:50
rogpeppebodie_: if we want to just mutate gojsonschema, i'd be happy to send a review pointing out some obvious ways that i think it could look a bit better14:50
bodie_I'm definitely open to that, right now I'm just getting anxious about actually pushing product on Actions since we're getting pretty overdue on our expected timeline14:51
bodie_but, obviously we also don't want to deliver half-baked code :)14:51
rogpeppebodie_: fair enough14:52
rogpeppebodie_: it should be an easy-enough dependency to change later14:52
bodie_yeah, I think so14:52
* ericsnow starts day 2 of the firehose14:53
rick_h_ericsnow: hope you're thirsty!14:54
bodie_in the meantime, what's the best place for storing resource type files like jsonschema-draft4.json?14:54
bodie_i.e., is there a canon location for resources, or should it just go in the package folder14:55
rogpeppefrankban, dimitern: another ultra-trivial PR: https://github.com/juju/juju/pull/6214:55
dimiternrogpeppe, No description provided?14:56
rogpeppedimitern: isn't the subject line enough?14:56
dimiternrogpeppe, LGTM14:56
rogpeppedimitern: ta!14:56
natefinchsee, dimitern gets it ;)14:56
dimiternrogpeppe, it's nice to know what it is about :)14:56
dimitern(i.e. more than a one-liner)14:57
rogpeppedimitern: sorry, thought it was obvious14:57
rogpeppedimitern: will provide a description too14:57
dimiternthanks!14:57
ericsnownatefinch: were you able to locate that meeting calendar?14:59
ericsnowBTW, does this channel have public logs somewhere?15:00
natefinchI think freenode logs stuff, but I don't know where15:00
natefinchericsnow: crud, no I forgot about the calendar.  alexisb - do you know how to get eric access to the team calendar?15:01
perrito666heh https://github.com/search?l=go&q=if+err+!%3D+nil&type=Code15:03
jcw4ericsnow: http://irclogs.ubuntu.com/15:03
ericsnowjcw4: thanks15:04
natefinchericsnow: would you like to jump on a hangout? might be helpful for questions and stuff15:09
ericsnowsure, if you have a minute15:10
natefinchericsnow: https://plus.google.com/hangouts/_/canonical.com/moonstone?authuser=115:11
pindongamgz, I've run dimitern's cleanup script, and I'm still getting the same error over and over again... when I deploy the charm, I get15:12
pindongaERROR juju runner.go:220 worker: exited "deployer": exec ["start" "--system" "jujud-unit-click-appstore-api-0"]: exit status 1 (start: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory)15:12
pindongaand the unit never finishes starting15:12
mgzpindonga: sounds like a privileges issue15:13
pindongawell, I shouldn't run juju as root, should I ? :)15:14
pindongaand that file is owned by root15:14
pindongamhh, in any case, the juju and lxc processes *are* running as root15:15
mgzpindonga: you are on what release, which what kernel and lxc versions?15:15
pindongatrusty15:15
pindonga3.13.0-29-generic15:15
pindonga1.0.3-0ubuntu315:15
bodie_PR: Charm now validates YAML-loaded Actions schema https://github.com/juju/juju/pull/6315:16
pindongajuju is 1.18.1-trusty-amd6415:16
natefinchericsnow: are you joining?15:16
bodie_imo, you guys should have the channel bot call out fresh PR's15:16
bodie_:)15:16
ericsnownatefinch: I'm on15:16
alexisbnatefinch, let me see if I can add him, jam1/thumper has always added folks15:16
natefinchalexisb: thanks15:16
natefinchericsnow: hmm... me too.  try refreshing?15:17
mgzpindonga: http://askubuntu.com/questions/399382/juju-local-failed-with-var-run-dbus-system-bus-socket-no-such-file-or-director15:17
ericsnownatefinch: hang on a sec15:18
rogpeppefrankban: so, the charm package now has no external dependencies other than inside charm itself (charm/hooks and charm/testing). i'm going to create a new package github.com/juju/charm, and move charm there, then change core to use it.15:19
rogpeppefrankban, fwereade, natefinch, mgz, jam1: does that sound reasonable?15:19
frankbanrogpeppe: sounds good15:19
rogpeppebodie_: this will affect you15:20
bodie_cool15:20
mgzrogpeppe: yurp15:20
fwereaderogpeppe, +1 to that, and thanks for warning bodie_15:20
rogpeppefwereade: thanks15:20
pindongamgz, thx but sorry, dbus was installed :)15:20
rogpeppefwereade: one possibly controversial thing is that it will involve moving the testing charm directory out of core, but i think that should be ok15:21
fwereaderogpeppe, one thought, I think there's a subtle interdependency between charm and names15:21
mgzpindonga: did you try purging and reinstalling it like that guys did?15:21
fwereaderogpeppe, that's fine by me15:21
rogpeppefwereade: names is already external15:21
fwereaderogpeppe, ah, fantastic, I hadn't spotted that15:21
bodie_rogpeppe, I did just open a PR against charm15:21
bodie_it's a pretty simple change...15:21
pindongamgz, purging dbus? no I haven't yet... although this is a clean trusty image... it shouldn't change anything (I will test it anyway)15:21
rogpeppebodie_: cool. i'll merge that in before factoring out everything15:22
rogpeppebodie_: link?15:22
bodie_https://github.com/juju/juju/pull/6315:22
bodie_ergh, it probably still has some crappy comments and mess left15:23
bodie_maybe you should just go ahead and I'll reopen it once you're finished15:23
bodie_there, corrections are in15:25
mgzpindonga: otherwise you'll need to dive into permissions, this seems like it is mostly outside of juju itself15:31
pindongamgz, am re-running everything now after reinstalling dbus... thx15:32
pindongawill keep looking15:33
bodie_rogpeppe, fixes are in15:38
rogpeppebodie_: still reviewing, sorry...15:38
bodie_oops, didn't see some other comments, heh15:38
rogpeppebodie_: (there's no way to send all the comments at once, unfortunately)15:38
bodie_no worries, I can commit as you go I think15:38
rogpeppebodie_: i don't quite see why you want to verify against the schema definition - shouldn't gojsonschema be doing that when it parses it?15:39
bodie_rogpeppe, I don't think it is, I think it's just defining a well-typed map (i.e. JSON) and assuming it's json-schema, but I could be wrong15:41
rogpeppebodie_: well, IMO, it *should* verify. but i can see that you might want an additional verification step for the time being.15:41
rogpeppebodie_: i'm sorry, i was under the impression that you needed the json schema doc for testing purposes only15:42
bodie_there was some talk Monday with Jeremy (JSON-Schema guy) about how / where we're going to do validation and how we need to think about schemas -- I realized most of the sample schemas we were using weren't really proper json-schema at all15:42
rogpeppebodie_: reading the schema from a file isn't really acceptable in prod15:42
bodie_gotcha15:42
rogpeppebodie_: so, i'd suggest just embedding the text15:43
bodie_all righty15:43
rogpeppebodie_: in a file15:43
rogpeppebodie_: sorry,15:43
rogpeppebodie_: in a Go file15:43
rogpeppebodie_: also, you don't want to be parsing it every time15:43
rogpeppebodie_: so perhaps have an init-time statement which parses it15:43
rogpeppebodie_: and stores it in a global var15:44
rogpeppebodie_: alternatively (and perhaps better) use a sync.Once to do that once, the first time it's required15:44
alexisbericsnow, I shared the team calendar with you15:45
rogpeppebodie_: i'll add a comment suggesting that last15:45
ericsnowalexisb: thanks!15:45
bodie_rogpeppe, all righty :)15:45
bodie_rogpeppe, brb, taking the girls down to the car15:46
rogpeppebodie_: k15:47
rogpeppebodie_: i've gone ahead with creating the new repo16:24
rogpeppebodie_: you should find it quite easy to patch your changes onto it16:24
bodie_great, just finishing up with mgz and jcw4 here16:24
rogpeppefrankban, fwereade, bodie_: initial commit of new charm repo: https://github.com/juju/charm/pull/116:24
frankbanrogpeppe: done16:31
frankbanmgz: https://github.com/juju/juju/pull/61 passed CI tests but did not get merged16:32
mgzfrankban: looking16:32
frankbanmgz: thanks16:32
mgzgah, it should have got reported back...16:33
frankbanmgz: so, I guess I need to merge trunk, right?16:34
mgzfrankban: I'm still not sure on that16:34
mgzsometimes it just seems to work the second time16:34
frankbanmgz: should I just try $$merge$$ again?16:35
mgzfrankban: I'll sort it16:35
frankbanmgz: thanks16:35
mgzdoes the lander not return a non-zero exit code whe it gets an exception or summat...16:36
mgzapparently not16:37
mgzret = ... print ret16:37
* mgz fixes16:37
rogpeppefrankban: added testing repo: https://github.com/juju/charm/pull/216:40
rogpeppepwd16:40
frankbanrogpeppe: why not preserving history in this case? not worth the effort?16:43
rogpeppefrankban: yeah16:43
rogpeppefrankban: it's in github.com/juju/juju anyway, if we need it16:43
rogpeppepwd16:43
frankbanrogpeppe: pwd exit status: LGTM16:45
rogpeppefrankban: :-)16:45
mattywfwereade, do you have a moment?16:59
=== natefinch is now known as natefinch-afk
alexisbmattyw, I think it is late for fwereade17:25
alexisbalthough it is late for you too :)17:25
mattywalexisb, I was watching some of the UDS sessions to I totally lost track of time17:25
mattywalexisb, but I don't think I need him at the moment - but I don't have a way of cancelling the ping :)17:26
alexisb:)17:26
alexisbthere should be an unping17:26
jcw4are the UDS sessions recorded and/or publicly available?17:40
mgzjcw4: they are17:41
alexisbjcw4, http://summit.ubuntu.com/uos-1406/all/17:42
jcw4cool, tx alexisb17:42
alexisbyep17:42
TheMuemgz: any idea why my branch doesn’t merge with $$merge$$?17:56
=== BradCrittenden is now known as bac
fwereademattyw, I'm briefly here if yu need me18:19
voidspacehey folks, I gotta EOD18:28
voidspaceg'night all18:28
ericsnowvoidspace: bye :)18:29
mattywfwereade, it can wait till tomorrow, thanks anyway18:35
=== natefinch-afk is now known as natefinch
natefinchericsnow: how goes?19:43
ericsnownatefinch: trying to figure out why your change to CONTRIB. isn't showing up in git log for me19:44
natefinchno idea19:45
natefinchdo you actually have the change locally?19:45
ericsnowno...but it shows up if I git show the hash19:46
ericsnowI'm sure it's a git workflow thing I'm missing19:47
natefinchericsnow: probably.  Did you pull or fetch?19:47
ericsnownatefinch: fetch (and then checkout)19:48
jcw4ericsnow: checkout what?19:49
natefinchI think it's because you have to fetch and merge, not fetch and checkout.   pull is fetch + merge19:49
natefinchif you're not on the same branch as trunk19:50
natefinchmaster... whatever they call it in git19:50
ericsnowthen I'm misunderstanding merge19:50
menn0morning ppl19:51
jcw4menn0: o/19:51
natefinchmorning menn019:51
menn0jcw4: \o19:51
bodie_can someone explain to me what rogpeppe was thinking with the underscore-named var here?  https://github.com/juju/juju/pull/63#discussion_r1360184219:52
bodie_I think I've f'd something up with the way I implemented this, because it's going into an unterminated recursion and exploding19:53
natefinchbodie_: the underscore variable is a special variable that says "throw away this data"19:53
ericsnowyep, it was just the whole merge thing19:53
natefinchbodie_: so in this case, whatever data the function returns, he doesn't care, he just wants to see the error19:54
jcw4in this case it's an underscore prefix, not just underscore19:54
natefinchoh sorry, I was looking at the code not the comment19:54
natefinchno, that's horrible, don't do that19:55
bodie_natefinch, er, it's not the _ pattern matching variable19:55
natefinchbodie_: you mean _jsonMetaSchema19:55
bodie_yeah19:55
bodie_I'll be back in 60 seconds19:55
natefinchI think you need to replace _jsonMetaSchema with metaSchema  and the code makes sense19:57
natefinchI think he changed his variable name halfway through and didn't fix it up at the top19:58
bodie_I see19:59
bodie_natefinch, I'm getting what looks to be a stack explosion and I'm not clear why20:00
natefinchdoes it involve a String() function?20:00
bodie_I don't think so, why?20:01
bodie_I'm really hoping it's not a recursion caused by this schema definition referencing itself20:01
natefinchcommon mistake is to do fmt.Printf("%s", myVal) inside myVal's String() function, which then calls myVal's String() funciton....20:01
natefinchbam, infinite recursion and stack blowupedness20:02
bodie_hmmm20:02
bodie_I don't think so20:03
natefinchit was just a stab in the dark20:03
bodie_natefinch, my best thought is that somehow, the Do is triggering itself20:03
natefinchis it in the code that you just linked to, or somewhere else?20:03
jcw4bodie_: do you have the crash stack?20:03
bodie_http://golang.org/pkg/sync/#Once.Do20:03
bodie_jcw4, I have20:03
bodie_https://github.com/binary132/charm/blob/actions-validation-fixes/json_schema.go20:04
bodie_(jcw4, natefinch)20:04
jcw4bodie_: panic / stack trace?20:07
bodie_http://paste.ubuntu.com/7625313/ fwiw, jcw420:08
jcw4bodie_: it looks to me like you're validating a json doc, which references the json schema at "http://json-schema.org/draft-04/schema#", and your trying to validate that, which references itself20:12
jcw4the stack trace shows recursive calls between parseReference and parseSchema20:13
bodie_I see, yeah20:16
bodie_jcw4, well, I'm not trying to validate the "meta-schema"20:17
bodie_just to load it into a JsonSchemaDocument20:17
=== hatch__ is now known as hatch
bodie_so, it shouldn't even be referencing itself.... referencing the remote document wasn't ideal, but it shouldn't be recursive20:18
bodie_it was working fine as a file:// reference20:19
bodie_sigh20:19
jcw4:)20:25
jcw4or maybe it should be :(20:25
bodie_https://github.com/juju/juju/pull/63#discussion_r13601842 -- I think this is my EOD, so.... take care gentlemen.  I'll see you in the morning jcw420:28
jcw4ttyl bodie_20:28
bodie_correction, https://github.com/juju/charm/pull/320:50
bodie_(rogpeppe)20:50
=== vladk is now known as vladk|offline
=== vladk|offline is now known as vladk
=== vladk is now known as vladk|offline
=== vladk|offline is now known as vladk
=== vladk is now known as vladk|offline
* thumper realises he left irc connected all night21:25
rick_h_thumper: isn't that how it works?21:29
thumperrick_h_: I try to actually disconnect21:29
* thumper needs to pull out of this refactoring dive RSN™21:45
cmarsthumper, i need to restart chrome, just a minute22:01
thumpercmars: ack22:01
perrito666has anyone used archive/tar?22:08
ericsnowperrito666: a bit22:09
perrito666I have implemented a tarGz that suits my current needs but I find out that I do not know how to add folders, I add the header but then in the body part I am not sure what goes22:10
ericsnowperrito666: using the tar command?22:11
perrito666ericsnow: nope, te archive/tar builtin from go22:19
ericsnowperrito666: sorry then22:19
perrito666heh no prob22:19
perrito666how are you going so far?22:20
ericsnowgood22:20
menn0thumper: what's the easiest way I can set up a HA env to mess with? Canonistack, AWS or is it possible on my own machine?22:20
ericsnowworking up a patch to CONTRIBUTING22:20
menn0thumper: I want to experiment with some mongo backup/restore ideas in relation to schema upgrades22:20
ericsnowit's very meta, following the workflow while working on the doc on the workflow :)22:21
perrito666menn0: for me aws has been the easiest22:22
thumpermenn0: otp22:34
menn0menn0: no worries. perrito666 is helping and we can discuss further in the standup.22:35
wallyworldfwereade: not sure if you're still around - wrt TransactionRunner embedded in State struct. The new storage stuff does indeed maintain an instance of a txn.TransactionRunner interface. That though is orthogonal as to whether  State struct embeds the interface or not. It is embedded as of now because previously the methods that have been moved to the TransactionRunner previously were on State itself, so the refactoring is simplified .22:47
wallyworldI can make it an attr though if you prefer22:47
waiganihttp://juju-ci.vapour.ws:8080/job/github-merge-juju/88/console tests pass but my pull request "is not mergeable"?22:53
waiganiI'll merge upstream and see if there are any conflicts22:55
davecheneywaigani: that is 'cos you don't have permission22:56
davecheneyuse $$merge$$ and the bot will do it22:56
davecheneyi think that is the answer22:56
waiganidavecheney: the bot is doing it22:56
davecheneywaigani: so everything is ok ?22:56
waiganidavecheney: no, I mean the bot is TRYING to do it: https://github.com/juju/juju/pull/2222:57
ericsnowI've put up a patch for cleaning up the CONTRIBUTING doc (PR #65, Bug #1328716)23:03
_mup_Bug #1328716: CONTRIBUTING should be cleaned up a bit <juju-core:New for ericsnowcurrently> <https://launchpad.net/bugs/1328716>23:03
davecheneyericsnow: link to PR >23:05
davecheney?23:05
ericsnowdavecheney: https://github.com/juju/juju/pull/6523:05
ericsnowdavecheney: thanks for taking a look :)23:20
ericsnowdoc changes are always such an objective affair <wink>23:21

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