[00:20] ericsnow: ping [00:20] wwitzel3: hey [00:24] right, I had intended to go to sleep rather earlier than this, but hey ho. http://reviews.vapour.ws/r/1934/ now has complete logic tests, and enough docs to be worth poking at; I'm now looking to land it if anyone has the bandwidth for it [00:25] * fwereade_ bed [01:02] mwhudson i have an email from the go pm who's asking for contact details for the go packaging maintainers [01:02] i'm tempted to just give him your name [01:02] that is, unless you can find someone else for me to foist this on === kadams54 is now known as kadams54-away [01:44] davecheney: in ubuntu? me and doko i guess would be a good start [01:45] mwhudson: i guess that is my first question [01:45] don't ubuntu follow debian [01:45] i wonder if I should send him to the debian folks first [01:45] the debain folks are paultag and tianon [01:45] tainon [01:45] i think I know him/them [01:46] as usual when being asked a question the first response is "what are you trying to achieve" [01:46] jason is a pm [01:46] he's used to not getting a straight answer [01:48] ah, i think ian cc:ed him on the mail he sent me earlier today [01:48] jason b [01:48] yeah, all roads lead back to product managment [01:50] yeah === anthonyf is now known as Guest33778 [01:58] thumper: 5 min chat? [01:59] wallyworld: sure [02:22] thumper: https://github.com/juju/testing/pull/71 [02:55] thumper: i have a problem [02:55] lucky(~/src/github.com/juju/juju) % go install -v ./... [02:55] ../../../gopkg.in/juju/charm.v5/testing/mockstore.go:18:2: cannot find package "gopkg.in/check.v1" in any of: /home/dfc/go/src/gopkg.in/check.v1 (from $GOROOT) /home/dfc/src/gopkg.in/check.v1 (from $GOPATH) [02:55] juju depends ont he charmstore [02:55] the charmstore depends on gopkg.in/check.v1 [02:55] and I believe rog will block any landing into that repo [02:55] sure... [02:56] but since we aren't running tests against it, why is it a problem? [02:56] i *think* this will be ok [02:56] yes, that [02:56] but it might also be a blocker [02:56] i need to point this out [02:57] in theory, gocheck should end up being in any non test dependencies right? [02:57] are we using any *testing packages from the charm package? [02:57] ... [02:57] mockstore? [02:57] yes [02:57] so if that package provides checkers that we're using [02:57] * thumper grunts [02:57] we're boned [02:58] if it's just using the types [02:58] we're probably ok [02:58] ok [02:58] let me know [02:58] * thumper goes to make coffee [02:59] we might still be ok, i think gocheck uses an interface [02:59] or reflection to figure out which of the arguments are checkers [02:59] and there is no requirement that a cheker implemetns an interface [03:00] or embeds a checker base type [03:00] so this might be ok [03:00] if a bit ropey [03:00] worker/uniter/runner/jujuc/testing/networking.go:23: cannot use checkers.DeepEquals (type "gopkg.in/check.v1".Checker) as type "github.com/juju/check".Checker in argument to c.Check: [03:00] "gopkg.in/check.v1".Checker does not implement "github.com/juju/check".Checker (wrong type for Info method) [03:00] have Info() *"gopkg.in/check.v1".CheckerInfo [03:00] want Info() *"github.com/juju/check".CheckerInfo [03:00] opps, spoke too soon [03:02] ...and that's why you avoid using custom types in interfaces [03:02] yup [03:03] thumper: nope [03:03] i'm screwed [03:03] we have a gordian knot between juju/juju, juju/testing and check.v1 and charm.v5 [03:04] i cannot complete this change unless the charmstore owners agree to also switch to our fork [03:04] luckily they work for us, so that should not be that hard? Maybe? [03:10] thumper: i'm shelving this card, I cannot complete it at thsi time [03:24] davecheney: ack [03:26] man... [03:26] that seems screwed up === kadams54 is now known as kadams54-away [04:06] thumper: what do you want to do ? [04:07] davecheney: I'm unclear as to why the checker is using gopkg.in checker... [04:08] its a suite [04:08] check/v.5 uses suites from juju/testing [04:09] juju/testing expects a "github.com/juju/check".Checker, this is a gc.C [04:09] check.v5 suites expects a "gopkg.in/check.v1".Checker gc.c [04:09] check.v5 suites expects a "gopkg.in/check.v1".Checker gc. [04:09] C [04:11] hmm, that wasn't quite right [04:11] some of the names of the gocheck types aren't right in that explanation [04:11] but the effect is the same [04:13] because charm.v5 uses gopkg.in/check.v1 and everything else uses github.com/juju/check ... .and the interfaces aren't compatible because they contain package-specific types. [04:14] waigani: do you gave time for a chat about simplestreams branch? [04:14] wallyworld: yep sure [04:14] https://plus.google.com/hangouts/_/canonical.com/tanzanite-stand [04:16] davecheney: ah poo [04:17] davecheney, natefinch: can we change juju/check to not expect package specific types? [04:17] however [04:17] natefinch: is gc.C a type or an internface [04:17] that'll only work for checkers [04:17] thumper: the problem is suites [04:17] not the C [04:17] right? [04:17] yeah [04:17] * thumper gets it [04:18] well, there are several problems [04:18] as frustrating as it is [04:18] even if we could fix juju/check [04:18] charm.v5 is using check.v1 as it's definition of gc.C passed to suites [04:18] and juiju/testing is using our fork [04:18] with the charms.v5 using gopkg.in, it means it can't use us [04:18] * thumper nods [04:18] double poo [04:18] TL;DR, everyone has to upgrade [04:19] this is go types done wrong IMO [04:19] davecheney: I think the fastest way to progress would be to provide the upstream gocheck with the exact patch we want [04:20] and apply pressure to get it in [04:20] i agree [04:20] did that other Chris fella respond to the PR comment? [04:22] an aside should be for us to learn from this when designing bits of code [04:22] nope [04:22] thumper: i agree [04:23] but there is no value in having that conversation on IRC [04:23] it will be lost [04:23] please take it to the juju-dev mailing list [04:24] can you propose a PR to gocheck upstream that has the fix we need, based on the work Chris did? [04:24] davecheney: ? [04:24] yes, on it [04:26] cheers [04:41] anastasiamac: I started reviewing your branch but need to run sorry, I've added a few comments, will continue later if it's still up. [05:01] thumper: oh, THATS's right [05:01] the gocheck tests dont pass [05:01] i forgot that [05:01] oh well [05:01] fuck it [05:01] WT actual F? [05:01] yeah, i logged that bug a year or so ago [05:02] alst time I made a fix to a checker [05:02] well, maybe i logged a bug [05:05] wallyworld: http://reviews.vapour.ws/r/1948/ [05:05] wallyworld: sorry [05:05] looking [05:05] was after waigani [05:06] but he isn't here [05:06] w-TAB [05:06] fail [05:06] wallyworld: I can get someone else that is more familar with the code if you like [05:06] thumper: maybe that's better? [05:07] i 'm about to go do school pickup [05:07] wallyworld: sure, np [05:17] git push --set-upstream origin fix-data-race-on-status [05:17] fatal: https://gopkg.in/check.v1/info/refs not valid: is this a git repository? [05:18] reason 2^63 why I don't like gopkg.in [05:18] "oh,you downloaded this repo, but I'm not going to tell you where origin _really_ is" [05:19] thumper: https://github.com/go-check/check/pull/44 [05:19] davecheney: thanks [05:19] confirmed the race in worker/provisioner is fixed [05:19] awesome [05:49] laters peeps [07:04] axw: if you have 15 minutes, would love a small review for a 1.24.1 bug fix http://reviews.vapour.ws/r/1947/ [07:09] wallyworld: looking [07:09] ty [07:14] wallyworld: when is a unit in "maintenance"? that's when the machine is being provisioned? [07:15] axw: Unknown during allocation [07:15] maintenance during install hook [07:15] door, be back in a sec [07:16] wallyworld, hey [07:16] wallyworld, re bug 1464616 we talked about yesterday [07:16] Bug #1464616: destroy-machine --force no longer forceably destroys machine [07:17] dimitern: http://reviews.vapour.ws/r/1947/ [07:17] wallyworld, I couldn't figure out what might be the issue without logs, but it seems you've got it [07:17] axw is looking [07:17] yeah :-) [07:17] wallyworld, awesome :) [07:20] axw: part of the complicating factor now is that we need to look at both agent and unit status to see what's going on. before it was all just unit status [07:20] * axw nods [07:22] wallyworld, reviewed [07:22] ty [07:25] axw: with the "...OrError" - it would be an error whn running the install hook, so you could argue it's still installing, hence i left it off the name. is that ok, or wuld you prefer the name change? [07:25] * dimitern is itching to write some usable docs around the various CI python classes / tools [07:25] wallyworld: it could also be in error unrelated to installing [07:26] wallyworld: so not really [07:26] could be but the other checks imit it to installing [07:26] i'll change the name [07:26] wallyworld: the other asserts do, but that means you have to know about the asserts together in context [07:26] that is true [07:27] wallyworld: completely unrelated: I changed tack on volume destruction a bit. I undid what I was talking about in the standup, and have simplified the worker so it just destroys volumes/filesystems when they're Dead. then in state we'll mark a volume/filesystem as Dead when it has no more dependents [07:28] so the worker no longer has to track dependencies [07:28] simplicity is nice [07:28] sounds better [07:29] wallyworld, axw, can a subordinate have actions of its own? [07:30] fwereade_, ^^ [07:30] not sure tbh [07:30] I'm thinking of creating a simple subordinate charm that has actions returning various networking settings - iptables, routes, etc. [07:32] dimitern: sorry no idea [07:33] no worries, will rtfm :) [07:34] dimitern: i don't understand the code review comment about "ErrAborted handling below" [07:34] wallyworld, well, any txn.Op with an Assert can trigger ErrAborted [07:35] sure. which one are you referring to? [07:35] the unitAgentAllocatingOrInstalling [07:35] that's the Assert, sorry i mean which ErrAborted handler? [07:36] * dimitern actually looks at the full source of that method [07:36] it's all takne care of AFAIK. the txn will just be retried as normal [07:36] either the unit was not installed or it was when the txn was started [07:37] it's called from line 289 func (u *Unit) Destroy() (err error) [07:38] wallyworld, yeah, I can't see anything wrong with it off hand, but I'd recommend fwereade_ having a look [07:38] ta [07:44] * dimitern now really likes the idea of multi-series charms in the face of cross-series CI tests [07:48] jw4, are you around by any chance? [07:57] jam: i've reworked the resource document a fair bit. the resource-path is i think improved as is the CLI. rick is tied up fixing their production issue, but i've answered is questions and posed a few of my own in new comments. when we are satisfied that the doc is "good enough" to show more people i'll link into the main spec. note that it's not complete, but the aim is for a WIP with enough defined to allow development to start === mgz is now known as mgz_ [09:01] voidspace, jam, fwereade_, standup? [09:01] dimitern: omw [09:40] Bug #1466011 opened: apiserver tests fail on windows [09:58] wallyworld, I'm afraid http://reviews.vapour.ws/r/1947/ does not lgtm, does my comment make sense? [09:59] wallyworld, I think you probably want to look at (*State).obliterateUnit [10:01] voidspace: success? [10:02] omg i think i'm going to cry... i had a trapped upgrade charm pending after i wrote an entire refactor of a hook (~ 250 lines) .. just to have it wiped out by upgrade-charm ;_; [10:03] dooferlad: nope [10:03] lazyPower, owww :( [10:03] dooferlad: using dhcp seems to overwrite the dns-nameservers option [10:03] dooferlad: using static (with the correct values) just plain doesn't work [10:04] fwereade_: that awkward moment i wish we were still git based so i could have recovered [10:04] dooferlad: I suspect it's a bad interaction with the bridging config for br0 [10:04] lazyPower, haha :( [10:04] lazyPower, you *should* be able to stop a pending upgrade that hasn't started yet by upgrading back to the original [10:05] voidspace: do you actually need br0? [10:05] fwereade_: my changes were remote, not local. so i had no backup and forgot i sent the upgrade-charm like an hour prior. [10:05] exited the hook thinking "Yes, now i can sync back" [10:05] doh [10:05] lazyPower, bad luck :( [10:05] indeed [10:05] dooferlad: I'll try getting rid of it and see what breaks :-) [10:05] voidspace: ahh, fun with networking :-) [10:06] it was too late, by the time upgrade_charm was trapped in tmux, i knew i was taking a stroll through "trololol" land [10:17] dooferlad: apparently I do need it [10:17] dooferlad: without it, no network [10:17] dooferlad: I'll dig into where it comes from [10:18] dooferlad: statically configuring br0 doesn't work - it has a bunch of bridge options set [10:18] dooferlad: http://pastebin.ubuntu.com/11729739/ [10:20] dooferlad: it's to do with kvm (br0) [10:20] dooferlad: docs here imply I ought to be able to statically configure [10:20] https://help.ubuntu.com/community/KVM/Networking [10:24] dooferlad: I was missing gateway before which is why I think statically configuring br0 didn't work [10:26] voidspace: oh, yes, you will need that! [10:31] dooferlad, you've got a review; btw add an Overhead card for it please [10:31] dooferlad: but dns-nameservers seems to be ignored now [10:32] dimitern: thanks, already acting on it [10:32] dimitern: overhead card? [10:33] dooferlad, for that PR [10:34] dimitern: don't all PRs go through review though? [10:34] dooferlad, i'd like to track all PRs that land with cards [10:34] dooferlad, yes, indeed [10:35] dooferlad, we're doing a lot of overhead tasks and a few actually planned, so I'd like to keep track of this [10:40] dooferlad: it seems like I need to have the dns-nameservers section in eth0 not in br0 [10:40] voidspace: oh, interesting! [10:40] dig now reports the correct nameserver [10:41] doesn't *seem* to have improved connection speed [10:41] I'll try running the tests though [10:41] if you "dig nanosheep.org" or some other server you haven't looked at recently, does it take long? [10:41] voidspace: ^^ [10:42] dooferlad: that returned quickly enough [10:42] I think this means that dns isn't the issue [10:43] voidspace: is quickly sub 200ms? From 127.0.0.1? If so, yea, that looks fine. [10:43] dooferlad: hmm... 599ms [10:44] cmd/juju tests are no quicker [10:44] voidspace: http://paste.ubuntu.com/11729870/ [10:44] :-/ [10:45] voidspace: ping response time from an upstream DNS server? [10:46] dooferlad: for lots of other sites I'm getting really quick responses [10:47] voidspace: it has to be a site you haven't looked up or you will get a cached response [10:47] dooferlad: cached ones return in 0ms :-) [10:47] voidspace: I get 1ms cached responses [10:47] dooferlad: response times for other domains really vary [10:47] voidspace: could just be a one-off slow response [10:47] yeah [10:48] OK, other stuff. Do other machines on your network have the same slow browsing problem? [10:48] no [10:49] anything unusual about that machines network connection? Could you try another cable/ [10:49] ? [10:49] the connection speed is fine [10:50] and that wouldn't affect locally running tests [10:50] indeed [10:50] it's not slow browsing, it's slow initial connection [10:50] (which really sounds like dns but I'm fairly sure isn't now) [10:50] and that particular problem started after we changed iptables [10:50] I might try removing those rules to see if it changes again [10:50] sounds like a plan [10:51] I don't *know* that cmd/juju got slow then, it may just be a coincidence [10:51] so removing them and trying again will let me know [10:51] I might go back to some real work for a bit first [10:51] removing those iptables rules is kind of trivial though - just comment them out of the saved rules file and restore the rules from it [10:54] dimitern: review responded to. [10:54] dooferlad, cheers, looking [10:55] dooferlad, let's drop the second failing StopsInstances() call from that test then [10:56] dimitern: we already test StopInstances, I was just seeing if there was anything interesting that would come up around doing it twice. The entire test is pointless if we drop the second call. [10:56] dooferlad, it would be good to figure out why it's reporting some PathError, when it should return something like "no such container" etc. [10:56] dimitern: that is because the first thing it does is try to delete some files and directories, then it calls lxc-destroy [10:57] dimitern: so the first error it returns it just what comes back from those delete calls [10:57] dooferlad, right, that's seems wrong [10:57] dimitern: calling lxc-destroy first would seem sane to me, then tidying up. [10:58] dooferlad, yeah, let's go back to this at some point [10:58] dimitern: on the 1.24 branch, I was using AssertFileContains rather than AssertFileContains because I figured having both functions was probably overkill. [10:58] dimitern: was going to ask about removing AssertFileContains [10:59] dimitern: happy to keep both and use them though. AssertFileContains does seem to be the most common use case, so having a convenience function seems OK. [11:03] dooferlad, I like the more generic AssertFileContents, but since asserts with jc.Contains on files are fairly common, having a simple wrapper around the more generic assert is nice === kadams54 is now known as kadams54-away [11:59] waigani, axw: you're both online, and have contributed to state/collections.go; can either of you ballpark estimate the hassle of extracting it (and multiEnvRunner ...and whatever else has to come with it) into its own state subpackage, so I can make use of it from another state subpackage? [12:00] waigani, axw: my gut feeling is "difficult"? [12:00] jam, sorry, 5 mins [12:01] fwereade_: k [12:01] alexisb isn't here yet either [12:01] fwereade_: actually I don't think it would be that bad [12:02] fwereade_: menno and I worked on it originally when we migrated the collections to multi envs [12:02] menno wrote the original collections.go and would be most familiar with it [12:05] waigani, yeah, I ask because you're online ;p [12:06] but off the top of my head, I can't think of any "got yas". state/txn.go would have to import the subpackage but that should be fine [12:07] fwereade_: I can bring it up in the standup - 9hrs from now. I'd be happy to look at extracting it - but it'll depend on tim and priorities etc [12:47] dimitern: probably too late, but you pinged? === anthonyf is now known as Guest64410 [12:48] jw4, no worries; I had some questions re actions, but I figured it out from the docs :) [12:48] dimitern: cool [12:53] dimitern: could you paste a rough outline how you would use the remover with IP addresses? it's no entity, so would you implement an EntityFinder taking a tag but looking for the IPAddress by id? [12:53] dimitern: even if it's a nice component for entities it's more code than the direct implementation [12:54] TheMue, that's a good question [12:54] dimitern: or alternatively make the IPAddress to a valid entity too (with adding an according kind to juju/names). [12:54] TheMue, which reminds me we don't have tags for addresses [12:55] dimitern: reading a bit of remover code and how it works on entities it's really a nice mixin [12:55] dimitern: exactly [12:56] TheMue, let's do this - propose a juju/names PR that introduces IPAddressTag [12:56] TheMue, this should be a separate, overhead card btw [12:57] TheMue, tags need a kind (used as prefix), let's use "ip-" [12:57] dimitern: btw, one little aspect of mixins is that you inherit fields and methods you don't directly aware of, a bit like OOP. here composition and explicit method passing Foo() { my.plug.Foo() } would be better (long term) [12:58] dimitern: OK, will add the tag as quick one and add it with a second PR to the remover [12:58] TheMue, that's true, but if the embeddable type is intended to be embedded, this shouldn't be a problem (fields/methods "creeping in" unobserved :) === kadams54 is now known as kadams54-away [12:59] TheMue, yeah, it's easy to do the juju/names PR first [12:59] dimitern: it's more an effect of visibility === kadams54-away is now known as kadams54 [13:00] * TheMue loves DVCSes for simple switching between branches [13:00] TheMue, hmm.. but I can see a problem with address tags [13:01] TheMue, just the value won't be enough to make a transformation from network.Address to names.AddressTag and back (e.g. in the case Scope was set to something else, rather than "discovered" automatically from the value) [13:01] fwereade_, ping [13:01] dimitern, pong [13:02] dimitern: ic [13:02] fwereade_, hey, so it's high time to introduce tags for ip addresses [13:02] dimitern: could we by this way find a better name than just "value"? [13:02] fwereade_, but since it's a struct, just using the Value is not loseless wrt transforming from tag to address [13:03] dimitern: could we by this way find a better name than just "value"? [13:03] ouch, twice [13:03] TheMue, yeah, I'm thinking of "ip----" [13:04] fwereade_, ^^ ? or perhaps "---" e.g. ipv4-public-juju-private-10.3.2.1 [13:04] dimitern: value is the address itself in standard notation, isn't it? [13:05] TheMue, yeah, but it also holds extra metadata about its scope, type, and network [13:05] it can even be a hostname [13:06] dimitern, that feels wrong [13:06] dimitern, having all that jammed into a tag [13:06] fwereade_, the unique _id for ipaddressesC is DocID, which can be used in a tag, but it'll contain the envuuid [13:07] dimitern: the field value, the rest has extra fields, is only the address/hostname. hmm, sadly don't have a better name than "value" :/ [13:07] dimitern, all that metadata is, well, metadata [13:09] dimitern: I have a ship it on http://reviews.vapour.ws/r/1941/ but not the original code on trunk (http://reviews.vapour.ws/r/1936/). Could you press the magic button? [13:09] fwereade_, we *could* go only with the value in the tab, *but* this won't work if you're trying to serialize e.g. "public:10.0.3.1" as "ip-10.0.3.1", as on the reverse path with network.NewAddress(tag.Id()) the scope will be "guessed" as local-cloud not public [13:09] dimitern, right [13:09] dooferlad, looking [13:09] fwereade_, or "ip-localhost" for that matter looks weird [13:10] dimitern, so the reason to jam all that into the tag is for uniqueness? [13:11] fwereade_, use a single tag type and multiple sub-kinds? "ip-" ? e.g. "iphostname-localhost" or (iphost-?) "ipv4-10.0.3.1", "ipv6-2001:db8::1" [13:11] dimitern, if those bits are all immutable per address (which I imagine they are), how about `address-`? [13:11] that feels strange [13:11] fwereade_, not for uniqueness, as the value + envuuid is the _id, so it's unique, but for better carrying out the original intent [13:12] fwereade_, hmm we need to know what to hash back on FindEntity though [13:12] dimitern: I think fwereade's idea is that what you really want is a document with a lot of data in it, and not have to shove all of that information into the tag [13:12] what about "ip-" and then that just gives you what doc you have? [13:12] dimitern, well, you store the hash in the doc and look up by that, right? [13:13] jam, indeed [13:13] * jam disappears to go shopping [13:13] fwereade_, just for the sake of having a sha256 hash in the tags? [13:13] dimitern, more for the sake of not jamming a whole struct into a field [13:14] so we could take a meaningless but unique uuid too [13:14] fwereade_, hmm [13:14] TheMue, indeed, equally [13:14] dimitern, opaque identifiers are good things [13:14] fwereade_, I'd rather hash the DocID and use that - it's already in the doc and can be found [13:14] dimitern, sure, that sounds fine too [13:15] +1 [13:15] fwereade_, address- [13:15] wallyworld: ignoring unknown tools metadata: http://reviews.vapour.ws/r/1955/ [13:15] dimitern: address- [13:15] dimitern, that sgtm, you'll still have to store the hashed docid to look it up :) [13:16] Bug #1465695 changed: StorageAddSuite setup fails [13:17] or event better ipaddress-, ipaddress represents the real type (if we have other addresses in the future, like mac-address), docID is already in the document [13:17] fwereade_, yeah, or perhaps Find all for the current env and iterate? :) [13:18] and docID is unique [13:18] TheMue, it's not just an ip address, as it can be a hostname [13:18] fwereade_, why not use the docId unhashed indeed? [13:19] dimitern: we talk about a tag identifying a type, and the typename is IPAddress. otherwise we should rename the type too *iiirks* [13:19] dooferlad, ship it :) [13:19] dimitern: click! [13:19] dimitern: that's why I would take ipaddress- [13:20] TheMue, I agree the name can be better, but let's not change everything at once :) [13:20] dimitern: and other address types later, mac addresses, addresses for bills, whatever, can use their type as part of the tag [13:20] dimitern: no no, I don't want to change it, only want to have it in the tag [13:20] dimitern: so it's 1:1 [13:22] fwereade_, with the "address-" format we'll have tags like "address-fedcba98-7654-4321-ba98-76543210beef:10.0.3.1" [13:23] dimitern: you surely wanted to write "ipaddress-" *scnr* [13:23] fwereade_, or, maybe even better to just use the value and rely on the magical append of "envuuid:" that happens in state/collections.go for a naked FindId() [13:24] TheMue, I don't mind *that* much [13:24] :) [13:24] hehe [13:25] * dimitern reads back what he've written earlier *facepalm* [13:25] dimitern, the only *really* important thing about a tag is that it be unique within an environment [13:25] we don't need to care for tag-to-ip conversion based on the format of the tag at all [13:25] Bug #1465695 opened: StorageAddSuite setup fails [13:26] fwereade_, yes, but none of the tags (except the environment tags obviously) carry the envuuid prefix that make them unique [13:26] dimitern, yeah: sometimes that's a convenient feature, but I think the only thing that really really depends on info encoded in ids is the watcher logic in state [13:27] dimitern, I think it's fine for a tag to be unique only within the scope of a given environment [13:27] fwereade_, yeah, they report local ids [13:27] not docIDs [13:27] TheMue, fwereade_, ok, as I need to go out for a while, can we agree on "ipaddress-" for the tag format and live with it? [13:27] dimitern: so in our case it would be "ipaddress-"? [13:27] h5 [13:28] yeah [13:28] dimitern, can we really guarantee uniqueness per environment there? [13:29] dimitern, it's causing my "changes stakeholders will ask for" spidey sense to tingle [13:29] hmm, in an env with multiple subnets sharing the same addresses? possible? [13:29] TheMue, I think it's *currently* specced that subnets can't overlap [13:30] fwereade_, yes we can as you can only use such tags once you've logged into a given environment [13:30] TheMue, dimitern: I just feel like that's an unreasonable restriction in a complex network environment [13:31] fwereade_, we're only talking about how to access ipaddress entities we already have in the db for the current env [13:31] TheMue, dimitern: why can't isolated subnets use overlapping ranges? [13:31] fwereade_: but can an environment have multiple disjunct subnets, having the same address range [13:31] fwereade_, isolated like in a separate space? [13:32] dimitern, yes [13:32] fwereade_, TheMue, subnet CIDRs for a given space should NOT overlap [13:32] dimitern, I know that juju will refuse to allow it [13:32] as soon as you get >1 network associated with a machine you can get up to all sorts of fun. [13:32] dimitern: should or must? [13:32] fwereade_, TheMue, that's the whole point of the subnets being equal within a space [13:33] dimitern, within a single space, yes, you don't want subnets to overlap [13:33] TheMue, fair enough - it must not overlap [13:34] dimitern: ok, so we ensure that we can have multiple subnets but even then each IP is only used once [13:34] fwereade_, the case you're describing sounds like having a machine in two separate, disjoint spaces [13:34] dimitern, but if you're modelling two spaces, that are completely distinct, and happen to use overlapping ranges, juju will fail [13:34] Bug #1465695 changed: StorageAddSuite setup fails [13:35] dimitern: so in this case using the address value as part of the tag seems to be fine [13:35] Bug #1466087 opened: TestAllInstances fails [13:35] dimitern, right? [13:35] fwereade_, now it won't as that's not yet enforced, but I think it should anyway [13:36] dimitern, you're saying that any organisation that has more than one network using 10.0. is Doing It Wrong? ;p [13:36] fwereade_, the problem is with a given machine's single routing table overlapping ranges will lead to issues with routing [13:36] dimitern, I don't care about machines [13:36] dimitern, I care about tags being unique [13:37] *lol* [13:37] fwereade_, you can't have a machine with 2 NICs, each on the same overlapping (even not completely) rfc1918 subnets and expect it to work without extra care (static routes, metrics, etc.) [13:38] Bug #1466087 changed: TestAllInstances fails [13:38] fwereade_, right, what I'm proposing is not worse that what we have already in the face of multiple envs in the same state db [13:38] dimitern: two machines, one nic each, one ip each, each in a different subnet in the same env, both having the same IP. possible? [13:38] TheMue, thank you :) [13:38] fwereade_, machine tags (or others) are only unique within their env [13:38] dimitern, I know [13:39] dimitern, I'm saying address tags should too [13:39] dimitern, you seem to either be saying that they shouldn't, or that there are whole classes of networks we shoould refuse to model because it's a bit inconvenient re tag format [13:39] I don't believe we should model all possible cases like this [13:40] what's the use of having enclaves of machines like that in the same env? [13:40] dimitern, fwereade_, TheMue: https://docs.google.com/a/canonical.com/drawings/d/1UAZEYOi1LcBgDyokAdlJAFQuDxpOL98DeHpFT-q1HbU/edit?usp=sharing [13:40] I think this is easier with diagrams! [13:41] dooferlad, good diagram, thank you [13:41] dimitern: one enclave for one business service backend, one for another, and a public one as a frontend and routing between them (naive idea) [13:41] dooferlad, great, thanks [13:41] dimitern, I reject the notion that we should bake the impossibility of encoding that topology into juju forever [13:41] dimitern, not doig it today is one thinng [13:41] * dimitern needs to think about this [13:41] dimitern, picking a tag format that renders it really damn hard to fix is another [13:42] dooferlad: yeah, good one [13:42] fwereade_, I totally get your point and agree the described scenario is not well modeled with what i'm suggesting [13:42] dimitern, "address--" might address my concerns but I'm still a bit iffy there too [13:42] fwereade_, but I seem to recall in the model somewhere we said we won't allow that [13:43] dimitern, yeah [13:43] dimitern, I agree that it's fine not to do that yet [13:44] fwereade_: dimitern: we always used meaningless IDs, like UUIDs, to make a record unique while the rest of the data can be double. if that's not wanted additional constraints help. [13:45] dimitern, but picking a tag format that makes it harder to do in the future is a decision that's harder to undo than just "let's not do it this week/cycle/year" [13:45] fwereade_: to the ID of an IP address simply should be a UUID, the tag "ipaddress-" [13:45] fwereade_, agreed [13:45] TheMue, yeah, I'm totally comfortable with (not to mention keen on) opaque primary keys [13:45] fwereade_: dimitern: so it doesn't care how we model networks and it is still identifyable [13:46] fwereade_, TheMue, let's go with "ipaddress--" the "space" part can be safely hardcoded to "default" I think [13:46] at least initially [13:47] Bug #1466087 opened: TestAllInstances fails [13:48] I don't know what we're talking about, but I'm always +1 on UUID for primary IDs over some concatenated mess. [13:48] dooferlad, have a look at http://reports.vapour.ws/releases/2784/job/run-unit-tests-precise-amd64/attempt/2970 btw - it seems devices-api-maas needs your fixes too [13:48] dimitern, yeah, I think we do need a bit more justification for address-- [13:49] dimitern, what are the advantages over address? [13:49] fwereade_, 1) a lot easier to implement, 2) more readable, 3) just as unique .. come to mind [13:49] fwereade_: IMHO only better human readable, but that's all [13:50] dimitern: why easier to implement? [13:50] TheMue, also much easier to follow in the logs when debugging [13:50] if you have to read IDs, you're doing something wrong [13:50] hehe [13:50] natefinch, +1 [13:51] dimitern: I would log myAddress.String() giving a good readable string representation of my address [13:51] TheMue, because what fwereade_ is suggesting means 1) add the hashed compound id to ipaddressesDoc, 2) make sure we set and update it as needed, 3) upgrade step to set it on existing ipaddressDocs [13:52] I'm very good at following logs like that and figuring out what happened :P [13:52] dimitern: sure, we act on existing data. [13:53] and almost forgot - 4) a lot shorted in 90% of the cases for both IPv4 and IPv6 values [13:53] shorter [13:54] * dimitern really needs to go now, might be back later [13:55] * TheMue has to think about it too, but still feels a bit better with UUIDs [13:56] dimitern, you don't *have* to use a uuid, remember [13:56] dimitern, other formats can be both unique and opaque [13:59] Bug #1466100 opened: TestManageEnvironServesAPI fails [14:03] fwereade_: and even in full printed form (not as [16]byte) a UUID has 36 bytes. need a lot of addresses then to make a database sweat. [14:05] * TheMue is afk to swap location, bbiab [14:05] TheMue, indeed, "uuids are too big" is not generally an argument that impresses me much :) [14:26] dooferlad, I will be a few minutes late [14:26] but I will be there [14:29] dpb1: we can't repro your bug https://bugs.launchpad.net/juju-core/+bug/1465307 have you found a way to reproduce it? [14:29] Bug #1465307: 1.24.0: Lots of "agent is lost, sorry!" messages [14:30] natefinch: sorry, I worked on it in the afternoon that day and I got close but not there. I'm being pulled on something else. I'll circle back as soon as I can. For now, I totally understand the "incomplete" status on there. thanks. [14:36] dpb1: cool, just wanted to make sure we were on the same page. [14:37] ericsnow: I was wrong about that rsyslog bug, I do understand why it happened, though not precisely the best way to fix it [14:37] natefinch: k [14:37] ericsnow: it was my fault - I changed where the rsysog certificate is (as stated by Menno in the comments of the bug). [14:37] natefinch: is it the way menn0 described it [14:37] yep [14:37] natefinch: k [14:37] natefinch: I'll look into the fix [14:38] natefinch: moving card for bug 1465307 to "DONE" [14:38] Bug #1465307: 1.24.0: Lots of "agent is lost, sorry!" messages [14:38] katco: huzzah [14:38] natefinch: ty for following up [14:42] katco: can you bring up the "process for proposing a new repo in github.com/juju/" in the leads meeting tonight? I'm hoping we can just post the process on a page on the wiki. [14:43] natefinch: sure thing [14:43] katco: thanks [14:47] gsamfira: hey, were you looking at bug 1464470? [14:47] Bug #1464470: A subordinate charm hook scheduled to run(but waiting for the principal charm hook to release the lock) goes to an error state after the principal charm hook triggers a reboot. <1.24> <1.25> 1.24:Triaged> [14:48] natefinch: do you have the revision of the change you made for the location of the certificate? [14:57] ericsnow: I can find it [14:58] natefinch: thanks [14:58] ericsnow: https://github.com/juju/juju/commit/3a6ebe0b6a24a8c5f80a7dbcb78937755540839e [15:13] ericsnow: were you thinking github PR or reviewboard link? [15:14] jw4: either is fine, though I think putting the RB link also more clearly sends the message that the patch was reviewed :) [15:14] ericsnow: cool :) [15:17] ericsnow: got a minute to talk about the plugin package? [15:17] natefinch: sure [15:17] natefinch: moonstone? [15:17] ericsnow: ya [15:19] dimitern: ping [15:19] dimitern: currently, the network interface information returned by PrepareContainerInterfaceInfo populates MACAddress with the NIC of the interface it allocated the address on [15:19] dimitern: i.e. the host NIC MAC [15:19] dimitern: so my change is a semantic change here. [15:20] dimitern: as the method is documented to return "information for configuring networking on a container" I think that's ok [15:20] dimitern: we always overwrite the MAC address anyway [15:20] dimitern: but it might be slightly surprising to someone reading the code [15:21] TheMue/voidspace: could you take a quick look at this fix: https://github.com/dooferlad/juju/commit/aeb9acf964cbdb04abd957f49e2303a65cc5d240 [15:21] The rest of the change (http://reviews.vapour.ws/r/1941) has got a ship-it, but this caused the test bot to fail [15:21] dooferlad: looking [15:21] dooferlad: what was the failure? [15:22] The test is looking for a particular config change. The problem is the initial set up can generate a change on the channel it is watching. [15:22] dooferlad: is this because the code is running in a goroutine and you don't want to use an assert? [15:22] no, an assert would be fine [15:23] ah ok [15:23] dooferlad: but you need to repeat the read on cfgObserver [15:23] dooferlad: looks good to me [15:24] voidspace: yea, just need to keep reading cfgObserver until the expected change arrives, or time out. [15:24] yep, LGTM [15:24] voidspace: thanks. Will push the go button again. [15:24] voidspace: and port to trunk. [15:49] voidspace: could you take a look at that same change, just this time is is a review for trunk. No changes vs the other branch. [15:49] http://reviews.vapour.ws/r/1958/ [15:50] TheMue: since voidspace is offline, could you take a look ^^ [15:50] dooferlad: LGTM [15:51] voidspace: how I love IRC clients. You are apparently both offline and online. [15:54] voidspace: once that lands you probably want the changes in devices-api-maas. Hopefully it will result in less $$stupidtests$$ [15:54] voidspace: yell if you want a hand [15:59] dooferlad: cool, thanks [16:00] dooferlad: heh, my IP address changed just at that instance [16:00] dooferlad: so I was briefly offline and reconnected === natefinch_ is now known as natefinch === liam_ is now known as Guest13658 [16:47] Bug #1466152 opened: [RFE] log locks and other relevant information when jujud receives SIGUSR1 [17:26] natefinch: just took a look at deputy. nice idea. you should probably document that Timeout isn't compatible with StdoutPipe or StdinPipe [17:27] rogpeppe1: ahh yeah good point [17:29] rogpeppe1: ironically, we're probably not going to be using it for what I wrote it for, but I figured we run enough executables, we might want a consistent way to give them a timeout.... and get better errors than we usually get running commands (exit code 1 or whatever it is) [17:29] natefinch: yeah, i think it's a reasonable idea [17:30] rogpeppe1: I'm sure it needs some work, it's just an initial draft. [17:32] natefinch: tbh i'm not that keen on the Option thing. it's cute, but i'd actually prefer to see an explicit options struct [17:34] natefinch: also, i think you've got a potential race condition [17:35] natefinch: not sure of a decent way to work around it though [17:36] natefinch: i think you probably need to allow only one of either stderr or stdout as error [17:40] rogpeppe1: I'd thought about what happens if you use both stderr and stdout as errors.... allowing only one is probably better [17:40] rogpeppe1: and you may be right about the option thing. [17:47] Bug #1466167 opened: debug-hooks no longer works with 1.24-beta6 [18:36] wwitzel3: ericsnow: natefinch: do you guys need anything? [18:37] katco: I'm good for now [18:42] ericsnow: nope, I'm good [18:49] katco: a new nasal passage [18:50] wwitzel3: hm. [18:50] wwitzel3: i have a hammer, a phillips screw driver, and a lawyer's phone number. [18:51] katco: no duct tape? sounds sketchy [18:52] wwitzel3: i assure you, the screw driver is the highest quality stainless steel [18:52] wwitzel3: it shouldn't stain my screwdriver at all [18:54] well in that case ... [19:02] wwitzel3: runny nose? === kadams54 is now known as kadams54-away === kadams54-away is now known as kadams54 === kadams54 is now known as kadams54-away === kadams54-away is now known as kadams54 === kadams54 is now known as kadams54-away === kadams54-away is now known as kadams54 === kadams54 is now known as kadams54-away [21:46] anastasiamac: ping [22:31] * perrito666 wonders what he did this time to have reviewboard ignore him [22:39] katco: pong? [22:39] anastasiamac: hey got time for a chat? [22:40] katco: sure. tanzanite? [22:40] anastasiamac: https://plus.google.com/hangouts/_/canonical.com/moonstone?authuser=1 [22:40] anastasiamac: don't have the link for tanzanite anymore =/ [22:40] omw [22:40] katco: that is cruel [22:48] katco, word on the street is anastasiamac and wallyworld will be looking for tanzanite when they are next in Capetown SA [22:48] katco, you will have to one up them by getting moonstone in Missouri [22:50] alexisb: you know, there are easier way to do things :p http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xtanzanite.TRS0&_nkw=tanzanite&_sacat=0 [22:52] alexisb: lol i'll have to do that :) [22:52] alexisb: all jokes aside, i find moonstones to be prettier than tanzanite :) [22:53] alexisb: wallyworld will be looking for tanzanite in SA. anastasiamac will twidlling her thumbs in Aus :D [22:53] katco: combine the two and u'll get an even better value :D [22:54] anastasiamac: haha :D [22:54] ebay? you'll end up buying purple glass [22:54] a jeweller friend of mine has so many customers who bring in rings bought off ebay that are just straight out fakes [22:55] wallyworld: better? http://www.amazon.com/s?ie=UTF8&field-keywords=tanzanite&index=blended&link_code=qs&tag=wwwcanoniccom-20 [22:55] yes :-) [22:56] ow, interesting, I had not noticed the tag= part [22:57] did you use a scope? [22:57] wallyworld: nope, my browser amaz [22:58] my browser being chrome [22:59] that quick search might be rigged ot do the same === kadams54 is now known as kadams54-away [23:30] alexisb: running a bit late...will ping after standup.. [23:30] anastasiamac, ack [23:33] alexisb: m grabbing a drink (& coffeeeee) and will b there! tyvm for waiting :D [23:55] wallyworld: do you have a few minutes to talk about leases? [23:57] axw: you around? [23:59] thumper: give me 5? [23:59] ack