/srv/irclogs.ubuntu.com/2015/05/22/#juju-dev.txt

jhobbshow can I enable trace logging for golxc when using juju?00:08
wallyworldjhobbs: juju set-env logging-config="<root>=INFO;unit=DEBUG;golxc=TRACE"00:29
wallyworldthat's after a system is running00:29
wallyworldcan also specify at bootstrap using --logging-config="blah"00:29
=== kadams54-away is now known as kadams54
cheryljCan I get a review for my file handle bug fix?  http://reviews.vapour.ws/r/1740/01:01
=== kadams54 is now known as kadams54-away
thumpercherylj: shipit01:26
cheryljthanks, thumper!01:27
davecheneythumper: so i'm trying to fix a race in github.com/juju/juju/apiserver_test.(*pingerSuite).TestAgentConnectionDelaysShutdownWithPing()01:37
davecheneyand i'm suspecting that apiserver.Pinger is not actually used01:37
davecheneytwo qestions01:37
davecheney1. should I make a bug for each of these races01:37
davecheney2. can I just delete apiserver.Pinger ?01:37
davecheneyoh, i see how it's used01:38
davecheneyok01:38
natefinch-afkit's amazing how little time it takes writing in a language with exceptions to remind me why I hate them01:51
=== natefinch-afk is now known as natefinch
axw_anastasiamac: I ignored your "not ready for review", and reviewed ;)01:54
axw_anastasiamac: mostly looks good anyway01:55
=== axw_ is now known as axw
anastasiamacaxw_: oh! the headache ...01:55
anastasiamacaxw: :D01:55
anastasiamacaxw: it was marked this way as it does not work and m using the wrong glue01:55
anastasiamacaxw: i think01:55
anastasiamacaxw: tyvm for review... i m fixing it all now anyway :D01:56
axwanastasiamac: oh? it looked like it would work01:56
axwnps01:56
anastasiamacaxw: nuh... it would not and it does not link properly... m going to hijack ian after ur 1:1 and nail this PR :D01:56
wallyworldnatefinch: i have the opposite - amazing how using Go and putting if err != nil {return err} EVERYWHERE makes me miss exceptions so much01:57
natefinchwallyworld: my current complaint is that anything can fail, and you have no idea it can until it does.  And having the real code in your function be wrapped in 3 levels of indented try's and 20 lines of exception handling at the end... . and then you have the exception handling *inside* your except blocks, which if you forget, then you mask the original error....01:59
wallyworldnatefinch: i guess it's like anything - it can be done nicely or poorly :-)01:59
natefinchwallyworld: I find it a lot easier to do error returns nicely... plus then if your function can fail, it's right there in the function signature.02:00
natefinchmeanwhile, I think python's function-scoped variables is screwing me somehow02:02
wallyworldnatefinch: true but what tends to happen is that we err != nil retrun err and just ignore the error02:02
natefinchwallyworld: that's not really any different than just letting an exception fly02:04
wallyworldnatefinch: true, but doing exceptions is far less useless boilerplate02:05
natefinchwallyworld: is it? http://pastebin.ubuntu.com/11275221/02:05
natefinchat least with error returns the code paths are 100% straight forward if statements... not this convoluted jumping around in the code.02:06
wallyworldnatefinch: just in meeting, will look in a bit02:07
natefinchwallyworld: np02:07
natefinchsomeday I'll finish up my blog post about why exceptions are evil.... maybe when all the kids are in school finally.02:09
natefinchanyone good at python want to help me out with figuring out why the wrong exception is being printed from this code?  http://pastebin.ubuntu.com/11275221/02:12
natefinchsomething in lines 19-24 throwing an exception, and then dump_env_logs on line 29 is throwing....  line 34 should be raising e, not e2, right?    Because right now, line 39 is logging e2 somehow.02:13
natefinchI added the try/catch around the dump_env_logs in order to try to keep that exception from masking the real problem... but somehow line 33 is logging the exact same error as line 3902:15
natefinchthumper: ^02:19
natefinchafk a bit02:20
=== natefinch is now known as natefinch-afk
thumpernatefinch-afk: would really help to see the stack trace02:24
axwwallyworld: sorry, didn't want to miss my delivery02:25
wallyworldaxw: np, we were finished anyway02:25
* axw goes to play with new modem02:25
wallyworldenjoy02:25
=== natefinch-afk is now known as natefinch
natefinchthumper: full code (for correct line numbers): http://pastebin.ubuntu.com/11275530/      stack traces: http://pastebin.ubuntu.com/11275558/02:30
thumpernatefinch: what are you expecting?02:31
natefinchthumper: I'm expecting that the raise on line 197 is going to raise e (from line 186) and it seems to be raising e2.02:36
thumperIf no expressions are present, raise re-raises the last exception that was active in the current scope.02:38
thumpere2 was the last exception in the current scope02:38
thumperif you explicitly want e, go 'raise e'02:39
natefinchwon't that screw up the stack trace of e?02:39
thumpernot sure02:40
thumpertry it02:40
natefinchit does02:41
natefinchthat seems amazingly broken.02:41
natefinchtiny repro case: http://pastebin.ubuntu.com/11275739/02:42
natefinch(pay no attention to my tabs instead of spaces.... wrote it before I saved, so my editor didn't know to convert my tabs into spaces)02:44
natefinchI guess the solution is - you have to put that cleanup code in a separate function.03:01
thumpernatefinch: yeah, I was just writing that out03:01
thumperhad the same thought03:01
thumpermake the second exception live in a different scope03:02
natefinchwhich is not horrible, it's just surprising03:02
thumperpython scopes != indentation level03:02
natefinchyeah03:02
davecheneyhttp://reviews.vapour.ws/r/1762/03:02
natefinchI knew the function-level scope was screwing me somehow03:02
menn0thumper: so jam caught me late last night and wanted one more improvement to the txn pruning work.03:15
menn0thumper: so here it is: http://reviews.vapour.ws/r/1763/03:15
thumpermenn0: oh?03:16
menn0thumper: he wanted historical stats to be kept. which is probably a good idea.03:16
menn0thumper: especially given that pruning is quite infrequent now and so you won't see much in the logs once they get rotated.03:17
* thumper nods03:17
menn0thumper: so review pls? :)03:19
thumpermenn0: ack, was just reviewing davecheney's one03:19
menn0thumper: cheers03:19
menn0thumper: does your switch PR need another review?03:20
thumpermenn0: yeah03:20
menn0thumper: k i'll have a look at that03:20
thumpermenn0: does the txn package use juju/errors yet?03:21
menn0thumper: no, that's why i didn't introduce it03:21
menn0thumper: is it supposed to?03:21
thumperfair enough... for now,03:21
* thumper shrugs03:21
thumperprobably one day03:21
menn0thumper: I almost started using it but then noticed it wasn't used so thought that might have been on purpose to reduce coupling or something03:22
menn0it should probably use it03:22
davecheneyhttps://github.com/juju/juju/pull/240203:36
axw_wallyworld: would you mind taking a look at https://github.com/go-amz/amz/pull/50 for me?03:40
wallyworldsure03:40
wallyworldaxw_: haven't looked yet, just finishung with anastasia, will look real soon03:43
axw_wallyworld: no worries03:43
=== axw_ is now known as axw
menn0thumper: is it possible for a system and an env to have the same name?03:55
thumperyes03:56
thumpernormally when you bootstrap03:56
thumperof have access to the initial environment03:56
menn0thumper: so how does switch tell the difference?03:56
thumpermenn0: it doesn't, environments can be used as systems03:56
menn0right03:56
thumperbut systems can't be used as environments03:56
menn0ok03:57
natefinchwait, what's a system?03:57
thumperso if you have access to the environment "test" and system "test", then it will always use the environment03:57
natefinchis that the base environment that all the sub-environments run on top of?03:57
thumpernatefinch: kinda03:57
menn0could it be possible for someone to shoot themselves in the foot and name the non-initial env with the same name as another env or system?03:57
thumpernatefinch: the word we were told to use03:57
thumperwas server, now it is system03:57
thumperas it could be more than one server...03:58
thumperha and all that03:58
menn0thumper: ^^^03:58
menn0(my Q a few lines back)03:58
natefinchthumper: makes sense03:58
thumpermenn0: no, as the configstore treats that as an error03:58
thumperconfigstore has tests for all that03:59
menn0thumper: ok cool. just checking that this has been considered.03:59
thumper:-)03:59
aisraelalexisb: Here's the bug I mentioned the other day that's causing juju to hang after upgrading 1.24 betas: https://bugs.launchpad.net/juju-core/+bug/145772804:12
mupBug #1457728: `juju upgrade-juju --upload-tools` leaves local environment unusable <juju-core:New> <https://launchpad.net/bugs/1457728>04:12
axwwallyworld: please see my reply about non-contiguous sequence numbers in request params04:12
wallyworldok04:12
wallyworldaxw: sounds good04:13
axwwallyworld: ta04:13
menn0thumper: one line review pls http://reviews.vapour.ws/r/1765/04:21
menn0thumper: forgot to say... review done04:21
menn0thumper: for the switch change04:21
mupBug #1457728 was opened: `juju upgrade-juju --upload-tools` leaves local environment unusable <juju-core:New> <https://launchpad.net/bugs/1457728>04:22
menn0wallyworld or axw: one line review pls? http://reviews.vapour.ws/r/1765/04:33
mupBug #1457728 changed: `juju upgrade-juju --upload-tools` leaves local environment unusable <juju-core:New> <https://launchpad.net/bugs/1457728>04:34
* menn0 is keen to be done with this04:34
axwmenn0: done04:34
menn0axw: cheers04:34
wallyworldtoo quick for me04:37
mupBug #1457728 was opened: `juju upgrade-juju --upload-tools` leaves local environment unusable <juju-core:New> <https://launchpad.net/bugs/1457728>04:40
wallyworldaxw: a small one for friday arvo if you have a sec http://reviews.vapour.ws/r/176604:44
axwwallyworld: ok04:44
axwwallyworld: I've just sent a PR for EC2 tagging, but won't tick the card over yet because I need to do OpenStack too04:45
wallyworldok04:45
wallyworldmaybe we needed 2 cards04:45
axwwallyworld: I don't think this change is safe. It would lead to machines being destroyed while there are units on it. Pretty sure the units are supposed to run stop hooks etc. before the machine is destroyed04:52
wallyworldaxw: how does it do that? if there is a pending cleanup operation, the machine likfecycle is not advanced, otherwise it's just the same as now04:53
wallyworldthe only change is that if there is one unit on the machine which is part of a dying service, the machine destroy doesn't error and also doesn't do anything04:54
axwwallyworld: "juju deploy mysql --to 1", <wait for unit to come up>, "juju desroy-unit mysql/0" immediately followed by "juju destroy-machine 1"04:54
wallyworldthat will behave as normal04:55
wallyworldit's only if the service is dying that the new behaviour kicks in04:55
axwwallyworld: ok, so swap "destory-unit" with "destroy-service mysql"04:56
wallyworldand the new behaviour is not to error, and also not to advance machine lifecycle04:56
* axw looks again04:56
wallyworldmaybe a hangout to explain04:56
axwwallyworld: sorry, I thought it was still running ops04:56
wallyworldah np04:57
axwwallyworld: I think this does break the contract of Destroy though. there's no guarantee that another service won't be added right?04:58
axwif Destroy returns, then the lifecycle should be Dying04:59
wallyworldaxw: true, but then the cleanup won't run i don't think04:59
axwwallyworld: precisely04:59
axwso Destroy did not in fact do what it was supposed to04:59
wallyworldbut the user doesn't get an error is what you're sayinh04:59
wallyworldso we are stuck either way05:00
wallyworldi guess it could be a warning to the user instead05:00
wallyworldErrDestroyPendingButMightNotHappenIfSomeoneAssignsANewUnitInTime05:00
wallyworldaxw: school pickup time, bbiab, maybe introduce a new error as per above05:02
axwwallyworld: maybe... I think it would be better if we allowed the machine to become Dying when it has units, but prevent it from becoming Dead until it has none. then worker/machiner would have to wait until there are no units before callign EnsureDead05:03
wallyworldaxw: ok, so not a no-op, thus preventing new units, but modify the cleanup worker05:05
wallyworldthat sounds like a good idea05:05
axwwallyworld: you'd have to modify worker/machiner (at least)05:06
wallyworldyep05:06
axwwallyworld: it just waits until life = Dying, then calls EnsureDead05:06
wallyworldwill do that, a nicer solution, thanks05:06
wallyworldgotta run, biab05:06
axwttyl05:06
natefinchso I accidentally renamed a file outside of bzr, and now it thinks I have removed and readded it with a different name. Is there an easy way to turn that into a bzr rename?05:14
natefinchoh, I guess just doing bzr mv worked... nevermind05:15
natefinchman bzr has terrible error messages05:26
natefinchI have a checkout of  lp:juju-ci-tools/repository  with some changes I've made.. I want to push those up to a branch under my own namespace.... I can't figure out the right incantation to make that happen05:27
natefinchthumper: ^ ?05:27
natefinchor wallyworld ^05:27
thumpernatefinch: checkout or branch?05:28
natefinchthumper: I don't know how to tell05:28
thumpernatefinch: plz do this and pastebin "bzr info -v"05:28
natefinchthumper: http://pastebin.ubuntu.com/11278010/05:28
thumpernatefinch: yeah, checkout is so the wrong thing to do05:29
natefinchlooks like checkout, but I don't know how to branch, because branch seems to expect I'm branching from somewhere else... and I just want to branch from what's right here05:29
thumpernatefinch: you have something that will be remotely trying to commit to the branch on launchpad05:29
natefinchbzr branch . my-new-branch05:30
natefinchexcept that of course does not work05:30
aisraelbzr push lp:~username/juju-cli-tools/repository ?05:30
natefinchthen I get  bzr: ERROR: Permission denied: "~natefinch/juju-cli-tools/repository/": : Project 'juju-cli-tools' does not exist.05:31
* thumper tries to recall the incantation05:31
* natefinch tried switch, too, to no avail05:32
natefinch$ bzr switch fill-logs05:32
natefinchbzr: ERROR: Permission denied: "Cannot create 'fill-logs'. Only Bazaar branches are allowed."05:32
thumpernatefinch: bzr reconfigure --tree .05:32
thumpernatefinch: that should unbind your checkout from the remote branch05:33
thumpernatefinch: then05:33
thumperbzr push lp:~natefinch/juju-ci-tools/foo-bar05:33
natefinchit really does not like juju-ci-tools - bzr: ERROR: Permission denied: "~natefinch/juju-cli-tools/fill-logs/": : Project 'juju-cli-tools' does not exist.05:34
natefinchbzr: ERROR: Permission denied: "~natefinch/juju-cli-tools/repository/": : Project 'juju-cli-tools' does not exist.05:35
natefinchI'm dumb05:35
natefinchthe project is juju-ci-tools05:35
natefinchexcept.... I think I fucked it up..05:38
* natefinch should not bzr at 1:30am05:38
natefinchhaha ... yeah, man.. just hadn't commited.  ok, definitely time for bed.05:40
natefinchthumper: thanks for the help05:40
thumper:)05:41
thumpernp05:41
fwereadeTheMue, dooferlad, voidspace: dimitern's had a power cut08:25
TheMuefwereade: ouch, thanks for the info08:25
voidspacefwereade: ok, thanks08:32
dooferladTheMue: before the meeting (and dimitern gets his power back), what can I do to help with the planning board? Is there anything to add or review?08:35
TheMuedooferlad: not yet, the old open cards are already all moved by dimitern08:35
dooferladTheMue: ok, thanks.08:36
TheMuedooferlad: you can take a look at the parking lot08:36
TheMuedooferlad: currently there are no cards assigned to you08:37
dooferladTheMue: Isn't that how it is supposed to be if we are being "agile"?08:38
dooferladTheMue: only take a card when you are ready to do something new?08:38
TheMuedooferlad: that's moving it from iteration backlog into actively working08:40
TheMuedooferlad: in my case in the backlog all those cards belong to a family of tasks. so it makes sense to assign them to one person. but that does not mean to do them all at the same time.08:41
TheMuedooferlad: first backlog, then planning of an iteration, then getting active08:41
fwereadeTheMue, dooferlad, voidspace: thought/suggestion: preassigning is an antipattern. short-term impact of picking up work you're not immediately familiar with: slows down you and likely the person who write the code. long-term impact: everyone knows everything better, less silos, less bugs, more general goodness08:59
=== urulama is now known as urulama|lunch
TheMuefwereade: yeah, the intention here isn't to create silos. only grouping short-term related work. but it's worth discussing even that.09:02
TheMuedooferlad: voidspace: dimitern suggests we already start the meeting, he will join later09:03
dooferladTheMue: OK, there in a second.09:04
voidspaceok09:05
voidspacefwereade: I think I missed the context for those  comments09:05
voidspacefwereade: I agree on both points though09:05
mupBug #1457797 was opened: Juju bootstrap fail everytime <bootstrap> <juju> <juju-core:New> <https://launchpad.net/bugs/1457797>09:31
perrito666good morning all10:26
TheMueperrito666: o/10:27
=== urulama|lunch is now known as urulama
voidspaceI'm getting really good at installing trusty into kvm images11:04
voidspaceI've done it about eight times in the last 48 hours11:04
voidspaceand I still don't have a working maas11:04
voidspacealthough I got closer than ever before this time11:04
voidspaceI had a working maas with boot images imported and a commissioned node11:04
voidspacebut the upgrade to maas 1.8 failed11:04
voidspacethis time I'll try again and go directly to 1.8 instead of via the "install and upgrade" approach11:05
voidspacejw4: you will like this11:07
voidspacejw4: https://www.youtube.com/watch?v=1Zfv1LZlU9U11:07
voidspacejw4: video made by a close friend of mine, singer is our babysitter...11:08
voidspacejw4: last night it won Best Christian Music Video at the UK Christian Film Festival Awards.11:08
dimiternhttp://reviews.vapour.ws/r/1769/ << reviews welcome11:09
TheMuedimitern: *click*11:13
TheMuedimitern: any differences to the already done fix?11:14
dimiternTheMue, none11:16
TheMuedimitern: then it's simple ;)11:16
dimiternTheMue, indeed :)11:16
TheMuedimitern: so, done11:17
dimiternTheMue, thanks!11:17
benjivoidspace: good stuff; I like the spare arrangement12:11
rogpeppe1dimitern, fwereade, jam: i'm wondering about adding a function to the juju/api which tries to dial [][]network.HostPort (the same thing returned by api.State.APIHostPorts). does that sound reasonable to you?12:18
rogpeppe1s:juju/api:juju/api package:12:18
dimiternrogpeppe1, instead of using Open?12:18
rogpeppe1dimitern: it would probably layer on top of Open12:18
fwereaderogpeppe1, that does ~the same thing as we do here and there re connecting to all of them in parallel and returning the first one that works?12:19
rogpeppe1dimitern: atm every external client needs to implement parallel dialing12:19
rogpeppe1fwereade: yes12:19
fwereaderogpeppe1, so long as you replace the existing parallel dialers with your new one, +10 :)12:20
* rogpeppe1 thinks again :)12:20
=== rogpeppe1 is now known as rogpeppe
rogpeppefwereade: there's more than one?12:21
fwereaderogpeppe, I'm assuming at least the clients and the agents?12:21
rogpeppefwereade: i was kinda hoping they used the same code. it's been a while12:21
* rogpeppe looks12:21
voidspacebenji: spare?12:22
dimiternrogpeppe, sgtm12:23
voidspacebenji: do you mean sparse?12:23
benjivoidspace: just piano and vocals12:23
benjiyep12:23
* dimitern is afk for a while12:23
voidspacecool, yeah it's nice12:23
benjithe massive verb put me off at first, but it works once the song gets going12:24
benjiI listened to it twice, so it must have been enjoyable :)12:24
* TheMue is afk for a while, fetching his new car12:41
perrito666nice12:41
rogpeppefwereade: AFAICS there's only one implementation because in agent, configInternal.SetAPIHostPorts selects only the internal addresses, so it can use the existing dial logic in api12:41
fwereaderogpeppe, doesn't it still have a bunch of addresses to choose from?12:42
rogpeppefwereade: yes, but that logic is dealt with in api.Open12:42
rogpeppefwereade: it's possible that i should just jam all the addresses into one slice12:43
rogpeppefwereade: excluding any local addresss, i guess12:43
fwereaderogpeppe, ok, I'm a bit lost -- api.Open handles *some* multiple-address stuff but... doesn't parallelise?12:44
rogpeppefwereade: there are two possible levels of parallelisation12:45
rogpeppefwereade: because we've got [][]HostPort, not []HostPort12:45
rogpeppefwereade: api.Open handles []HostPort but not [][]HostPort12:45
fwereaderogpeppe, ohhhhh12:45
fwereaderogpeppe, the "jam all addresses into one slice" feels reasonable offhand?12:46
rogpeppefwereade: it kinda makes sense to do all servers in parellel, but within each server, do each address in turn12:46
rogpeppefwereade: i dunno. there can be a lot of them12:46
fwereaderogpeppe, does it? isn't the reason for dialing multiple addresses for the same server that we don't know which might be reachable?12:46
fwereaderogpeppe, if you can somehow sort each of the inner slices by bestness, then I can see the point12:47
rogpeppefwereade: once we know that an address *is* reachable, we should probably use that by preference for a given server12:47
rogpeppefwereade: yes12:47
fwereaderogpeppe, I *think* there's some code that does that already12:48
fwereade...somewhere :/12:48
rogpeppefwereade: yeah, i seem to remember that too12:48
rogpeppefwereade: i think it might be in api.Open12:48
rogpeppejam: do you remember where that logic is, by any chance?12:51
rogpeppeoh bother, it's friday12:51
rogpeppeha! found it. api.slideAddressToFront12:52
rogpeppefwereade: ^12:52
jw4voidspace: I saw the comment on twitter a couple days ago... very nice12:56
rogpeppefwereade: i discovered this, so i think i'll go with a similar approach for the time being. there's a lot of logic there and combined with api.Open; a more cohesive approach would probably be good at some point. http://godoc.org/github.com/juju/juju/juju#PrepareEndpointsForCaching13:21
wwitzel3ericsnow: ping13:22
ericsnowwwitzel3: present13:22
wwitzel3ericsnow: going to continue to go through what you did and make some stories on the board from it13:23
perrito666ericsnow: hb13:23
ericsnowwwitzel3: want to talk through them with me?13:23
mgzericsnow: lots of presents? :)13:24
wwitzel3ericsnow: up to you :) I'm happy to, but don't feel obligated13:24
ericsnowperrito666, mgz: yeah, waking up early to realize my alarm clock is broken so I had better just get up :)13:24
perrito666ericsnow: hope you got a new alarm clock13:25
mgzthat seems like an unexciting gift13:25
ericsnowperrito666: just shopping for one :)13:25
perrito666who uses alarm clocks these days, mine has been disconnected for years, I just have it on the night table because it is nice13:25
perrito666I had it because it was one of those ipod docks, but then apple graciously changed the connector and it no is just a nice white cube13:26
ericsnowwwitzel3: on moonstone13:36
anastasiamacericsnow: ━═★[̲̅̅H̲̅][̲̅̅A̲̅][̲̅̅P̲̅][̲̅̅P̲̅][̲̅̅Y̲̅] [̲̅̅B̲̅][̲̅̅I̲̅][̲̅̅R̲̅][̲̅̅T̲̅][̲̅̅H̲̅][̲̅̅D̲̅][̲̅̅A̲̅][̲̅̅Y̲̅]★═━ ¸.✿¨¯`✿´¸¸.✿¨¯`✿13:38
Spads🎂13:41
alexisbhappy b-day ericsnow!13:42
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
mupBug #1457895 was opened: azure-mode should not forbid targeted deployments <juju-core:New> <https://launchpad.net/bugs/1457895>13:50
mupBug #1457895 changed: azure-mode should not forbid targeted deployments <juju-core:New> <https://launchpad.net/bugs/1457895>14:02
mupBug #1457895 was opened: azure-mode should not forbid targeted deployments <juju-core:New> <https://launchpad.net/bugs/1457895>14:14
mupBug #1457797 changed: Juju bootstrap doesn't work behind proxy <bootstrap> <juju> <juju-core:Invalid> <https://launchpad.net/bugs/1457797>14:20
natefinch_jw4: I wish action fetch and status would tell me the action name that go with the results.14:31
natefinch_katco: can you resend me that link?  I was logged into the wrong account14:36
katconatefinch_: yeah14:36
mupBug #1424961 changed: provisioning stops working with local provider <deploy> <local-provider> <juju-core:Invalid> <https://launchpad.net/bugs/1424961>14:50
natefinchwwitzel3: embiggen plz15:03
jw4natefinch: really good point!15:23
jw4natefinch: I'm gonna use Actions 2.0 to trojan in a bunch of enhancements hopefully15:23
jw4natefinch: I'm not sure exactly how we're going to fix a bunch of the usability issues with actions 1.0 - I wish we'd clearly labeled the api and cli as beta15:25
natefinchjw4: seems like adding a new key to the output wouldn't hurt anything.. parsers should ignore extra data they don't understand anyway15:28
natefinchcourse... you never know when someone might have a poorly thought out script15:29
jw4natefinch: true - your request shouldn't change much... there's just a bunch of fiddly little things15:31
=== urulama is now known as urulama__
mupBug #1457797 was opened: Juju bootstrap doesn't work behind proxy <bootstrap> <juju> <juju-core:Incomplete> <https://launchpad.net/bugs/1457797>15:59
alexisbnatefinch, katco, ericsnow, wwitzel3: loving the demo videos!16:25
natefinchalexisb: :)16:25
ericsnowalexisb: :)16:25
wwitzel3alexisb: thanks16:26
katcoalexisb: :)16:34
natefinchericsnow: btw, this is what I mean by function-scoped variables in python:  https://repl.it/pIP16:41
natefinchericsnow: as opposed to block scoped, like Go: http://play.golang.org/p/ADdQIO9GaP16:44
ericsnownatefinch: oh, you mean that basically only blocks (functions, classes, and modules) in Python define scopes?  and that indentation does not (necessarily)16:44
natefinchericsnow: yes16:44
ericsnownatefinch: I could see how that would be confusing at first16:44
natefinchericsnow: when you're used to block scope (where any branch counts as a block), function-scope is really confusing.16:45
mgzehe, but go lets you do all kinds of ugly shadowing that messes up with their scoping rules...16:46
ericsnownatefinch: yeah, just think of it as Python only has scope against function bodies (and modules/class definitions are just special case functions)16:46
mgzthe practice of using 'err' as the name everywhere can create some fun bugs16:47
natefinchmgz: pretty much any language let you shadow variables from a higher scope, the reason it's different for go is the confusion between = and :=16:49
natefinchmgz: for example, you can shadow trivially in python: https://repl.it/pIW16:50
natefinchpython just doesn't have block scope16:51
natefinchmgz: sorry, better example: https://repl.it/pIW/116:51
mgznatefinch: sure, in practice you get less of it with fewer scopes existing16:51
mgzpeople do still confuse themselves16:52
natefinchand in languages where you can't shadow, you get crap like err1 err2 err3, etc16:52
mgzerr, inner_err, inner_inner_err...16:53
natefinchif Go didn't have := and you had to declare every variable as var foo = "bar"  .... it would be much more obvious where the shadowing was occurring. But it would also be annoyingly more verbose.  It's a tradeoff.16:54
=== kadams54 is now known as kadams54-away
voidspaceright, happy weekend everyone17:20
voidspacesee you on Tuesday!17:20
natefinchvoidspace: see ya17:20
=== kadams54-away is now known as kadams54
katconatefinch: heyo, back yet?17:40
natefinchmgz, sinzui, abentley: https://github.com/juju/juju/wiki/Testing17:44
sinzuinatefinch, cd juju-ci-tools; make install-deps17:46
sinzuithat will provide the real deps need by the files17:46
=== kadams54 is now known as kadams54-away

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