/srv/irclogs.ubuntu.com/2013/04/10/#juju-dev.txt

* thumper needs food badly01:11
thumperdavecheney: hi there02:43
davecheneythumper: ack02:43
thumperdavecheney: I'm busy refactoring some config.Config stuff02:43
davecheneynoice02:43
thumperand we have identical code in all three provider specific configs02:44
thumperaround setting the default firewall mode to instance02:44
davecheneyi would not doubt it02:44
thumperdo you think we'll always do that?02:44
davecheneycopy pasta is copy pasta02:44
thumperif so, I can move the code up02:44
davecheneyi think it was highlighted in austin that we should do a better job of refactoring out the common provider stuffs02:44
thumperkk02:44
* thumper moves it02:44
davecheneysgtm02:45
thumperset-environment command review request incoming04:03
thumperRietveld: https://codereview.appspot.com/861004304:10
* thumper has to run daughter to sports04:48
thumperbbl04:48
davecheneybigjools: looks like the raring 2.2.4 works fine on precise04:51
davecheneywell04:51
davecheneyprecise/i386 so far04:51
bigjoolsdavecheney: good news04:55
davecheneydamn skippy04:56
davecheneyotherwise we'd be royally fooked04:56
* bigjools is this -><- close to deploying a charm with the new maas provider04:56
bigjoolswhat out of Ports/OpenPorts/ClosePorts needs implementing?04:57
davecheneybigjools: depends, how do firewalls work in Maas ?04:59
bigjoolsdavecheney: what firewalls? :)04:59
bigjoolsnone of this was implemented in the Python version04:59
bigjoolsbut I am unsure how it works in Go04:59
davecheneybigjools: then i'd say you have 0 work to do05:00
bigjoolswell I see a panic in the jujud log05:00
bigjoolsone of our "not implemented" messages05:00
davecheneyok, so change that to return nil :)05:00
bigjoolsso something is calling one of them05:00
bigjoolsfurry muff05:00
davecheneythe firewaller (runs inside the provisioning agent) will do that whenever a new machine appears05:01
* bigjools hacks05:02
bigjoolsdavecheney: what about Ports()05:03
davecheneythat is only used by the status command05:03
davecheneyand i'm not even sure we show the value of Ports()05:04
davecheneyjust return an empty slice05:04
bigjoolsok05:04
davecheneybigjools: i need help05:19
davecheneyhttps://launchpad.net/~juju/+archive/experimental/+packages05:19
davecheney^ I have copied the pacakge as Precise05:19
davecheneybut I cannot repeat the process for Quantal05:19
bigjoolswhat are you copying for quantal, the exact same source?05:20
davecheneyyes05:20
davecheneywell05:20
davecheneyno05:20
bigjoolsah yes I see the error05:20
bigjoolsyou need to copy the one *in* the PPA to a new series05:21
bigjoolswith binaries05:21
davecheneyok, i'll try that05:21
bigjoolspool-based repos mean that you can't have more than one copy of a particular version05:22
davecheneynope05:22
davecheneyno jot05:22
davecheneyjoy05:22
bigjoolslet me try05:23
bigjoolsyou want 2.2.4-0ubuntu1 in quantal?05:23
davecheneyyes05:23
davecheneythe plan is to use this PPA for P and Q05:23
davecheneyand the archive for R05:24
bigjoolsthere you go05:25
bigjoolsyou forgot to check "include binaries" I expect05:26
davecheneyno, that was deliberate05:27
davecheneyCopy options: (tick) Rebuild the copied sources05:27
davecheneyoh well05:28
davecheneyfuickit05:28
davecheneyif quantal is broken that will only give more weight to fixing this properly05:28
davecheneyi can't wait til the gmail move05:29
davecheneygetting away from thunderbirds fucked up search05:29
bigjoolsgmail has plenty of other problems05:30
davecheneydon't care05:30
davecheneythunderbird is terrible05:30
bigjoolst'bird is a crock these days05:30
bigjoolsbut then all email clients are quite frankly05:30
davecheneyyeah, what is with that05:30
bigjoolsI haven't used a good one for at least 5 years05:30
davecheneyevery man and his dog is writing a web framework or a mobile operating system05:30
bigjoolsthen all tend towards shite05:30
davecheneybut no love for IMAP05:30
davecheneywhat gives05:30
bigjoolsIMAP in tbird is the only reason I use it05:31
bigjoolsit's very solid05:31
davecheneymy favorite tbird feature is the way it burns your nuts while running your CPU at 100%05:31
* bigjools guffaws05:32
bigjoolsmy favourite is the default setting to download all of your email that you have, even if it's gigs and gigs05:32
davecheneyCOME GET SOME!!05:32
bigjoolsis there an easy way to replace the tools on a bootstrap node without re-bootstrapping?05:49
bigjoolsmy TDD cycle is a tad long05:50
thumperbigjools: technically05:52
thumperbigjools: you could do an upgrade --upload-tools05:52
thumperbut I've not tried it05:52
bigjoolsthumper: well I'll give it a go next time, I have nothing to lose (literally).  Ta.05:53
davecheneylucky(~/src/launchpad.net/juju-core) % juju status06:01
davecheneymachines:06:01
davecheney  "0":06:01
davecheney    agent-version: 1.9.1406:01
davecheney    dns-name: ec2-54-253-21-192.ap-southeast-2.compute.amazonaws.com06:01
davecheney    instance-id: i-295d991406:01
davecheneyservices: {}06:02
davecheneyit worked!06:02
davecheneyno tarball in site06:02
davecheneysight06:02
davecheneyGet:14 http://ppa.launchpad.net/juju/experimental/ubuntu/ precise/main mongodb-server amd64 1:2.2.4-0ubuntu1 [5137 kB]06:02
davecheneyFetched 32.9 MB in 37s (880 kB/s)06:02
thumper\o/06:07
davecheneyubuntu@ip-10-248-69-6:~$ tail -f /var/log/juju/unit-mysql-0.log06:13
davecheney/bin/sh: 1: exec: /var/lib/juju/tools/unit-mysql-0/jujud: not found06:13
davecheney/bin/sh: 1: exec: /var/lib/juju/tools/unit-mysql-0/jujud: not found06:13
davecheney/bin/sh: 1: exec: /var/lib/juju/tools/unit-mysql-0/jujud: not found06:13
davecheney/bin/sh: 1: exec: /var/lib/juju/tools/unit-mysql-0/jujud: not found06:13
davecheneysomethign is borken06:13
rogpeppemornin' all07:30
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: fwereade | Bugs: 0 Critical, 52 High - https://bugs.launchpad.net/juju-core/
rogpeppefwereade: you've got a review: https://codereview.appspot.com/8604043/08:34
fwereaderogpeppe, thanks, good ideas08:40
rogpeppefwereade: cool08:40
fwereaderogpeppe, I originally called it "exclude" and then though "hell, it's really set difference" but happy to change back08:40
rogpeppefwereade: for me, set difference could work either way. "Without" might be good too.08:41
rogpeppefwereade: (i mean that x.Difference(y) could mean x - y or y - x)08:41
rogpeppe(or even (x - y) union (y - x)08:42
rogpeppe)08:42
mattywhas anyone seen an issue with juju-core leaving a single volume in aws after a juju destroy-environment? I've got no useful debug yet but it's happened twice09:28
rogpeppemattyw: i haven't seen that issue, but i usually have loads of s3 garbage so i wouldn't notice09:41
fwereademattyw, I don't think it's meant to delete your control-bucket, just to clear its contents09:46
fwereademattyw, iirc bucket existence consistency is even more eventual than the rest of s3 and it became a hassle when spinning a single env up/down09:48
fwereademattyw, but that recollection does not have a high degree of confidence attached09:48
fwereademattyw, but if destroy-environment leaves any files in the control bucket, or any relevant instances not stopping/terminated, I think that's a bug09:49
dimiternfwereade: I think it does leave stuff in the bucket after the live tests at least09:51
mattywfwereade, dimitern next time it happens I'll see if there's anything the bucket - if there's stuff there shall I raise a bug?09:59
rogpeppefwereade, mattyw: it does try to delete the bucket.10:12
fwereaderogpeppe, ah, ok10:13
fwereaderogpeppe, if that fails, destroy-environment should fail too, right?10:13
rogpeppefwereade: yes10:13
rogpeppefwereade: have you got time for a quick G+ call?10:14
fwereadesure, would you start it please?10:15
rogpeppefwereade: https://plus.google.com/hangouts/_/7e115006bcf50750316f3b966eb0825d1c263baf?authuser=0&hl=en-GB10:15
TheMuelunchtime10:32
dimiternso now with one not lgtm from dave and 2 lgtms already on https://codereview.appspot.com/8561044/, I cannot land it or any of the next 4 CLs depending on it, until we cleared up the misunderstanding..10:56
dimiternhey, what do you know :) dave responded and it's now fine, I'll submit it shortly11:10
dimiternfwereade: when's the kanban meeting? at 16h daily?11:11
fwereadedimitern, I think it's 1615 now11:11
dimiternfwereade: oh, i see, cheers11:11
fwereadedimitern, or it might be anyway, I'm not quite clear11:11
dimiternfwereade: I'll start attending from today11:12
rogpeppefwereade: back to 1600 now11:12
fwereadedimitern, cool11:12
fwereaderogpeppe, ah ok, thanks11:12
rogpeppefwereade: just checking: there's no get-environment command (or equivalent) in pyjuju, right?11:12
fwereaderogpeppe, there's "look at environments.yaml"11:12
rogpeppefwereade: :-)11:13
rogpeppefwereade: just wondering about compatibility issues11:13
dimiternfwereade, rogpeppe: re get/set environment - shouldn't it be "get" and "set" rather than "get-environment" and "set-environment" ?11:13
fwereadedimitern, discussed in atlanta: env config and service settings are different realms11:13
rogpeppedimitern: i agree. but there's an argument that says that they're different enough to require different commands11:13
dimiternfwereade: so get/set will be for service config only11:13
fwereadedimitern, as opposed to env constraints and service constraints, which interact closely11:14
fwereadedimitern, yeah11:14
dimiternfwereade: so the the service it'll be "juju get <svc> [<value>]" ?11:14
fwereadedimitern, I think it already is11:15
rogpeppedimitern: juju get doesn't provide a way to get a specific key11:15
dimiternfwereade: I see, although I lean towards having a single command (get/set) one with service, another without - why having separate ones necessarily better?11:17
fwereadedimitern, that's my own personal preference as well, but we agreed otherwise in atlanta11:18
fwereadedimitern, but different realms imply potentially different options, different output formats, etc11:18
fwereadedimitern, segregating them is probably wise even if it leads to slightly less visually pleasing cli commands11:19
dimiternfwereade: ok, i see11:26
rogpeppefor anyone who's interested, you might want to check out https://ec2-50-17-53-143.compute-1.amazonaws.com/11:26
rogpeppeit's running the GUI on top of go juju11:27
rogpeppefwereade, dimitern: ^11:27
dimiternThe site's security certificate is not trusted!11:28
dimitern:)11:28
dimiternrogpeppe: password?11:28
rogpeppedimitern: any password11:28
dimiternah, it works without11:28
dimiternif I move a node the relation links are not updated11:29
rogpeppedimitern: yeah, i've just found that11:29
fwereaderogpeppe, nice11:29
rogpeppedimitern: i'm just filing a bug.11:30
dimiternmgz: standup?11:30
rogpeppedimitern: it's probably a known issue11:30
mgzgah, clock...11:31
davecheneyevening gents11:41
dimiternhttps://codereview.appspot.com/8561045/ need second LGTM on this11:41
dimiterndavecheney: evening11:42
davecheneyi got bootstrap working on raring, _AND_ precise without the tarball11:43
davecheneythe diff is quite small11:43
* dimitern cheers at davecheney11:44
dimiterndavecheney: how? from the archive? +ssl?11:44
davecheneyarchive for raring11:45
davecheneyppa for precise11:45
davecheneyhaven't tested quantal yet11:45
davecheneydimitern: I posted a sample in the channel this afternoon11:45
davecheneyit should be in th channel logs11:45
dimiternah ok11:47
dimiternrogpeppe: a fairly small one https://codereview.appspot.com/8561045/11:54
dimiternfwereade: ping11:56
fwereadedimitern, pong11:56
fwereadedavecheney, awesome, tyvm11:57
dimiternfwereade: so by "minimal machine errors in status" we mean short agent-state + agent-state-info for a machine?11:57
fwereadedimitern, yeah11:58
TheMuedavecheney: ping11:58
dimiternfwereade: cool\11:59
davecheneyTheMue: pack12:05
davecheneyack12:05
dimiternfwereade: how can I tell which machine the provisioner is running on, to get its tag for the nonce badge?12:05
dimiternfwereade: now it's always machine-0, but i'd like the code to handle the case when it's not, if possible12:06
TheMuedavecheney: got my mail regarding the status? just wanted to know if there's already existing code or if i can start at zero?12:06
fwereadedimitern, ha, good question -- I guess just pass it into the provisioner when it's started12:06
davecheneyyes, i got your email12:06
davecheneydid you not get my reply ?12:06
davecheneyi have a few branches, but they are so old12:06
davecheneyyou'd be better to start from scratch rather than trying to merge them to trunk12:06
dimiternfwereade: sgtm, and add a field for it in the Provisioner struct12:07
fwereadedimitern, yeah, sgtm12:07
TheMuedavecheney: did not received your mail yet, strange.12:08
fwereadedimitern, (I have a lurking belief that all tasks should accept something like an agent.Conf, so they're all responsible for extracting the context they need rather than the agent having to do it for them, but meh, that's not one for today)12:09
TheMuedavecheney: ok, so i'll start new, thanks. enjoy your evening.12:09
TheMuedavecheney: ah, just seen, my mail app seems to have a problem with the canonical ssl. hmmm.12:12
dimiternfwereade: I agree; for now I added machineId to NewProvisioner12:14
dimiternfwereade: and a TODO for NewFirewaller12:14
davecheneyTheMue: some old branhces, https://codereview.appspot.com/861904312:17
davecheneyprobably not useful12:17
TheMuedavecheney: thanks, will take a look12:17
davecheneythere isn't much there sadly12:17
TheMuedavecheney: but at least it looks like my approach in mind too. h512:19
dimiternfwereade: what happened to that critical bug about upgrade-charm should accept --switch?12:27
fwereadedimitern, I imagine it was downgraded given everything else we're doing, but I'm not aware specifically12:41
dimiternfwereade: sorry, my bad - check out this https://codereview.appspot.com/8620043/12:41
dimiternfwereade: I see, ok12:41
dimiternand I still need a second LGTM on this CL: https://codereview.appspot.com/8620043/12:42
TheMuedimitern: do i get it right, the prefix of the nonce of each machine is the machine id of the provisioner?12:50
dimiternTheMue: yes12:50
dimiternTheMue: except for the bootstrap node, where it's the user-admin who created the environment12:50
TheMuedimitern: ok, what's the reason behind this prefix?12:51
fwereadeTheMue, audit trail if multiple provisioners ever come to race12:52
TheMuefwereade: thx, that was the missing info. ;)12:52
fwereadedimitern, reviewed12:56
dimiternfwereade: tyvm12:56
TheMuedimitern: and another one12:59
* fwereade lunch13:10
dimiternTheMue: thanks13:22
dimiternthis is ridiculous! how come I cannot cast []byte to [16]byte (of the same length)?13:26
dimiternI have to range over the slice to fill in the array13:27
rogpeppedimitern: https://code.google.com/p/go/issues/detail?id=39513:33
dimiternrogpeppe: i'm glad I'm not the only one who was thinking about this :)13:35
rogpeppedimitern: why do you need a [16]byte?13:35
rogpeppedimitern: oh yes, you don't need to range13:35
rogpeppedimitern: var x [16]byte; copy(x, slice)13:36
dimiternrogpeppe: because UUID is [16]byte13:36
dimiternrogpeppe: ah, cool, I'll try copy then13:36
dimiternfirst argument to copy should be slice; have [16]byte13:37
dimiterndoesn't work13:38
dimiternrogpeppe: ^^13:38
rogpeppedimitern: ah, sorry, copy(x[:], slice)13:38
dimiternrogpeppe: nice!13:39
dimiternrogpeppe: it's working now, thanks13:41
rogpeppefwereade: as far as you know, are there any rsetrictions on13:43
rogpeppeaargh13:43
rogpeppefwereade: as far as you know, are there any restrictions on interface or relation names currently?13:43
rogpeppefwereade: other than the interface name can't start with "juju-" or be "juju"13:44
TheMueafk, biab14:49
dimiternfwereade: the status displaying machine agent/instance state is not dependent on MA setting status14:51
fwereadedimitern, weeell, it would be a lot saner if the MA stuff were in place14:52
dimiternfwereade: I mean one does not depend on the other14:52
fwereadedimitern, true14:52
dimiternfwereade: I'll propose both shortly, the status is done, and I think it came along nice14:52
fwereadedimitern, great news, tyvm14:53
fwereadebbiab14:58
rogpeppefwereade, dimitern: a branch cleaning up some redundant statecmd/params stuff; big but almost entirely mechanical: https://codereview.appspot.com/862604315:08
dimiternrogpeppe: will take a look shortly15:09
rogpeppedimitern: thanks.15:09
dimiternrogpeppe: in the mean time, i'll swap it for this https://codereview.appspot.com/8561046/15:10
rogpeppedimitern: we're calling machine.AgentAlive, but i can't see anywhere that we're actually calling Machine.SetAgentAlive, can you?15:12
rogpeppedimitern: have you tested that branch live?15:13
rogpeppedimitern: i suspect it will always show machines as "down"15:14
dimiternrogpeppe: it cannot be tested live until the MA actually sets the status, which is what i'm working on right now15:17
rogpeppedimitern: ah, cool15:17
rogpeppedimitern: if you could make another branch that also gets the machine agent to SetAgentAlive, that would be marvellous15:18
dimiternrogpeppe: will do soon, once the tests pass15:18
TheMuefwereade: just for info, after a first look into the py code for the units it doesn't seem so weird. i hope this impression will stay. ;)15:47
dimiternI had a curious error from gocheck:15:47
dimitern... Panic: Couldn't create temporary directory: mkdir /tmp/gocheck-669867415: file exists (PC=0x41175F)15:47
dimiternIt turned out I have loads of these in /tmp/, after rm -fr /tmp/gocheck-* it works now15:48
fwereadeTheMue, yeah, it's not insane or anything, it just uses concepts we don't expose15:48
TheMuedimitern: hmm, interesting. why do they remain? good question.15:48
dimiternTheMue: probably because I almost never restart my machine, and they're not removed by gocheck at the end15:49
dimiternfwereade: https://codereview.appspot.com/8561046/15:49
TheMuedimitern: imho gocheck is removing them (that's what i thought). but you may be right.15:49
fwereadedimitern, cheers15:49
rogpeppefwereade: on call today? fancy a look at this: https://codereview.appspot.com/8626043 ?15:52
fwereaderogpeppe, I'm looking at it now15:53
rogpeppefwereade: thanks15:53
rogpeppefwereade: sorry about the size, but it's really just cleaning up cruft.15:53
fwereaderogpeppe, it's also wrong, but I suspect it was before15:53
fwereaderogpeppe, how the hell did we write this stuff without tests?15:53
rogpeppefwereade: which stuff in particular?15:54
rogpeppefwereade: (i'm thinking of one thing, but you might be thinking of another)15:54
dimiternshit, I forgot the kanban meeting today.. mramm can you invite me through the calendar, so I'll keep track of it please?15:54
mrammdimitern: I'll do that15:55
dimiternmramm: cheers15:55
fwereaderogpeppe, hmm, there are some tests, but I'm sure they were missing last time I looked16:07
fwereaderogpeppe, anyway the yaml stuff is not the same as python16:07
rogpeppefwereade: how does it differ?16:08
fwereaderogpeppe, in python it's equivalent to a map[string]map[string]interface{}16:08
rogpeppefwereade: orly?16:08
fwereaderogpeppe, yeah16:09
rogpeppefwereade: so what's the top level map?16:09
fwereaderogpeppe, service name16:09
rogpeppefwereade: but we already know the service name, right?16:09
fwereaderogpeppe, use case is having a single config file for your whole environment16:09
rogpeppefwereade: ah, i see16:09
fwereaderogpeppe, not sure if we handle it on deploy, we should really16:09
fwereaderogpeppe, ah, we do16:10
fwereaderogpeppe, but still in the wrong way16:10
fwereaderogpeppe, I think it's just a matter of fixing SetYAML though16:11
rogpeppefwereade: i'm not entirely sure16:11
rogpeppefwereade: ISTR that the gui asks you to specify a config file when deploying a given service, not a config file for the whole thing16:12
rogpeppefwereade: so it would be quite weird to specify a yaml file like that and have all the settings ignored because the service name didn't match16:12
rogpeppefwereade: i can see use cases for both possibilities16:13
fwereaderogpeppe, what is the point of having yaml config setting in the gui if not so people can use the settings files they do in the cli?16:13
rogpeppefwereade: let me just check in the gui16:14
rogpeppefwereade: the problem i see with it is that it means i can't have a yaml file that holds the default config settings for any instance of some charm i might want to deploy more than one service of16:19
fwereaderogpeppe, that's not the use case it's addressing as far as I'm aware16:19
rogpeppefwereade: it seems like a reasonable one to me. that's how i'd want to use it anyway.16:20
rogpeppefwereade: because service names are fluid16:20
fwereaderogpeppe, meh, settings for one service are not necessarily settings for another service, even if they share a charm16:20
rogpeppefwereade: it would be more useful if it mapped from charm name (or url) to settings16:20
fwereaderogpeppe, it's a services-config file for a whole environment16:20
dimiternrogpeppe: there is the rest https://codereview.appspot.com/863004316:21
rogpeppefwereade: so like a half-hearted stack?16:21
* fwereade shrugs16:21
fwereaderogpeppe, didn't say it was the world's most inspired feature16:21
fwereaderogpeppe, just that it's a compatibility break for no good reason ;p16:21
rogpeppefwereade: so what does set do? read the yaml and return an error if there's no matching service?16:22
arosalesjcastro: can we get a spot on ubuntu-meeting for the charmer meeting?16:23
rogpeppefwereade: istm that if that's what we've got, we really want "juju set --config foo.yaml" to change the settings on all the services mentioned in the yaml file.16:24
jcastroarosales: I can work that16:26
arosalesjcastro: thanks16:27
fwereaderogpeppe, agreed, but that's not what we have now16:27
arosalesjcastro: we also need to sort the on-air recording16:28
rogpeppefwereade: no. i just find it difficult to countenance a Service.SetYAML that works like that. i'll learn to deal with it, i guess.16:28
dimiternrogpeppe: reviewed16:28
rogpeppedimitern: thanks16:28
fwereaderogpeppe, yeah, I don't like it either16:28
fwereadedimitern, ping16:29
dimiternfwereade: I have 2 CLs for you to review please: https://codereview.appspot.com/8561046/ and https://codereview.appspot.com/8630043/16:29
dimiternfwereade: pong :)16:29
rogpeppefwereade: agreed about half-deployed services when it comes to AddUnit time. but before we've added any units, i really think we should clean up the service.16:30
dimiternfwereade: what's that g+ invite about?16:30
fwereadedimitern, I want to talk about one of them, was thinking about what rogpeppe said16:30
fwereaderogpeppe, can we talk about this a bit later?16:31
rogpeppefwereade: sure16:31
=== deryck is now known as deryck[lunch]
rogpeppefwereade: trivial? https://codereview.appspot.com/861604416:40
dimiternrogpeppe: ping about https://codereview.appspot.com/8630043/16:50
fwereaderogpeppe, https://codereview.appspot.com/8616044/ LGTM trivial17:00
rogpeppefwereade: ta17:00
fwereadedimitern, btw, could I get a review on https://codereview.appspot.com/8545043/ please?17:00
dimiternfwereade: sure, I'll be on it shortly17:01
fwereaderogpeppe, ok, half-deployed services17:01
rogpeppefwereade: ok17:02
dimiternfwereade: btw is the meeting tomorrow morning at 9 or at 10?17:02
fwereadedimitern, er 10 I think17:03
fwereaderogpeppe, destroying them is probably right17:03
dimiternfwereade: ok, and the kanban is at 1617:03
fwereaderogpeppe, I'm just bothered by the cases where we don't manage to17:03
rogpeppefwereade: yeah. i think if you try to deploy a service with a malformed config, the service should not be created.17:03
fwereaderogpeppe, the config should probably be validate first then17:04
fwereaderogpeppe, a misconfigured subordinate could be very annoying to clean up if we dropped connection just after creating17:04
rogpeppefwereade: agreed. it is an issue, but failing to add a unit is a much rarer occurrence (network error) than a failed config (user error)17:04
fwereaderogpeppe, I think that the only reasonable thing to do is to validate the config before creating the service17:05
fwereaderogpeppe, I didn't catch on that we weren't doing so17:06
rogpeppefwereade: i'm not that bothered really. the SetConfig step can still fail either way, and we'll want to clean up afterwards.17:07
rogpeppefwereade: validating beforehand reduces the likelyhood of a failure, but it's only making the window smaller, not eliminating it17:08
fwereaderogpeppe, well, in what ways can it sensibly fail (aside from dropped connections, in which case no point trying to clean up)?17:08
fwereaderogpeppe, how so?17:08
fwereaderogpeppe, we know the charm, we created the service: we should be able to set a config with 100% certainty17:08
fwereaderogpeppe, hm, immediate concurrent ninja-edits are possible17:09
fwereaderogpeppe, but this is why I contend that this should all be in a transaction17:09
fwereaderogpeppe, (not that I'm saying to do that now, just to illustrate a general point)17:10
rogpeppefwereade: if someone's running around calling SetConfig on about-to-be-created services, i think they deserve what they get :-)17:10
fwereaderogpeppe, yeah17:10
fwereaderogpeppe, so that reduces the cases we care about to dropped connections, in which case there's no point trying to clean up17:11
fwereaderogpeppe, we just have to validate the incoming data against the charm before we start with the service17:11
rogpeppefwereade: assuming there are no transient mgo errors, yeah17:11
fwereaderogpeppe, fair enough17:12
rogpeppefwereade: given current timeline, i'm going to leave it as a TODO for now17:12
fwereaderogpeppe, your call17:12
rogpeppefwereade: and certainly not in that already-too-big branch :-)17:12
fwereaderogpeppe, +117:12
rogpeppefwereade: i had a clean live test with API auth enabled, BTW17:13
* fwereade cheers at rogpeppe17:13
dimiternsomething very weird is going on - m.SetAgentAlive() returns no error, but m.AgentAlive() returns false even after 5 sec., and m.WaitAgentAlive(5sec) timeouts17:13
rogpeppefwereade: enable API auth: https://codereview.appspot.com/8626044/17:20
fwereaderogpeppe, sorry, gotta catch the shops17:23
fwereaderogpeppe, I'll be back some time later though17:23
rogpeppefwereade: np17:23
=== deryck[lunch] is now known as deryck
rogpepperight, that's me for the day17:51
rogpeppereviews of https://codereview.appspot.com/8626044/ much appreciated17:52
rogpeppeg'night all17:52
niemeyerfwereade, rogpeppe: The agent state remains as pending although the install hook is actually running17:55
niemeyerfwereade, rogpeppe: Sounds familia?17:55
niemeyerr17:55
niemeyerfwereade, rogpeppe: There's also something weird going on with the juju tools selection18:00
niemeyer    agent-version: 1.9.1418:00
niemeyer    agent-version: 1.9.1318:00
niemeyerThat's with machines 0 and 118:00
niemeyerI used --upload-tools to bootstrap the environment18:00
niemeyerI'll send a note to the list18:00
niemeyerDone18:05
=== BradCrittenden is now known as bac
thumpermorning20:56
fwereade_thumper, heyhey21:00
thumpermorning fwereade_21:00
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: thumper | Bugs: 0 Critical, 52 High - https://bugs.launchpad.net/juju-core/
* thumper goes to read the godocs again22:29
thumperfwereade_: are you still around?23:05
thumperhappy birthday davecheney23:05
fwereade_thumper, yeah23:06
fwereade_davecheney, happy birthday23:06
thumperfwereade_: just looking at the set-env comment re: agent-version23:06
thumperfwereade_: right now, in config.New, it sets the agent-version if it is unset or empty23:06
fwereade_thumper, ah, yes, sorry, that's not proposed yet23:06
thumperfwereade_: I just changed how it was doing it23:06
fwereade_thumper, disregard my comments, I'll suck up the merge23:07
thumperfwereade_: oh, you are changing it?23:07
fwereade_thumper, yeah, the pick-latest-tools behaviour on bootstrap is one that nobody has argued against23:07
fwereade_thumper, but an explicit setting should win23:07
thumperfwereade_: sure, and it will23:08
thumperfwereade_: config.New just makes sure there is something there that is valid23:08
fwereade_thumper, indeed -- but if there's a real default there's no way to tell the difference between an explicit setting of version.CurrentNumber and an automatic one23:08
thumperfwereade_: also, if a default one is retrieved, it can always be overridden with Apply anyway23:08
thumperfwereade_: why should config care?23:09
fwereade_thumper, as a reader of config when choosing bootstrap tools, I care23:09
* thumper thinks23:10
fwereade_thumper, otherwise I always bootstrap with the client version of the tools (unless I upload-tools)23:10
thumperfwereade_: the problem is, a config without an agent-version isn't valid23:10
fwereade_thumper, I think this is just another one of those cases where the validity of a key depends on context23:11
thumperfwereade_: and what are you doing instead?23:11
fwereade_thumper, AgentVersion() (version.Number, bool)23:11
thumperfwereade_: hmm...23:11
thumperfwereade_: so do you want me to change my branch?23:12
thumperfwereade_: I could remove the default23:12
fwereade_thumper, no, I said disregard it23:12
thumperkk23:12
fwereade_thumper, I'll suck up the conflicts23:12
fwereade_thumper, so long as it doesn't change assumptions made across the codebase we're fine ;)23:12
thumperfwereade_: no, I've made no sweeping changes :)23:13
fwereade_thumper, btw, I just reproposed https://codereview.appspot.com/860404323:13
* thumper nods23:13
thumperI take another look23:13
fwereade_thumper, I think an LGTM from you would be enough to land it23:14
thumperok23:14
thumperI'm just going through the set-env review23:14
thumpernot much to change23:14
thumperbut it needs another LGTM, perhpas I'll poke davecheney :)23:14
davecheneyhow did ya' all know ?23:14
fwereade_thumper, nah, mostly just ramblings23:14
thumperdavecheney: magic23:15
davecheneythumper: LGTMs for everyone today!!23:15
* fwereade_ cheers23:15
thumperdavecheney: and google+ said so23:15
davecheneythumper: fwereade_ I think I may have a clue about what niemeyer is talking about with pending agents23:15
davecheneyi saw one case last night when I was testing the mongo stuff23:15
davecheneybasically unit agent has the wrong path for tools23:15
davecheneyor the tools symlink is not there23:16
davecheneythat is about all I can say at the moment23:16
davecheneybut obviously that will leave the machine in pending23:16
fwereade_davecheney, s/machine/unit/ right?23:17
fwereade_davecheney, but, hmm, that is ...troubling23:18
davecheneyfwereade_: i meant machined == virtuail machine == service23:18
davecheneybut yes, you are correct23:18
davecheneyfwereade_: i will investigate more23:18
davecheneyi thought that it was something I had screwed u p on my branch23:18
davecheneyas, as usual, I was crossing series to deploy the environment23:18
fwereade_davecheney, I'm going to change --fake-series to default to config.DefaultSeries and the actual config's DefaultSeries()23:19
davecheneyfwereade_: +123:19
davecheneythat would be more useful23:19
davecheneyatm, we could have 3 series in play23:20
davecheneythe workstation, the fake series, and the default-series23:20
davecheneythat is too many23:20
fwereade_davecheney, yeah, you should only need to remember it on relatively rare occasions23:20
davecheneythere is a slightly complicated case where you are depliying a R or Q bootstrap node, and precise service units because they follow the charm spc23:21
davecheneybut honestly, that is always painful23:21
davecheneyand in those cases I just hack version.version23:21
thumperfwereade_: FYI, I am swayed by your reasoning for the local test array23:28
thumperfwereade_: just the }{{ and }}{ lines take some getting used to23:29
fwereade_thumper, cool -- and, yeah, I know, it definitely repulsed me at first :)23:29
davecheneythumper: that part is unfortuntely lisp like23:29
thumper:)23:29
davecheneywho's got something for review, i'm in a bonevolent mood23:29
thumperfwereade_: we should take your nice description to the list to get general approval23:30
thumperdavecheney: o/23:30
thumperdavecheney: the set-environment needs another LGTM23:30
thumperlet me just update the diff with review comments.23:30
* davecheney looks23:30
fwereade_thumper, good idea, I will try to remember it before I sleep :)23:30
* thumper wonders if the second lbox propose will remember the prereq from before23:31
davecheneythumper: did you land the prereq ?23:31
thumpernot yet23:31
davecheneyok23:31
davecheneynp23:31
thumperdavecheney: I wanted to land them together23:31
thumperlbox propose failed anyway23:31
thumperdoes it remember?23:31
thumperor do I need to be explicit?23:31
thumperdavecheney: the prereq is all good to merge, but I want to land the pair23:32
davecheneyyou need to do -req on the first cycle of lbox propose23:32
davecheneyfor that branch it remembers (or probaly relies on bzr to remember)23:32
fwereade_davecheney, btw, https://codereview.appspot.com/8545043/ is up as well and should be fairly simple23:32
thumperfwereade_: how did you get the please take a look with the new patch at the same time?23:33
thumperI always end up with two comments23:33
fwereade_thumper, lbox propose sends drafted comments23:33
thumperfwereade_: oh, I didn't realise that23:33
davecheneythumper: yeah, anything you haven't sent, it will send when you propose again23:35
thumperfwereade_: you have your two https://codereview.appspot.com/8604043/23:39
thumperdavecheney:  https://codereview.appspot.com/8610043 should be updated now23:40
davecheneythumper: ta23:43
fwereade_thumper, cheers23:44
davecheneythumper: re set environment23:50
davecheneyi have a recollection that we do _exactly_ that logic when23:50
davecheneyshit, it was the first lisbon sprint23:50
davecheneysomething about pushing the config into the enviornment23:50
davecheneyminus the secrets23:50
davecheneysomething about updatesecrets, but only if there are some23:51
davecheneyit is in environs.config environs/config23:51
davecheneysomething like that23:51
davecheneydoes that ring any bells ?23:51
davecheneythumper: oh look, you've found that part23:53
thumperdavecheney: I used that as a basis of the set-environment changes23:55
davecheneythumper: i'm sorry you had to spend so much time looking at the environment configuration horror show23:56
thumper:)23:57
davecheneyyou have made it much less horrid23:57
thumperdavecheney: the change to agent-version defaults was to normalize the approach23:57
thumperdavecheney: if it wasn't set, it was set inside config.New23:57
thumperdavecheney: so it made sense to be consistent23:57
thumperdavecheney: however fwereade_ is changing that behaviour, and has agreed to suck up my changes and tweak as necessary23:57

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