[01:25] thumper, waigani: I just did a "juju destroy-environment local --yes --force" to 2 env JES both of which had new LXC containers coming up and the containers were left behind [01:26] known limitation until the new env descruction stuff happens? [01:26] hmmm... [01:26] menn0: known... [01:26] menn0: thanks for the heads up, I'll add it to my things to manually test [01:26] menn0: I can explain... [01:26] not surprising [01:27] which is why we want to tell people to use system destroy [01:27] and environment destroy [01:27] not destroy-environment [01:27] cool [01:27] just making sure it was a known thing [01:28] I'll explain when I'm not shoveling food in my mouth [01:29] I can pretty much guess where the problem is so no rush [01:42] thumper: i thought I just finished the state pool stuff but it seems i've made the state server panicky [01:42] thumper: I think I know why though [01:49] menn0: did you want to hop on a call to hear why destroy-environment --force is evil? [01:50] thumper: sure [01:50] menn0, waigani: https://plus.google.com/hangouts/_/canonical.com/evil [02:11] thumper: http://reviews.vapour.ws/r/2250/, cheers [02:15] thumper: "destroy-environment --force" is eveil because it circumvents blocks, leaves resources behind, and users report bugs that juju did exactly as they told it to do? [02:15] for JES it is evil because it doesn't contact the api server, and just destroys the system environment, leaving all hosted environments running but headless [02:16] * thumper goes to make a coffee urgently [02:16] thumper: ouch, but --force also circumvents the api server, which is why my blocks can be ignored [02:23] sinzui: yes, it doesn't even try [02:23] sinzui: the new system destroy and environment destroy commands do try [02:24] thumper: hurray for sanity [03:13] thumper: if you have time: http://reviews.vapour.ws/r/2445/ [03:13] thumper: i'm really happy with how this worked out [03:13] * thumper looks [03:30] menn0: mostly good, just concerned about reordering the defer calls [03:31] thumper: hmmm I wasn't intending on reordering them [03:31] * menn0 checks [03:32] you moved them all into a single function that is deferred [03:32] but then still call defer on each of the internals [03:32] and you changed the order [03:32] effectively reorering [03:32] but defers run inside out [03:32] either reorder and don't defer [03:32] or defer [03:33] yes [03:33] * menn0 does a quick check on play [03:33] happy to talk through [03:34] thumper: I think I did the right thing: http://play.golang.org/p/fzFmAHa86q [03:34] sorry [03:34] hang on [03:35] thumper: this one: http://play.golang.org/p/S4ehts8JxY [03:36] menn0: but you did version three in http://play.golang.org/p/2d9vMgldxc [03:36] thumper: I see what I screwed up [03:36] all the defers in the new func shouldn't be there [03:36] i'm an idiot [03:36] right [03:36] thumper: my eyes were not seeing the inner defers [03:37] man I was trying to make that code clearer and unintentionally made it much worse [03:37] :) [03:39] thumper: i saw the bit about env.Life ! state.Alive too [03:39] i'll fix that in a followup PR [03:39] it's not really related to this change [03:40] I think the condition should still be there, but as: else if env.Life() == state.Dead [03:41] hmmm... [03:41] nope [03:42] because we may want to get logs from a dead environment [03:42] prior to everything being deleted some time later [03:42] thumper: hmm ok [03:46] the dying / dead aspects should stop us adding things to the environment [03:46] but we need to be able to view / introspect it while it is dying [03:46] and after it is dead [03:46] * thumper looks in the morgue [03:46] thumper: but remmeber we've removed most of the assertions on env life [03:47] thumper: I guess the critical places, like adding a machine still check [03:47] * menn0 wishes you could edit past IRC comments :) [03:49] * menn0 pushes the StatePool PR [03:50] right [03:50] dead / dying environments can't get new machines or services [03:50] everything else needs a machine or service [03:50] can't get storage either i'm pretty sure [03:50] although in the coming future we should also check environment level network spaces and storage [03:50] * thumper nods [03:51] * thumper has to head into town briefly [03:51] bbl to review waigani's branch [03:51] * menn0 has to swap his UK driver's license for a NZ one [03:53] gee menn0 [03:53] jumping the merge gun [03:53] :) [03:53] * thumper does a post hoc shipit [03:53] thumper: sorry... missed there wasn't one there already [05:18] thumper: if you have time: http://reviews.vapour.ws/r/2446/ [08:52] dooferlad, TheMue, morning [08:52] dimitern: hello! [08:52] dooferlad, TheMue, can you have a look at http://reviews.vapour.ws/r/2448/ please? [08:53] dimitern: on it [08:53] dooferlad, cheers [08:54] dimitern: we really need to get better at splitting cosmetic changes from functional changes :-| [08:54] dimitern: or get a better diff viewer! [08:55] dooferlad, yeah, when there's no deadline to catch :) [08:55] dimitern: :-) [08:59] dooferlad, also, if you can give it a spin on EC2 - bootstrap, space list, space create, subnet add, subnet list (with juju subnet -- debug .. if needed), subnet add with CIDR and/or ProviderId [09:00] dooferlad, --constraints spaces= does not cause errors in my tests, but obviously doesn't yet respect them [09:01] dimitern, TheMue: hangout [09:02] dooferlad, omw, getting coffee [09:04] dooferlad: omw, got coffee [09:52] dimitern: do you have a moment for EC2 testing? [09:52] dooferlad, sure [09:53] dimitern: https://ide.c9.io/dooferlad/juju [09:53] TheMue: ^^ if you want to join in [09:53] dooferlad: having phone, come in a few moments [09:54] dooferlad, omw [10:47] dimitern: btw, would you like a feature flag for the spaces support? like for address allocation? that way we could turn it on and off in tests with dummy. [10:48] TheMue, nope, we need another way to turn it on and off - e.g. having a "broken" method is one way [10:49] dimitern: ok [10:49] TheMue, or a flag settable by calling dummy.SetSupportsSpaces(bool) [10:52] dimitern: a direct method needs that you have direct access to the provider. often it is hidden deeply in our embedded tests. so I prefer the "broken" approach [10:54] TheMue, I'm fine with either - it's the same effort I think [10:55] dimitern: in first implementation yes, in tests I really liked the indirect approach - here with feature flag, but broken is fine too - during the tests [12:54] axw, https://github.com/juju/juju/pull/3072/files#diff-aa7f5128113461cdc1ee5c2335a09d6cR52 [13:26] ericsnow: I replied to your requests at http://reviews.vapour.ws/r/2416/ could you please take another look? [13:36] dimitern: master wasn't merged into net-cli. your branch failed. Master now has singnigicant divergence and we don't know if it is good. [13:37] dimitern: I am not sure what to recommend. test master and hope for a pass, then test the updated net-cli to get a pass? [13:39] finally got my code working... now to remove 100 printfs [13:47] sinzui, we merged master this morning [13:48] sinzui, and I have a PR which hopefully solves pingerSuite.TestAgentConnectionDelaysShutdownWithPing and MachineSuite.TestManageEnvironRunsInstancePoller [13:48] dimitern: excellent. master just started testing. I will make net-cli the most important branch to test next. I am setting CI to wait 8 hours if there is a failure to give people time to investigate and retry failures cause by subtrates [13:49] sinzui, awesome [13:56] dooferlad, TheMue, please have a look http://reviews.vapour.ws/r/2454/ [13:57] dimitern: yep [13:57] dimitern: on it [13:57] cheers guys! [13:59] ericsnow, natefinch, katco: hangout working for you guys? [13:59] was in one half an hour ago [13:59] wwitzel3: yep [14:00] ericsnow: moonstone working fine [14:00] wwitzel3: make sure it's having you join with your canonical account [14:02] dimitern: reviewed [14:08] TheMue, ta! [14:09] dimitern: done [14:09] cmars: is this what I think it is? http://reviews.vapour.ws/r/2453 [14:10] ericsnow, yep [14:10] cmars: cool! [14:10] :) [14:11] dooferlad, thanks! [14:14] cmars: at least it got reviewed [14:20] ericsnow, we're going to re-review it in greater detail next week. important to get it landed for now to get CI testing, but it won't be glossed over. all other PRs have been reviewed carefully [14:20] cmars: oh, I don't doubt that :) [14:21] cmars: thanks for getting it done! [14:21] ericsnow, wasn't me, really. axw & wallyworld are the heroes [14:23] cmars: ah, right; commit history FTW :) [14:25] TheMue, I'm not sure what's your last comment about? adding a comment in the patched function checking the result of newWorker? [14:26] dimitern: only adding comments I missed when creating this test. that FinishedWorker means the Addresser doesn't run while not FinishedWorker means it's the Addresser (sadly not direct testable) [14:27] dimitern: but it's only maintenance cosmetic, for later [14:28] dimitern: maybe we should add a worker.HasFinished(w worker.Worker) bool for it soon, when those tests get more. will keep it in mind for the Firewaller [14:30] TheMue, I see, ok I'll add comments about the meaning of a FinishedWorker as a result [14:30] dooferlad, about your comment [14:30] dooferlad, I don't believe the issue is related to clock time [14:31] dimitern: oh, I thought you were increasing the timeout [14:34] dooferlad, yeah, but your comment caused me to think of a different approach [14:34] dooferlad, using attempt loops we don't have to sleep explicitly [14:52] frankban: I'm reading through your responses to my review right now :) [14:52] ericsnow: ty! [15:35] Hey all [15:36] howdy niemeyer_ [15:36] Do we have any envs with MongoDB deployed on IPv6? [15:37] there was talk about that on the mailing list. I think the answer is that it needs work, i.e. not really working currently, though I don't know the details. [15:54] cmars: hey, are you around [15:55] frankban: thanks for the thoughtful responses to my review comments [15:56] frankban: I see where you're coming from now [15:58] ericsnow: cool, thank you, reading your review [15:59] frankban: BTW, good call on making the JSON field tag "yaml" :) [16:03] frankban: my only remaining concern is about adding the "guiserver" methods to the "public" API facade [16:05] ericsnow: yeah I was looking at that [16:05] ericsnow: the GUI is really just a user client, and I am not sure about having a separate facade for the GUI because the GUI basically uses all the Client methods already (including the mega-watcher) [16:06] ericsnow: actually I think the GUI is the most used juju API client after juju itself ;-) [16:06] frankban: :) [16:07] frankban: I think it would be good to at least have methods like GetBundleChanges on a separate facade [16:07] ericsnow: so the GUI is JS connecting the ws, it needs the user to authenticate and all the endpoint it uses are in the client facade (excpet for the initial admin.login one) [16:07] frankban: ah [16:08] frankban: that's fine [16:08] ericsnow: so basically like this the change is transparent, the GUI connects and sends requests over the ws, and GetBundleChanges is one request like many others (ServiceDeploy etc.) [16:09] frankban: so one goal is to minimize changes to the GUI client code? [16:10] ericsnow: yes, and we can adjust things later if the amount of GUI specific endpoints increases, but I don;t believe so [16:10] frankban: using multiple facades on the same WS should be fine, no? [16:10] frankban: k [16:10] ericsnow: thanks [16:12] frankban: I still think there should be a bit more discussion (on juju-dev) about where methods like GetBundleChanges should live in the API [16:13] frankban: but moving the code to a more appropriate place later (if needed) wouldn't be hard [16:13] ericsnow: I agree, but consider this is merging into a feature branch, I think we will be able to introduce these changes gradually, and rick_h_ is already working on this [16:13] frankban: how urgent is it that GetBundleChanges land? Could it wait a few days? [16:13] frankban: oh, duh [16:13] ericsnow: this is not landing in trunk [16:14] frankban: feature branch :) [16:14] frankban: I'll give you a ship-it but encourage you to at least ask jam and fwereade about it :) [16:15] frankban: oh, and there are some missing tests [16:15] ericsnow: thanks! yes this will be a long running branch and with rick_h_ we are already working on getting people aware of our goals and the changes to be made for the embedded gui story [16:15] ericsnow: which ones? back to reading the review [16:15] ericsnow: there's a spec with this work out to wallyworld and jam atm [16:16] ericsnow: we're waiting on feedback but with holidays and such we're moving forward with the feature branch with the caveat that things will be tweaked based on feedback [16:16] rick_h_: cool! [16:16] ericsnow: as you mention, moving the endpoint isn't really going to make/break anything here. [16:16] ericsnow: https://docs.google.com/document/d/1zZY0a-dby-VnrBXaoFARIN8Mj6pdXLeZzTXmH0mRUik/edit in case it helps at all or you're curious [16:16] rick_h_: yep :) [16:17] ericsnow: but we're definitely eager for core folks to know/udnersteand what's up and where things are headed as we want to make sure we're doing thigns by the book, that your folks feel comfy with fixes that might be required later/etc. [16:18] ericsnow: so please feel free to push back on anything you would to another core team [16:18] rick_h_: sounds good; I'll be sure to read through the spec [16:18] ericsnow: ty, any feedback is welcome. I ran thumper through it last night [16:18] rick_h_: you can count on me to speak up :) [16:18] ericsnow: and we look forward to the other when they're back on duty [16:18] :) [16:18] ericsnow: GetBundleChanges is tested in apiserver/client/bundles_test.go [16:20] frankban: hmm, we're trying to move away from full-stack tests like that [16:20] * ericsnow looks at tests for other API methods (on server and client) [16:20] ericsnow: thanks [16:23] frankban: blech, our existing tests aren't very good examples :/ [16:23] :-/ [16:24] frankban: for an example of unit-ish tests see apiserver/backups and api/backups [16:25] frankban: "feature" tests (effectively integration tests) live in the top-level featuretests package [16:26] frankban: we're making an effort to improve our approach to testing in core which is why I'm bringing all this up [16:27] ericsnow: sure, I made a note and I'll take a look on Monday [16:27] frankban: coolio [16:27] ericsnow: thanks and have a nice weekend [16:28] frankban: you too and thanks for working on this! [19:15] ericsnow: this id/name thing is killing me [19:15] natefinch: how so? [19:17] ericsnow: just the fact that sometimes we munge the name/id and sometimes we don't.... and so I have to know exactly when to munge the name/id to match what's stored in whichever map [19:17] natefinch: we should always be identifying them by the full ID [19:18] natefinch: where in particular are we not? [19:19] ericsnow: but what is the full ID and where do I get it from? This is the problem I have with untrack. So the current problem is getting the test infrastructure to do the right thing when I tell it to untrack.... which is actually kind of a problem in itself that we have logic in the test infrastructure [19:20] ericsnow: like stubAPIClient [19:21] ericsnow: https://github.com/natefinch/juju/blob/untrack-cmd/process/context/base_test.go#L287 [19:21] natefinch: the user should have passed in the full ID (or the name, by which we look up the full ID) [19:22] ericsnow: the user doesn't know what the full ID is, since that's a composed thing which we create, isn't it? They know the name... I don't think they can possibly be expected to know anything else [19:23] natefinch: that's fine; we just have to do the lookup for them [19:24] ericsnow: my point is... the fact that we're doing all this logic stuff in stubAPIClient is bad. We're duplicating production code logic, and relying on this test harness to have the same implementation. [19:25] natefinch: the API client shouldn't be doing any of that lookup [19:25] natefinch: I thought we agreed that we would hold off on that part [19:25] natefinch: i.e. the API client should always expect full IDs [19:26] ericsnow: I'm talking about this - https://github.com/natefinch/juju/blob/untrack-cmd/process/context/base_test.go#L201 [19:26] ericsnow: that's logic that is duplicating what the real apiclient would be doing [19:29] natefinch: setNew is just a convenience function to inject values into the API [19:30] natefinch: it's not part of the stubbed API implementation [19:33] ericsnow: Ahh, I was missing a flush in there... I didn't expect that to make a difference, but it does. Sorry. [19:34] natefinch: np :) [20:37] ok, everything works... now to merge wwitzel3's rename commit :/ [20:44] oh this is gonna suck [20:45] evidently git is not smart enough to merge with .... how is that not something it can just do automatically? [20:45] "oh hey, the old file just got moved, so I'll merge the changes into the new location" :/ [20:46] natefinch: yeah, I just went through that pain yesterday [20:48] google/stack overflow to the rescue.... git rebase feature-proc-mgmt -X rename-threshold=5% [20:49] ....mostly [21:09] can i get a rubber-stamp on http://reviews.vapour.ws/r/2455/? this exact patch has already been landed in 1.24 [21:16] katco: done [21:16] perrito666: ty sir [21:16] since I reviewed the other one I believe you :) [21:17] haha [21:23] I must say, buying an electric toaster is a life changing decision, I no longer forget and burn my toasts [21:24] (which mostly happens while reading this channel or reading code of juju)