[05:55] <mup> Bug #1482502 opened: API open error: EOF during bootstrap <ci> <intermittent-failure> <maas-provider> <test-failure> <juju-core:Triaged> <juju-core windows-public-clouds:Triaged> <https://launchpad.net/bugs/1482502>
[06:25] <mup> Bug #1430205 changed: lxc template needs refreshing every 24 hours <lxc> <sts> <juju-core:Fix Released> <https://launchpad.net/bugs/1430205>
[06:49] <mup> Bug #1482513 opened: checklist failed with "at least three machines that have more than one disk" <juju-core:New> <https://launchpad.net/bugs/1482513>
[07:03] <voidspace> dooferlad: are you around?
[07:54] <dooferlad> voidspace: here now
[07:54] <dooferlad> voidspace: had rubbish night, so later than wanted start
[08:42] <voidspace> dooferlad: thanks
[08:42] <voidspace> dooferlad: sorry about your night
[08:42] <voidspace> dooferlad: and thanks for the review
[08:42] <voidspace> fwereade_: you have internet back yet, or you just found somewhere with wifi to work?
[08:42] <dooferlad> voidspace: no problem - wan't a big hunk of code!
[08:42] <voidspace> dooferlad: hehe, not exactly...
[08:43] <voidspace> dooferlad: did your state subnets branch land?
[08:43] <voidspace> dooferlad: if so you could move the card from Landing to Merged
[08:44] <dooferlad> voidspace: done. Thanks for the reminder.
[09:23] <voidspace> dimitern: I may need help with adding reference counting to subnets
[09:23] <voidspace> dimitern: I'll look at how it's done in other places first
[09:23] <voidspace> dimitern: maybe you could suggest somewhere else to look, otherwise I'll go spelunking through code
[09:25] <voidspace> dimitern: dooferlad: FYI my api branch landed
[09:26] <dimitern> voidspace, certainly
[09:27] <dimitern> voidspace, a nice, isolated example would be service settings ref counts
[09:27] <voidspace> dimitern: thanks
[09:28] <dimitern> voidspace, look at and around settingsRefsDoc
[09:28] <voidspace> dimitern: so it requires a separate collection for the refs
[09:28] <TheMue> dimitern: can you also provide edit access to the spreadsheet?
[09:29] <dimitern> voidspace, essentially you need explicit txn-revno to assert the collection hasn't changed
[09:29] <dimitern> voidspace, it doesn't require a separate collection, but fwereade I know prefers this approach
[09:29] <voidspace> dimitern: yeah, it's more the general shape of the infrastructure (that we use a separate doc for example) and where the refs are updated
[09:30] <dimitern> TheMue, which one ? for the sprint?
[09:30] <voidspace> dimitern: if fwreade prefers it that sounds like a good reason to do it :-)
[09:30] <TheMue> dimitern: exactly, otherwise I do it the standard way via alexisb
[09:30] <dimitern> voidspace, yeah, and to make life easier add helpers inc and dec ops and assert unchanged ops
[09:31] <voidspace> ok
[09:31] <dimitern> TheMue, let me see if I can do it
[09:31] <TheMue> dimitern: thx
[09:32] <dimitern> TheMue, try now
[09:33] <TheMue> dimitern: it works, great, thx again
[09:34] <dimitern> TheMue, np
[09:34] <dimitern> voidspace, dooferlad, both of you should have edit access as well
[09:35] <voidspace> dimitern: settingsIncRefOp and settingsDecRefOps (inconsistent naming!) both seem straightforward
[09:36] <voidspace> although there decrementing ref count to zero deletes the settings
[09:36] <voidspace> we don't want that behaviour
[09:49] <dimitern> voidspace, the naming is inconsistent because one is returning txn.Op and the other []txn.Op, but fair point
[09:50] <rogpeppe> anyone know if juju CI is currently blocked on critical bugs?
[09:51] <rogpeppe> i remember there was a website you could check, but i can't remember the name
[09:51] <rogpeppe> dimitern: ^
[09:51] <dimitern> rogpeppe, http://juju.fail
[09:52] <dimitern> rogpeppe, and it seems it's blocked
[09:52] <rogpeppe> dimitern: ok, i won't bother trying to propose my one line change to provider/dummy :)
[09:52] <rogpeppe> dimitern: thanks
[09:52] <rogpeppe> dimitern: i'll bookmark that
[09:52] <dimitern> rogpeppe, it's great :)
[09:53] <rogpeppe> dimitern: it should have a favicon :)
[09:59] <dimitern> rogpeppe, marcoceppi accepts contributions for it - I've done it once :)
[10:00] <rogpeppe> dimitern: then i'd have to make one :)
[10:02] <perrito666> I fix committed that bugfix why is it still blocked?
[10:03] <perrito666> There is no ci failure to support it and the relevant test is passing I say just change the severity
[10:05] <perrito666> Dimitern rogpeppe ^
[10:05] <rogpeppe> perrito666: i've no idea
[10:05] <dimitern> perrito666, no idea - ping mgz, sinzui ?
[10:06]  * perrito666 goes back to breakfast, irc on the phone is very annoying 
[10:06] <perrito666> Mgz?
[10:32] <dimitern> TheMue, I'm looking at your branch
[10:32] <TheMue> dimitern: the WIP one or the not yet PR branch with the cleaner approach?
[10:32] <dimitern> TheMue, about the tests we're talking about
[10:33] <dimitern> TheMue, the one I can see (ending with "-simplified-approach" or something)
[10:34] <TheMue> dimitern: ah, fine, just adding tests here
[10:34] <dimitern> TheMue, let's finish all the tests with mocking, but at the end add a separate suite embedding JujuConnSuite (with comment that it's an integration test) that tests the full stack end-to-end
[10:34] <TheMue> dimitern: yep, will do, sounds logical to me
[10:34] <tasdomas> dimitern, ping?
[10:35] <dimitern> TheMue, i.e. add some IPs, make some of them dead (not all), call Cleanup...() and ensure they are released and removed
[10:35] <TheMue> dimitern: so far integration has been on worker level only. a bit late.
[10:35] <dimitern> tasdomas, pong
[10:35] <tasdomas> dimitern, a quick testing question
[10:35] <dimitern> tasdomas, sure
[10:35] <TheMue> dimitern: yeah
[10:36] <tasdomas> dimitern, in https://github.com/juju/juju/pull/2927/files#diff-34326fed18c50f27a1b95570dc428e0aR573 I'm adding a call to state from runner.Context
[10:36] <tasdomas> dimitern, what would be the best way to path that call to state, making it return an error?
[10:37] <tasdomas> uniter.State is not an interface, so I can't just mock it out
[10:38] <dimitern> tasdomas, let me have a look
[12:20] <voidspace> ericsnow: what's a "WMP feature test"?
[12:20] <mgz> perrito666: I marked bug as released to unblock branches - as I understand it we don't have coverage at present without jes testing, also master failed for other reasons when running the rev.
[12:22] <voidspace> ericsnow: WPM even
[12:24] <perrito666> mgz: oh, why did it fail?
[12:26] <mup> Bug #1479289 changed: statushistory uses sequence, fails in multi-env state servers <blocker> <jes> <status> <juju-core:Fix Released by hduran-8> <juju-core 1.24:Fix Released by hduran-8> <https://launchpad.net/bugs/1479289>
[12:26] <mgz> perrito666: juju not coping with errors from ec2 when deploying a bunch of stuff with quickstart, and joyent networking not being sorted yet
[12:26] <mgz> so, known robustness issues
[12:27] <perrito666> meh
[12:47] <TheMue> dimitern: ping
[12:55] <dimitern> TheMue, pong
[12:56] <mup> Bug #1482634 opened: leadership manager lifetime tied to state <tech-debt> <juju-core:Triaged by fwereade> <https://launchpad.net/bugs/1482634>
[12:57] <TheMue> dimitern: do you have a good example for working with a mock in one suite and the dummy in another suite in the same package?
[12:59] <mup> Bug #1482634 changed: leadership manager lifetime tied to state <tech-debt> <juju-core:Triaged by fwereade> <https://launchpad.net/bugs/1482634>
[12:59] <TheMue> dimitern: the test itself is done, I only needed the coretesting.MgoTestPackage(t)
[13:00] <TheMue> dimitern: and then, because they are two suites, one panics
[13:01] <TheMue> dimitern: one simple solution could be to not mock and use dummy for all tests of the API, but hmm, we tried to have less mongo starts
[13:05] <TheMue> dimitern: running the one with our Mgo... and the other one with gc.TestingT(t) would be nice. *sigh*
[13:06] <dimitern> TheMue, you only need to call MgoTestPackage once, regardless of how many suites you have
[13:07] <dimitern> TheMue, I can't think of a good example off hand for a package where there are both mocked unit tests and dummy provider based integration tests
[13:07] <TheMue> dimitern: yes, but doing so in TestPackage leads to a "Panic: cannot share a state between two dummy environs; old "only"; new "dummyenv""
[13:08] <dimitern> TheMue, can I have a look at the code that causes the panic?
[13:09] <TheMue> dimitern: sure, I'll quickly commit and push the branch
[13:11] <TheMue> dimitern: here it is https://github.com/TheMue/juju/blob/addresser-simplified-approach/apiserver/addresser/addresser_test.go
[13:11] <mup> Bug #1482634 opened: leadership manager lifetime tied to state <tech-debt> <juju-core:Triaged by fwereade> <https://launchpad.net/bugs/1482634>
[13:12] <TheMue> dimitern: and package_test.go contains the former code commented plus the call of MgoTestPackage
[13:12] <marcoceppi> dimitern glad you still use it!
[13:12] <TheMue> dimitern: the DummyAddresserSuite is now the new 2nd one using the dummy provider while the AddresserSuite uses the mock
[13:14] <TheMue> dimitern: the ttest at the bottom still misses the final check, that the address has been removed. wanted to test so far and then had the trouble with Mgo...
[13:14] <dimitern> marcoceppi, absolutely - that's my go-to source to check for blockers :)
[13:15] <TheMue> marcoceppi: dimitern: juju.fail? yeah, a very good and helpful tool
[13:17] <perrito666> I love it, just learned a couple of days ago about it
[13:17] <dimitern> TheMue, so you're saying calling MgoTestPackage in a package which have some suites using JujuConnSuite and some not panics?
[13:17] <perrito666> fwereade: hehey, internet is back?
[13:18] <TheMue> dimitern: yep
[13:18] <dimitern> TheMue, if that's the case too bad :( we can move that integration test to the worker then
[13:18] <TheMue> dimitern: *sniff*
[13:19] <TheMue> dimitern: liked the idea of having pure functional tests as well as integration in a so compact way
[13:20] <TheMue> hmmm, "in such a compact way" sounds better and more correct
[13:20] <fwereade> perrito666, yeah
[13:21] <perrito666> fwereade: what was the culprit?
[13:21] <fwereade> perrito666, we're pretty sure we tracked it down to an a/c unit that hadn't actually been unplugged from everything
[13:21] <fwereade> perrito666, so we've got someone coming over to take a look at that
[13:21] <perrito666> fwereade: :) dont forget to ask for the neutral line check
[13:22] <fwereade> perrito666, on the a/c? or everywhere?
[13:22] <TheMue> dimitern: that's btw one reason why I like the standard go tests where I create the environment in helper functions as a first statement in TestFoo(t *testing.T)
[13:22] <perrito666> fwereade: everywhere, it is not normal to have the protection break on all 3 circuits if only 1 is faulty
[13:23] <natefinch> TheMue: +1 for standard go tests w/ a help if setup is needed.
[13:23] <fwereade> perrito666, yep. will do
[13:23] <TheMue> dimitern: so my tideland test typically load the assertion type/helper as a first statement, then create their environment(s) and then do the tests
[13:24] <TheMue> natefinch: thx
[13:24]  * perrito666 +1s natefinch 
[13:25] <natefinch> TheMue: I think it's just a lot more clear w/o magical functions getting called that you don't even see.   Plus, I think mgo's test timing doesn't include setup or teardown, which means you miss a lot of important information about how long a test really takes
[13:26] <TheMue> natefinch: yep
[13:27] <natefinch> TheMue: er s/mgo/gocheck/
[13:27] <TheMue> natefinch: here at https://github.com/tideland/golib/blob/master/cells/cells_test.go#L168 is an example how I'm doing it, always trying to be as simple as possible
[13:28] <fwereade> I know I'm OCR, but cann I hit someone up for a review of http://reviews.vapour.ws/r/2315/ please? somewhat urgent
[13:28] <TheMue> natefinch: and if a larger setup is needed it's simply a privat function in the same test (extra or same file)
[13:29] <natefinch> TheMue: yep.
[13:29] <TheMue> natefinch: the task of gocheck for more simple test is done by https://godoc.org/github.com/tideland/golib/audit#Assertion
[13:29] <natefinch> TheMue: the nice thing about using the standard test's framework is better integration with third party tools, like goconvey's web UI.
[13:30] <TheMue> natefinch: yes, another big advantage
[13:30] <perrito666> fwereade: ship it
[13:31] <perrito666> I am satisfied by the amount of explanations around the dirty hack :)
[13:31] <fwereade> perrito666, tyvm
[13:34] <fwereade> ericsnow, ty for your review; and by the way, RB seems not to have picked up https://github.com/juju/juju/pull/2932
[13:35] <perrito666> rb is missing a lot of things lately
[13:59] <natefinch> oh for fsck's sake... the tests are wiping environment variables... now I understand why the tests keep telling me they can't find $HOME
[13:59] <perrito666> lol
[14:01] <katco> natefinch: standup
[14:03] <voidspace> perrito666: a few questions on your version checker PR
[14:03] <voidspace> perrito666: other than my questions looks good
[14:04] <perrito666> voidspace: hey thanks :)
[14:12] <ericsnow> fwereade: re: that review request, it barfed because of unicode (in Python 2)
[14:14] <mup> Bug #1482513 changed: checklist failed with "at least three machines that have more than one disk" <Landscape Server:Incomplete> <https://launchpad.net/bugs/1482513>
[14:23] <fwereade> ericsnow, eww, what did I do to it?
[14:23] <ericsnow> fwereade: not your fault :)
[14:24] <perrito666> heh, thank I didn't write my name properly on github nor in my git account
[14:24] <perrito666> that usually blows djangos with unicode errors
[14:26] <fwereade> ericsnow, what should I do to goose it into action when that happens?
[14:26] <ericsnow> fwereade: I thought I had fixed it but I guess not
[14:26] <ericsnow> fwereade: create a new pull request? (discard the old one)
[14:26] <perrito666> ericsnow: you never fix all unicode problems
[14:26] <fwereade> ericsnow, ok, cheers
[14:27] <ericsnow> perrito666: :)
[14:28]  * perrito666 used to be the "reminder there is a 'rest of the world'" to former co workers doing python web apps
[14:28] <perrito666> I wont say what was their nationality :p
[14:30] <dooferlad> voidspace / dimitern: I am being told by Juju that it is out of IP addresses when trying to perform a static allocation. Do you know how to reset the pool? This is with MAAS.
[14:30] <fwereade> ericsnow, does PR2939 have the same problem?
[14:30] <dooferlad> I have already reset the leases files it is using
[14:31] <voidspace> dooferlad: "reset the pool"? there is no way...
[14:31] <voidspace> dooferlad: juju attempts to allocate addresses from the static range
[14:32] <voidspace> dooferlad: if it fails (MAAS returns an error) it marks the address as unavailable
[14:32] <perrito666> fwereade: how do you even cause a unicode error? do you have special chars in your kb?
[14:32] <voidspace> dooferlad: if it succeeds it uses the address
[14:33] <fwereade> perrito666, I didn't think I was doing anything special -- no :hankey:s in the comments or anything
[14:33] <dooferlad> voidspace: so what I do when MAAS thinks it has run out?
[14:35] <voidspace> dooferlad: well if *MAAS* thinks you've run out it usually means you have
[14:35] <voidspace> dooferlad: increase the static range
[14:35] <voidspace> *statically allocated range*
[14:36] <voidspace> that should work
[14:36] <dooferlad> voidspace: I have two physical machines, one is on, there are three containers on it. I have 100 addresses in the static range.
[14:36] <voidspace> dooferlad: something has gone wrong then :-)
[14:36] <dooferlad> voidspace: yea.
[14:37] <voidspace> some error was causing address allocation to fail and addresses be marked as unavailable
[14:37] <voidspace> you could poke mongo directly and clear all addresses marked as unavailable
[14:37] <voidspace> we should have an issue (we've certainly talked about) retrying unavailable addresses
[14:38] <voidspace> *for retrying
[14:41] <perrito666> voidspace: why on earth are we not using more periodicworker
[14:42]  * perrito666 facepalms
[14:43] <voidspace> perrito666: I don't know... :-)
[14:43]  * perrito666 changes it a bit to use a custom clock
[14:47] <dooferlad> voidspace: https://gist.github.com/dooferlad/082996faeb2168a76ab4 does it
[14:47] <dooferlad> voidspace: provided your maas is called "maas"
[14:53] <voidspace> dooferlad: my maas usually is called maas
[14:53] <voidspace> dooferlad: ah, so they were allocated with maas
[14:53] <voidspace> I wonder how they got allocated
[14:53] <voidspace> we must have allocated them, then something *else* went wrong so we marked the address as unavailable and tried another one
[14:53] <voidspace> still worrying
[14:54] <voidspace> dooferlad: hmmm... maybe not
[14:54] <voidspace> I'm slightly confused but never mind, if it worked then great
[14:54] <dooferlad> voidspace: juju destroy-environment -y --force maas
[14:54] <dooferlad> voidspace: I bet repeatedly using that doesn't help
[14:54] <voidspace> dooferlad: hah, yes
[14:54] <voidspace> dooferlad: they just remained allocated from previous runs
[14:55] <voidspace> that makes sense
[14:55] <voidspace> if you use maas 1.8 and trunk it should no longer be an issue
[14:55] <voidspace> they'll now be freed correctly
[14:55] <dooferlad> I am
[14:55] <voidspace> using devices
[14:55] <voidspace> in theory...
[14:55] <dooferlad> though I ran out when using net-cli
[14:55] <voidspace> the devices are correctly cleared and we're assuming maas also releases their IP addresses
[14:55] <voidspace> that may not have the new devices stuff in it
[14:56] <voidspace> you can tell - when you create a container check if a corresponding device is created (visible in the MAAS UI)
[14:57] <dooferlad> Oh, that's new (to me):  ERROR juju.cmd supercommand.go:429 upgrade in progress - Juju functionality is limited
[15:05] <dooferlad> voidspace: ohh, now there are devices! Shiny!
[15:35] <voidspace> right EOW
[15:35] <voidspace> happy weekend everyone
[15:37] <dimitern> dooferlad, hey
[15:38] <dooferlad> Hi
[15:38] <dimitern> dooferlad, did you manage to fix your ip addresses issues?
[15:38] <dimitern> dooferlad, I have a tool for this btw
[15:38] <dooferlad> Yep. Pasted above
[15:39] <dooferlad> Well, mine is pasted above
[15:39] <dimitern> dooferlad, ah :) good - but here's mine as well - expectedIP
[15:39] <dimitern> ?!
[15:39] <dimitern> https://github.com/dimitern/go-tools
[15:43] <dooferlad> dimitern: cool, will try to remember that is there.
[15:43] <dooferlad> I think we should bubble up a warning to the CLI if we can't allocate a static address and we wanted to. It is the sort of thing that hunting through logs for just sucks.
[15:44] <dooferlad> but for the moment I am out of energy, so calling it a day.
[15:45] <dimitern> dooferlad, We will do that soon
[15:45] <dimitern> dooferlad, have a nice weekend :)
[16:00] <perrito666> bbl
[16:05] <bogdanteleaga> do we support instance type constraints on azure?
[16:14] <dimitern> bogdanteleaga, looking at provider/azure - selectInstanceTypeAndImage it seems we do
[16:15] <bogdanteleaga> dimitern: yup, I managed to get it working in the end
[16:16] <bogdanteleaga> sadly, I don't think it matters since I wanted an SSD for the main drive and D# instances provide it only for a secondary drive
[16:24] <rogpeppe> anyone know of an easy way of getting just the public address of a service from a juju status?
[16:25] <rogpeppe> i'm wondering if there's a command buried somewhere along the same kind of lines as juju api-endpoints
[16:35] <mgz> rogpeppe: a service doesn't have a public address
[16:35] <mgz> rogpeppe: units of the service do
[16:35] <rogpeppe> mgz: i mean a unit, sorry :)
[16:35] <bogdanteleaga> the closest I get is juju status --format=oneline
[16:36] <rogpeppe> bogdanteleaga: that + awk or sed will do the trick, thanks
[16:37] <mgz> I've just used --format=json and a jsonpath tool thing in the past
[16:37] <bogdanteleaga> juju status --format=oneline | cut -d ' ' -f 3
[16:37] <rogpeppe> bogdanteleaga: yeah.
[16:37] <bogdanteleaga> cut is a bit easier, at least for me :)
[16:37] <rogpeppe> bogdanteleaga: i haven't used cut in years :)
[16:37] <rogpeppe> bogdanteleaga: i can never remember whether field numbers start at 0 or 1
[16:38] <bogdanteleaga> heh, I always keep trying until I find it
[16:38] <bogdanteleaga> awk always seemed hard to use
[16:38] <rogpeppe> bogdanteleaga: i'll probably do: addresses=$(juju status --format oneline | awk '/^- myservicename/ {print $3}')
[16:38] <bogdanteleaga> but then, it does way more
[16:39] <rogpeppe> bogdanteleaga: awk is kinda awkward :)
[16:39] <bogdanteleaga> I didn't wanna use that one :D
[16:40] <rogpeppe> bodie_: i actually only realised the pun after i pressed return
[17:36] <alexisb> folks, do I have developers still around in US hours?
[17:36] <katco> alexisb: yep
[17:36] <alexisb> we have a hot issue I need someone to take
[17:37] <katco> alexisb: you should have natefinch, ericsnow, perrito666, and cherylj at your disposal
[17:40] <katco> cherylj: hey you around?
[18:06] <natefinch> alexisb: still need help?
[18:06] <alexisb> natefinch, nope
[18:07] <natefinch> alexisb: excellent
[22:21] <perrito666> ok, both branches pushed :) I am done