[00:10] http://paste.ubuntu.com/1424439/ [00:10] ^ improvement ? [02:01] ffs - tuesday is leaf blowing day in my block of units [02:01] 3 fucking hours it takes the gardener [02:01] the place is honestly not that big [06:25] Morning [06:28] morning / evening [07:40] morning :) [07:41] anyone up for a review? https://codereview.appspot.com/6924043/ [07:45] dimitern: Morning, will take a look after I've handled the review I've got by fwereade_ [07:47] TheMue_: thanks! [08:11] TheMue_, dimitern, davechen1y, fwereade_, mramm: morning! [08:12] rogpeppe1: Morning. [08:23] rogpeppe1: morning! [08:25] rogpeppe1: you too, wanna take a look? https://codereview.appspot.com/6924043/ [08:25] dimitern: will do [08:25] rogpeppe1: thanks! [08:49] morning everyone -- dropped laura at school, busses were somewhat unhelpful [08:52] fwereade_: morning [09:00] rogpeppe1, TheMue_, I would appreciate comments on https://codereview.appspot.com/6906046/ which has been out for a few days [09:00] dimitern, (heyhey) [09:01] fwereade_: Hey, will take a look [09:01] rogpeppe1, TheMue_: "this is awful, there's no way you can do that" is not an unreasonable response, but if you feel that way I would appreciate advice re better approaches to the change [09:01] fwereade_: sorry, i must have missed it, will take a look after i've finished on dimitern's review [09:01] TheMue_, btw, nice work on the firewaller, I'm much more comfortable with it now, I think the unit port initialization is the only major thing I have quibbles about [09:02] rogpeppe1, most of those days have been weekends tbh :) [09:02] fwereade_: Hehe, thx, changed it and now the test breaks. Have to look what I've missed. [09:02] TheMue_, heh, it may be something I've missed [09:03] fwereade_: I'll see, but indeed, thx to your critical review it looks by far better now. [09:09] morning Aram [09:09] hi. [09:09] Aram: morning [09:09] fwereade_: Removing the changes of initializing the unitData.ports and the ports in its watchLoop() with OpenedPorts() lets everything work again. [09:09] Aram: Hiya. [09:31] TheMue_, sorry, missed that message [09:32] TheMue_, would you expand? you're saying the suggestion breaks everything, right? [09:32] fwereade_: NP, just looking for another one so I'll come back to you later. [09:32] TheMue_, I'd like to figure out why if possible :) [09:32] TheMue_, but whenever works for you is fine by me [09:33] fwereade_: Two global tests are breaking when initializing the unitData and its watchLoop ports with unit.OpenedPorts() [09:34] fwereade_: But now I've changed it back and possibly I missed something because a test hangs. So let me figure that out and we can talk about the unit port init again. [09:38] TheMue_, great, just grab me when you feel like it :) [09:39] fwereade_: Yep, will do so. [10:26] rogpeppe1: how is it? [10:26] rogpeppe1: i hope not too bad for a second phase of the http implementation :) [10:26] dimitern: generally good. i'm just finishing writing up a few ideas for how it might be simplified [10:26] rogpeppe1: great! [10:31] dimitern: you've got some comments [10:34] rogpeppe1: thanks [10:34] dimitern: BTW, i forgot to mention, i think your current handler will panic if you give it the url "/v2" [10:36] rogpeppe1: hmm, I left the panic temporarily there for the time being, I'll fix that [10:36] dimitern: no, it'll panic with an out-of-range-index error [10:36] rogpeppe1: I see, ok, I missed that then [10:37] dimitern: but rather than fix it, i suggest using http.ServeMux instead, if you think it's feasible [10:38] rogpeppe1: ok [10:38] rogpeppe1: and about the templating - wouldn't it be confused by the { } in the JSON? That's why I didn't use it - was not sure it'll work [10:39] dimitern: no - it requires {{ }} not { } [10:39] dimitern: hmm, except [10:40] dimitern: well, it might be ok as it is. but you can change the delimiters too [10:40] rogpeppe1: ok, I'll give it a go [10:41] dimitern: see http://golang.org/pkg/text/template/#Template.Delims [10:42] rogpeppe1: 10x, looks promising [10:42] dimitern: ${ }$ maybe? [10:43] rogpeppe1: yeah [10:43] rogpeppe1: could you explain more about what table-based approach you'd use instead of the nested switch statements in handleFlavors?\ [10:44] dimitern: well, i think ServeMux gives you a lot of what you need [10:44] dimitern: that gets rid of one level of the switch [10:44] rogpeppe1: so handleFlavors and handleFlavorsDetail as separate things? [10:44] dimitern: but i don't know if it's appropriate for all the requests you need to handle [10:44] dimitern: yes [10:44] dimitern: but... [10:45] dimitern: not necessarily [10:45] dimitern: only if you think it works out well [10:45] rogpeppe1: ok, I'll try a few solutions to see which one looks best [11:18] Morning all! [11:19] niemeyer: morning! [11:22] fwereade_: you've got a review [11:22] niemeyer: yo! [11:22] rogpeppe1, cheers [11:22] niemeyer, heyhey [11:23] Btw, right now I'm fully on battery + 3G [11:24] I should have a few hours still.. hopefully it'll come back before then [11:24] Huge storm last night [11:35] niemeyer: Hiya, hope no damage at your home. [11:36] TheMue_: Heya! All good here luckily.. [11:36] Only a ton of wind and noise [11:36] incidentally, if anyone feels life a spot of light reading, I'd appreciate a sanity check on the lifecycle stuff I wrote last night [11:36] niemeyer: Phew, I always have much respect for those natural powers. [11:36] and perhaps a discussion on where I should be putting such things long-term [11:37] maybe we do want a doc/ dir? [11:37] fwereade_: I would prefer a google doc. === TheMue_ is now known as TheMue [11:38] fwereade_: Where's that? [11:39] mramm: Has the meeting time shifted again? [11:39] niemeyer, sorry, lp:~fwereade/+junk/juju-braindump [11:39] fwereade_: np, cheers [11:39] niemeyer: I think the tuesday version of the meeting just never got shifted [11:40] perhaps I'm wrong though, it is too early and I have not had my coffee yet this morning [11:40] niemeyer, it has a few bits and pieces I also wrote for evilnick a while back as, er, kinda proto-documentation [11:40] mramm: I thougth we had agreed to 13UTC and 22UTC for the time beeing [11:40] being [11:40] fwereade_: ah, have you updated that? I read through when you first posted it and found it really useful [11:41] mgz, cool :D [11:41] mgz, there's one new document describing lifecycles [11:41] right, and I just shifted it from 12:00 utc to 13:00 [11:41] mgz, it's more a statement of intent than a description of current state, though [11:41] at least that's what I thought I did ... looking again [11:42] fwereade_: I think the way to put that kind of discussion is indeed in a branch, preferably up for review [11:42] mramm: so it's going to be in a bit more than an hour from now, not in 20m? [11:42] yea [11:42] mramm: It's at 12UTC right now [11:43] mramm: in 20 minutes [11:43] niemeyer, fair enough -- I'm just not quite sure where I should be targeting [11:43] I just updated it to be 1 hour from now [11:43] fwereade_: Hmm.. where you should be targeting? [11:43] about 10 minutes ago [11:43] niemeyer, do we want a doc/ directory in juju? [11:43] mramm: Ah, thanks [11:44] I thought your message was in response to that update e-mail [11:44] because it came *right* after I did the update [11:44] very confusing ;) [11:44] correlation does not imply causation [11:44] fwereade_: We already have the sphinx docs somewhere.. we could integrate there, but that seems less important than just being able to discuss the proposal in the first place [11:45] niemeyer, (the other issue is that that branch is definitely not polished and not really quite right for actual documentation -- it's useful, I hope, but not quite something we want to call "official") [11:45] niemeyer, the main point is to capture the stuff that's in my head and maybe not anywhere else [11:45] that kind of doc is still far better than not having any [11:46] niemeyer, still, codereview is indeed a good discussion vector [11:47] fwereade_: That's what we used to call a draft in the old system [11:47] fwereade_: There's no cut-off for drafts [11:48] niemeyer, ok, a proposal for juju-core/doc/draft then? [11:49] fwereade_: Sounds good.. at least that'll give us the ability to comment/respond comfortably [11:49] fwereade_: Even if we later disagree on the end location [11:49] niemeyer, ok, great [11:55] fwereade_: in your comment here (https://codereview.appspot.com/6902070/diff/2001/state/api/serve.go#newcode65), what's your reason for asking for a defer? a simple statement seems fine for that straightforward logic to me. [11:57] fwereade_: (i think that dfc's remark is a red herring - lis.Close can't panic, 'cos we've checked the listener's ok elsewhere, and even if it does, the panic takes out the whole system, so the defer doesn't help at all [11:57] ) [11:58] rogpeppe1, it just feels that little bit more "correct" -- you never know when some tricky sod will recover() :) [11:58] rogpeppe1, I'm easy on that one though [11:58] fwereade_: you do here - it's in a go func() { } ! [11:58] rogpeppe1, ha! good point :) [11:59] rogpeppe1, consider my +1 decremented then :) [11:59] :) [12:02] * niemeyer switches to fast network connection again === niemeyer_ is now known as niemeyer [12:08] heh hey [12:08] can someone send me the hangout code [12:09] I believe it's in one hour. [12:09] the meeting time was for 11pm aud [12:11] perhaps I am mistaken with these things, as I usually am, but right, and I just shifted it from 12:00 utc to 13:00 [12:11] davecheney: it was changed from 12 UTC to 13 UTC just 20m ago [12:12] jesus fuck people, this is importnat [12:12] davecheney: Heya! The meeting was mischeduled 1h too early.. the first one is still at 13UTC as last week [12:13] davecheney: The mistake was in Google Calendar.. it hadn't been fixed since we agreed on the timings last week [12:14] I remember something about a calendar where we put or holidays. [12:14] does anyone else remember that? [12:14] s/or/our/ [12:14] Aram: mramm will know [12:17] Aram: try this http://www.google.com/calendar/embed?src=canonical.com_ia67e1a7hjm1e6s3r2lid9nhs4%40group.calendar.google.com&ctz=Australia/Sydney [12:17] or in canonical google apps, add "Juju Team Calendar" [12:17] thank you sir. [12:18] sorry, I'm in a meeting now [12:20] I'm very sorry that I didn't get the meeting invite updated [12:22] mramm: shit man, i was at a place with an open bar tab [12:22] mramm: s'ok, timezones are hard, no real harm done [12:22] davecheney: I'll buy you something nice, sorry [12:22] ;) [12:26] fwereade_: Your firewaller review is commented, the next propose is in. [12:27] TheMue, cool, I'll take a look [12:27] TheMue: did you see the data race that the race detector found ? [12:27] fwereade_: Cheers. [12:28] davecheney: Yes, and I think it's covered now. The unit watcher loop is started after the service access now. [12:28] TheMue: superb [12:28] davecheney: But I still have to learn how to read the race analysis output. ;) [12:29] TheMue: >> the manual >> http://code.google.com/p/go-wiki/wiki/RaceDetector [12:29] So, quick lunchtime before we'll meet. BIAB. [12:57] mramm: please add me to the hangout, when you make it. [12:58] Aram: I added the hangout link to the meeting invite [13:01] I think I also got everybody added to the invite list [13:01] but if you aren't on the list, the link is in the invite [13:02] Aram: you lose, i'm afraid [13:02] well, meeting is now full [13:02] bzzt [13:02] Aram: don't worry, someone will drop off in a few minutes [13:02] if previous experiences are any guide [13:05] what's the point of two meeting if everyone wants to be in the first one? [13:06] yea [13:06] that's a problem [13:06] but I don't think this will happen regularly [13:06] unless the AU guys are always up at midnight [13:06] didn't happen last week... [13:06] mramm: it won't happen again [13:06] once you fix the meeting invite [13:06] *subtle hint* [13:06] I will also try to dig into the meeting invite thing [13:07] davecheney: is it still wrong? I thought I got it fixed this morning. [13:08] mramm: i can confirm it said 23:00 hours as of 22:00 hours tonight [13:09] well, even if we manage to balance the meetings, I still don't understand the point. I thought we had this meeting so that everyone gets familiar with other team member's work. what's the value in becoming familiar with only half the work from people changing each week? [13:09] or does this meeting have any other purpose? [13:09] davecheney: yea, that was my fault, I thought I updated the meeting in perpetuity, but only ended up updating the one on thursday last week [13:10] then when I checked this morning it was already just after 23:00 :( [13:15] mramm: you have now sent a meeting invite for an hour earlier than the time that it wasn't already [13:15] Juju Team Meeting [13:15] When [13:15] Weekly from 22:00 to 22:25 on Tuesday Eastern Time - Melbourne, Sydney [13:15] hmm. Something strange going on, I will dig in after the meeting. [13:24] Aram: you can join now if you like [13:24] Aram: one free slot :-) [13:25] mramm: sorry, i had to leave [13:25] i was given an unequivical command [13:25] davecheney: no problem [13:26] davecheney: you have to take care of your self, and your relationships -- far more important than this meeting [13:26] mgz: jam: Launchpad bug 1069570 [13:26] bug #1069570 [13:27] no bug bot here it seems [13:27] https://launchpad.net/bugs/1069570 [13:28] Aram: if you are able to reproduce it, I think maas would love to get the feedback on the bug. Essentially Julian/Diogo/Raphael can't reproduce it on their hardware, so need more details. [13:29] I can reproduce it 100% of the time, nothing works because of it. [13:29] I can reproduce it in different deployments. [13:29] virtual and physical. [13:29] Aram: just to check, what version of Ubuntu and Maas are you using? [13:30] jam, dimitern: Now we do [13:30] 12.10, packaged maas. [13:30] niemeyer: good, let's try that: bug 1069570 [13:31] Aram: you may want to try: https://launchpad.net/~maas-maintainers/+archive/daily-qa-ok as they've put forth effort of a bunch of fixes that are planned to be SRU'd to 12.10 [13:31] <_mup_> Bug #1069570: 1 MAC Address, two IPs - DNS is "out of sync" with DHCP leases databases, I think... < https://launchpad.net/bugs/1069570 > [13:31] cool :) [13:31] I will try that version. [13:32] (I'm guessing it may not fix the immediate issue, but it is likely it may fix other bugs that you might run into.) [13:33] Sarah Bartlett [13:48] jam: Let's try to get "juju submit -tarmaq" working somehow [13:48] (or whatever, really) [13:53] niemeyer_: you mean 'lbox submit -tarmac' right? [13:54] jam: Duh, sorry, yes === niemeyer_ is now known as niemeyer [14:15] Lunch time here too [14:15] biab [14:36] TheMue, btw, the big question I meant to ask was about the unitData ports-setting only when the service is exposed [14:37] TheMue, because ISTM that that is just papering over a bug in reconcileGlobal (which doesn't take account of service exposure) and is not in fact correct [14:38] TheMue, because otherwise we have no way to figure out what ports should be opened on a machine whose units have previously opened ports but whose services have just become exposed [14:39] TheMue, sensible? [14:40] fwereade_: Sounds to me as two ways to approach the same situation. [14:41] TheMue, let's go through how it works [14:41] fwereade_: The unitData's ports shall represent which ports the unit wants to have. [14:41] TheMue, machine m has a unit u of service s [14:41] TheMue, u has opened port 80 [14:41] TheMue, s is not exposed [14:42] TheMue, when you collect this data and run initGlobal, u's ud has no ports [14:42] TheMue, u does not change again [14:42] TheMue, but s becomes exposed [14:42] fwereade_: Yes. So when ud is started it doesn't add port 80, but when s is exposed it will get notified. [14:42] TheMue, how do we know to open port 80? [14:42] TheMue, explain the mechanism [14:42] TheMue, it *will* happen, by accident, if you're lucky enough to get an intervening change to u [14:43] fwereade_: Will do, one moment. [14:43] fwereade_: No [14:44] fwereade_: The services exposed flag is watched. [14:44] TheMue, indeed so [14:44] fwereade_: And this change will be sent to the FW loop. [14:44] TheMue, when we get a service change, do we rescan all the units? [14:44] fwereade_: And it retrieves the services units and flushes them ( fw.flushUnits() ). [14:44] TheMue, agreed [14:45] TheMue, how does the unit know what ports are open? [14:48] TheMue, AIUI, the unit should know what ports are open because they're set on the unitData [14:48] TheMue, but actually they're not, because you trashed them ;p [14:48] fwereade_: One moment, have to follow the logic again. [14:49] fwereade_: Where? [14:49] TheMue, lines 165-169 [14:49] TheMue, ok, technically you didn't trash them, you just never got them [14:49] TheMue, the impact is the same :) [14:50] fwereade_: Maybe you should rephrase it. [14:51] TheMue, do you agree that you only set ports on the ud when the service is exposed? [14:53] fwereade_: At start time when it's exposed. And it's meant to react later on the exposed events. I've got to compare it to the old code to see what has got lost. [14:54] TheMue, we can figure it out right here I think [14:54] wouldn't it be nice if the canonical "My Leave" page could at least show leave ordered by date? [14:54] fwereade_: Please give me some moments, I have to see code in parallel. [14:57] TheMue, I honestly think it will be simpler to consider just the code that exists [14:57] fwereade_: Port changes effect the unitData in line 101. [14:58] TheMue, what makes you think you're going to get a ports change before the service exposure change? [14:58] fwereade_: And line 347 collects thos per machine. [14:58] TheMue, yeah, line 347 is great [14:58] TheMue, I'm asking why line 213 isn't doing the same thing [14:59] TheMue, look, it's even simpler [14:59] TheMue, ISTM that the unit ports data is *wrong* if you discard it based on lack of service exposure [15:02] fwereade_: When a UD is started it represents its valad status at this time. If then ports change or its services exposed flag is changing it is reacting, regardles what is first. [15:03] hi [15:03] I'm having problems setting up a juju environment [15:04] locally, using lxc [15:04] after setting up the environments.yaml file and running juju bootstrap, I get: [15:04] error: environment "local" has an unknown provider type "local" [15:05] TheMue, when a UD is created for a unit that has opened port 80 [15:05] TheMue, and the UD's ports field is empty [15:05] TheMue, is this correct? [15:07] fwereade_: Sorry, doesn't sound logical to me. [15:07] TheMue, ok, but that's what you're doing, right? [15:07] fwereade_: You mean a started UD with a U with open port 80 but S is not exposed has no ports? Then yes. [15:08] TheMue, then why does a change in the unit's actual ports update the UD's ports regardless of service exposure? [15:08] TheMue, if you believe this is a bug, you will need to explain how you;re meant to get the open ports for 100k units when the service is exposed :) [15:10] fwereade_: So you think a UD should always represent all open ports and only reconcileXyz or the processing of the servicesses exposed event have to take care? [15:11] TheMue, not exactly [15:13] TheMue, I think that service exposure tracking and unit port tracking are orthogonal [15:13] TheMue, and that the only connections between the two are (1) that service watches are started and stopped based on the existence of at least one unit of that service [15:13] fwereade_: That's what I IMHO said. [15:13] TheMue, and (2) that a units ports only contribute to its machine/environment when the relevant service is exposed [15:15] TheMue, I'm not sure whether I've managed to communicate the problem [15:15] TheMue, is it your position that UDs' ports fields should only contain ports when the service is exposed? [15:16] fwereade_: Sounds like several places in the code you want to be changed again, especially lots of the old logic we began with. [15:16] TheMue, nope, it's all new logic that I'm complaining about [15:16] TheMue, that doesn't fit with the old logic [15:17] fwereade_: OK, then I did get those (1) and (2) wrong, because in the statement before it has been more clear to me. [15:17] TheMue, ok, will you look at line 346? [15:17] fwereade_: And that indeed is only in the new parts. [15:17] TheMue, and explain what it does? [15:18] fwereade_: Got it [15:18] TheMue, (that's old code AFAIK and it looks to me like it's doing the right thing -- for your position to be consistent, that line must I think be redundant) [15:19] TheMue, line 346 is I think in flushMachine -- are we maybe looking at different versions or something? [15:19] fwereade_: No, just said, I got your point. Will change it. [15:20] TheMue, ah sorry -- I misunderstood [15:20] TheMue, ok, I'll send my comments, there are a couple of other minors [16:12] niemeyer: ping [16:15] rogpeppe1: pongus [16:15] niemeyer: wanna chat about the API? [16:15] rogpeppe1: Yeah, G+? [16:15] niemeyer: sounds good, will try and regain ownership of the mac, one mo [16:15] rogpeppe1: COol :) [16:15] I'll grab some coffee meanwhile [16:27] So guys, have to step out, drive to the neighbour town for a concert (Night of the Proms). CU tomorrow. [16:27] fwereade_: The changed CL is in. [16:29] TheMue, cool, looking [16:29] fwereade_: Cheers. [16:30] niemeyer: invite out [16:37] http://paste.ubuntu.com/1425552/ [18:30] it's time for me to go. [18:30] g'night all [18:34] oh yeah, i'll be in late tomorrow morning, as i've got to go into town for an errand === carif_ is now known as carif [19:26] I'm stepping out as well, but will be back later for the evening meeting today [19:26] Well, evening for me anyway :) === niemeyer_ is now known as niemeyer [22:05] Isn't it meeting time? [22:05] davecheney, mramm? [22:07] * davecheney waves [22:07] where is mramm ? [22:11] mramm: pingous [22:18] davecheney: We should meet anyway [22:18] davecheney: I'll fire the chat [22:19] ok [22:19] Everybody is invited [22:20] use the hangout url in the invite? [22:33] davecheney: pong [22:40] mramm: https://plus.google.com/hangouts/_/ff8fbcfc0274167525781f024d8e2131cc3b4972?authuser=1&hl=en