[00:05] <anastasiamac> katco: ping
[00:08] <katco> anastasiamac: howdy
[02:08] <alexisb> wallyworld, you around?
[02:08] <wallyworld> yes
[02:09] <alexisb> do you need to discuss anything with me before next week?
[02:09] <alexisb> if so I have time for a hangout
[02:09] <wallyworld> hmmm
[02:32]  * thumper hmmms...
[02:32]  * thumper is looking at the blocked command stuff
[02:32] <thumper> wallyworld: can we talk today?
[02:32] <wallyworld> sure
[02:32] <thumper> wallyworld: I have a meeting friday avo
[02:33] <wallyworld> ok, i'm free whenever
[02:33] <thumper> now?
[02:34] <thumper> jump in our 1:1 hangout
[02:34] <wallyworld> ok
[02:54] <ericsnow> axw: ping
[02:55] <axw> ericsnow: pong
[02:55] <ericsnow> axw: I've put up a first stab at "unit-get zone": http://reviews.vapour.ws/r/532/
[02:55] <ericsnow> axw: FYI
[02:55] <axw> ericsnow: thanks, I saw. I'm OCR tomorrow - okay to wait till then?
[02:56] <ericsnow> axw: no hurry
[02:57] <ericsnow> axw: just wanted to make sure it got your attention at some point (you were involved in the AZ discussions, right?)
[02:57] <axw> ericsnow: yep, I implemented 99% of it
[02:58] <axw> thanks. on brief perusal it looks good
[02:58] <ericsnow> axw: cool
[03:00] <ericsnow> axw: I was able to make good use of ZonedEnviron.InstanceAvailabilityZoneNames() :)
[03:01]  * ericsnow shuts down for the night
[03:02] <axw> ericsnow: night
[03:13] <thumper> anastasiamac: wallyworld is just being mean...
[03:14] <anastasiamac> thumper: really?...
[03:15] <anastasiamac> wallyworld: u wouldnt ;)
[03:16]  * wallyworld would :-P
[03:16] <anastasiamac> wallyworld: so do i continue with block changes or shall i wait for executive decision?
[03:53] <thumper> wallyworld: anastasiamac: it'll be interesting to see what the help text will look like for block/unblock when we have the supercommands in place, i.e. "juju machine remove", "juju environment destroy" etc
[03:56] <anastasiamac> thumper: wallyworld: juju block destroy|remove|change
[03:56] <anastasiamac> thumper: wallyworld: :P
[03:57]  * wallyworld otp
[03:58] <thumper> anastasiamac: seems fine to me...
[03:58] <anastasiamac> thumper: this can be done before supercommands ;-)
[03:59] <anastasiamac> thumper: shall i?
[03:59] <thumper> anastasiamac: double check with wallyworld, but I'm +1
[03:59] <anastasiamac> thumper: :) thnx
[04:12] <wallyworld> anastasiamac: juju block destroy-environment i think is still what we want
[04:13] <thumper> axw: got a minute?
[04:18] <axw> thumper: just about to eat lunch.. what's up?
[04:18] <thumper> axw: looking at the tests in cmd/juju/addmachine_test.go
[04:19] <thumper> axw: it looks like apiserver/client/client_test.go covers it all
[04:19] <thumper> axw: do you see any reason not to mock out the api all together?
[04:19] <thumper> axw: I'm messing with add and remove machine commands and moving them to a subcommand to test out top level aliases to subcommands (and deprecations)
[04:20] <axw> thumper: I'd like that, but I know some people would like them to remain like that so we have end-to-end integration tests
[04:20] <thumper> axw: fooey
[04:20] <axw> my preference would be to mock there and have integration tests elsewhere
[04:20] <thumper> axw: what I did for the user stuff was this:
[04:20] <thumper> axw: everything in the user subcommand package is mocked out
[04:21] <thumper> args and params tested exhaustively (to make sure we pass them to the api)
[04:21] <thumper> one test in cmd/juju to show it is hooked up end to end
[04:21] <thumper> we don't need to end to end test every path
[04:21] <thumper> just that it is hooked up
[04:21] <thumper> IMO
[04:21] <axw> that SGTM
[04:21] <thumper> coolio
[04:23] <axw> thumper: so we'll have cmd/juju/machine/ ?
[04:23] <thumper> axw: yep
[04:23] <axw> okey dokey
[04:23] <thumper> that's the plan
[04:23] <thumper> I'm using it as the test case for top level aliases
[04:23] <thumper> so 'juju add-machine' works as 'juju machine add'
[04:23] <thumper> with just some helper functions
[05:28] <axw> the calm, soothing sound of my squawking UPS
[05:39] <hatch> ahh that's such a beautiful sound
[05:40] <hatch> mine is a loud beep every 5s - just to let me know at 3-4am that the power has gone out and it needs to keep itself powered for that duration
[05:40] <hatch> such a helpful machine
[05:40] <hatch> :)
[08:35] <TheMue> morning
[08:48] <mattyw> morning everyone
[08:55] <TheMue> mattyw: o/
[09:40] <voidspace> dimitern: ping
[09:41] <voidspace> dimitern: should calling subnet.Destroy() on an already destroyed subnet be a no-op or an error
[09:41] <voidspace> dimitern: looking at service it looks like an error (specifically a wrapped jujutxn.ErrNoOperations)
[09:41] <voidspace> dimitern: so that's what I've done
[09:44] <dimitern> voidspace, hey
[09:44] <voidspace> dimitern: hi
[09:44] <dimitern> voidspace, I think it usually is a no-op
[09:45] <dimitern> voidspace, and where it isn't it should be :)
[09:45] <voidspace> dimitern: ok, no problem
[09:45] <voidspace> dimitern: it's very easy to change...
[09:46] <dimitern> voidspace, ok
[09:49] <voidspace> dimitern: http://reviews.vapour.ws/r/534/
[09:49] <voidspace> dimitern: "first cut", although I spent most of yesterday removing code
[09:50] <dimitern> voidspace, looking
[09:50] <voidspace> dimitern: it now just does the bare minimum for adding, fetching and removing subnets
[09:59] <jam> voidspace: what's the idea for upgrade step for this ?
[09:59] <jam> I guess mongo creates collections on the fly if they don't exist
[09:59] <voidspace> jam: shouldn't be needed
[09:59] <voidspace> jam: I specifically asked dimitern that yesterday
[09:59] <voidspace> jam: and he said created on first use
[10:00] <dimitern> voidspace, jam, yeah - that's how mongo works
[10:00] <jam> dimitern: standup ?
[10:24] <fwereade_> of those online... who is least unfamiliar with the uniter? I need someone who's willing to say "ship-it" (or "that's crap fix it") on http://reviews.vapour.ws/r/527/
[10:25] <fwereade_> TheMue, tasdomas, mattyw: I feel like each of you has half a chance of having touched it recently enough to have something of an opinion? ^^
[10:25] <mattyw> fwereade_, if you want an opinion I'm happy to enough to provide on
[10:26] <TheMue> fwereade_: will take a look too, sure
[10:54] <fwereade_> wallyworld, thoughts on docstrings like "Foo helps satisfy the package.Bar interface"? upside, just one place with "official" docs, less likelihood of drift; downside, you have to look over there to understand what the method's for
[10:57] <wallyworld> fwereade_: i like "Foo helps satisy Bar interface". IDEs have click through so it's trivial to navigate to interface to see real comment
[10:59] <fwereade_> wallyworld, cool, I tend to concur
[10:59] <fwereade_> wallyworld, I got distracted half way (hmm, more like 10%) through my previous docstring pass
[11:01] <wallyworld> there is a lot for sure
[11:02] <wallyworld> jam: you joining us for storage round 2?
[11:22] <jam> wallyworld: yeah, joining now, just had to get my son from the bus
[11:23] <jam> wallyworld: though it looks like you've already left ?
[11:23] <wallyworld> jam: `we ended it, will reschedule for next week it that's ok
[11:23] <jam> wallyworld: kd
[12:15] <voidspace> || is defined for strings but not &&?
[12:16] <voidspace> ah no
[12:16] <voidspace> only the first error was reported though
[12:19]  * fwereade_ has a *filthy* headache that's only getting worse, going to lie down
[12:21] <voidspace> fwereade_: :-(
[12:25] <dimitern> voidspace, almost finished with the review - I had a chat with fwereade_ till now
[12:28] <voidspace> dimitern: ok
[12:28] <voidspace> dimitern: I've been working on the changes I discussed with you and the comments from jam
[12:28] <voidspace> dimitern: although I'm not too keen on the "supersticious programming" change suggested by jam
[12:29] <voidspace> "shouldn't we use a loop just because..." :-p
[12:29] <jam> voidspace: so many places in the code where we have a transaction we put in a loop
[12:29] <dimitern> voidspace, ah
[12:29] <jam> I don't know that we need to do so here
[12:30] <dimitern> voidspace, jam, if we have a lot of asserts it makes sense to have a buildTxn callback (implicit loop) - if it's just one assert we can go without it
[12:31] <voidspace> I had one originally, but pulled it out
[12:31] <voidspace> the only error possible (so far) is if the document already exists
[13:00] <dimitern> voidspace, reviewed
[13:07] <voidspace> dimitern: thanks
[13:08] <voidspace> dimitern: "a few suggestions"...
[13:08] <voidspace> ;-)
[13:09] <voidspace> dimitern: appreciated, on the case with several of these already
[13:09] <dimitern> voidspace, sorry :) I seem to be picking up somewhat British way of expressing myself sometimes :)
[13:09] <voidspace> dimitern: a terrible curse
[13:10] <dimitern> lol
[14:45] <sinzui> jam, katco, ericsnow: can someone look into bug 1396625? if this is broken in the 1.21 branch we will need a fix backported to it
[14:45] <mup> Bug #1396625: container scoped relations between 2 subordinates broken in 1.20.12 <regression> <subordinate> <juju-core:Triaged> <https://launchpad.net/bugs/1396625>
[14:46] <katco> sinzui: i'm trying to wrap up leadership before holiday, and i'm OCR today as well.
[14:47] <katco> sinzui: i will take a look this afternoon if i can.
[14:47] <sinzui> katco, sorry I am not asking any one person to fix the issue, we just need someone who can assess the regression. This may block 1.21.0 and require us ti do a 1.21.beta4
[14:48] <katco> sinzui: gotcha. i will take a look if at all possible. thanks for the heads-up :)
[15:20] <voidspace> dimitern: are collection fields automatically lower-cased by mongo? (or mgo - from doc struct fields which are capitalized)
[15:22] <dimitern> voidspace, yes they are
[15:22] <dimitern> voidspace, I think by mongo itself
[15:23] <fwereade_> voidspace, yes, I think it's mgo/bson that does it, and I like it very much when we're explicit about `bson:"whatever"`serializations
[15:23] <voidspace> dimitern: cool, looked that way from the code but I wanted confirmation
[15:23] <voidspace> fwereade_: coolio
[16:06] <voidspace> dimitern: you want to check for malformed AllocatableIPHigh and Low?
[16:06] <voidspace> dimitern: you also want to check they're within the CIDR?
[16:08] <dimitern> voidspace, I think it's worth it to validate them when set
[16:08] <voidspace> dimitern: ok
[16:09] <voidspace> dimitern: jam suggested moving all the validation into a CheckValid method on Subnet
[16:09] <voidspace> dimitern: do you think it's worth the effort?
[16:11] <dimitern> voidspace, I don't mind if we do the validation in a follow-up, but please at least add a TODO for it
[16:12] <voidspace> dimitern: ok
[16:12] <voidspace> dimitern: net.ParseIP doesn't return an error!
[16:12] <voidspace> checking to see what it does for invalid input
[16:13] <voidspace> dimitern: it returns net.IP(nil)
[16:13] <voidspace> odd
[16:13] <dimitern> voidspace, it doesn't but it returns nil
[16:14] <dimitern> voidspace, there's a method to call on net.IP to ensure it's valid
[16:15] <dimitern> voidspace, sorry, I was wrong - no such method; just check for nil I guess
[16:16] <voidspace> yep
[16:43] <voidspace> dimitern: there's an almost unbounded amount of additional validation we could do
[16:43] <voidspace> dimitern: e.g. both ipv4 or both ipv6, Low should be lower than high and so on
[16:44] <voidspace> dimitern: so I won't do those unless you feel strongly
[16:49] <voidspace> dimitern: I will note them
[18:16] <dimitern> voidspace, that sounds good to me - I agree we can improve it further, but not at the cost of stalling the implementation :)
[18:17] <dimitern> voidspace, I'll leave it to your judgment then
[18:18] <voidspace> dimitern: on the last bits now
[18:18] <voidspace> dimitern: do you really want a "Destroy" that just sets Life to Dying?
[18:18] <voidspace> dimitern: given that Remove requires Dead and EnsureDead sets Dead
[18:18] <voidspace> dimitern: there's no actual use (yet) for a Destroy
[18:20] <dimitern> voidspace, ok, let's skip Destroy for the time being
[18:20] <voidspace> dimitern: thanks :-)
[18:20] <voidspace> dimitern: I have ten minutes before EOD
[18:20] <voidspace> dimitern: I might finish...
[18:20] <voidspace> dimitern: maybe a test or two for before standup tomorrow
[18:22] <dimitern> voidspace, no rush :) it's going great so far
[18:22] <voidspace> dimitern: one issue
[18:22] <voidspace> dimitern: I added the unique index on providerid
[18:22] <voidspace> dimitern: added in state.open
[18:23] <dimitern> voidspace, and it doesn't work when unset?
[18:23] <voidspace> dimitern: it doesn't work
[18:23] <voidspace> dimitern: I can add two subnets with the same providerid
[18:23] <voidspace> dimitern: it's fine unset
[18:23] <voidspace> although that hadn't occurred to me
[18:23] <dimitern> voidspace, hmm.. I kinda suspected that.. have you tried the "sparse" flag for the index as jam suggested?
[18:23] <voidspace> it needs to be "unique if set", which is slightly different
[18:23] <voidspace> dimitern: it doesn't seem to work *at all*
[18:24] <dimitern> voidspace, ah, sorry
[18:24] <voidspace> dimitern: I haven't tried sparse - that might be needed *as well*
[18:24] <voidspace> dimitern: however I wonder if the indexes are used for the test as we seem to have special ways of creating the state for tests
[18:24] <dimitern> voidspace, that's odd.. maybe due to the "omitempty" tag - not quite sure
[18:25] <voidspace> dimitern: can topic with jam tomorrow
[18:25] <voidspace> there's a note in the test
[18:25] <voidspace> it currently passes when it shouldn't :-)
[18:26] <dimitern> voidspace, yeah.. I'll have a look tomorrow - I'm sure I used unique indices like that before
[18:26] <dimitern> voidspace, but there might be subtleties that escape me now
[18:27] <voidspace> yeah
[18:27] <voidspace> I'm on the other bits right now, but I won't forget it
[18:27] <dimitern> voidspace, cheers
[18:28] <dimitern> voidspace, sorry for my nit picking.. but I'm overly cautious with any state code due to past issues :)
[18:31] <dimitern> anyway, eod for me
[18:31] <dimitern> g'night all!
[18:31] <voidspace> dimitern: g'night
[18:32] <voidspace> dimitern: cya tomorrow
[18:32] <voidspace> I'm EOD too
[20:06] <thumper> fwereade_: ping
[21:43] <wallyworld_> thumper: that jujuc symlink issue was caused by a fix to a different bug 1391645
[21:43] <mup> Bug #1391645: Tools linking issue 1.21beta1 for collocated services <tech-debt> <juju-core:Fix Released by axwalk> <juju-core 1.21:Fix Released by axwalk> <https://launchpad.net/bugs/1391645>
[21:43] <wallyworld_> thumper: i'll get andrew to look into it
[21:43] <thumper> wallyworld_: we are looking now
[21:44] <thumper> wallyworld_: as it is blocking our work
[21:44] <wallyworld_> ah, bollocks
[21:44] <wallyworld_> thumper: there's also this one 1396625
[21:44] <wallyworld_> bug 1396625
[21:44] <mup> Bug #1396625: container scoped relations between 2 subordinates broken in 1.20.12 <regression> <subordinate> <juju-core:Triaged> <https://launchpad.net/bugs/1396625>
[21:44] <thumper> yeah, not sure about that one...
[21:44] <wallyworld_> i think this is associated with the fix menno did
[21:44] <thumper> fwereade_ said it should be allowed
[21:45] <thumper> but we used to allow it by mistake
[21:45] <wallyworld_> ask menno, he may be able to tweak his previous fix
[21:45] <thumper> should NOT be allowed
[21:45] <wallyworld_> oh
[21:45] <thumper> yeah
[21:45] <thumper> I'm wanting fwereade_ to look at it
[21:45] <wallyworld_> so you saying it's a won't fix?
[21:45] <wallyworld_> ok
[21:46] <wallyworld_> thumper: so let me know if you need us to look at the jujuc bug, if you get stuck etc
[21:46] <thumper> wallyworld_: I have a back port of a bug
[21:46] <thumper> Just going to land it on 1.21
[21:47] <thumper> I thought it wasn't a problem there, but it is
[21:47] <thumper> as I have found by debugging it
[21:47] <wallyworld_> which bug?
[21:47]  * thumper loks
[21:48] <thumper> https://bugs.launchpad.net/juju-core/+bug/1395564
[21:48] <mup> Bug #1395564: jujud constantly spews `juju.worker runner.go:219 exited "identity-file-writer": StateServingInfo not available and we need it` <juju-core:In Progress by thumper> <https://launchpad.net/bugs/1395564>
[21:48] <wallyworld_> oh, that one
[21:49] <wallyworld_> and you did find an all machines issue by the looks
[21:49] <wallyworld_> yay :-(
[21:49]  * thumper nods
[21:50] <thumper> it is all a bit shit
[21:53] <katco> thumper: the review you have up, it's a backport?
[21:53] <thumper> yep
[21:53] <thumper> just running all the tests to make sure they still pass before gettin gthe bot to do it
[21:53] <katco> thumper: any reason i shouldn't rubber-stamp this? it looks plausibly correct
[21:53] <thumper> katco: axw  reviewed the master version
[21:53] <thumper> rubber-stamp away
[21:53]  * katco reels back
[21:53]  * katco ka-thump
[21:55] <katco> wallyworld_: if you have any questions about my responses to your review, lmk. especially the one concerning state. i couldn't really find a better way.
[21:55] <wallyworld_> katco: np, i haven't started looking yet
[21:55] <katco> wallyworld_: np
[21:59] <thumper> wallyworld_: I don't suppose you have the old review for axw's tool change
[21:59] <thumper> ?
[21:59] <wallyworld_> i can look
[22:01] <wallyworld_> thumper: here's the pr for the backport to 1.21 https://github.com/juju/juju/pull/1136
[22:01] <wallyworld_> the review board link seems to be gone
[22:01] <thumper> ta
[22:02] <thumper> gee I miss the links to the code reviews in the bugs
[22:02] <wallyworld_> yep :-(
[22:02] <wallyworld_> i miss launchpad
[23:07] <fwereade_> thumper, hum, that's an interesting bug, isn't it :(
[23:08] <thumper> fwereade_: which one?
[23:08] <thumper> I have three on the go
[23:08] <fwereade_> thumper, heh, https://bugs.launchpad.net/juju-core/+bug/1396625
[23:08] <mup> Bug #1396625: container scoped relations between 2 subordinates broken in 1.20.12 <regression> <subordinate> <juju-core:Triaged> <https://launchpad.net/bugs/1396625>
[23:08] <thumper> fwereade_: and a fourth I wanted to talk to you about
[23:08] <fwereade_> thumper, ok, I'm going to get a drink then, hangout?
[23:08] <thumper> sure
[23:52] <fwereade_> menn0, ping
[23:53] <menn0> fwereade_: hi
[23:53] <fwereade_> menn0, so, https://bugs.launchpad.net/juju-core/+bug/1396625
[23:53] <mup> Bug #1396625: container scoped relations between 2 subordinates broken in 1.20.12 <regression> <subordinate> <juju-core:Triaged> <https://launchpad.net/bugs/1396625>
[23:53] <fwereade_> menn0, I am conflicted
[23:53] <menn0> fwereade_: yep
[23:53] <fwereade_> menn0, hangout?>
[23:53] <menn0> fwereade_: ok
[23:55] <thumper> wallyworld_, waigani, menn0: https://github.com/juju/juju/pull/1226
[23:55] <thumper> just running all the tests now
[23:55]  * thumper goes for a jog with the god
[23:55] <thumper> dog
[23:55] <wallyworld_> if it were a cat
[23:56] <wallyworld_> then it would think it's a god