/srv/irclogs.ubuntu.com/2014/11/04/#juju-dev.txt

=== fuzzy is now known as Ponyo
=== kadams54 is now known as kadams54-away
axwwallyworld_: does health/qos cover surfacing status messages from charms? e.g. "waiting for storage X"?03:40
wallyworld_axw: yep03:41
axwcool03:41
wallyworld_there will be a juju-status hook tool03:41
=== kadams54 is now known as kadams54-away
wwitzel31wallyworld_: thanks for merging that fix04:31
wallyworld_np, thanks for fixing04:31
wallyworld_turned out to be a simpl eone04:31
=== wwitzel31 is now known as wwitzel3
wallyworld_fwereade: around?07:34
=== ashipika1 is now known as ashipika
wallyworld_fwereade: ping08:08
=== liam_ is now known as Guest79610
fwereadewallyworld_, oops, sorry08:39
fwereadewallyworld_, how's it going?08:39
wallyworld_fwereade: hi, am late for dinner, got a few things to discuss, can i ping ypu later?08:40
fwereadewallyworld_, ofc08:40
wallyworld_np, gotta run08:40
wallyworld_ttyl08:40
fwereadewallyworld_, oh crap I forgot we had one scheduled this morning08:40
fwereadewallyworld_, went out for coffee with cath08:41
mattywmorning folks08:43
=== liam_ is now known as Guest73903
dimiternTheMue, standup?10:01
=== AndChat|9081 is now known as bogdanteleaga
fwereaderogpeppe1, do you know: what's the current state of the art on making real charm directories to test with?10:42
fwereaderogpeppe1, offhand I can think of a disturbingly large number of places with roughly connected functionality10:43
rogpeppe1fwereade: i was chatting about this with menno yesterday10:43
rogpeppe1fwereade: we had a couple of thoughts10:43
rogpeppe1fwereade: 1) having lots of things depending on the one single testing charm repo is Bad10:44
fwereaderogpeppe1, +110:44
rogpeppe1fwereade: 2) quite a few places would probably be better off just making in-memory charms rather than relying on a charm repo on disk10:44
fwereaderogpeppe1, agreed up to a point, but I'm currently thinking about needing actual charms on disk -- those cases do exist10:45
rogpeppe1fwereade: i think that a reasonable solution to that is to make it easy to create an in-memory charm that's also straightforward to expand to disk if needed10:46
rogpeppe1fwereade: the most straightforward thing is just to provide a straightforward way to make a *charm.CharmArchive10:46
rogpeppe1too many "straightforwards" :)10:47
fwereaderogpeppe1, (oh yeah, I was meaning to ask, why the stuttering?)10:47
fwereaderogpeppe1, (vs *charm.Archive?)10:47
fwereaderogpeppe1, (not that that's anything but a derail)10:48
rogpeppe1fwereade: because its symmetric with charm.BundleArchive10:48
rogpeppe1fwereade: we could probably have gone with charm.Archive and charm.BundleArchive actually10:48
rogpeppe1fwereade: but the shed has already been painted10:48
fwereaderogpeppe1, yeah, I assumed there was a reason, just wanted to know what it was10:48
mjs0rogpeppe1: I don't think you were talking to me about this... davecheney maybe?10:49
fwereaderogpeppe1, fwiw, reading back, I'm not so much thinking of a charm archive on disk, I'm thinking of custom-built charms for particular test cases10:50
fwereaderogpeppe1, and I feel like I've seen/written related code several times over in the past10:50
rogpeppe1mjs0: oops, it was bodie, sorry10:51
fwereaderogpeppe1, and weighing up the cost/benefit of writing yet more vs consolidating it a bit and what I can actually afford to spend to get those benefits10:51
mjs0rogpeppe1: no worries10:51
mjs0:)10:51
rogpeppe1fwereade: i'm also thinking of that. but you said that we needed actual charms on disk10:51
fwereaderogpeppe1, well, I need stuff on the filesystem to run the tests against, that doesn't automatically imply a repo10:52
fwereaderogpeppe1, and a *general* in-memory charm representation makes me a bit nervous10:52
fwereaderogpeppe1, will get very big/complex to handle all the cases wecurrently worry about10:52
rogpeppe1fwereade: we already have one10:52
rogpeppe1fwereade: it's called CharmArchive :)10:53
fwereaderogpeppe1, heh, indeed10:53
fwereaderogpeppe1, but charm archive creation is not exactly optimised for testing usage10:53
rogpeppe1fwereade: definitely not10:53
rogpeppe1fwereade: which is why i was thinking of a testing helper function to do that10:54
rogpeppe1fwereade: it wouldn't need to touch disk10:54
fwereaderogpeppe1, yeah, and that's what I worry will get super-complex, and will take me a couple of days to survey the field well enough to even get a handle on the true size of the task10:54
rogpeppe1fwereade: well, if you don't need any actual working hook contents, it would be very easy10:55
fwereaderogpeppe1, is there much reason to create an archive when it won't need to ever hit the disk?10:55
rogpeppe1fwereade: so we can just use *charm.CharmArchive...10:55
fwereaderogpeppe1, yeah, I'm all involved with the uniter again, so I care more about what lands on disk than anything else10:55
fwereaderogpeppe1, but an archive is frequently a step too far10:56
fwereaderogpeppe1, all I need is the dir10:56
rogpeppe1fwereade: an archive is a good first step - if you've got an archive, you can trivially call ExpandTo10:56
rogpeppe1fwereade: but there are many cases (most cases) where we don't need or want anything on disk10:57
fwereaderogpeppe1, granted10:57
rogpeppe1fwereade: and creating a bundle of files and directories is almost certainly going to be more expensive than creating a zip archive (which doesn't even need to do compression if we don't want)10:57
fwereaderogpeppe1, the way I see it there are 3 cases10:58
rogpeppe1fwereade: re: my first point, i'm considering deleting the testing.Charms variable10:58
fwereaderogpeppe1, one, we just need to implement the interface, definitely no need to put it on disk10:58
rogpeppe1fwereade: and replacing it with:10:58
rogpeppe1// NewRepo returns a new testing charm repository10:58
rogpeppe1// rooted at the given path, relative to the package directory of10:58
rogpeppe1// the calling package.10:58
rogpeppe1func NewRepo(path, defaultSeries string) *Repo {10:58
fwereaderogpeppe1, stopping talking, listening to you instead10:59
rogpeppe1fwereade: the interface is not enough10:59
rogpeppe1fwereade: because it doesn't cover anything other than metadata and config (and actions)10:59
fwereaderogpeppe1, it's enough for state tests, surely?10:59
fwereaderogpeppe1, and metrics10:59
rogpeppe1fwereade: indeed10:59
rogpeppe1fwereade: i'm... not sure10:59
fwereaderogpeppe1, but those are all we need in certain situations, aren't they?11:00
rogpeppe1fwereade: probably11:00
fwereaderogpeppe1, I accept it's useless for most of what you need to do11:00
fwereaderogpeppe1, where you care about content11:00
rogpeppe1fwereade: it depends whether it's worth having two parallel mechanisms, one without files and one with11:00
fwereaderogpeppe1, but have no reason to risk the involvement of spinning rust in your tests11:01
rogpeppe1fwereade: i agree11:01
rogpeppe1fwereade: but there's no reason why creating an archive needs to involve spinning rust11:01
fwereaderogpeppe1, agreed11:02
fwereaderogpeppe1, but I don't see *that* many more cases of ArchiveTo(f) than ArchiveTo(buf)11:02
fwereaderogpeppe1, although11:02
* rogpeppe1 goes to look at the state tests11:02
=== rogpeppe1 is now known as rogpeppe
fwereaderogpeppe1, yes, it's only Dirs that have that11:03
fwereadebah11:03
fwereadeignore me11:03
rogpeppefwereade: yeah, look for CharmDir11:03
wallyworld_fwereade: free?11:05
fwereadewallyworld_, sure11:05
fwereaderogpeppe, thanks, will think more11:05
fwereaderogpeppe, and probably talk to bodie when he comes on11:06
fwereadewallyworld_, joining our 1:111:06
wallyworld_fwereade: the hamster died :-)11:11
fwereadewallyworld_, I can hear yu, guess you can't me?>11:21
wallyworld_no:-( let me check my end11:21
fwereadewallyworld_, ha, tab actually  crashed11:22
fwereadewallyworld_, ffs think I'm gone again, brb11:27
wallyworld_fwereade: cooome baaaack, i didn't mean it11:27
* fwereade waits for sound to start...11:27
* fwereade sighs, grumbles11:28
* wallyworld_ taps fingers waiting for hamster to start running11:29
=== liam_ is now known as Guest35660
voidspacedimitern: ping11:58
dimiternvoidspace, pong11:58
voidspacedimitern: this is how goamz configures the response for the test server for calls to AssignPrivateIPAddresses11:59
voidspacedimitern: http://pastebin.ubuntu.com/8817898/11:59
voidspacedimitern: is it ok to do the same or do we have a different abstraction?11:59
voidspacedimitern: it configures the xml response directly11:59
dimiternvoidspace, looking12:00
dimiternvoidspace, that's it yes - I suppose it was made like this to allow greater flexibility while testing12:00
voidspacedimitern: we have some tests like this in cmd/juju/publish_test.go12:00
voidspaceand a couple more12:00
voidspacebut not many that directly configure responses12:01
voidspacedimitern: I'll do this :-)12:01
voidspacedimitern: if someone objects they can suggest a better way in review12:01
dimiternvoidspace, the publish tests are not ec2-specific12:01
voidspacedimitern: I'm fine with it, it's a bit "low level"12:02
voidspaceah, interesting12:02
dimiternvoidspace, it's another testing server afaics12:02
voidspacewhat is gitjujutesting.Server then12:02
voidspacechecking12:02
dimiternvoidspace, well, hide it in a helper :)12:02
voidspacewell, indeed12:02
dimiternvoidspace, I think it's a simple http server12:03
voidspacejust reusing the same api12:03
voidspacedimitern: it is12:03
voidspacedimitern: NewHTTPServer12:03
voidspacedimitern: that's probably what is under the hood for the goamz test server12:03
dimiternvoidspace, possibly quite similar, but the goamz one has a few ec2-specific helpers I think12:04
voidspaceright12:04
voidspacedimitern: anyway, I'll procede in this direction...12:05
voidspaceah dammit12:05
voidspaceI need to configure a call to "Instances" first to return the network interface12:05
voidspacewe need the network interface id before we can ask for the ip address12:06
voidspacenever mind, it's only more xml12:06
voidspacemaybe I can add a network interface to the instance via goamz instead12:08
dimiternvoidspace, yes, you can12:15
voidspacedimitern: it's a call to CreateNetworkInterface then AttachNetworkInterface and I need an ec2 instance12:15
voidspacedimitern: probably still less opaque than the xml12:15
dimiternvoidspace, in fact I did modify the goamz test server to create a network interface when you run an instance12:15
voidspacedimitern: but it didn't get merged yet?12:15
voidspacedimitern: that would be helpful as it matches the default behaviour12:16
dimiternvoidspace, check out TestRunInstancesVPCCreatesDefaultNICWithoutSubnetIdOrNICs12:17
voidspacedimitern: thanks12:18
dimiternvoidspace, look also at ec2test.Server.addDefaultNIC and how it's used12:19
voidspacedimitern: private method though12:20
voidspaceand needs a subnet12:21
voidspaceso I'll still have to do it somewhat manually12:21
voidspacebut these examples show how12:21
dimiternvoidspace, I didn't mean to call it directly, it'll get called if you specify a SubnetID in RunInstanceParams12:21
voidspaceah right12:22
voidspacemaybe we can just add that to our testcase setup12:22
dimiternvoidspace, it's meant to simulate what the real ec2 api does12:22
voidspaceas the other tests shouldn't care about a subnet12:22
voidspacedimitern: cool, thanks for your help12:24
dimiternvoidspace, np, it's a bit messy to test, but ping me if you run into something else12:27
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
rogpeppetrivial update anyone - this fixes juju-dev so that the tests can work under the upcoming Go 1.4: https://github.com/juju/juju/pull/103412:56
rogpeppedimitern, voidspace: ^12:57
voidspacedimitern: so the trouble with having goamz create the network interface is that I need an EC2 instance, so I need the auth credentials12:58
voidspacerogpeppe: that revision of testing has already been reviewed?12:58
rogpeppevoidspace: yes12:58
rogpeppevoidspace: (otherwise it wouldn't have been landed)12:59
dimiternvoidspace, I'm not sure I follow..12:59
dimiternrogpeppe, looking12:59
rogpeppevoidspace: currently if you use jc.DeepEquals under Go1.4, it will panic12:59
voidspacedimitern: to call RunInstance or anyother ec2 api directly from goamz (which I'll need to do to setup the network interface)13:00
voidspacedimitern: I need an ec2.EC2 instance13:00
voidspacedimitern: and creating one of those requires auth credentials13:00
voidspacerogpeppe: LGTM13:00
voidspacerogpeppe: :-)13:00
rogpeppevoidspace: ta13:00
rogpeppevoidspace: where are you doing this from?13:00
dimiternrogpeppe, it would've been nicer to add a comment to the change in juju/testing :)13:01
voidspacerogpeppe: provider/ec2/local_test.go13:01
rogpeppevoidspace: you're calling ec2 apis from the tests?13:01
voidspacerogpeppe: a new method finds the network interface from the ec2 instance and then uses the id of that to provide a new static ip address13:01
voidspacerogpeppe: into the test server...13:01
dimiternvoidspace, just a sec13:02
rogpeppevoidspace: the tests have auth creds13:02
voidspacerogpeppe: I need to configure the response to Instances to have a network interface13:02
voidspacerogpeppe: where?13:02
rogpeppevoidspace: see the EnvironEC2 function13:04
rogpeppedimitern: i'm not sure what you mean. i did add a relevant comment in github.com/juju/testing/checkers13:05
voidspacerogpeppe: ah, cool13:05
voidspacerogpeppe: he meant as a comment on the PR linking to the change13:05
dimiternrogpeppe, no I meant to add a comment on the #1034 PR with a link to the other PR in juju/testing, which introduced the change13:06
dimiternvoidspace, sorry, so you can do that, but you need to modify how runInstances is called in provider/ec2/13:06
rogpeppedimitern: ah, ok13:07
rogpeppedimitern: will do13:07
voidspacedimitern: so modify runInstances to provide the subnet id?13:07
voidspacedimitern: so that the goamz test server will do the right thing?13:07
dimiternvoidspace, if you call it and set SubnetID in ec2.RunInstances struct, it will use the VPC-aware version and create a NIC (both the real ec2 and the test server)13:07
dimiternvoidspace, exactly :)13:07
rogpeppedimitern: i've added a link13:07
rogpeppedimitern: LGTY now?13:08
voidspacedimitern: that sounds dangerous....13:08
dimiternvoidspace, but, please be aware the subnets are linked to AZs and this has to be done carefully, so not to break axw's AZ distribution code13:08
voidspacedimitern: exactly...13:08
voidspacedimitern: so then I have to test that change - which is a deeper rat-hole to get into13:09
dimiternrogpeppe, LGTM, thanks!13:09
voidspacedimitern: maybe I'll try the XML in a helper first...13:09
voidspacedimitern: or I can move the test to be in ec2_test.go (white box) and have access to Environ.EnvironEC2 function (exported in export_test)13:10
dimiternvoidspace, maybe you can propose a pre-req that just tests setting an AZ (or picking one automatically with the distribution code) also sets SubnetID in RunInstances?13:10
dimiternvoidspace, that works for me, but please add a comment13:11
voidspacedimitern: moving out of localServerSuite loses me a lot of setup though, so that's not ideal either :-)13:12
voidspacethe black box test is a bare Suite13:12
dimiternvoidspace, hmm.. that's a bit unfortunate13:12
voidspacedimitern: messing with the way we create ec2 instances just for testability sounds more dangerous than I'd like to venture into13:13
voidspacedimitern: so I'll check the XML route - it's easy enough to try it13:13
dimiternvoidspace, how about using ec2.InstanceEC2(inst *instance.Instance) to get access to the underlying instance struct?13:15
voidspacedimitern: that might work13:17
dimiternvoidspace, or t.srv.ec2srv.Instance(strId) - there seem to be a few useful examples in provider/ec2/local_test.go13:17
voidspaceyeah13:17
voidspacedimitern: if adding a network interface to that struct works then that could be it13:18
voidspaceit has the NetworkInterfaces slot13:18
voidspacethanks13:18
voidspacelunch first13:19
dimiternvoidspace, that'll also work, but it's not the same path we'd take eventually (i.e. we'll rely on the automatic NIC creation); but I'm fine with it as a workaround for testing (+please add a comment if you do this)13:20
voidspacedimitern: ok13:21
=== kadams54 is now known as kadams54-away
voidspacedimitern: if we go the route of setting SubnetID in RunInstances I'd rather pair on it13:22
voidspacedimitern: I'd be very concerned about the intricacies of that13:22
dimiternvoidspace, sure, it's perhaps best13:22
voidspacedimitern: and as we don't *need* it yet, it seems wiser to avoid it for now13:23
voidspacedimitern: I'll add the comment that creating a default network interface for testing is a temporary measure13:23
dimiternvoidspace, +113:24
=== liam_ is now known as Guest73986
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: see calendar | Open critical bugs: None
sinzuinatefinch, jam, mgz: Do you have a few minutes to review https://github.com/juju/juju/pull/103514:59
mgzsinzui: lgtm15:00
mgzwe also want to create the branch now?15:01
sinzuimgz ...already done and...15:01
sinzuimgz, https://github.com/juju/juju/pull/103615:03
wwitzel3natefinch: omw, having plugin issues15:04
mgzsinzui: also lgtm. trying to remember if there's anything else that needs to be done for new branches... I think the landing bot just works?15:05
sinzuimgz, abentley is adding the new branch to the ci-director cron job now15:05
sinzuimgz, we will see if the lander sees my $$merge$$ in a few minutes15:06
abentleysinzui, mgz: done.15:11
sinzuibugger. I think I need to prepare a vivid source package too15:12
* sinzui polls mail to see vivid accepted15:21
katcodavechen1y: ty for the reviews15:31
sinzuimgz, can you send an email to the juju-devel list explaining master is 1.22-alpha1 and we have a new stable branch 1.21 at 1.21-beta1...merges still in progress of course15:32
mgzsinzui: sure thing15:33
mgzwhat are we expecting people to want to land on 1.21?15:33
mgzI guess I can just link the launchpad milestone pages?15:33
alexisbhe there mgz15:35
mgzhey alexis15:35
alexisbI see you but you are silent :)15:35
mgzargh, ahngouts again15:35
alexisbyes they can be fickle things15:35
mgzsec, going chrome15:36
ericsnowfwereade: ping15:50
fwereadeericsnow, pong15:50
ericsnowfwereade: do you have any reservations with making --download the default bahavior for "juju backups create"?15:51
fwereadeericsnow, I'm heartily +115:52
ericsnowfwereade: cool15:52
fwereadeericsnow, if the backup never makes it off the system being backed up, it ain't much of a backup15:53
ericsnowfwereade: :)15:53
katcofwereade: thank you for the review; i'll be revising after i land some PRs15:53
fwereadekatco, cool15:53
natefinchericsnow, fwereade: now the problem is, what do you call the flag to not download?15:53
ericsnownatefinch: --no-download15:54
fwereadenatefinch, ericsnow: --eatmydata? ;p15:54
natefinchhaha15:54
ericsnow:)15:55
natefinchcan you print out a big warning when someone uses whatever nodownload flag, that says something like "Your backup will be stored on the server.  This is NOT a long term solution and the backup should be downloaded as soon as possible."15:56
katcodo we have any util library to perform slice-item deletions?15:58
ericsnownatefinch: yep15:59
natefinchkatco: meh... a := append(a[:i],a[i+1:]...)16:00
natefincher = not :=16:00
katconatefinch: boundary edge cases =/16:00
katcowhat if i is 0, or len(a)-116:01
katcoclutters the clarity of the code =|16:01
katconatefinch: bah, so i always forget this. after you reduce down all the code branches, you only really need 1 bounds check. so not so cluttered :)16:23
natefinch:)16:24
natefinchgoing to pick up my Lily from preschool and then off to vote.16:28
katcovoted this morning!16:29
katcohappy election day :)16:29
natefinchkatco: cool.  Happy election day :)16:30
=== natefinch is now known as natefinch-vote
voidspaceniemeyer: ping16:31
niemeyervoidspace: Hey16:31
voidspaceniemeyer: hey, hi16:32
voidspaceniemeyer: I have code calling EC2.AssignPrivateIPAddresses16:32
voidspaceniemeyer: I'd like to be able to configure the response of the test server16:32
voidspaceniemeyer: I'd like it to fail with InvalidParameterValue and PrivateIPAddressLimitExceeded16:33
voidspaceniemeyer: as far as I can tell I can't hack the test server to return specific errors for calls, without the test server itself being coded to produce those responses16:34
voidspaceniemeyer: is that correct?16:34
voidspaceniemeyer: (goamz just in case that wasn't completely clear)16:34
niemeyervoidspace: I'm not sure.. it's been a while since I looked at that code, but if there's no public API for doing that, it should be correct16:35
voidspaceok16:35
voidspaceniemeyer: and to the best of your knowledge, if the test server implements an api (for example there's specific code for AssignPrivateIPAddresses)16:36
voidspaceniemeyer: the test server *should* modify the instances it holds to reflect the actions16:36
voidspaceI haven't dug into that code yet, I'm about to - but on my first cut I wasn't seeing the IP address added to the instance after a call to AssignPrivateIPAddresses16:37
niemeyervoidspace: Yes, it should be realistic16:37
voidspacecool, so it should be added and it's probably my fault that I can't see it yet16:37
niemeyervoidspace: Erring on the side of the problematic behavior, when there's choice16:37
voidspacecool16:37
voidspaceniemeyer: right16:37
niemeyervoidspace: E.g. if a response may come without an IP address on the first try, it should force the requester to retry16:37
voidspaceah right, interesting16:38
voidspacein our case we're providing the IP address to assign16:38
voidspacewe're managing them ourselves16:38
voidspaceas the actual ec2 api doesn't tell you which one it assigns if it does succeed - so you have to work it out16:38
voidspaceand that's inherently racy if multiple addresses might be being assigned - so instead we'll manage them ourselves16:39
niemeyervoidspace: Right, so the test server should mimic that problematic behavior16:49
niemeyervoidspace: Forcing implementations to do the right thing16:49
rogpeppefwereade: https://github.com/juju/charm/pull/73 is a start on one of the points i mentioned earlier16:53
rogpeppebodie_: you might want to take a look too16:54
bodie_rogpeppe, will do.  was just discussing some charm testing needs with fwereade a little while ago16:57
rogpeppebodie_: i have a plan to add some more stuff above this, to address custom charms that don't want to come from disk16:58
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
voidspaceg'night all18:24
=== natefinch-vote is now known as natefinch
mattywnatefinch, ping?18:26
natefinchmattyw: yo18:26
mattywnatefinch, I picked your name at random - congratulations... Who's a good person to talk to about the manual provider?18:27
natefinchI have some knowledge of it18:27
mattywfolks, I'm calling it a day, see you all tomorrow18:41
ericsnownatefinch: how's it looking for those 2 reviews?18:55
wwitzel3ericsnow: I'm looking at the other one now, fyi18:55
ericsnowwwitzel3: thanks!18:55
natefinchericsnow: sorry, busy day today with voting and stuff.  I'm working on it, honest :)18:56
ericsnownatefinch: :)18:56
ericsnownatefinch: FYI, I also have a patch up now for download-by-default18:57
natefinchis it just me, or is it impossible to actually tell what fixes addressed what comments in a review?19:22
wwitzel3natefinch: not just you19:32
fwereadewwitzel3, hey, re http://reviews.vapour.ws/r/318/19:32
fwereadewwitzel3, I'm suggesting that juju-run should accept the same syntax for relations as do the various hook tools19:33
natefinchericsnow: can you help me understand the reviews I'm re-reviewing?  If you can show me where to look, I can better understand what I'm looking at.19:34
fwereadewwitzel3, it is interesting to note that we would accept `-r 21`, or `-r db:21` or, in fact, `-r lolwhatever:21` and all would be accepted and handled as "21"19:34
ericsnownatefinch: sure19:34
wwitzel3fwereade: right, but I but isn't that translastion going to be handled by "juju run"19:35
natefinchericsnow: like, basically, what comments were left that you addressed that need to be approved?19:35
natefinchericsnow: I assume the people who reviewed before did a good job, I just want to approve whatever hasn't been reviewed19:35
ericsnownatefinch: I'm not exactly sure; they were pretty thorough19:36
fwereadewwitzel3, well, as a charm author I'm likely to want to invoke juju-run in whatever way I'm used to invoking relation-get19:36
fwereadewwitzel3, ie with "-r db:21"19:36
ericsnownatefinch: I addressed everything that came up19:36
fwereadewwitzel3, and not to support that syntax feels like we're missing a trick19:36
wwitzel3fwereade: ok, I see what you mean now by "ignorebit:", I was really confused before.19:37
wwitzel3fwereade: you mean .. -r ignoredbit:2119:38
wwitzel3fwereade: yeah, we can just reuse the newRelationIdValue as you suggested19:38
fwereadewwitzel3, cool19:38
katconeed to take my dog to the vet (UTI), bbiab19:38
natefinchericsnow: if you feel you addressed all the problems that were mentioned, and that there's unlikely to be anything outstanding, I can rubber stamp it for you.19:38
ericsnownatefinch: fine with me :)19:39
wwitzel3fwereade: also when you say, make jujuc accept --relation that's different from cmd/juju right?19:39
wwitzel3fwereade: you mean uniter/jujuc right?19:40
ericsnownatefinch: thanks19:40
fwereadewwitzel3, yeah, exactly, I'm suggesting that if we're having --relation, or --relation-id in juju-run, it would equally be nice to accept the same spelling in the various uniter/jujuc commands19:41
wwitzel3fwereade: .. where would they be needed in jujuc?19:41
natefinchholy nested if clauses, batman!19:42
fwereadewwitzel3, relation-list, relation-get, relation-set19:44
fwereadewwitzel3, just search the tests for "-r" but I think that should be all19:44
wwitzel3fwereade: wait, that doesn't make sense to me .. why would you pass in a relation to relation-list?19:45
fwereadewwitzel3, relation-list is "tell me the units in some relation"19:46
fwereadewwitzel3, relation-ids is "tell me what relations use this endpoint"19:46
fwereadewwitzel3, which indeed returns relation ids ratherthan accepting them19:46
wwitzel3fwereade: wait, so you are just saying make it accept -r / --relation (mapped to the same input)19:49
fwereadewwitzel3, yeah, exactly19:49
wwitzel3fwereade: no that it should accept another relation .. oh ok19:49
wwitzel3fwereade: phew, I thought you'd gone mad, turns out it was just me ;)19:49
fwereadewwitzel3, just make juju-run and juju consistent wrt how we specify relations19:49
fwereadewwitzel3, jolly good ;p19:49
fwereades/ juju / jujuc /19:50
wwitzel3fwereade: yep, that all makes sense, will get that taken care of now, thanks19:50
fwereadewwitzel3, cool, thanks19:50
waiganimorning all19:54
alexisbmorning waigani20:03
waiganialexisb: morning :)20:03
=== mjs0 is now known as menn0
menn0davechen1y, mwhudson, waigani: morning all20:05
natefinchAnyone need a review?  It's sorta hard to understand what reviews still need attention20:06
menn0natefinch: I normally start with anything that doesn't have a Ship it or issues against it (i.e. nothing in the 3rd column of the dashboard)20:09
ericsnownatefinch: did you take a look at http://reviews.vapour.ws/r/268/?20:15
=== kadams54 is now known as kadams54-away
natefinchericsnow: no, I can look at it though. There were just already a lot of comments, which makes it really hard to review20:22
ericsnownatefinch: yeah, sorry, feel free to pass--I'll hit up menn0 and axw :)20:23
davechen1ynatefinch: http://reviews.vapour.ws/r/331/ if you have a moment20:36
natefinchdavechen1y: looking20:39
natefinchdavechen1y: gah, the problem with multiple repos... the changes here reflect changes in some other repo I can't see in the review.  I presume the changes in SpecializeCharmRepo are the fix for the data race you're talking about?20:50
wallyworld_menn0: as a background task, if you could look at bug 1389389 that would be awesome; it raises it's head semi regularly20:55
mupBug #1389389: TestUpgradeStepsFailure intermittent test failure <intermittent-failure> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1389389>20:55
wallyworld_natefinch: while i'm whining about tests - any progress on fixing the ^@#!@$!@$ replicaset ones?20:56
menn0wallyworld_: will do20:56
wallyworld_ty20:56
natefinchwallyworld_: no, sorry.  I haven't spent time on it recently.  I'll try to find time to do so, I know it's long overdue.21:05
wallyworld_natefinch: np, thank you. we still get many landing failures, and replicaset tests are one of the main causes. there are a few others as well, i'm on the case for those also :-)21:06
wallyworld_katco: did you get the feedback and/or +1 you needed to unblock?21:14
katcowallyworld_: i did... reviewing feedback now21:14
wallyworld_great21:14
katcowallyworld_: thank you :)21:14
wallyworld_katco: np, i talked with wlliam last night, he said to shout at him if you didn't get the info, so i can now put away my megaphone21:15
katcowallyworld_: haha21:16
katcowallyworld_: good news is that there are no major disagreements, so i can start implementing while we iterate to an agreeable state.21:17
wallyworld_whoohoo21:18
wallyworld_the approach to do the remote api first was well received21:18
katcocool, good idea21:18
katcoit will be the oprah of leadership services. "you get leadership! and you get leadership!"21:19
natefinchthat's one of my favorite memes lately.  Just so useful in so many situations.  You get ebola, and YOU get ebola!  etc :)21:20
katcohaha21:20
katcohttps://www.youtube.com/watch?v=xAhuSDRIDHE21:21
natefinch(NB: you won't really get ebola)21:21
ericsnowperrito666: FWIW, I recognize how complex the restore process is :)22:12
=== kadams54-away is now known as kadams54
=== kadams54 is now known as kadams54-away
perrito666what is dbFixer?22:23
ericsnowperrito666: just what I called a hypothetical type that hides away the state-dependent stuff going on there22:23
* perrito666 forbids himself to code because its late in the night here and he knows bugs are going to appear22:23
ericsnow:)22:23
perrito666ericsnow: you have a subscription to the abstraction of the month magazine :p22:24
perrito666dont take this as an offense but sometimes you remind me of the zope code base :)22:24
ericsnowperrito666: I'm a contributing writer ;)22:24
ericsnowperrito666: those were the good old days...22:24
* perrito666 tries to make some sense of reiewboard separations22:26
* mwhudson finally reappears22:26
perrito666ericsnow: so, I have an indecent proposition for you22:27
ericsnowperrito666: I'm listening22:28
perrito666mm, nevermind, I was going to propose something but then I decided I am not sure I want to code that :p22:29
* perrito666 rented a room for OpenStackSummit that has the particularity to have several powerplugs... none of them at powercord distance of the desk on the room22:29
perrito666in the up side, the room was cheap22:30
perrito666ericsnow: so, I believe I can get rid of client call for prepare22:30
ericsnowperrito666: cool22:30
perrito666I am pretty sure that Finish is there to stay, since it has to be called with a different client connection22:31
ericsnowperrito666: yuck22:31
perrito666ericsnow: well it is bound to be22:31
perrito666ericsnow: I am actually destroying the api server and the state server22:31
perrito666you would expect that connection to fall22:31
perrito666I agree its less than ideal22:32
perrito666but it is also a unique case22:32
ericsnowperrito666: Can't client.Restore() create a new client and call Finish on it?22:32
ericsnowperrito666: considering it's a unique case22:32
perrito666ericsnow: mm, well client restore finishes with rpc.ErrShutDown22:33
perrito666let me re-read this to make sure I can do it22:33
ericsnowk22:33
perrito666mmm, yes, it can, but we would have the methods in the facade22:34
ericsnowperrito666: having them in the facade I think is unavoidable but okay22:34
perrito666well if unavoidable, we better consider ok22:35
perrito666or we will end up with an ulcera22:35
perrito666:p22:35
ericsnowperrito666: I meant "but not the end of the world" :)22:35
perrito666I am too old for Airbnb rent a room22:40
perrito666they actually require for me to be silent after a certain hour.. in a room with parquet floor and in a house with a toilet that has a grinder (something I never saw before)22:41
perrito666and I am doing my best to avoid typing like a mad man as I usually do because I know I produce a noise similar to a typewriter :p22:42
perrito666ericsnow: btw, so far you are one of the only reviewers that actually uses the multiline selection feature, this makes my life way easier when reading comments22:44
ericsnowperrito666: I think people are catching on little by little22:45
perrito666yeah, but every now and then I get acomment on a line that is if err != nil and I already changed that line22:45
perrito666so get it requires some devination22:45
=== kadams54 is now known as kadams54-away
perrito666ericsnow: question22:54
=== kadams54-away is now known as kadams54
ericsnowperrito666: yeah22:54
=== kadams54 is now known as kadams54-away
perrito666backups.NewClient22:55
perrito666how fake can httpApiCloser be?22:55
* perrito666 is blatantly breaking his no code promise22:56
=== kadams54-away is now known as kadams54
ericsnowperrito666: in the API client tests we only care that the low-level methods were called properly22:57
perrito666ok, anyway reading at it, it seems to me that Ill need a restore root22:59
ericsnowperrito666: so for unit-testing the API client we want to keep that low-level implementation as simple as possible22:59
ericsnowperrito666: ah, yep22:59
perrito666ericsnow: word of advice, even if they are not public, when you create an interface (which I actually believe are more cumbersome than useful when not public, at that volume of code) throw a couple of lines of comments23:00
perrito666mostly for the purpose of the extending members23:01
ericsnowperrito666: k23:02
ericsnowperrito666: I wrote up a basic archive workspace type that should help clean up some of the state/backups.Backups.Restore code (https://github.com/ericsnowcurrently/juju/commit/50623a104438c7c61d6921b9db4873ae5c619522)23:04
ericsnowperrito666: OpenFile() could be used to open the agent conf from the archive23:05
perrito666ericsnow: it can actually but for now I care only to have this in a solid enough state to be merged, the rest is just an academic exercise, which I will most likely dedicate to once merged23:08
perrito666nice method btw23:08
perrito666and I agree, that could go in utils/tar23:08
ericsnowperrito666: k23:08
ericsnowperrito666: yeah, it was just a quick stab at it23:08
perrito666sounds like a useful feature for utils/tar23:09
perrito666ericsnow: question23:33
ericsnowperrito666: yeah23:34
perrito666cmd/juju/backups/backups.go:86 why?23:34
perrito666not returning a concrete type is making very difficult to actually use this outside23:35
ericsnowperrito666: you mean newAPIClient?  what makes it hard to use outside?  outside where?23:37
perrito666ericsnow: well I wanted to pass NewAPIClient as a sort of closure but the fact that it returns an APIClient kind of defeats the purpose since I was declaring the function as returning a Client23:38
perrito666I am trying to avoid circular imports here23:38
perrito666still trying to figure out how to actually make client reconnect23:38
ericsnowperrito666: what circular imports?23:38
perrito666between cmdbackups and api backups restore, looking for a better solution worry not23:41
* wallyworld_ types MAAS to make jool's irc client go "bing"23:53
bigjoolswallyworld_: fuck off23:53
wallyworld_lol23:53
wallyworld_maas23:53
wallyworld_maas23:53
wallyworld_bigjools: seen this one? bug 138726223:53
mupBug #1387262: bootstrap fails with failure to execute queries before end of atomic block <bootstrap> <maas-provider> <juju-core:Triaged> <MAAS:New> <https://launchpad.net/bugs/1387262>23:53
bigjoolsmake me a copffee and I'll look23:54
katcowallyworld_: sorry, just wanted to confirm you said maas?23:54
wallyworld_ok, you come over here and i will23:54
wallyworld_lol lolo lol23:54
bigjoolsmight come over this arvo then23:54
katcoor does it have to be upper-case like this: MAAS?23:54
perrito666wallyworld_: why are we supposed to say maas?23:54
bigjools /o\23:55
wallyworld_perrito666: cause bigjools has an irc alert that goes "ping!" whenerver we say MAAS23:55
katcoperrito666: i think we're supposed to say maas because wallyworld_ is interested in maas or something23:55
* wallyworld_ can't stop laughing23:55
katcoeither way, maas is a fun word, so (shrug)23:55
perrito666wallyworld_: really just saying maas?23:55
bigjoolswallyworld is secretly wanting to work on maas23:55
wallyworld_yep, just MAAS23:55
katcobigjools is a maas -ster of irc23:56
wallyworld_a maas-ter something or other, for sure23:56
bigjoolswallyworld_ is a maasturbator23:57
perrito666what a pleasure test deployments to amazon while on a country with decent connections23:57
wallyworld_perrito666: where are you?23:57
perrito666wallyworld_: paris23:57
wallyworld_lucky you!23:57
perrito666my uploads fly23:57
wallyworld_wish i were there23:58
perrito666wallyworld_: I am here for a juju on windows sprint, think again23:58
anastasiamacso do i23:58
wallyworld_perrito666: ah, well, there's good and bad :-)23:58
bigjoolslol23:58
perrito666heh yeah23:58
perrito666the thing is, this old lady that rents me a room has a faster internet that my office :p23:59
perrito666or at least is better positioned in terms of topology23:59

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!