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