[00:01] fwereade_: around? [00:02] thumper, yeah, kinda [00:02] fwereade_: got time for a 5 min chat? [00:02] fwereade_: got a few quick questions [00:02] thumper, sure, would you start it please? [00:02] yep [00:03] fwereade_: https://plus.google.com/hangouts/_/096d99c30b8876a0dec1471a202468258e010074?authuser=0&hl=en [00:13] thumper, hmm: type StringSet map[string]bool [00:13] thumper, then you can just return StringSet{} [00:13] that doesn't give enough type hiding IMO [00:13] it exposes the map functions that I don't want there [00:14] thumper, fair enough [00:14] thumper, just a thought :) [00:14] thanks [00:16] * thumper afk [00:59] davecheney: just got back [03:13] trying to keep up with core changes in the maas branch is hard - what do we need to fix errors about missing MongoURL on machine config? [03:43] Hi there — anyone else getting this test failure for a nonexistent function, environs.Setenv()? [03:44] environs/tools_test.go:344: undefined: environs.Setenv [03:46] I know what that is... [03:46] but I don't get that error [03:46] Setenv is "exported" in export_test.go (I think) [03:49] thumper: I get it too FWIW [03:49] hmm... I haven't tested with latest trunk [03:49] just yesterday :) [03:50] environs/export_test.go [03:50] var Setenv = setenv [03:51] Yes, the theory works. Having some trouble with the practice. [03:52] * thumper had tests pass [03:52] * thumper pulls latest [03:52] and retries [03:53] ok, it passes for me on raring with tip of trunk [03:53] jtv: are you sure you are using tip? and have no changes? [03:54] I'm not sure of anything, really. I'll see if I can run it in another configuration. [03:55] No change so far... [03:55] Ah! Got it. [03:55] It passes when I run "go test launchpad.net/juju-core/environs" [03:56] —not when I run "go test ./environs" [03:56] So it must be the softlinking again. [03:58] ! [03:59] One test failure because of that difference in all of environs nicely hits the bitter spot: not enough to make you think there's a systemic problem with the way you're running the tests, enough to make you stop and look for problems in the actual code. [03:59] jtv: what do you mean by softlinking? [04:00] My $GOPATH/src/launchpad.net/juju-core is softlinked to a branch. [04:09] jtv: that'll screw you every time [04:09] Yes, especially with the feature branch now. Can't really afford to colocate such different worlds. [04:18] jtv: it's not that then, I don't do that [04:19] jtv: I am using native colo, works very well [04:38] davecheney, let me know if you still hit the 20 compute limit on hp cloud [04:38] arosales: just saw your mail [04:38] will try again [04:38] davecheney, the 200 limit bump should apply to the juju-scale-test project [04:39] but as I learned things can be different than expected :-) [04:39] third times' a charm [04:40] davecheney: []string(nil) is a nil slice? whereas []string{} is an empty slice? [04:40] yes [04:40] hmm... [04:42] ok, my tests pass now [04:42] if you take params(values... string) [04:42] and don't pass anything in [04:42] you get a nil slice, not an empty slice [04:43] yes [04:43] normally this doesn't matter [04:43] but gocheck cares [04:44] davecheney, :-) [04:46] m_3: ping [05:21] * thumper proposes the hacking for the day [05:22] * davecheney listens [05:22] thumper: i'll LGTM your proposal if yuou rename trivial to utils [05:22] or util [05:22] even [05:23] I didn't really want to do that until we agreed on a name :-| [05:23] but I do want to rename trivial [05:23] that's my deal, take it or leave it [05:23] or kill it and move the content [05:24] :) [05:24] I can wait [05:24] i'll also accept that [05:24] I'll propose another branch first thing monday to move / change the trivial package to util(s) [05:25] davecheney: I wanted a set to deal with the bootstrap fake series [05:25] which is now the top of the pipeline [05:25] what is the CL again ? [05:25] CL? [05:26] for what? [05:26] it seems you can't add a prereq for something already proposed [05:26] thumper: nope [05:26] oh well, friday calls, and warsaw's second law says time to stop :) [05:27] fucking prereqs [05:27] davecheney: have a good weekend [05:28] you too mate [06:04] davecheney: hiya [06:05] davecheney: i don't want to rename trivial to utils. we deliberately decided against utils as a name. [06:06] i understand [06:06] i still side with tim [06:06] the only thing worse than having a utils package, is having two of them [06:30] davecheney: i'm ok with a utils *directory* [06:31] davecheney: which is what he's actually done [06:31] davecheney: so utils/trivial, utils/cloudinit, etc [06:31] that is gold plating it [06:31] davecheney: i don't think so [06:32] davecheney: the problem with a "utils" package is it becomes a huge grab-bag of random stuff [06:32] davecheney: but that's not a problem if each thing is in its own package, and we just use the "utils" name to keep the root name space uncluttered [06:33] davecheney: (see my recent comments on https://codereview.appspot.com/8672044/) [06:33] rogpeppe: i feel that encourages not one utils package, but a forrest of them [06:34] davecheney: i think that's ok - each package can be small and simple and targetted to what it needs to do. i suggest reserving the name for leaf dependencies which could be as well implemented outside juju-core. [06:34] davecheney: so nothing that imports juju-core/log, for example [06:35] sure [06:35] we can have different opinions here [06:58] davecheney: ping [07:07] davecheney: pong [07:07] m_3: are you around for a very brief chat? [07:08] m_3: i want to knock up a minimal version of the juju-wait tool and want to make sure i'm doing the right thing first [07:08] rogpeppe: really can't atm... about to board a plane [07:08] m_3: :-) ok! [07:09] yikes... lemme see [07:09] m_3: short story: juju-wait (machine|unit) [07:09] m_3: waits for machine or unit to come into a stable state [07:09] yeah, sorry man... that's just too ambitious atm... I'm trying to see if we're past our account limit on hp in the few minutes before the flight [07:09] m_3: exits with non-zero if it ended in an error state [07:10] m_3: okeydokey [07:10] stable is one of "started, start-error, install-error" or the equiv? [07:10] m_3: yup [07:11] m_3: brings you to a state where you can query status and find out what's actually gone on. [07:11] rogpeppe: and then it'd be nice to actually get the error state easily from there [07:11] rogpeppe: ack right [07:12] m_3: ok, i'll print the error state [07:12] m_3: or perhaps i'll always print the final state [07:12] we can filter status to get the state of the thing we're waiting on, but filters would be cool again at some point [07:12] it'd be great to also get the final state [07:13] but shell exit codes are important [07:13] m_3: agreed. i'm wanting this to take less than an hour though :-) [07:13] haha [07:13] nice [07:13] ok, yeah, and we can totally refine over time [07:13] just being able to wait for a set of states to be reached [07:13] that'll rock [07:13] m_3: juju-wait machine [state....] ? [07:14] m_3: waits for any of the given states to be reached? [07:14] by service instead? [07:14] m_3: ah... [07:14] m_3: that's more interesting. wait for *all* units in the service to reach the given state? [07:15] juju wait mysql "started | start-error" [07:15] or perhaps just a unit [07:15] m_3: just a unit has more obvious semantics [07:15] that's all that's needed right now... `juju wait mysql/0 --state=...` [07:16] something along those lines [07:17] m_3: juju wait mysql/0 'started|.*error' ? [07:17] m_3: i.e. a regexp for the acceptable stages [07:17] states [07:17] davecheney: I started 30 instances from ubuntu@15.185.162.247... might not have connectivity to wait them out and shut them down... please check on it in an hour or so if you can [07:18] davecheney: shut em down either way... then you can play if the numbers are up [07:18] rogpeppe: dude, that syntax would rock [07:18] m_3: cool. that's also more trivial to do. [07:18] rogpeppe: that'd be great... probably all we'd need [07:19] m_3: wonderful, just what i want hear [07:19] m_3: just units for the time being, no machines or other things? [07:19] rogpeppe: right [07:19] m_3: great [07:19] m_3: thanks - that's very helpful! [07:20] rogpeppe: prob not worth the time to work up any other logical expressions of state ( ! & | ) [07:20] rogpeppe: regexps'll be awesome [07:20] m_3: juju wait -v mysql/0 '.*error' [07:20] m_3: wait for anything *but* the given regexp [07:20] m_3: analagous to grep -v [07:21] yup... but really we can add tha tlater [07:21] m_3: ok, cool [07:21] rogpeppe: thanks! [07:42] m_3: hey [07:42] i was going to ask you about building that mongodb package [07:42] but I figured it out from your instruciotns [08:23] rogpeppe, fwereade_: looking for a critical eye on the log deuglifying CL - now with JUJU: and prefixes removed - https://codereview.appspot.com/8674043/ [08:23] dimitern: looking [08:27] dimitern: reviewed [08:28] rogpeppe: cheers [08:29] dimitern, please drop all the JUJU: crap [08:29] dimitern, not just JUJU [08:29] fwereade_: I did, didn't I? [08:29] dimitern, ERROR jujutest blah command failed: BAM! [08:29] dimitern, ERROR command failed: BAM! [08:30] fwereade_: so rogpeppe is suggesting to drop the "command" from there, do you agree? [08:30] fwereade_: but leave the command name [08:30] dimitern, not necessarily -- IMO that's out of scope [08:31] dimitern, no, drop the command name too please [08:31] dimitern, none of the JUJU:... stuff needs to exist [08:31] rogpeppe: agreed? [08:31] dimitern, rogpeppe: "command failed: %v" is a useful final thing to note, right? [08:32] fwereade_: well, which command was that? [08:32] dimitern, the one you just ran [08:32] fwereade_: i suppose so, although the command will print that anyway, i suppose. hmm, but maybe not to the log file [08:32] dimitern, I am not interested in catering to goldfishes ;p [08:32] fwereade_: it was just the redundancy of "jujutest foo" and "command" [08:33] fwereade_: FWIW i think that the final message printed by a failing juju command *should* be prefixed by the name of the command [08:33] fwereade_: but not necessarily the log message [08:33] rogpeppe, and honestly I am not *very* interested in logging the CLI stuff -- I'd hope we'd have an Infof in supercommand, maybe, saying what we're running, and leave it at that [08:34] ok, I'll drop both the "command" and the command name from the log message [08:34] rogpeppe, doesn't sound unreasonable [08:34] fwereade_: yeah. the logging stuff is interesting from a CLI p.o.v. because it's what gets printed for --verbose/debug [08:34] dimitern, please just stick to the task as given ;p [08:34] dimitern: if you drop the command name, you can leave "command" [08:34] rogpeppe, yeh, I see the job of log in a CLI context as feedback not logging IYSWIM [08:35] rogpeppe, dimitern: messing with "command failed" is out of scope [08:35] rogpeppe, dimitern: we discussed this on the lists and crafted it carefully so as not to piss away too much time [08:35] fwereade_: +1 [08:36] fwereade_, rogpeppe: so finally, leave just "ERROR command failed: xyz" instead of "ERROR jujutest blah command failed: xyz" ? [08:36] dimitern: yup [08:42] ok, submitting with that change then [08:48] fwereade_: I need a crash course talk for the constraints implementation for openstack :) [08:52] * TheMue happily discovered that the endpoints in relation keys are sorted, so the tests are not only "green by accident". [08:58] rogpeppe: what happened yesterday with the SetProvisioned() issue? you said you found the problem, but didn't share [08:58] dimitern: i was running into the incompatible tools issue [08:59] dimitern: i was using an older client with uploaded tools [08:59] rogpeppe: so your setup was flawed, not the code? [08:59] dimitern: so it was creating the Machine in mongo without the new fields [08:59] dimitern: so the assertion failed [08:59] dimitern: yes, but... [08:59] rogpeppe: right! I was beginning to get concerned [09:00] dimitern: it was good because it made me aware of a new and quite subtle potential compatibility issue to watch out for [09:00] rogpeppe: incompatible schema? it's not new i think [09:00] fwereade_: have you seen this bug, BTW? https://bugs.launchpad.net/juju-core/+bug/1168154 [09:01] dimitern: it's *how* it's incompatible that's interesting [09:01] dimitern: i had assumed that we could add fields without necessarily being incompatible [09:01] rogpeppe: ah, right :) [09:02] dimitern: and that can be true, but not if we assume that they start life as set. [09:03] rogpeppe: this opens a potentially vast can of worms in the code, where we need to care about fields not being there, when they should be, all kinds of failing asserts.. [09:03] rogpeppe: and i suppose that was the reason for the log file being so huge after 2h? [09:03] dimitern: i think it's only a problem when we're asserting that something is an empty string [09:04] dimitern: yeah, the provisioner was constantly falling over and being restarted [09:05] rogpeppe: how about asserting on non-empty field, which isn't there? [09:05] dimitern: i don't think that's a problem [09:05] rogpeppe: cool [09:05] dimitern: the assertion will fail as it did in our example yesterday [09:06] rogpeppe: but it's essentially the same failure as if the field was there, but with a different value [09:07] dimitern: yes, which is fine. if we assert that field=="value" then we don't care about the difference between field=="" and field==nil. [09:14] fwereade_: you might've missed my comment: have you seen this bug? https://bugs.launchpad.net/juju-core/+bug/1168154 [09:14] fwereade_: it's a bit concerning, but may be trivial to fix [09:15] rogpeppe, responded, I'm not certain there's a juju problem there so much as a charm problem [09:17] fwereade_: and how about a quick chat about openstack constraints? [09:17] fwereade_: ah, interesting. what charm hooks need to run before the unit can be destroyed? [09:18] rogpeppe, broadly speaking, once it starts it expects to pass through install, config-changed, start before top and suicide [09:18] s/top/stop/ [09:18] fwereade_: ah, i'd forgotten there was a stop hook [09:19] dimitern, sure [09:19] dimitern, would you start a hangout please? [09:20] fwereade_: yeah, i think that if install or start fail, we should allow unit removal without resolving the error. [09:21] fwereade_: i wonder if actually we should allow the stop hook to run regardless. [09:21] fwereade_: https://plus.google.com/hangouts/_/143d8b05982bc269466e8bb2402d68e8d0018523?authuser=0&hl=en [09:24] fwereade_: the reason for the charm failing is that it tried to do "apt-get install -y --force-yes python-shell-toolbox" which failed (error: Unable to locate package python-shell-toolbox) [09:57] rogpeppe, sorry, could have sworn I sent a reply [09:58] fwereade_: a reply to the bug? you did. [09:58] rogpeppe, that hook failure sounds like a charm problem rather than a juju problem [09:58] fwereade_: yup [09:58] rogpeppe, ok, so I'm not too bothered there [09:58] fwereade_: but i think it should be possible to destroy a failed unit [09:58] rogpeppe, unless we're deploying it on the wrong series or something and killing it that way? [09:59] fwereade_: because calling "resolved" on it might lead to worse problems [09:59] rogpeppe, like what? [10:00] fwereade_: like subsequent hooks fail or behave badly because the previous hook has failed but been "resolved" without any actual resolution [10:00] rogpeppe, then if you must you can painstakingly `resolved` your way through it to destruction [10:00] fwereade_: also, if i call destroy on a unit that's in an error state, i think it's reasonable to assume that i want to kill it, not let it carry on. [10:01] fwereade_: yeah, i think that's wrong - lots of work for no gain. [10:01] rogpeppe, STRONGLY disagree [10:01] rogpeppe, you might want to kill it but you still have to resolve it and walk it through an orderly shutdown [10:01] rogpeppe, fancy features for skipping that need careful thought [10:02] fwereade_: this is particularly true for install/start hook failures [10:02] fwereade_: i don't mind too much about later failures [10:03] rogpeppe, so long as there's a clear boundary I'm ok extending the window [10:03] fwereade_: if a charm has failed to install, i want to be able to blow it away, and i can't see any particular reason why we shouldn't allow that [10:03] rogpeppe, but not now [10:03] rogpeppe, there is a path to resolution [10:03] rogpeppe, it may suck but it exists [10:03] fwereade_: fair enough [10:05] * fwereade_ bbiab [10:05] fwereade_: we've fixed most of the problems you pointed out… we're landing the MAAS provider feature branch right now. [10:05] All the important ones are fixed. [10:12] fwereade_: feature branch has landed... see the MP for another note, on your comment #2 — if it's weird, it's EC2's kind of weirdness so I don't think it needs changing right now. [10:23] * dimitern bbiab [10:28] * TheMue loves merging conflicts *gnarf* [11:04] rogpeppe, ping [11:04] fwereade_: pong [11:04] assertNothingHappens(c, upgraderDone) [11:04] rogpeppe, in jujud/upgrader_test.go [11:04] fwereade_: i'm just fixing that exact code [11:04] fwereade_: it's crack [11:04] rogpeppe, fucking tell me about it [11:04] fwereade_: it's nearly done [11:05] fwereade_: it was from before i knew that interlinked table-driven tests were an anti-pattern [11:05] rogpeppe, I am a little surprised that you are doing it given that I said I would, though [11:05] fwereade_: i said i'd fix the upgrader tests [11:07] rogpeppe, I said, not sure if you saw: I am a little surprised that you are doing it given that I said I would, though [11:07] [12:05:56] fwereade_: i said i'd fix the upgrader tests [11:07] fwereade: to be compatible with both old and new dev-versions [11:08] fwereade: and you said "yes please" AFAIR [11:08] fwereade: 'cos i knew they'd be a hassle [11:08] rogpeppe, as I recall you said they needed to be fixed, and I said I knew, and that they fit well with what I was currently doing [11:08] fwereade: oh, crossed wires, sorry [11:09] fwereade: how far down the road are you? [11:09] fwereade: i've unfucked the tests in principle; i just need to get them to pass now. [11:09] rogpeppe, I have spent about 12 hours straight unfucking upgrades [11:09] rogpeppe, and I have a green build [11:09] fwereade: oh, ok, cool./ [11:10] fwereade: i've only spent the last 2. [11:10] rogpeppe, and I am on a sanity pass through [11:10] fwereade: assertNothingHappens could never be triggered [11:10] fwereade: because the channel never gets sent to [11:10] fwereade: i think it probably did in an earlier incarnation which changed. [11:10] rogpeppe, however I did just spot that that can't possibly work, yeah [11:11] fwereade: i changed it to: http://paste.ubuntu.com/5701129/ [11:11] *yoink* [11:12] fwereade: good word :-) [11:21] mramm: ping [11:23] *hmpf* test fails after merge, but sure it will be easy [11:40] Bingo [11:50] fwereade: could you pls take a look at https://codereview.appspot.com/8705043. it's still wip, i will add more test scenarios (multiple relations, peer relations), but i would like a feedback about the current approach by you [11:50] TheMue, will do shortly [11:50] * TheMue just has been called for lunch, bbiab [11:50] fwereade: great, thx [12:49] the trunk is now broken [12:49] environs/maas/environ.go:7:2: import "launchpad.net/gomaasapi": cannot find package [12:50] dimitern: did you go get it? [12:50] dimitern: we just merged the MAAS provider. You need to get the lib gomaasapi. [12:50] TheMue: I tried go get launchpad.net/gomaasapi/... [12:51] and it reported: # launchpad.net/gomaasapi/example [12:51] ../gomaasapi/example/live_example.go:45: not enough arguments in call to gomaasapi.NewAuthenticatedClient [12:51] go get launchpad.net/gomaasapi (w/o /... works) though [12:51] dimitern: ouch, so gomaasapi is broken and the trunk fails as a result of this [12:52] dimitern: let me look into it… [12:52] rvba: now running go build ./... && go test ./... in juju-core/ [12:53] rvba: but the same fails inside gomaasapi with the error above [12:54] dimitern: I'm on it. We updated something in gomaasapi but forgot to update the 'live_example.go' file. [12:54] rvba: cheers [12:55] rvba: always run "go build ./... && go test ./..." successfully before submitting please [12:55] rvba: juju-core tests pass [12:55] lunch [12:55] dimitern: we did got the tests to pass before merging. [12:56] rvba: I mean in the dependencies as well, like gomaasapi [12:57] so juju-core trunk is not broken after all, sorry [12:59] dimitern: pong [13:00] mramm: sorry, I wanted to ask about the swap days after US flights [13:00] sure [13:00] mramm: but I figured I can ask in oakland :) [13:00] cool [13:01] mramm: anyway, I updated the calendar with my holiday leave in june (10-25) and for europython in july (1-5), filed swap days, etc. in cadmin [13:02] dimitern: great -- I saw the calendar updates [13:02] but will login to cadmin and approve stuff [13:03] mramm: cheers, actually probably jam needs to approve these still, but anyway [13:04] right! [13:15] mramm: btw, during oakland we have a national holiday. i'll take it together with the swap days and two of my holidays of last year in the week after oakland. [13:17] sure [13:20] dimitern: the fix has landed. I'll also land a fix to make sure that kind of breakage does not happen again (i.e. to make sure that the content of examples/ [which is not tested by the unit tests] compiles). [13:21] rvba: that's good, but now I see another error: [13:21] # launchpad.net/gomaasapi/templates [13:21] templates/source_test.go:11: undefined: GomaasapiTestSuite [13:21] dimitern: that's fixed in my next branch :) [13:21] rvba: ah, cool [13:23] dimitern: hehe, that's real wip [13:41] dimitern: all fixed now. [13:42] rvba: indeed, thanks! === wedgwood_away is now known as wedgwood [14:01] i still can't find the kanban g+ link :( [14:02] mramm: can you send it please? I'll add it to my calendar manuallt [14:02] ah! found it! sorry [14:02] https://plus.google.com/hangouts/_/539f4239bf2fd8f454b789d64cd7307166bc9083 [14:41] TheMue, I'm not to sure about https://codereview.appspot.com/8705043/ [14:41] TheMue, where did you get that data format from? [14:44] rogpeppe, dimitern: the upgrade-juju stuff is here: https://codereview.appspot.com/8663045/ [14:45] fwereade: woo! [14:45] fwereade: by daves code and my interpretation of the py code [14:45] fwereade: i have to step out for i thin 1h. will ping you then again. [14:46] * fwereade now has to dust off the provision-time changes and see how badly they rotted in the last day [14:46] fwereade: and in return, juju-wait: https://codereview.appspot.com/8710043 [14:46] dimitern: ^ [14:46] fwereade: will take a look a bit later [14:46] rogpeppe: and at yours too [14:46] dimitern: ta! [14:47] * dimitern needs to think a bit, so going for a short run - bbi30m [15:15] Would anyone be interested in having a makefile? There are a few advantages that come from convenience... Suggestion is at https://codereview.appspot.com/8711043 [15:29] jtv: +0; i don't think i'd ever use it. [15:29] jtv: but i wouldn't mind it being around [16:27] fwereade: any chance of a review of https://codereview.appspot.com/8710043/ ? [16:27] fwereade: i'm a fair way into your upgrade-juju review, BTW [16:27] rogpeppe: i'm on it now [16:27] dimitern: cool, thanks [16:41] rogpeppe: reviewed [16:41] dimitern: ta! [16:53] fwereade: your internet connection sure is flaky today [17:05] fwereade: you've got a first round of review comments [17:08] fwereade: hmm, what's our rationale for not letting agent version change in config again? [17:18] rogpeppe, it's just a way to mess up the upgrade process afaict [17:18] fwereade: ah, of course. [17:19] rogpeppe, having no way except the approved one to change it feels like a win to me [17:19] fwereade: might be good to add a comment there [17:19] fwereade: +1 [17:19] rogpeppe, definitely [17:19] fwereade: i *knew* there was a good reason! [17:19] rogpeppe, sorry, btw, I need to stop for a while, I don't think I'll manage to finish it today [17:19] fwereade: ok [17:19] rogpeppe, if I do it'll be late [17:19] fwereade: sure [17:20] fwereade: i need to stop soon too [17:20] * fwereade strikes out in search of pizza [17:20] fwereade: hopefully i'll get to the end of your review [17:20] * rogpeppe quite fancies pizza [17:20] fwereade: have a great weekend! [17:30] fwereade: reviewed as well [17:31] i have to stop [17:31] happy weekends everyone! [17:48] m_3: ping [17:48] m_3: if you're around at some point, please could you take a look at https://codereview.appspot.com/8710043/ and see if it looks like something you could use [17:51] right, that's me done [17:51] g'night all and happy weekends too === deryck is now known as deryck[lunch] === BradCrittenden is now known as bac [19:29] [6~[6~/win 2 [19:31] <7nick TheMue === TheRealMue is now known as TheMue === deryck[lunch] is now known as deryck === arosales_ is now known as arosales === wedgwood is now known as wedgwood_away