/srv/irclogs.ubuntu.com/2015/07/02/#juju-dev.txt

wwitzel3cherylj: thanks00:26
wwitzel3alexisb: a large monitor would make it easier to show people, but that isn't even a must have00:26
wwitzel3I'll be spinning up everything on EC2 a day ahead of time as a backup, like on a cooking show :)00:27
* perrito666 imagines a souschef removing the running command from wwitzel3 and bringing a fully deployed stack while putting the other on the fridge01:04
anastasiamacperrito666: :D making a meal out of juju :))01:10
=== natefinch-afk is now known as natefinch
natefinchevening all01:45
natefinchericsnow, wwitzel3: either of you around?01:45
wwitzel3natefinch: omw02:05
mupBug #1470601 changed:  UniterSuite.TestLeadership fails on windows <blocker> <ci> <regression> <unit-tests> <juju-core:Fix Released by bteleaga> <https://launchpad.net/bugs/1470601>03:06
mgzmaster is blessed.03:10
menn0mgz, thumper, davechen1y : \o/03:13
menn0thumper: i'm pretty sure I've found out the reason for the stuck state servers03:14
menn0thumper: when do mgo.DialWithInfo and don't specify a timeout, and mongodb isn't there, it hangs forever03:14
menn0thumper: there's 2 places in juju where we don't specify a timeout03:15
menn0thumper: state.ForEnviron() is one :)03:15
mupBug #1470714 opened: Ubuntu downloads are non-obvious <juju-core:New> <https://launchpad.net/bugs/1470714>05:07
tasdomashi07:08
tasdomasmenn0, ping?07:08
tasdomasdavechen1y, ping?07:19
davechen1ytasdomas: ack07:48
tasdomasdavechen1y, sorry to be bothering you past your EOD07:48
tasdomasdavechen1y, as I understand it, service-related commands in cmd/juju have been moved to cmd/juju/service, but in master, cmd/juju/get.go still exists - is there a reason for that?07:49
davechen1ytasdomas: sorry, i don't thin ki can help08:03
davechen1yi've no idea what happened there08:03
tasdomasdavechen1y, thanks anyway - I emailed Cheryl with my question08:04
davechen1yok08:04
fwereadeTheMue, what was the thinking behind putting that panic in multiEnvRunner.updateOps?08:06
TheMuefwereade: eh, need the context, could you point me to file and line?08:07
fwereadeTheMue, txns.go, not sure line because I'm looking at a merge conflict08:07
fwereadeTheMue, but it looks like it's a problem with updateStruct that's being addressed one level up and dirtying up the updateOps logic08:09
TheMuefwereade: aha08:09
TheMuefwereade: I first time got aware of this multiEnvRunner with the info of automatic setting of env-uuid and prefixing of _id08:10
fwereadeTheMue, I'm well aware of the problem and the context, I'm just asking why you changed updateOps and not updateStruct08:10
TheMuefwereade: did I?08:11
fwereadeTheMue, because it *seems* wrong -- all the other panics are generated in the updateSpecificThing methods, and the updateOps method has a couple of its own responsibilities08:12
fwereadeTheMue, heh, maybe you didn't even -- I just knew you'd been bumping up against this problem and assumed it was you08:12
TheMuefwereade: when I found it regarding the IPAddress unique field and we discussed about it I afterwards dropped it and set both explicit in addIPAddress08:13
TheMuefwereade: hehe, yes, because we found it "interesting" how the txn modifies the passed doc w/o returning it08:14
voidspacedimitern: https://code.launchpad.net/~mfoord/gomaasapi/devices/+merge/26337009:08
dimiternvoidspace, how about op=claim_sticky_ip ?09:21
voidspacedimitern: oh yes, need to implement that09:21
voidspacedimitern: ten minutes work09:21
voidspacedimitern: :-)09:21
voidspacedimitern: thanks09:22
dimiternvoidspace, np :)09:22
voidspacedimitern: (I'll do no error checking, just add it to the device object)09:22
voidspacedimitern: I burned an hour yesterday on an obscure bug09:24
dimiternvoidspace, that sounds good - you've got a review09:24
voidspacedimitern: I was writing a byte array (the json result) to the response09:24
voidspacedimitern: and that works without error and the gomaasapi Parse function will consume it09:24
voidspacedimitern: I was just getting a null object in Parse09:25
voidspacedimitern: took me ages to work out why...09:25
dimiternvoidspace, hmm really?09:25
dimiternvoidspace, what was it?09:25
voidspacedimitern: you need to pass a string to response.Write09:25
voidspacedimitern: a byte array "works" but does the wrong thing09:25
voidspacedimitern: it sends a literal "[1 33 42...]" as the response09:26
voidspacedimitern: which of course is invalid json09:26
voidspacedimitern: and Parse consumes it happily and swallows the json syntax error09:26
dimiternvoidspace, ah! good catch09:26
voidspacewell, I had failing tests thankfully09:27
dimiternvoidspace, strictly speaking I think response.Write takes an io.Writer09:27
voidspacedimitern: yeah, logging would be good09:28
voidspacedimitern: ah, it's fmt.Fprint(w, something)09:28
voidspacedimitern: and something can be a []byte or string09:28
voidspacedimitern: and []byte does the wrong thing altogether...09:28
voidspacedimitern: can't see an inline comment09:29
dimiternvoidspace, right, yeah []byte(..).String() is not what you might expect09:30
voidspacewhereas string([]byte) does the right thing09:30
dimiternvoidspace, it's on line 157 about the deviceTemplate09:30
voidspacedimitern: I can't see it09:30
voidspaceis it draft?09:30
voidspacedimitern: ah, I see it09:31
voidspacedimitern: a text/template would be more code, right?09:32
voidspaceI could switch to that09:32
dimiternvoidspace, yeah - I think it will be nicer09:32
voidspacedimitern: ok09:32
voidspacedimitern: I'll add DELETE and claim_sticky_ip first and then do that09:33
voidspacethere maybe other review comments by then09:33
dimiternvoidspace, cheers09:35
voidspacedimitern: gomaasapi doesn't have logging10:18
dimiternvoidspace, too bad - then ignore my comment about it -  I don't insist on it10:22
tasdomasfwereade, ping?10:42
voidspacewwitzel3: ping for when you're around10:45
voidspacedimitern: so I need to modify the JSONObject in place10:52
voidspacedimitern: currently JSONObject is effectively read only10:52
voidspacedimitern: I only need to modify an array, so I'll be adding SetArray to match GetArray10:52
voidspacedimitern: ok?10:52
dimiternvoidspace, if it works, fine, but I'll like to have a final look when done10:54
voidspacedimitern: it will work fine10:54
voidspacedimitern: obviously ;-)10:54
voidspacedimitern: just make JSONObject a bit asymmetrical10:54
voidspacedimitern: read only except for arrays10:54
voidspacedimitern: otherwise I can serialise, do text manipulation and deserialize again10:55
voidspacedimitern: which seems worse...10:55
voidspacedimitern: or I can make a private function for use by the test server only as JSONObject is publiic10:55
voidspacethat's maybe better10:55
voidspaceso as not to change the public api10:55
dimiternvoidspace, that sounds better I think10:56
voidspacedimitern: cool10:56
voidspacedimitern: although extending JSONObject to make it fully bi-directional and breaking it out into it's own library would be cool10:57
mupBug #1470820 opened: Remove github.com/gabriel-samfira/sys/windows once go 1.4 lands <juju-core:New> <https://launchpad.net/bugs/1470820>11:10
dimiternvoidspace, TheMue, please take a look - http://reviews.vapour.ws/r/2088/ - AddSubnets apiserver method12:20
TheMuedimitern: yup12:20
dimiternTheMue, ta12:21
TheMuedimitern: quick wish outside the review, I prefer identifier abbreviated as ID, not Id12:23
TheMuedimitern: so it would be SebnetProviderID12:23
dimiternTheMue, I know, but Id seems to be more common in our code; we should change all of them separately though12:24
TheMuedimitern: we already have a mix, eg katco also uses ID12:25
dimiternTheMue, I'm not saying we only use Id, just that it's more common12:26
TheMuedimitern: time to change it :D viva le upper-case12:26
dimiternTheMue, :) let's not do it now please12:27
TheMuedimitern: hehe, ok, Ok, OK, oK *rofl*12:28
* TheMue seems to have a melted brain *lol*12:28
dimiternTheMue, :)12:29
TheMuedimitern: why all those implementations of GoStringer? we haven'd used it so much in the passed.12:40
dimiternTheMue, because I found it easier while writing tests and debugging to see that instead of (0xdeadbeef, ..)12:41
TheMuedimitern: oh, come on, 0xdeadbeef is so good read- and understandable12:42
dimitern:D12:42
TheMuedimitern: but yeah, good argument12:42
TheMuedimitern: phew, you cache is a number. but almost through13:03
voidspaceTheMue: dimitern: I prefer Id :-p13:05
voidspaceTheMue: dimitern: ID is not an acronym it's an abbreviation13:05
voidspaceso only the first letter should be capitalised13:06
voidspaceif we do reach a consensus I'll stick to it13:06
voidspacebut I think it should be Id13:06
TheMuevoidspace: AllocatableIpLow? info.Cidr?13:07
voidspaceTheMue: IP is an acronym, so is CIDR13:07
voidspaceTheMue: hence the distinction13:07
voidspaceso those should be uppercase if they aren't13:07
dimiternI couldn't give so much importance to the case of a single letter :P13:08
voidspacedimitern: probably the best attitude, I only have a slight preference for correctness13:08
TheMuedimitern: it's not the case, it's consistency13:08
voidspaceso let's settle on correctness then13:08
TheMuedimitern: unlike in python where I often found MyWildType.do_this.strconv()13:08
voidspacethat looks right for Python13:09
voidspaceconsistent with pep813:09
voidspaceah, except for the debate about when to use underscores and when to concatenate13:09
voidspacefair enough13:09
voidspacealthough I still think that looks fine :-)13:09
TheMueto me it simply looks ugly and inconsistent (which says nothing about the language itself). but I simply like it more consistent, it's better readable, eye/brain don't have to do many context switches13:13
* TheMue still dreams of the wonderful consistent smalltalk sources, sadly this lang is so bad in concurrency *sigh*13:13
TheMuedimitern: you've got a review13:15
wwitzel3ericsnow: ping13:15
dimiternTheMue, thanks!13:16
TheMuedimitern: np13:16
=== frankban_ is now known as frankban
katco`natefinch: standup14:01
=== katco` is now known as katco
rogpeppe1looks like there's no OCR in this hemisphere today. would anyone be able to take a look at this, please? http://reviews.vapour.ws/r/2089/14:27
=== kadams54_ is now known as kadams54-away
perrito666rogpeppe1: ah beautiful change, ill take a look although I am not sure I am able to +2 it14:28
rogpeppe1perrito666: thanks. more eyes the better :)14:29
mupBug #1470876 opened: Deploy --to zone=<name> <landscape> <juju-core:New> <https://launchpad.net/bugs/1470876>14:29
=== kadams54-away is now known as kadams54_
voidspacewwitzel3: ping14:44
dimiternvoidspace, TheMue, PTAL -  http://reviews.vapour.ws/r/2090/ - another, much smaller review, this time fixing the subnet add CLI command14:46
TheMuedimitern: ok14:46
dimiternTheMue, thanks14:48
katcoericsnow: can you help me understand why the hook context facade might want to know about the unit{ tag}?14:48
ericsnowkatco: the unit is intrinsic to hook contexts14:49
katcoericsnow: so the wpm facade is an exception?14:49
ericsnowkatco: not at all14:49
katcoericsnow: where is the wpm facade using the unit tag?14:50
ericsnowkatco: rather we can provide the unit at the facade level rather than requiring each API method to require passing the unit tag14:50
katcoericsnow: ah ok. we have the cardinality wrong atm?14:50
ericsnowkatco: I think so14:51
katcoericsnow: k, ty for the tutelage. making the change14:52
perrito666rogpeppe1: got my review14:52
ericsnowkatco: thanks!14:52
rogpeppe1perrito666: ta!14:52
katcoericsnow: i'm going to propose we use the id. it will be a looser coupling if we're just dealing with strings. agree?14:53
ericsnowkatco: keeping the tag would probably be better14:54
katcoericsnow: so importing juju/names in components is ok?14:54
ericsnowkatco: if we pass the unit itself it may save us a bit of work too14:54
ericsnowkatco: I think so14:54
ericsnowkatco: it's info rather than machinery14:54
katcoericsnow: i would really prefer we not do state.Unit as that will couple all components to state14:55
katcoericsnow: or rather, encourage it. i suppose they should be using interfaces14:55
ericsnowkatco: oh, right; we'd have to make that work via interfaces14:55
rogpeppe1perrito666: i find myself unable to reply to your comments - the text box for the reply isn't showing (might be a Chrome issue)14:56
katcoericsnow: actually, reversal. we're already passing in *state.State, this is the same.14:56
katcoericsnow: i'll pass in the unit14:56
perrito666rogpeppe1: ah that happens sometimes it is exxtremely annoying14:56
rogpeppe1perrito666: know of a workaround?14:56
perrito666rogpeppe1: I just hard refrehs a couple of times14:56
perrito666refresh*14:56
rogpeppe1perrito666: tried that14:56
perrito666tried yelling at the screen?14:57
perrito666works sometimes14:57
ericsnowkatco: yeah, at that level it would make sense to just go with *state.Unit14:57
ericsnowkatco: then we adapt it in component/all14:57
perrito666rogpeppe1: I think perhaps some js library is failing to load14:57
perrito666but I keep forgetting to check14:57
rogpeppe1perrito666: it seems that i can do it if i reply inline in the full diff14:57
katcoericsnow: yeah exactly. we'll just have to encourage people to decouple at that point. this shouldn't be hard since that's the entire point of that package14:58
perrito666rogpeppe1: ah, good tip14:58
ericsnowkatco: again, directory structure FTW :)14:58
perrito666rogpeppe1: and you are going to do another PR for the ProxySSHKey? :p15:01
rogpeppe1perrito666: i think it should probably be all the config attributes15:01
rogpeppe1perrito666: and i'm not entirely convinced it's my responsibility to pay of that tech debt :)15:01
rogpeppe1s/of that/off that/15:01
perrito666I have never been able to pull that argument succesfuly :p15:02
wwitzel3voidspace: pong15:06
katcoericsnow: changes pushed. review if you please, sir.15:09
ericsnowkatco: will do15:09
katcoericsnow: looks like process.go had an issue. not sure15:10
ericsnowkatco: you may need to merge/rebase onto the feature branch15:10
katcoericsnow: ah k lemme do that rq15:10
rogpeppe1cherylj: thanks v much for doing some QA on my branch15:15
cheryljrogpeppe1: np :)  I've been in the multi environment stuff recently, so I thought I should take a look15:15
rogpeppe1cherylj: do you know any way of listing all the multi environments so that i can destroy them prior to destroying the local env?15:16
cheryljrogpeppe1: they will show up in juju switch -l.  There's a command coming in a feature branch that will show you the environments for a particular system (aka bootstrap env)15:18
rogpeppe1cherylj: that would be useful. juju switch -l shows me all the dud .jenv files i have lying around too :)15:19
cheryljrogpeppe1:  yeah, that is a pain.  There's a new juju supercommand called system that will let you list envs for a particular system, and do other system-y things15:19
rogpeppe1cherylj: cool15:20
rogpeppe1cherylj: i've replicated your issue. thanks v much again for trying it out. I should have done the same.15:24
cheryljrogpeppe1: np :)15:24
katcoericsnow: k sorry, had to grapple with git a bit. review updated15:28
ericsnowkatco: np15:28
ericsnowkatco: basically ship-it (one small detail to address)15:33
ericsnowkatco: thanks for doing that15:33
katcoericsnow: ah gotcha. i think i tried passing in state before rebasing and (of course) they methods weren't there :p15:33
ericsnowkatco: I had meant to update that bit in my state patch, but apparently forgot15:34
katcoericsnow: "State does not implement server.State (wrong type for UnitProcesses method)"15:36
katcoericsnow: i'll leave that to you15:36
ericsnowkatco: k15:36
ericsnowkatco: yeah, just leave that bit the way you have it and I'll put up a patch to fix it15:38
katcoericsnow: blah. i really butchered the commit history for this branch. i borked that rebase.15:38
ericsnowkatco: I really wish Go would be smarter about compatible types in function signatures15:40
katcoericsnow: is it a {co|contra}variance problem?15:42
ericsnowkatco: only as it relates to strictly equivalent types (e.g. interfaces, maybe even some typedefs)15:50
ericsnowkatco: I'm not even talking about implicit type coercion15:50
katcoericsnow: in my experience, that's one of those things that get added to statically typed languages as they mature15:50
ericsnowkatco: right15:50
katcoericsnow: just a priorities thing15:50
ericsnowkatco: it's on my list of Go things that could happen some day15:51
katcoericsnow: :) i still want to see that spreadsheet!15:51
ericsnowkatco: I'll share that with you at some point :)15:51
=== liam_ is now known as Guest41856
rogpeppe1cherylj: i've pushed a fix for that issue - it seems to work ok for me now16:05
rogpeppe1anyone prepared to +2 this? http://reviews.vapour.ws/r/2089/16:08
katcoi have no idea why the build bot thinks gofmt is sad: http://juju-ci.vapour.ws:8080/job/github-merge-juju/3877/consoleFull#-2049291403f64d1c3f-da20-4160-a70c-0ccd218b227e16:11
mgzkatco: looking16:12
katcomgz: entirely possible i'm missing something, but gofmt -s -w ./process.go produces no changes on my machine16:12
mgzkatco: what go version?16:13
katcomgz: 1.3.316:13
mgzbot uses 1.2.116:13
mgzso, go fmt may have changed its mind16:13
katcomgz: bleh... i'll have to install v1.2.116:13
katcomgz: looks like i can only get go 1.2.216:14
mgzI may be able to just spot it, sec16:14
mgzthat HookContextAPI{ /* st */ } is ood16:15
mgzkatco: I'll fetch your branch and give you the gofmt diff16:18
katcomgz: ty... working on getting 1.2.2 installed too16:18
mgzkatco: ah, also, `go fmt` passes16:20
mgzbut the line we use in verify.bash does not16:20
rogpeppe1katco: i usually just install Go from source - it's dead easy and makes it straightforward to play with any go version you likre16:22
rogpeppe1like16:22
katcorogpeppe1: that's what i have done16:22
katcorogpeppe1: └11:21> ls ~/.local/ |grep go16:23
katcogo16:23
katcogo1.2.2.linux-amd6416:23
katcogo1.3.3.linux-amd6416:23
katcogo1.4.0.linux-amd6416:23
katcorogpeppe1: where go is a symlink to 1.3.316:23
rogpeppe1katco: ah, i have a slightly different approach16:23
mgzkatco: it's dumb, http://paste.ubuntu.com/1181090116:24
rogpeppe1katco:16:24
rogpeppe1% cat $h/bin/go-release16:24
rogpeppe1#!/usr/bin/env rc16:24
rogpeppe1GOROOT=$home/go-release16:24
rogpeppe1path=($GOROOT/bin $path)16:24
rogpeppe1$*16:24
mgzkatco: `go fmt` does not do that, but `gofmt component/all/process.go` does16:24
katcomgz: lol... oy... i will have to use an editor that does not run go fmt when i save ;)16:25
katcois it evil that i'm using vi in a terminal in emacs?16:25
mgz`go fmt` doesn't seem to care either way16:26
mgzkatco: no, it's not evil, it's great that emacs gives you a usable text editor16:26
katcomgz: lol! well played sir!16:26
katcomgz: HA! oh god... so i can't push because MY gofmt is sad16:27
mgzehehe16:27
katcomgz: oyyyy16:27
mgzjust remove the dumb inline comment?16:27
katcomgz: good idea.16:28
katcorogpeppe1: looks like same thing, just fiddling with env instead of paths?16:30
rogpeppe1katco: i guess - i'm not sure what your things are actually doing16:31
katcorogpeppe1: i have all my envars pointing to ~/.local/go, and that's just a symlink to the version i want to use16:31
katcorogpeppe1: so to flip versions, i just point the symlink elsewhere16:32
katcorogpeppe1: it looks to me like you just flip the envar16:32
rogpeppe1katco: yeah16:32
rogpeppe1katco: i actually like your solution16:32
katcorogpeppe1: it's how os x does things as well16:32
rogpeppe1katco: although it would be kinda nice if $GOPATH/pkg was specific to the version too16:33
katcorogpeppe1: yes, that is an annoyance when flipping versions16:33
katcorogpeppe1: i end up just deleting that16:33
rogpeppe1katco: i often move it out of the way and then back again.16:33
katcorogpeppe1: you could get overly complicated and i guess point $GOPATH/pkg to ~/.local/go/user-pkg16:34
rogpeppe1katco: that's an interesting idea, yes16:35
katcorogpeppe1: ty for your comments on gorkin btw16:35
rogpeppe1katco: np - i'm sorry i didn't look at it for more than a minute or so :)16:35
katcorogpeppe1: no worries at all. i'm presenting that at gophercon in a lightning talk16:36
rogpeppe1katco: i do feel quite strongly about the import . thing though - it's commonly used by people trying to get the "feel" of a ruby DSL, but really doesn't feel nice in Go16:36
natefinchericsnow: I'd love to see what your workflow is like. You commit like 20x as often as I do :)  re: https://github.com/juju/juju/pull/267416:37
rogpeppe1katco: (FWIW we used to use import . for gocheck too, but changed to using gc and I think it's a definite improvement in readability)16:37
rogpeppe1katco: am jealous of you going to gophercon16:38
rogpeppe1katco: i couldn't quite bring myself to spend all that cash16:38
katcorogpeppe1: i think we have an extra ticket16:38
rogpeppe1katco: really?16:38
ericsnownatefinch: I try to keep my changes small16:38
ericsnownatefinch: too many times I've been bitten by getting pieces done, breaking them when working on the next piece, and not being able to get back to the point where it was working16:38
katcorogpeppe1: yeah, talk to alexisb16:38
rogpeppe1katco: we're sponsoring it?16:38
katcorogpeppe1: yes16:39
rogpeppe1katco: woah....16:39
katcorogpeppe1: i'm speaking as well16:39
rogpeppe1katco: great!16:39
rogpeppe1katco: yeah, i saw that AFAIR16:39
katcorogpeppe1: re: the import . thing, i like that when what you're trying to accomplish is supposed to feel like an extension to the language16:40
katcorogpeppe1: but i know it's not idiomatic16:40
katcorogpeppe1: for examples, i claim a pass, and people can do whatever they want when they use it ;)16:40
rogpeppe1katco: i really think it's worth trying to make it feel idiomatic16:41
rogpeppe1katco: and Go doesn't have language extensions :)16:41
katcorogpeppe1: the import "." isn't requisite to utilizing the lib, people can do w/e they want16:41
katcorogpeppe1: but it keeps my examples clear16:41
natefinchericsnow: yeah, totally get that16:48
natefinchrogpeppe1: you should go to gophercon.  I wish I could go, but already scheduled a vacation for next week before they announced the date.  Super super jealous of those that can go, especially since I couldn't go last year either.  Hopefully next year, when we don't have any kids under 1yo16:49
ericsnownatefinch: the small-commits approach also helps tell the story of how your thinking progressed over the course of the branch :)16:50
natefinchericsnow: yep16:51
rogpeppe1natefinch: i'm gonna try to go16:56
natefinchwwitzel3: in your api client code, is there any reason not to just return the struct, rather than an interface?17:09
wwitzel3natefinch: because that struct should never be created without using the constructor17:09
wwitzel3natefinch: and I've never regretted using an interface, but I have regetted using a struct for a return :)17:10
=== kadams54_ is now known as kadams54-away
katcowwitzel3: fwiw, i have not been convinced why returning a struct is better yet, but that is what idiomatic go suggests. brad fitzpatrick and andrew gerrand did some live coding and that came up as a pet peeve: i.e. "just return the struct"17:12
katcowwitzel3: i think it probably has something to do with the fact that go has duck-typing, so conversions should happen in that manner, but i don't know if it takes into consideration the issues you bring up17:13
wwitzel3katco: even in a case when you never want that struct instansitated without using the constructor? that seems counter to the point of public and private17:13
natefinchwwitzel3: I don't know, if you see a constructor, it's usually pretty obvious that you shouldn't just create the struct yourself.  In theory you can always make it return an interface later if needed, but initially, that extra interface just complects the package API.... it also adds a red herring, making me think there might be something different returned sometimes.17:13
ericsnowkatco: not that long ago I heard davechen1y say "in functions take interfaces and return structs"17:13
katcoericsnow: yeah, basically17:13
katcowwitzel3: yeah i know. i agree. i haven't thought through that yet. i'd love to get that point clarified17:14
mattywericsnow, are you still available for reviewboard advice?17:14
natefinchBe conservative in what you [return], be liberal in what you accept from others17:15
ericsnowmattyw: depends on what you need <wink>17:15
mattywericsnow, this http://reviews.vapour.ws/r/2091/ just doesn't seem to be working in rb at all, you can see in github that it's basically moving loads of files17:15
mattywericsnow, any advice on how I can resolve this?17:15
katcowwitzel3: maybe it has something to do with: you don't know how your type will be used, and the more specific you are, the more flexible your callers can be17:15
ericsnowmattyw: what isn't working in RB?17:16
wwitzel3katco: isn't that what an interface is? a contract for how your type will be used?17:16
katcowwitzel3: e.g. if i return interface Foo, i can only use it as a Foo. but if i return struct Bar, i can pass Bar into all the things that take interfaces that look like Bar17:16
mattywericsnow, well loads of files it just shows me an errors (for the files that have gone) and for the new files it just display all the code, what's actually happened is those file were moved17:16
ericsnowmattyw: deleted (moved) files show up with an error (and say "deleted" in the file list)17:16
ericsnowmattyw: yep, that's how RB works (unfortunately)17:17
ericsnowmattyw: in this case I'd just point folks to the PR17:17
ericsnowmattyw: it's not like you made any semantic changes17:17
mattywericsnow, ok will do thanks17:18
katcowwitzel3: it's a valid question i think. idiomatic go says return structs. i just don't know why.17:18
ericsnowmattyw: cool17:18
wwitzel3katco: isn't that what a closure is for? you encapsulate things in a manner so you can easily pass them within your API without having to implement someone elses?17:18
mattywericsnow, just thought it was worth checking, in case there was any git-foo I was missing17:18
mattywgit-fu rather17:18
natefinchwwitzel3: if you have to write a closure, you've already lost17:18
ericsnowmattyw: no worries17:18
katcowwitzel3: i'm not sure i understand the closure comment. interfaces would be dealing with methods17:18
katconatefinch: that is a rather inflammatory statement :p17:19
ericsnowmattyw: it would be nice if RB handles moves (and deletes) better17:19
natefinchkatco: in general, a closure means "someone screwed up their API and now I have to fix it with this gross hack"17:19
wwitzel3katco: right, but you were saying how if you run the interface vs. a struct, the struct can be passed to anything that accepts an interface that it implements17:19
katconatefinch: that is absolutely wrong17:19
natefinchkatco: let's discuss after the demo ;)17:20
ericsnowmattyw: that patch doesn't have semantic changes, right?17:20
katcowwitzel3: right, i don't think you can solve that with a closure as closures are functions, and interfaces deal with methods on a struct17:20
ericsnowmattyw: if not, totally LGTM17:20
wwitzel3katco: no, I am saying your API which accepts interfaces, could accept closures.17:21
natefinchwwitzel3: gave you a shipit on the client... there were a couple comments, but they're not critical17:21
wwitzel3katco: creating isolation of the foreign API17:21
natefinchwwitzel3: i.e. ok to do after the demo (or tell me I'm full of it and "Drop" them ;)17:22
wwitzel3natefinch: thank you :), taking a look17:22
mattywericsnow, if you want to take a look at the two commits https://github.com/juju/juju/pull/2713 you will see minor things17:23
ericsnowmattyw: yeah, that's the only difference I noticed so LGTM17:24
katcoericsnow: wwitzel3: natefinch: api server abstraction finally landed17:25
wwitzel3\o/17:26
ericsnowkatco: yeah, just saw :)17:26
katcothat took forever17:26
katcoi think i hit every branch of the CI issues tree on the way down17:26
ericsnowkatco: I'll have a patch up shortly that fixes the UnitProcesses issue17:26
katcoericsnow: sweet17:26
=== kadams54-away is now known as kadams54_
ericsnowkatco: http://reviews.vapour.ws/r/2092/17:41
katcoericsnow: tal17:41
ericsnowkatco: ta17:41
=== kadams54_ is now known as kadams54-away
katcoericsnow: just reading through this, we should put some thought into another name for "State" within components at some point17:43
ericsnowkatco: agreed17:44
katcowwitzel3: natefinch: can someone else review this as well? i'm bumping into a meeting, and i'd like another +117:45
wwitzel3katco: yep, I will as soon as I address my changes from the rebase17:49
natefinchkatco: looking17:50
katcoericsnow: i'm scared. this is all understandable by understanding the individual parts.17:50
katcoericsnow: i need the comfort of the rats nest i've become accustomed to.17:51
ericsnowkatco: if you like that's what I can work on next week <wink>17:51
natefinchericsnow: I don't understand how that API can work17:52
ericsnownatefinch: the unit is intrinsic to the hook context17:53
ericsnownatefinch: so you don't need the unit to be identified for each API request17:54
natefinchericsnow: also means you *can't* query processes for other units17:54
wwitzel3natefinch: if you can give the client stuff another glance, since I updated it for the renames that happened in server-args17:54
ericsnownatefinch: is that something we would do in a hook context?17:55
natefinchericsnow: I have no idea :)   I guess we can always change it later.17:56
ericsnownatefinch: yeah, adding support for that use case would be almost trivial17:56
ericsnownatefinch: (strictly additive)17:56
katcoericsnow: natefinch: possible counter-example: leadership. leaders may request operations for other units?17:57
ericsnowkatco: worth looking into (I'm not super familiar with unit leadership)17:58
katcoericsnow: fwereade was mentioning at one point that a service could elect a leader which may then perform operations for the entire service17:59
ericsnowkatco: do we support that for other components (e.g. storage)?18:00
natefinchI say we leave it as is for now.  It's nice not to have to specify the unit when the unit should be obvious.  If we later want to add the ability to specify the unit, we can do so easily.18:00
katcoericsnow: really not sure18:00
ericsnownatefinch: agreed18:00
ericsnowkatco: I'll create a card for the open question18:00
katcoericsnow: good idea18:00
natefinchI'm guessing we'll need to be able to specify the unit... but not for the demo :)18:00
ericsnownatefinch: I expect such functionality will not be part of the hook context API18:03
natefinchericsnow: perhaps not18:03
natefinchI'm a little curious why we need two APIs, but not concerned about it right now18:04
natefinch(or rather why it seems like we might need more than one)18:04
ericsnownatefinch: eventually we will have at least 318:04
ericsnownatefinch: (hook context, worker, public)18:04
natefinchericsnow: seems like they won't differ significantrly18:05
ericsnownatefinch: probably not18:05
ericsnownatefinch: but the differences will be subtle18:05
natefinchericsnow: those are the worst kinds of differences18:05
ericsnownatefinch: when we add the others we can look into the best approach (merged or separate)18:06
natefinchericsnow: yep18:06
wwitzel3dang18:48
wwitzel3I was hoping your stuff wouldn't merge ericsnow , so then you'd have to fix the conflicts18:48
ericsnowwwitzel3: mwahaha18:49
ericsnowwwitzel3: I realized that after my patch was queued up18:49
ericsnowwwitzel3: sorry18:49
wwitzel3natefinch mentioned on my review so I hurried to merge but you got in like a minute before me, lol18:51
natefinchhaha18:52
ericsnowwwitzel3: I was thinking to myself "eets a race" (from the movie "Rat Race")18:53
wwitzel3:)18:53
=== kadams54 is now known as kadams54-away
hallblazzarWARNING juju.replicaset replicaset.go:98 Initiate: fetching replication status failed: cannot get replica set status: can't get local.system.replset config from self or any seed (EMPTYCONFIG)19:09
hallblazzardoes anyone got this error when run  "juju bootstrap -e maas"?19:09
katcoericsnow: hey, have time to meet now?19:16
ericsnowsure19:16
katcoericsnow: out 1:119:17
wwitzel3katco: ping19:29
wwitzel3katco: in the client constructor for leadership you take in the facade and the caller seperately, do you just pass in st for both?19:30
natefinchguys, I gotta run. We still need to pack for our trip... I don't think there's much more I can help with at this point anyway, unless you want someone to throw under the bus for a quick rubber stamp ship it.19:42
natefinchwwitzel3: katco, ericsnow ^^19:42
ericsnownatefinch: have a great time :)19:42
wwitzel3natefinch: thanks again, have a good time19:43
natefinchthanks!19:43
mupBug #1471004 opened: apiserver/storageprovisioner unit test fails on ppc64 <juju-core:New> <https://launchpad.net/bugs/1471004>20:30
mupBug #1471004 changed: apiserver/storageprovisioner unit test fails on ppc64 <ci> <intermittent-failure> <test-failure> <unit-tests> <juju-core:Triaged> <juju-core 1.24:Triaged> <https://launchpad.net/bugs/1471004>20:39
mupBug #1471004 opened: apiserver/storageprovisioner unit test fails on ppc64 <juju-core:New> <https://launchpad.net/bugs/1471004>20:48
mupBug #1471030 opened: github.com/juju/juju/cmd/juju tests timeout on ppc64 <ci> <ppc64el> <test-failure> <unit-tests> <juju-core:Triaged> <https://launchpad.net/bugs/1471030>22:45
thumpermenn0: ping23:02
menn0thumper: pong23:02
thumpermenn0: do you have some time to talk through this upgrade issue?23:02
menn0thumper: yup. standup hangout23:03
mwhudsondavechen1y: do you know much about cmd/internal/obj/arm ?23:14
mwhudsonlike, what is Prog.Scond23:15
mwhudsoni guess it's the arm conditional execution bits?23:15
mwhudsonah yes23:16
axwperrito666: sorry I think you were saying something as I left23:26
perrito666axw: no, I bg noise23:26
axwok23:26
axwperrito666: sounded like someone jumping up and down on a squeaky bed23:26
perrito666axw: eliptical walking machine23:27
axw:)23:27
perrito666I hate it23:27
perrito666:p23:27
perrito666I have oiled every possible piece of that thing and still makes noise23:27

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