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

davecheneycan anyone help me make the juju-core build recipe dependent on a ppa00:28
davecheneyis taht possible ?00:28
davecheneyarosales: did jamespage say we could use his PPA via a LP build recipe ?00:40
davecheneyfirst signs are that this is not possible00:40
m_3davecheney: looking01:29
davecheneym_3: s'ok i figured it out01:29
m_3I think it's a separate01:29
m_3ah, cool01:29
davecheneym_3: arosales bigjools is there a way to get this bumpedup ?01:30
davecheneyhttps://code.launchpad.net/~dave-cheney/+recipe/juju-core01:30
davecheney6-7 hour build delay before I find out if it worked01:30
bigjoolsdavecheney: I no longer have da powahs, go to the internal ops channel and ask nicely01:30
* davecheney practices best asking for things smile01:31
bigjoolsdavecheney: also you get get a permanent boost on a nominated PPA by also asking nicely01:31
m_3davecheney: dunno01:31
bigjoolss/get get/can get/01:31
bigjoolsI approve of your LP avatar01:32
m_3davecheney: might be worth the time setting up pbuilder-dist... you'll at least know in short order for archs and series that you target01:32
bigjoolsindeed, pbuilder should be used for build testing, NOT launchpad01:33
davecheneybigjools: i need to move to having a proper source build, not lp build recipes01:33
davecheneythey are crutch01:33
bigjoolsit's a piece of piss to do it all from a recipe locally01:33
bigjoolsrecipes make it easy01:34
m_3my fav is the 'merge-part'... ahem01:34
m_3sorry... s/merge-part/nest-part/01:35
m_3that's the icky one01:35
* bigjools imagines davecheney's "best asking for things smile" to look a bit like Sheldon Cooper's01:43
davecheneybigjools: yes, but with more sincerity01:44
bigjoolswallyworld: do you have affinity group stuff in openstack?03:26
wallyworldnot sure tbh03:27
wallyworldnever had cause to use it03:27
bigjoolstrying to work out whether the azure solution we're going with needs to worry about it03:27
wallyworldi'll ask martin tonight03:27
bigjoolsthe way juju works seems to assume your env is one group03:28
bigjoolsif that's not the case then we have a problem03:28
wallyworldthere's only one state server right now03:28
bigjoolsyeah03:28
wallyworldbut that will change with HA03:28
bigjoolswhen is that coming?03:29
wallyworld"soon"03:29
wallyworldi think it's next after API work03:29
wallyworldcan't recall exactly03:29
bigjoolsok ta03:29
bigjoolsshould be ok... I think03:29
wallyworldactually, in sept03:31
wallyworldafter manual provisioning03:31
davecheneyfaaaaaaaaaaaaaaaark04:04
davecheney2013-07-10 04:00:46 ERROR juju supercommand.go:234 command failed: cannot start bootstrap instance: no "precise" images in ap-southeast-2 with arches [amd64 i386]04:04
davecheneyerror: cannot start bootstrap instance: no "precise" images in ap-southeast-2 with arches [amd64 i386]04:04
davecheneyhow the fuck did that happen04:05
davecheneypreciseserverrelease20130502ebsamd64ap-southeast-2ami-9d4bdba7aki-31990e0bparavirtual04:07
davecheneypreciseserverrelease20130502ebsi386ap-southeast-2ami-9f4bdba5aki-33990e09paravirtual04:07
davecheneypreciseserverrelease20130502instance-storeamd64ap-southeast-2ami-9b4bdba1aki-31990e0bparavirtual04:07
davecheneypreciseserverrelease20130502instance-storei386ap-southeast-2ami-4f4bdb75aki-33990e09paravirtual04:07
davecheneythey really are there, I promise04:07
davecheneywallyworld: is ec2/image.go used anymore04:30
davecheneyor has it been replaced byt he stuff in environs/instances ?04:30
davecheneycan anyone bootstrap at the moment ?04:57
davecheneyI keep getting 2013-07-10 04:56:52 ERROR juju supercommand.go:234 command failed: cannot start bootstrap instance: no "precise" images in us-west-1 with arches [amd64 i386]04:57
davecheneyerror: cannot start bootstrap instance: no "precise" images in us-west-1 with arches [amd64 i386]04:57
davecheneyffs, every time I go to use juju is broken05:20
davecheneyabout to call instances.FindInstanceSpec with images []05:20
davecheneyFindInstanceSpec: matchingTypes [{ m1.small [amd64 i386] 1 1740 80 0xe3bc50 0xc210000510} { m1.medium [amd64 i386] 1 3840 160 0xe3bc50 0xc210000518} { c1.medium [amd64 i386] 2 1740 183 0xe3bc50 0xc210000560} { m1.large [amd64] 2 7680 320 0xe3bc50 0xc210000520} { m2.xlarge [amd64] 2 17408 495 0xe3bc50 0xc210000548} { m1.xlarge [amd64] 4 15360 640 0xe3bc50 0xc210000528} { m3.xlarge [amd64] 4 15360 700 0xe3bc50 0xc210000530} { c1.xlarge [amd605:20
davecheneyFindInstanceSpec: possibleImages []05:20
davecheney0 images are passed as candidates...05:20
wallyworlddavecheney: it's used, but only as glue logic between ec2 provider and simplestreams05:31
wallyworlddavecheney: sounds like the metadata that has been set up for ec2 is out of date05:32
davecheneywallyworld: i think it is the cost data05:34
davecheneyec2/image.go ~ line 6005:34
davecheneynothing is making it through that filer05:34
wallyworldlet me look05:34
davecheneywallyworld: http://paste.ubuntu.com/5860638/05:36
wallyworlddavecheney: at first look, it seems very weird since there's no constraints to exclude instance types05:39
wallyworlddavecheney: it would be good to see some more tracing, especially the value of matchingImages around line 33 of ec2/image.go05:49
wallyworldand also images from line 3805:50
davecheneydialing connection 20 cloud-images.ubuntu.com:8005:51
davecheneyfindInstanceSpec: matchingImages []05:51
davecheneynone05:51
=== tasdomas_afk is now known as tasdomas
wallyworldhmmmm05:53
davecheneywallyworld: is it broken for you ?05:54
davecheneyi tried other series' and regions05:54
wallyworlddavecheney: well, i bootstrapped an ec2 env this morning from source05:54
wallyworlddifferent region though i think, let me check05:54
davecheneyap-southeast-2 and us-west-1 at broken for me at least05:55
wallyworldi used the default, us-east-105:55
davecheneytrap for young players, us-east-1 always works05:56
davecheneynope, us-east-1 doesn't work for me05:56
wallyworlddavecheney: the fact that matchingImages is [] means that there is a mismatch between the simplestreams metadata and the hard coded regions and endpoints in the aws lib05:56
wallyworldwell, that's my theory05:57
davecheneygoamz is up to date05:57
wallyworldsince the metadata parsing process is to load up all simplestreams metadata and filter out the stuff that doesn't have the same region and endpoint as defined in goamz05:58
wallyworldi'll boot up an env again and see what happens05:58
wallyworlddavecheney: fails for me now. worked this morning06:01
davecheneybloody hell06:01
wallyworlddavecheney: and it appears simplestreams metadata was recently updated06:02
wallyworlddavecheney: http://cloud-images.ubuntu.com/releases/streams/v1/06:02
wallyworldthose timestamps would be UTC06:02
wallyworldso last update was 2 hours ago i think06:02
wallyworlddavecheney: i'll dig into it have see what i find. i'm not blaming the metadata yet. need evidence first :-)06:03
davecheneyshit, 14:02 ws when I first noticed it06:03
davecheneyit must have _just_ broken then06:04
davecheneyactaully about 15 minutes before hand06:04
davecheneybut I spent that time facepalming06:04
wallyworldhmmm. i'll see what i can find06:04
davecheneywallyworld: it *looks* like there is a ap-southeast-2 (and other) region defined in the streams data and index files06:05
wallyworldyes it dos06:06
wallyworlddoes06:06
wallyworldthere's nothing obviously wrong that jumps out at me06:06
davecheney2013-07-10 06:11:01 WARNING juju.environs.ec2 image.go:43 no matching image meta data for constraints: &instances.InstanceConstraint{Region:"us-east-1", Series:"precise", Arches:[]string{"amd64", "i386"}, Constraints:constraints.Value{Arch:(*string)(nil), Container:(*instance.ContainerType)(nil), CpuCores:(*uint64)(nil), CpuPower:(*uint64)(0xc2100dad98), Mem:(*uint64)(nil)}, Storage:(*string)(0xc210280fd0)}06:11
davecheneyWHOA, loggo doesn't output warnings without -v06:14
wallyworlddavecheney: some tracing shows that juju thinks the index file is missing some data06:15
wallyworldbut to my eye, the data is there, so looking further06:16
davecheney╯°□°)╯︵ ┻━┻06:16
wallyworldhuh?06:16
jamdavecheney: 'juju' never output anything without '-v', that behavior was preserved when we switched to loggo.06:16
davecheneyjam: that sucks06:16
jamIn a "lets change one thing at a time" sort of way06:17
davecheneythat is a suckful experience06:17
jamdavecheney: agreed.06:17
jamAnd it was intended to change06:17
* davecheney writes a shitty gram to list06:17
jamat least by a few of us06:17
jamwallyworld: any chance we have an archive of the contents of simplestreams, so we can compare to what it used to be, and maybe seen an obvious way it was generated differently?06:18
wallyworldi wish :-)06:18
wallyworldthat would be too easy06:18
wallyworldi don't think we have the previous copies06:18
wallyworldcould be wrong06:18
jamwallyworld: it is worrying that there is no fallback/archiving done for important info like this.06:18
wallyworldjam: there might be, *I* just am not aware of it06:19
jamwallyworld: so given there is json sjson and json.gpg, is json.gpg just a --detach-sign, and sjson just an inline sign?06:19
wallyworldyes06:19
jamwallyworld: it is clear that the archives aren't being put in an "old/" or a "$DATE/" sort of directory06:20
jamwhich is probably what I would like to see.06:20
wallyworldagreed06:20
jamwallyworld: I think in theory the history is in the file itself, right? With the problem that it gets regenerated from scratch with whatever the current logic is.06:20
wallyworldyes06:20
wallyworldjam: davecheney: the index file is wrong06:23
davecheneywallyworld: \o/06:23
wallyworldit doesn't contain an "index" map key06:23
wallyworldi'll email the relevant people06:26
wallyworldclearly our processes nd to be fixed06:26
wallyworldthere should be a staging area where new metadata is vetted06:27
wallyworldusing some acceptance tests06:27
jamespagedavecheney, you figure out the dependencies are between PPA's right?06:53
davecheneyjamespage: yes sir I did06:54
davecheneyhopefully it'll bake correctly this afternoon06:54
jamespagealso mgz copied those binaries to https://launchpad.net/~juju/+archive/golang06:54
davecheneyahhhhhhhhhh06:54
* davecheney shakes fist at LP for having *three* names for things06:55
davecheneyurl, name and description06:55
davecheneyffs06:55
jamjamespage: from what I see in that page, it looks like 1.1.1 is officially in saucy's archive?07:06
jamespagejam: it is indeed07:27
jamespage(uploaded it yesterday)07:27
jamjamespage: great! Did you get the multi-arch stuff sorted out?07:28
jam(last I saw there was failures to build  go on i386 or something)07:28
jamespagejam: no - thats still pending - I just pushed a new version based on the packaging currently in saucy07:28
jamespagejam: there are still some issues with CGO and the approach that the debian maintainer is taking re cross compiling07:29
jamjamespage: so it is asking the amd64 builder to cross compile an i386 binary?07:32
jam(or something to that effect)07:32
jamespagejam: actually its the other way round - i386 builds the compilers and runtimes for all archs07:32
jamespagenot sure I'm 100% comfortable with that07:32
jamjamespage: that sounds problematic for i386 to build an amd64 arch07:33
fwereadewallyworld, the diff for https://codereview.appspot.com/10777044/ is very dirty, would you take a look at it please?07:35
jamespagejam: maybe but cross compilation is a feature of golang07:54
jamespagejam: so long as the required cross build headers are present it should work07:54
jamgood morning fwereade08:01
fwereadejam, heyhey08:01
TheMuehmm, the bootstrap_test in cmd/juju fails intermittent08:34
fwereadeTheMue, bug it please (and please fix it if it's reasonably easy to do so)08:39
fwereadejam, just looking at SyncAPIServerState08:39
fwereadejam, is that really the only way to get at the *State backing the api server?08:40
TheMuefwereade: yep, will first propose my sync-tools and then investigate. seems to be only if my system is under load by parallel tasks.08:41
fwereadeTheMue, cheers08:42
fwereadejam, I can believe it is, I was just not even aware that the api server was running in the dummy environment08:44
fwereadejam, and it kinda feels like there's something rather surprising there08:44
fwereadefrankban, heyhey, reviewed, please let me know what you think08:45
fwereadejam, (there are also perspectives from which it makes sense ofc)08:46
frankbanfwereade: cool, thanks08:46
fwereadejam, https://codereview.appspot.com/10890047/ reviewed08:56
jtv2fwereade: I put off my StartInstance/Bootstrap refactoring to give Tim time to finish his, but I have another good one for you.  Got a moment for a video chat?09:14
=== jtv2 is now known as jtv
fwereadejtv, sure, would you start one please?09:15
jtvComing right up.09:15
jtvfwereade: https://plus.google.com/hangouts/_/77dc830b0aa56248e9ccb3151e2e92e99cb4427c?hl=en-GB09:15
jamfwereade: sorry about the delay, I was out getting groceries. But yes the actual server machine you are running is started as part of dummyenviron.Bootstrap()09:42
jtvDoes that even work on the dummy provider!?09:43
jamAnd that isn't returned anywhere that I could obviously see.09:43
jamjtv: It is running in-process09:43
fwereadejam, yeah, that makes some sort of sense... even though the fact that we're running hacked-up half bits and pieces of a bootstrap and a machine agent is really just crazy09:43
jamfwereade: certainly it isn't what *I* expected.09:43
fwereadejam, all I'd known about was the hacked-up bootstrap09:44
jamI would have thought JujuConnSuite would have been starting it locally and retaining a reference to it, rather than indirectly via Bootstrap09:44
fwereadejam, yeah, that would be the sane thing to do09:45
jamfwereade: so, I'm perfectly happy to change the code so that the back-door exposes the full state.State object09:45
jamand then we shove that on the test suite.09:46
jamI'm not 100% sure what to do about the State connection we have, which is an independent connection to the mongodb09:46
jamwe could just replace it09:46
jamso the lines in JujuConnSuite for  "s.State = NewConn()" would be replaced with "s.State = ExtractStateConnFromEnvironment()"09:46
jamor whatever we call that thing.09:46
jamThat means the tests for API Server also use the same State object09:47
jtvAnybody free to review a refactoring across the providers?  Cleans up the interaction between environments and their storage: https://codereview.appspot.com/1108704309:48
jamfwereade: for https://codereview.appspot.com/10890047/diff/5001/state/apiserver/upgrader/upgrader_test.go?column_width=8009:48
jamDoes defer AssertStop() interact if you directly call AssertStop() at the end of the test?09:49
jamI like the "make sure it is stopped even if these assertions fail"09:49
fwereadejam, AssertStop should be safe repeatedly, because Stop should also be09:49
jamI'm worried about "AssertClosed" leaving us in a state where AssertStop fails accidentally.09:49
fwereadejam, won't help in cases where we expect an error out of stop09:49
jamI'll put it back, if it fails, I'll take it out. :)09:49
fwereadejam, ok :)09:49
fwereadejam, I think AssertClosed should be independent09:50
fwereadejam, I'm not sure about smooshing all possible state conns together though09:50
fwereadejam, we definitely need access to the API one but I'd prefer to extract that to a sensible place so we have a bit more clarity on what's in play before we make sweeping changes09:51
dimiternfwereade: hey, can you take a look at this please? https://codereview.appspot.com/1094404409:55
fwereadedimitern, ack09:56
dimiternjam: you too maybe? since it's watcher stuff ^^09:58
fwereadedimitern, LGTM with comment on the description10:01
dimiternfwereade: thanks, I'll try to accomodate this at client-side on the next CL10:01
fwereadedimitern, great10:01
dimiternfwereade: the picture is somewhat unclear yet though10:02
fwereadedimitern, the easy way to do it is to s/LifecycleWatcher/StringsWatcher/ on the client side and be done with it10:02
dimiternfwereade: that's where the StringsWatcher (in params) interface will come into play (client-side), right?10:02
fwereadedimitern, yeah, but it shouldn't be in params10:02
dimiternfwereade: ah, so you're saying to have only one concrete implementation at client-side, rather than an interface and multiple implementations?10:03
fwereadedimitern, and tbh... api/watcher.NotifyWatcher and api/watcher.StringsWatcher both seem to be like perfectly reasonable concrete types, no interface hackery required10:03
fwereadedimitern, they'll still implement those interfaces just fine, but we don't need to declare them10:03
dimiternfwereade: ok, then I can get rid of the NotifyWatcher interface in params and do the rename in this CL?10:04
fwereadedimitern, sure, that works for me10:04
dimiternfwereade: cool10:04
* fwereade bbiab10:04
jamfwereade: so one concern is how to lable the thing. "StateBeingUsedByAPIServer" is a bit long :)10:04
fwereadejam, heh, and APIState is taken10:05
fwereadejam, if api were called api maybe things would be saner, but that's a big change10:05
fwereadejam, BackingState? at least it's compact10:07
jamdimitern, fwereade:  so for StringsWatcher, I'd certainly want to see something that looks a bit more like NotifyWatcher, where you pass in the *WatchResult and get back a running StringsWatcher10:08
jamthe existing code makes the Watch call for you10:08
fwereadejam, but doesn't collide, and with a comment it'd make some sense10:08
jamwhich means that the client side API is a bit tangled.10:08
fwereadejam, agreed, as soon as we need an implementation, which is imminent10:08
jamfwereade: StateInAPIServer ?, but BackingState is reasonable.10:08
fwereadejam, dimitern: for the purposes of this CL I think the implementation should be left alone though10:09
fwereadejam, your call10:10
dimiternjam: should there be worker/stringswatcher as well for it?10:11
jamfwereade: usually multiple threads in IRC can be resolved because you are talking to a different person. Hard when it is all the same. :)10:12
jamdimitern: If you think there is commonality worker/stringsworker could be really nice, as it then lets you decouple the "I'm watching something from" "Here's what I do when it changes"10:12
fwereadedimitern, I'm not sure yet10:14
fwereadedimitern, would you mail thumper for an opinion on how well it'll fit with the provisioner? if that will really have to be tortured to make it fit, then no10:15
fwereadedimitern, because deployer will be the only implementation for the forseeable... oh wait10:16
fwereadedimitern, minunits handling10:16
dimiternfwereade: yeah10:16
fwereadedimitern, ok, that's a yes, and if the provisioner can fit it too it'll be a nice bonus10:16
fwereadedimitern, thanks10:16
jtvSorry to interrupt... anybody free to review a refactoring?  It cleans up the interaction between providers and Storage: https://codereview.appspot.com/1108704310:16
fwereadeand fwiw it is very nice, and simple to review :)10:17
* fwereade really off for a bit now10:17
dimiternjtv: looking10:20
jamdimitern: so we had Cleaner and Machiner and a few of them that used the Notify pattern. I *like* splitting things out to separate concerns. But as William said, if it can't actually be reused it isn't worth writing.10:21
jtvThanks dimitern!10:21
jamI did develop NotifyWorker in tandem with changing Cleaner so I would know the design fit.10:21
* jtv runs errand10:22
jamjtv: is https://codereview.appspot.com/11087043/patch/6001/7023 actually being used? It looked like everything already had an implementation.10:27
dimiternjtv: reviewed10:27
dimiternjam: btw the :12345 - my bad :) I was testing and there were some failures and I don't actually remember why I did it, but it shouldn't have landed10:32
dimiternjam: I think it was to be able to monitor the exact server that was launched10:32
jamdimitern: interestingly enough, the Machiner one was already gone by the time we noticed the failures in UpgradeWatcher. It took me a bit to figure out where it came from.10:32
dimiternjam: yep it came from there10:33
jamdimitern: yeah, except it doesn't actually work, because the server that is launched is running inside the Environ.10:33
jamwhich is what I'm working on exposing a bit now.10:33
jamTheMue: can you include a paste of the failing test https://bugs.launchpad.net/juju-core/+bug/1199698 ?10:42
_mup_Bug #1199698: intermittent test failure in BootstrapSuite <juju-core:New for themue> <https://launchpad.net/bugs/1199698>10:42
dimiternfwereade, jam: updated as discussed: https://codereview.appspot.com/10944044/10:46
jamdimitern: +110:52
dimiternjam: good to land you think?10:53
TheMuejam: sure10:53
dimiternjam: moving that outside of params was fwereade's request and I like it as well10:54
jtvjam: I used them in the dummy provider, localstorage, or both — can't remember which.10:57
jtvThanks for looking at my branch, people!10:58
TheMuejam: right now I have no more test run without a failure :(10:59
jamjtv: what I saw at least looked like you might have wrote that first and not realized we had implementations, but if it is used, its fine to keep it.11:00
TheMuejam: the failing tests are the --upload-tools tests11:00
jamTheMue: something to keep in mind for future reports. It is hard to see context in case someone else tried to pick up the failures.11:00
jamTheMue: interesting. Might be a platform bug.11:00
jamI think "--upload-tools" forces precise always11:00
jam(recent change)11:00
jamso if you are running on precise, you only upload 1 tool11:01
jamif you are not11:01
jamthen you upload at least 211:01
jam"recent" as in a month ago or so.11:01
jamjtv: I need to teach you enough API so you can do some quid-pro-quo :)11:02
jtvjam: I'll check, because of course I can always have mis-remembered.  :)  IIRC the dummy and localstorage both lacked a deleteAll equivalent.11:02
TheMuejam: but I already had runs where it is working11:02
jamjtv: https://codereview.appspot.com/11036043/ is a pretty straightforward rename of a package if you want to give it a look.11:02
TheMuejam: and the test case which is failing (8, 9 or 10) is changing from run to run11:02
jamTheMue: that is very strange.11:03
TheMuejam: exactly11:03
jtvjam: coming...  But be warned: I'm a notorious nit-picker.  :_11:03
jtv:)11:03
jtvOh, that's quite a lot — let me just polish off what I have in flight first.11:04
jamjtv: it is big, but all mechanical11:04
jammv environs/agent => agent/11:05
jtvGood, I'll put any heavy lifting for my branch's follow-up into its own branch, and review yours first.11:05
fwereadedimitern, reviewed11:05
jamfwereade: I responded to https://codereview.appspot.com/10890047/11:05
jamIt now opens up BackingState11:06
dimiternfwereade: cheers11:06
jamfwereade: https://codereview.appspot.com/10944044/ ...  I would *really* like to see things that are working on the API *not* import juju-core/state11:06
jamso while we could use the interface from there11:07
jamit means we also expose all the raw state stuff11:07
jamvs just knowing "we don't import state in this module"11:07
jamthoughts?11:07
jam(it is why I created an interface rather than re-using the existing one)11:07
fwereadejam, I'm only thinking of worker/cleaner really, that's still using state11:07
jamfwereade: well, let me finish Upgrader, and Cleaner is quite tempting :)11:07
jambut fair enough11:08
fwereadejam, uniter is strictly higher priority I think11:08
fwereadejam, I'm firmly +1 on keeping state imports out of packages that use the API though11:08
fwereadejam, sorry if that wasn't clear11:08
jamsure, but uniter is complex, Cleaner is like 1 API change :)11:15
dimiternrv-submit is awesome! it makes using rietveld+lp+tarmac the same as lbox submit does!11:16
dimiternI recommend all of you to try it out - no need to set commit message in LP, set the MP to approved, etc. it even updates the [r=reviewers line] correctly11:16
fwereadedimitern, nice11:16
jamfwereade: yeah, version_test.go was the first time I've ever seen: import "." anywhere.11:17
dimiterninstall it just with: bzr branch lp:rvsubmit ~/.bazaar/plugins/rvsubmit11:17
jamI didn't know it worked11:17
jambut there was "version.*" in the test suite.11:17
jamdimitern: well, sort of correctly:  R=fwereade, fwereade, jameinel, jameinel11:18
jamIf we used Launchpad's "Approve" tarmac would be picking the R= line correctly as well11:18
dimiternjam: that's because it counts all LGTMs11:19
dimiternjam: that could be improved - but it's better than having [r=dimitern] only ;)11:19
jamdimitern: right, it just needs to dedupe them. Though I'd rather put the time in fixing tarmac to understand LGTM as well.11:19
dimiternjam: any idea what's this: https://code.launchpad.net/~dimitern/juju-core/066-apiserver-stringswatcher/+merge/173896/comments/38924611:23
jamfwereade: 2 design things about upgrader-api-worker. (1) I thought of a way to do the delayed shutdown with a LifesupportRunner. Since the goal is that an outside signal is delayed, but an inside signal is immediately shutdown. I won't implement it yet, but I think it can fit nicely if we want it.11:24
jamfwereade: but (2) The Upgrader wants to wait on 2 channels, 1 for the new versions, and 1 for when the download completes.11:24
jamI could re-implement all of the NotifyWorker locally just to get another channel11:24
jamor I could expose a "Handlers may request 1 extra <-chan interface{} to wait on"11:24
jamthen Handlers can multiplex any waiting they want to do onto that channel11:25
jamdoes that seem a reasonable design?11:25
jamOr should I just go with "ignore NotifyWatcher for now"11:25
fwereadejam, thinking11:25
jamdimitern: I think it is that rv-submit is setting Approved state without setting the Approved revision field.11:26
dimiternjam: hmm so I can see a patch to fix this11:26
dimiternand the reviewers dedups11:26
jamfwereade: with a WatchExtra() <-chan interface{} => HandleExtra(interface{})11:26
jamfwereade: then things based on NotifyWatcher can handle as many actual channels as they want, they just need to add context on in and out11:27
jamalternatively, I'm not sure Upgrader would suffer terribly if it just blocked until it finished downloading the current thing.11:27
fwereadejam, heh, that latter one feels like a nice gordian knot solution11:28
fwereadejam, but I'm having some difficulty properly picturing the WatchExtra/HandleExtra in practice so I may just be dumb today11:29
jamfwereade: right now, SetUp() returns a Watcher, we could have it also return a "<-chan interface{}"11:30
jamor we could have inside the main loop11:30
jamselect { case <-watcher.Changes(): ... case <-handler.WatchExtra())11:30
fwereadejam, can you think of other use cases? feels a bit situational to me right now...11:32
jamfwereade: Provisioner also has one primary watcher (I think) but then a few other side things going on.11:33
jtvjam: branch reviewed.11:33
fwereadejam,yeah, but that's stringswatcher-based11:34
jamjtv: thx11:34
pavelHhello, just now I had an interesting case. A week ago my teammate used juju bootstrap in the same EC2 zone, but with different control-bucket and security credentials. Today I run juju bootstrap with my own control-bucket and security credentials. And when I run juju destroy-environment both bootstrap nodes were terminated.11:39
pavelWe have separate credentials within one AWS account.11:40
pavelIs this correct behavior?11:40
jampavel: I *think* if you name your environments differently it won't step on eachother, but instances that get deployed are labeled by environment name, not by control bucket.11:43
pavelyeah... I thought that exactly this was the case11:44
pavelBut it's frustrating I think11:45
jamfwereade: your stream is frozen.11:48
jtvjam: how do I run a live test?12:28
jamjtv: cd environs/ec2; source ~/.ec2creds; go test -amazon12:33
jtvThanks.12:33
jamfor whatever values of ec2 credentials you want to use12:33
jamor12:33
jamcd environs/openstack12:33
jamgo test -live12:33
jamthough you also need your Canonistack credentials, etc.12:33
jtvIs there no way to do this against the local or dummy provider?12:33
jamjtv: all the providers run them against the test doubles if you just do "go test ./..."12:33
jamexcept azure doesn't implement a double12:33
jtvAh OK, so then "make check" should be enough.12:33
jamright12:34
mgzjam: prereq/bot question12:49
mgzI marked my branch that fixes tests on danilo's having his as a prereq12:50
jammgz: to avoid landing snafus, approve and wait for prereq, then approve post12:50
jamif you can't do that12:50
jamyou can mark prereq as merged12:50
jamand land the second12:50
mgzdoes this mean his needs to land first... in which case that was a mistake, because the bot will reject it as the tests don't pass without both...12:51
mgzah, neat hack, will try that12:51
jammgz: right, you can set the MP status to Merged, and then the bot will let you land the second one.12:51
dimiternabentley: hey, I found 2 issues while testing rvsubmit13:09
abentleyOh, what?13:09
dimiternabentley: it seems it's not setting ApprovedRevision and also should remove duplicates in approvers list (e.g. if X has 2 LGTMs it appears twice)13:10
mgzah, right, I also ran into both of those :)13:10
mgzdimitern is a better user than I for reporting13:10
abentleydimitern: I'm surprised I have to specify approved revision-- why doesn't it default to the current revision like the UI does?13:12
dimiternabentley: it seems to be required by the go-bot (or tarmac)13:13
dimiternabentley: see here https://code.launchpad.net/~dimitern/juju-core/066-apiserver-stringswatcher/+merge/173896/comments/38924613:13
abentleydimitern: I'm not disagreeing, I'm just saying it's dumb that launchpad makes me do extra work to set the approved revision.13:14
jamabentley: I'm guessing the GUI grabs the current revision from some data on the page when it submits the request13:14
jambut it is explicitly sending it, rather than just setting approved.13:14
jamabentley: because if your page is out of date13:14
jamthe approved revision is out of date13:14
jamabentley: I've done 'bzr push' and then marked it approved on the page, and the bot tells me the wrong revision is approved. (Because I didn't reload the page after Launchpad noticed the updated branch)13:15
jamah, I scared him off :(13:15
dimitern:)13:15
jamabentley: https://launchpad.net/+apidoc/devel.html#branch_merge_proposal13:17
jamIt looks like "revid" is an optional field13:17
jamto setStatus13:17
jamand the webpage is grabbing reviewed_revid and passing it into queued_revid13:17
jamI've certainly had cases where I had an old MP view, and didn't refresh after "bzr push" and then tarmac tells me "there are additional revisions that have not been reviewed"13:18
abentleyjam: Do you have any thoughts about whether I should look at the local tip or just always use Launchpad's tip?13:18
jamabentley: you mean the one on the review page, the one on lp:~branch-i-pushed; vs WT.revision?13:19
jam... page, or the one...13:19
abentleyjam: I mean the branch on the user's computer vs the one on codehosting.13:19
jamabentley: I would say the one you intend to approve is probably your local revision, the one you are actually approving is the one on lp:~...13:19
jamif we are going to look up the one on lp:~... it is probably worth comparing that value to the local one.13:20
jamabentley: 'lbox submit' would do the push, though. Is that something we should put into rvsubmit ?13:20
jamso local rev should end up matching lp rev13:20
jammgz, dimitern: I could use a second review of https://codereview.appspot.com/10890047/13:21
jamI'm off for now, though I'll probably be back later tonight.13:21
dimiternjam: lookinh13:21
mgzjam: looking13:21
abentleyjam: Since the branch on Launchpad has been approved, it seems a bit weird to automatically push.13:22
abentleyjam: Though of course, some approvals are really conditional.13:22
jtvjam: I added that test you asked for by the way: https://codereview.appspot.com/1110804313:24
jamabentley: sure, though certainly the bzr process was that you might ask for tweaks, and the person submitting would do a tweak and submit. Which is mostly how we're doing LGTM.13:26
jamjtv: review13:27
jamreviewd13:27
jtvthanks13:27
abentleydimitern: Why are there multiple LGTMs for X?13:27
jamabentley: conditional LGTM from one, followed by larger refactorings, leading to a follow up push and re-review13:27
dimiternabentley: because i think the approvers list is sorted, but dupes are not removed13:27
jamdimitern: I think he is asking why someone would possibly LGTM 2 times13:28
abentleyjam: right.13:28
dimiternabentley: ah, right - yes, the reason is as jam explained13:28
dimiternabentley: happens sometimes with longer-lived MPs that undergo a refactoring mid-way to landing, so need second approval13:29
dimiternjam: you have a review13:30
mgzis bug 1130209 still relevent? we take mongo from distro now, no?13:30
_mup_Bug #1130209: we need a mongodb compiled for i386 <mongo> <package> <juju-core:Triaged> <https://launchpad.net/bugs/1130209>13:30
jtv...Precise?13:32
dimiternmgz: we have both amd64 and i386 builds in the ppa, but none of them seem to work13:33
=== flaviami_ is now known as flaviamissi
fwereadedimitern, api-common-life is merged now14:10
dimiternfwereade: cool14:10
dimiternfwereade: i wanted to ask you do you think EnsureDead and Remove should be combined and should this be done throughout?14:10
dimiternfwereade: actually the machine uses only EnsureDead, the deployer needs both so far14:11
fwereadedimitern, I *think* that a Remove that also does an EnsureDead will also be useful for the provisioner14:11
fwereadedimitern, however an EnsureDead that does not remove will be required for machiner and uniter14:12
dimiternfwereade: i see14:12
fwereadedimitern, (deployer and provisioner both have responsibility for units/machines that may be dying and not yet deployed/provisioned; in both cases they want to fast-forward to destruction14:14
fwereade)14:14
fwereadethey're really annoyingly similar at heart14:14
dimiternfwereade: so if we call it Remove wouldn't that be confusing? how about EnsureRemoved?14:15
dimitern(from state package's point of view and those familiar with it)14:15
fwereadedimitern, yes from state package POV, not so sure from api POV14:16
fwereadedimitern, the clients gosh-darn want that thing removed and don't really care otherwise14:16
dimiternfwereade: well, as long as there never is a Remove method that doesn't do both in the api, we'll be fine14:16
=== meetingology` is now known as meetingology
=== _mup__ is now known as _mup_
fwereadedimitern, fair point14:19
* fwereade thinks14:19
dimiternfwereade: otherwise we'd better call it EnsureDeadAndGone or something :)14:20
fwereadedimitern, I kinda feel that the implementations of similar methods on different facades are not an issue14:22
fwereadedimitern, it's two facade-specific questions I guess14:22
dimiternfwereade: we'll see soon enough anyway14:23
fwereadedimitern, yeah, often it just takes implementing it and seeing how much the implementation bugs you :/14:24
dimiternfwereade: exactly :)14:24
abentleydimitern: I've updated the plugin.  Could you try it again?14:39
=== teknico is now known as teknico-phone
dimiternabentley: will do in my next MP, thanks!14:42
abentleydimitern: You're welcome.14:45
=== tasdomas is now known as tasdomas_afk
fwereadeha, found the upgrade bug15:04
dimiternfwereade: oh, what is it?15:04
fwereadeit is the initial watcher event -- the selector wasn't picking up machines with an unset containertype, just an empty containertype15:05
fwereadeas soon as trunk code has changed a machine it's fine15:05
fwereadebefore then it's not reported so we think the instance is not associated with anything15:06
fwereadeverifying it actually works15:06
dimiternfwereade: hmm15:06
* fwereade really hates waiting for machines to come up15:07
hazmatis juju working with ec2 atm?  it can't seem to find an image (trunk from 12hrs ago) http://pastebin.ubuntu.com/5861907/15:14
hazmatspecifying default-image-id in env.yaml generates a warning15:15
mgzhazmat: nope, the cloud images data got changed which breaks things15:15
mgz...we should really put that in the topic or summat15:15
hazmatmgz, any workarounds?  you mean the simple metadata stream data? the tab separate file looks like its still the same ie https://cloud-images.ubuntu.com/query/precise/server/released.current.txt15:21
fwereadehazmat, it should be fixed15:21
fwereadehazmat, there was a problem with the simplestreams, index.sjson was pointing to unsigned product files and we didn't like that15:22
fwereadehazmat, 1.10 still uses that cloud-images path, trunk uses simplestreams15:23
fwereadedimitern, TheMue: review of https://codereview.appspot.com/11116043 ? very small change, disproportionately useful15:25
dimiternfwereade: looking15:25
hazmatfwereade, cool, looks like its working15:26
dimiternfwereade: reviewed - should this be linked to the upgrade bug? does it fix it?15:27
fwereadehazmat, thanks for confirming15:27
fwereadedimitern, yeah, good point, thank you15:27
fwereadejam, you still around?15:29
fwereadeTheMue, no joy on the bootstrap tests?15:30
TheMuefwereade: no, absolutely no luck15:35
fwereadeTheMue, would you link me the bug while you review https://codereview.appspot.com/11116043 please? I'll see if anything springs to mind15:36
TheMuefwereade: you've got a 2nd lgtm15:37
TheMuefwereade: the bug is the https://bugs.launchpad.net/juju-core/+bug/119969815:37
_mup_Bug #1199698: intermittent test failure in BootstrapSuite <intermittent-failure> <juju-core:In Progress by themue> <https://launchpad.net/bugs/1199698>15:37
TheMuefwereade: I'm trying to follow the call flow, so far I don't see a race here.15:39
TheMuefwereade: ha, while typing this I have one idea, one moment.15:39
TheMuefwereade: bingo, all passed, will try with a little change15:41
fwereadeTheMue, I know what it is15:42
fwereadeTheMue, we're uploading more files at bootstrap than we were before15:42
fwereadeTheMue, so once we've checked that the expected N were uploaded, we proceed with the test, even though bootstrap hasn't necessarily finished15:42
TheMuefwereade: hmm, dunno15:44
TheMuefwereade: but what changed the behavior here is the setting of GOMAXPROCS15:44
* TheMue slaps himself15:45
dimiternfwereade: deployer facade v1 - not sure about the auth stuff yet, but take a look please: https://codereview.appspot.com/1111704315:49
TheMuefwereade: *crash*15:49
fwereadeTheMue, hmm, I may be wrong, but I'm suspicious -- didn't someone just land something that wrote differently on bootstrap?15:49
fwereadeTheMue, oo, you've broken something hard? nice15:49
TheMuefwereade: yes, with GOMAXPROCS=1 it works, but with 4 as I had before it fails15:50
fwereadedimitern, sorry, there's been a misunderstanding: reviewed15:55
dimiternfwereade: ah, you mean Remove is on units15:55
dimitern(facepalm)15:56
dimitern:) ofc15:56
fwereadedimitern, no worries, I know how it is :)15:56
fwereadedimitern, just remember to use up-to-date state, because I think the auth.entity is likely in general to be stale15:56
fwereadedimitern, and we need it to know about the right set of units15:57
dimiternfwereade: that's what I needed to ask15:57
fwereadedimitern, the *easy* way is to start a WatchUnits on that machine and see what comes out of the first event15:57
dimiternfwereade: where does the getcanchange comes in? i've yet to do the setpassword, so apart from there - should it be used elsewhere?15:57
fwereadedimitern, the logic behind getCanChange will be needed in Remove as well15:58
fwereadedimitern, I think (open to argument ofc) that the right thing to do is to figure out the set of entities we're allowed to operate on as soon as we're asked to operate on at least one15:58
dimiternfwereade: when that?15:59
dimiternfwereade: in WatchUnits? or in NewDeployerAPI?15:59
fwereadedimitern, both way too early15:59
fwereadedimitern, just after `if len(request.Entities) == 0 { return }`15:59
dimiternfwereade: so after getting the unit from state15:59
fwereadedimitern, I don't think we should be speculatively getting units, no16:00
fwereadedimitern, I think we should only pay the roundtrip for the entities we know we need16:00
fwereadedimitern, so we pay an upfront cost to discover what entities we're allowed to operate on16:00
dimiternfwereade: hmm.. so once we know we have entities to operate on (in Remove only) we create the auth func? put it where though16:00
fwereadedimitern, g+?16:01
dimiternfwereade: was about to suggest, yeah, will start one16:01
dimiternfwereade: https://plus.google.com/hangouts/_/34b4267f6a46cb41a76fd05f6dc398f7409f94c4?authuser=0&hl=en16:02
jamespagefwereade, question - should I be raising bugs for anything I find different CLI api wise between juju and juju-core16:20
fwereadejamespage, yes please; there may be a very small number we don't want to support but in general we want to be entirely compatible16:21
fwereadeTheMue, ok, it is not exactly what I thought it was16:22
fwereadeTheMue, but try waiting for uploads+1 OpPutFiles16:22
fwereadeTheMue, I think that will actually make the test more reliable than ever before16:22
jamespagefwereade, sorry - another question16:23
jamespageis the cli in juju-core intentionally extremely quiet?16:23
fwereadejamespage, ...sort of16:24
jamespageits quite disconcerting16:24
fwereadejamespage, bugs pointing out that this is actually crap will help us to get it done though16:24
jamespagefwereade, on it16:24
fwereadejamespage, because actually providing useful feedback is a little less trivial than one might hope16:25
fwereadejamespage, although just providing *some* by default would probably be a good idea regardless of ugliness like irrelevant logging badges16:25
jamespagefwereade, agreed - bugs raised16:27
fwereadejamespage, thanks16:29
TheMuefwereade: yep, will do16:31
=== paraglade_ is now known as paraglade
jamespagemgz, are we going to be able to get a juju-core release uploaded to saucy this week?  AFAICT the 1.1.1 stuff is working OK from PPA's17:00
jamespageand we have 1.1.1 in saucy....17:00
jamespagemgz, just give me the source and I'm primed to go!17:01
dimiternjamespage: whoohoo! 1.1.1 in saucy really? cool!17:01
jamespagedimitern, yep17:01
fwereadejamespage, that's awesome; and so, hopefully, but not tomorrow, there are two notable problems I have just found :/17:05
fwereade(log is filled with api failure spam, and lxc-not-installed spam, after upgrading; bugs forthcoming, need to characterise them better)17:06
mgzjamespage: I'll send an email to the list now17:07
mgz*1.11 btw17:07
mgzfwereade: can you target those bugs against 1.11 on launchpad?17:08
fwereademgz, will do17:08
jamdimitern, fwereade: I can't land https://codereview.appspot.com/10890047/ because moving api.NotifyWatcher means that state/api/upgrader/upgrader needs to import api (in order to return an api.NotifyWatcher). But api needs to import upgrader/upgrader17:12
jambecause api.State.Upgrader() returns an Upgrader instance17:13
jamThat is why I had put it in params before17:13
mgzjamespage: bug 1194022 is fixreleased?17:14
_mup_Bug #1194022: Please bump golang version to 1.1.1 <golang (Ubuntu):New> <https://launchpad.net/bugs/1194022>17:14
jamdo we have a better solution?17:14
fwereadejam, any problem dropping the interface and returning a concrete api/watcher.NotifyWatcher type from api/watcher funcs?17:14
dimiternjam: why does api need to import upgrader?17:14
jamdimitern: because api.State has attributes that return the facades17:14
dimiternfwereade: yes, in fact there is a problem17:14
jamit does the same for api.State.Machiner() etc.17:14
fwereadedimitern, bother :)17:14
fwereadedimitern, what's that?17:14
dimiternfwereade: i tried that but it didn't work because of state interfaces17:14
dimiternfwereade: used in workers17:14
fwereadedimitern, sorry, expand please17:14
jamfwereade: state/api/state.go imports all the sub packages17:15
jammachiner17:15
jammachineagent17:15
jamupgrader17:15
fwereadedimitern, doesn't the concrete type satisfy that interface?17:15
dimiternfwereade: let me check the exact line17:15
fwereadedimitern, thanks17:15
jamfwereade: so at present, state/api/watcher/watcher.go imports state/api because it wants to return an api.NotifyWatccher17:16
dimiternfwereade: the problem was cleanup worker in SetUp needed to return a concrete type out of the state watcher17:16
dimiternjam: well, I don't see big problem with moving api/interfaces.go in api/params/interfaces.go17:17
jamwe could turn state/api/watcher notifyWatcher public17:17
fwereadejam, yeah, that's what I'm suggesting17:17
jamdimitern: well, you then have params.NotifyWatcher, which I thought was what we were avoiding17:17
fwereadedimitern, I do, they have nothing to do with the params over the wire17:18
dimiternjam: well, fwereade was mostly against it17:18
fwereadedimitern, the cleanup worker doesn't use the api17:18
dimiternfwereade: but uses watchers, which now use interfaces17:18
dimiternfwereade: aah, now i got your remark that the workers should use state interfaces!17:19
fwereadedimitern, haha :)17:19
dimiternfwereade: yeah, i was thinking "aren't we moving towards using the api anyway - why depend on state if it's gonna go away" :)17:20
fwereadedimitern, jam, and if *that* still causes problems somehow17:20
fwereadedimitern, jam, then I think the answer is for notifyworker to use its own damn copy of the interface, because the problem is that it's being used for state things but pretending it's all about api things17:21
dimiternjam, fwereade: so basically get rid of the api/interfaces and inside workers use state interfaces for watchers17:21
fwereadedimitern, so it happily accepts both a state.NotifyWorker and a concrete *api/watcher.NotfiyWatcher17:21
jamdimitern: except we don't want to end up there. fwereade and I both agree that we *really* want to switch to not import state in things using the API, and state/api/watchers *consume* the api.17:22
fwereadedimitern, I want to use api interfaces in code implemented against the api, and state interfaces in code implemented against state17:22
jamfwereade: initial results look like NotifyWorker is ok with Upgrader returning a state/api/watcher/NotifyWatcher17:22
jamwell *watcher.NotifyWatcher17:22
jampointer receiver and all that17:22
fwereadejam, ok, cool17:23
dimiternfwereade: my confusion was: won't the workers *eventually* use only the api as well?17:23
fwereadedimitern, eventually, yes, but that particular worker is as low on the priority list as it can be17:23
dimiternfwereade: ok, better one at a time, sure17:23
jamfwereade, dimitern: Do you want to eyeball that change? https://codereview.appspot.com/10890047/17:27
dimiternjam: looking17:28
jamhttps://codereview.appspot.com/10890047/diff2/11001:17001/state/api/watcher/watcher.go17:28
jamand https://codereview.appspot.com/10890047/diff2/11001:17001/state/api/upgrader/upgrader.go17:28
jampretty much just exposing the type, and then changing what package I get it from.17:28
fwereadejam, LGTM17:28
dimiternjam: me too17:29
jamthx17:29
dimitern(as long as the tests pass ofc)17:29
dimitern;)17:29
jamyeah, I ran the tests that were particularly relevant (all state/api and worker)17:30
mgzis bug 1199680 critical for release, and is it in fact fixed? (the linked branch is merged)17:30
_mup_Bug #1199680: upgrade-juju fails from 1.10 to trunk <juju-core:In Progress by fwereade> <https://launchpad.net/bugs/1199680>17:30
dimiternjam: please run them all, just in case17:30
jamdimitern: that's what go-bot is for :)17:30
fwereademgz, it is and it is17:30
mgzace.17:30
jammgz: fwereade patch is up17:30
dimiternjam: ah, we're getting sloppy now then, ok ;)17:30
jamd17:31
jamdimitern: I'm just not waiting 8 minutes to submit something and wait 15 minutes for it to merge.17:31
jamas long as I have high confidence that it will pass17:31
jamit is 9:30pm here and all :)17:31
dimiternjam: i'm still afraid of breaking the build, so I still run them pretty much 10-20 times a day (after each pull, after merge, etc.)17:31
mgzfwereade: have you filed the other issues you had as blockers yet?17:31
jamdimitern: I run subsets of them far more than that17:32
dimiternmgz: i think the biggest blocker still is the ppa mongo not working17:32
mgzthat's not relevent for saucy, no?17:32
dimiternmgz: I don't think there's even a build for saucy?17:33
jamfwereade: also to confirm, with 1.10 upgrading to trunk, you didn't have any specific other upgrade issues?17:33
jamnice catch, btw17:33
fwereadejam, I didn't spot anything else17:33
jamI'm curious how you debugged it17:33
fwereadejam, sorry to say there's only one step... I said to myself "hmm, that sounds like the initial event might be empty"; so I logged the initial event and defanged the actual instance-stopping, tried it out and, yep, empty event17:34
fwereadejam, which led me directly to the members field of that lifecyclewatcher and *d'oh!*17:35
fwereadejam, so, er... female intuition?17:35
jamfwereade: guy who has his head deep in watcher and db interation intuition is my guess17:36
fwereadedetails details :)17:36
jamfwereade: so for the Deployer tests, https://codereview.appspot.com/11117043/patch/1/1004 If I understand you correclty, we need to add a bunch of units to a machine, (and maybe some units on another machine)17:38
jamand then test that you can Watch the units on your machine, but not the other one17:38
jamso https://codereview.appspot.com/11117043/patch/1/1003 "Remove" shouldn't be thinking it has a list of machines to remove, but a list of Units ?17:39
fwereadejam, yep, exactly17:40
fwereadejam, also needs subordinates to be checked17:40
fwereadejam, but, can I pull you away from that to take a look at https://bugs.launchpad.net/juju-core/+bug/1199915 please?17:40
_mup_Bug #1199915: api cannot connect, fills deployed machine log with spam <juju-core:Triaged by jameinel> <https://launchpad.net/bugs/1199915>17:40
jamfwereade: it should? or should not? be able to do something with them?17:41
fwereadejam, units assigned to that machine, directly or indirectly, should pass permissions checks for the machine's deployer17:41
jamfwereade: not seen on just installing trunk directly?17:41
fwereadejam, I'm afraid I haven't done that today, it's all been upgradey17:41
jamfwereade: k, I wasn't sure if there were child deployers, but I think that was something where you pulled deployer out of uniter, right?17:42
jamfwereade: np17:42
fwereadejam, yeah17:42
fwereadejam, sorry I didn't get to characterise it better, but I'll need to be off shortly and I wanted to let you know about it before tomorrow17:43
jamfwereade: so our Authorizer (today) doesn't have fancy stuff like "is recursively the machine running the given unit". It also doesn't have AuthUnitAgent which we'll need for Upgrader.17:43
jamfwereade: I'll give it a look, thanks for pointing it out17:43
fwereadejam, and I am currently much exercised by fricking https://bugs.launchpad.net/juju-core/+bug/119071517:43
_mup_Bug #1190715: unit destruction depends on unit agents <juju-core:In Progress by fwereade> <https://launchpad.net/bugs/1190715>17:43
fwereadejam, because rog went on holiday without adding the cleaner worker17:44
jamfwereade: that is, we have a cleaner worker implemented, but it isn't integrated?17:45
fwereadejam, yeah, my integrating it was that patch with the somewhat questionable mocking that I thought was better than nothing, but that collided with roger's connect-to-the-api patch17:45
fwereadejam, so I bowed out and left the integration in his hands, but I think it got pushed aside by... whatever that non-critical branch that's sitting in review is :/17:47
jamfwereade: so is it as approximately simple as adding a line 152 in cmd/jujud/machine.go inside StateWorker ?17:47
fwereadejam, yeah basically17:48
fwereadejam, but I feel obliged to actually test it17:48
fwereadejam, so Cleaner gets a (sigh) side effect test17:48
fwereadejam, and Resumer gets no test, but a comment indicating why17:48
fwereadejam, and maybe one day we'll factor that lot cleanly enough that we can test it without SAN damage17:49
jamfwereade: so for bug 1190715, this is on the root machine, or on the worker machines?17:53
_mup_Bug #1190715: unit destruction depends on unit agents <juju-core:In Progress by fwereade> <https://launchpad.net/bugs/1190715>17:53
jamsorry, wrong one17:53
jambug 119991517:53
_mup_Bug #1199915: api cannot connect, fills deployed machine log with spam <juju-core:Triaged by jameinel> <https://launchpad.net/bugs/1199915>17:53
fwereadejam, that was on the bootstrap node17:53
fwereadejam, as a possible shortcut, consider what actually gets written into the conf's API info in a 1.10 bootstrap17:54
fwereadejam, ha, I bet I know17:54
fwereadejam, 1.10 used the same password for both, but only rewrote the stateinfo one to match the new password it set for itself17:54
jamoldapipassword17:55
fwereadejam, (I might be wrong ofc, but I *think* all we do is write oldapipassword and use the fact that we used it as reason to change it)17:55
fwereadejam, ok that was very poorly expressed17:56
fwereadejam, I should read the code I suppose17:56
jamfwereade: well, you are allowed to hand things off to other people :)17:56
jamI think I at least have your train of thought17:56
fwereadejam, no I think that maybe we never even set oldapipassword17:58
jamfwereade: in a fresh but running install it is set to ""17:58
jamwith trunk17:59
fwereadejam, ok, and that doesn't logspam?17:59
jamoldapipassword="" and I can see active Pinger requests on the RPC17:59
jam2013-07-10 17:51:08 DEBUG juju codec.go:103 rpc/jsoncodec: <- {"RequestId":5,"Type":"Pinger","Request":"Ping","Params":18:00
jamso *that* is spammy because we ping every 30 seconds or so and every request generates 2 log entries18:01
jambut it isn't failing to connect.18:01
jamand it is DEBUG level18:02
fwereadejam, ok, well that is good news :)18:03
fwereadejam, it's probably just an upgrade issue then18:03
jamfwereade: except now I have to figure out how to get a copy of the 1.10 tools :)18:03
jamwell, 1.10 juju binary18:03
jamprecise never had it, and the PPA has already pushed out 1.11.2 which means it doesn't expose 1.10.0 anymore (I think)18:04
fwereadejam, heh, I hadn't actually updated it from the PPA18:04
mgzjam: should all still be in the ec2 bucket, no?18:04
fwereademgz, not the client binary18:05
jammgz: ec2 bucket holds jujud18:05
jamnot juju18:05
fwereadejam, oh for frickin' repeatable builds18:05
mgzoh, joy18:05
jamhttp://archive.ubuntu.com/ubuntu/pool/universe/j/juju-core/18:06
jammgz: fwereade ^^18:07
dimiternfwereade: bug 1199680 is just committed, not yet released, right?18:07
_mup_Bug #1199680: upgrade-juju fails from 1.10 to trunk <juju-core:Fix Released by fwereade> <https://launchpad.net/bugs/1199680>18:07
jamthe archive is long lived18:07
jameven if ppa's are not18:07
mgzdimitern: technically, doesn't matter too much18:07
jamthey wouldn't let us delete stuff from like Hardy18:08
dimiternmgz: it might matter for the release manager (ha!) :)18:08
fwereadedimitern, I consider it released, because it's a problem with trunk18:08
dimiternfwereade: well, just marked it as committed - should I revert it?18:08
* fwereade shrugs and thinks it's pretty academic in this case18:09
dimiternfwereade: i'm ready with the remover18:10
dimiternfwereade: if you're still here 10 more minutes, can you take a look (just about to propose)18:10
jammgz: "use of closed network connection" with the 1.10 binary...18:11
mgzguuu18:11
fwereadedimitern, go for it18:11
jammgz: it worked on second attempt18:11
jamheisenbugs and all that18:12
fwereadedimitern, and you can take a look at https://codereview.appspot.com/10825044/ while I do, brb18:13
dimiternfwereade: sure - there it is: https://codereview.appspot.com/11125043 (disregard the typo in the title - will fix it to Remover before submitting)18:14
dimiternmgz, jam: I'd appreciate a look from you as well, if still around18:17
dimitern^^18:17
mgzsure18:19
jamugh, "juju --version" broke "juju upgrade-juju" because we now have "--version" defined in 2 places.18:20
jamWhy didn't the test suite catch this?18:20
mgz>_<18:21
jammgz: and of course --version is a global defined as a BoolVar, and "upgrade-juju --version" is a local defined as a StringVar...18:23
jam*but* it panics in gnuflag18:23
jamwhich is a terrible traceback.18:23
mgzthe test suite doesn't run real binaries, which has been a shortcoming in several places...18:24
jammgz: well, it would have caught this, if we had an entry in main suite that tried to install the 'upgrade-juju' subcommand18:26
jamthe issue is that the args for subcommands aren't added to be processed until you request one of them.18:26
jamSo "juju upgrade-juju -h" actually panics18:26
jammgz: I wouldn't be terribly surprised to not see a test that "juju upgrade-juju" actually works, even without the "actually run the binary" testing.18:27
fwereadedimitern, LGTM, just trivials18:27
fwereade,18:27
fwereademgz, jam, dimitern: sorry, I have to be away now18:27
dimiternfwereade: thanks!18:28
dimiternfwereade: reviewed as well18:28
fwereadedimitern, cheers18:29
jamdimitern: why rename results => result?18:29
jamGiven the return value is containing a plural slice18:29
dimiternjam: well, my original intent was to call all bulk result vars "result", since it's a single result struct18:29
dimiternjam: i mean you're returning not an array, but a struct which has the array inside18:30
dimiternjam: so result.Results or result.Errors seems better18:30
jamdimitern: at the top level, you're right there is only one object, but it still feels like a collection of results to me. Though I can't say a feel terribly strongly either way.18:32
dimiternjam: it made more sense to me at least in singular, but i can change it back if someone feels strongly against it (roger's not around ;)18:33
jamdimitern: as long as each person touching the code doesn't decide to change them all to their way, I don't actually care. It isn't exposed in the external, they are just local variables.18:34
dimiternjam: yeah, certainly18:36
jamdimitern, mgz: https://codereview.appspot.com/11124044/  Unfuck 'juju upgrade-juju'18:42
dimiternjam: looking18:44
jamit is just reverting what I just landed18:44
jamdimitern: thanks ^^18:44
dimiternjam: Remove is a write action - and the func is canRemove18:45
jamdimitern: well the func was "canRead" which is obviously wrong. What is the actual auth level control?18:46
jamcan you remove something but not otherwise modify it?18:46
jamwrite it, etc.18:46
jam?18:46
dimiternjam: i changed it canRemove and getCanRemove respectively18:46
dimiternjam: do you mind if it stays like that?18:46
jamdimitern: I'm slightly concerned about having 20 different "canAddOneLine" "canAppend" "canOverwrite" "canTruncate" that really all just are the difference between "can I view this thing" and "can I modify this thing"18:48
jamdimitern: canRemove is fine, as long as it actually has a different auth model than "canModify"18:48
dimiternjam: ok, canModify it is then18:49
jamdimitern: maybe you know. What causes the api to login with password vs oldpassword?18:55
dimiternjam: when it's about to change the password18:55
dimiternjam: at first connect18:55
dimiternjam: i *think*18:57
jamdimitern: I have to shut down for tonight, but I can confirm bug #119991519:00
_mup_Bug #1199915: api cannot connect, fills deployed machine log with spam <juju-core:Triaged by jameinel> <https://launchpad.net/bugs/1199915>19:00
jamIt spins trying to connect with oldpassword19:00
jamthough on the successful case, It asks to set the password to something new, which doesn't seem to be stored in agent-0.conf19:00
jamso I don't know how it expects to login again.19:01
dimiternjam: the idea is to connect with the hash of the original agent conf password, then change it and set old to ""19:01
dimiternjam: but it's pretty convoluted, i'll take a look tomorrow19:02
dimiterni'm off as well19:03
dimiternsee ya'all tomorrow ;)19:03
=== DarrenS is now known as Guest18637
wallyworldfwereade: hiya, did you have a chance to look at those code reviews?20:45
=== wedgwood is now known as Guest90326
=== Guest90326 is now known as wedgwood
davecheneyhello - we finally have a goo 1.11.2 build23:07
davecheneyi'm just uploading the tools now and doing a test release23:07
davecheneythen i'll bump the version and try to tag it23:07
davecheneywallyworld_: is it possible to bzr branch from a specific revno ?23:14
davecheneyie, I want to take rev 1414 as release-1.11.223:15
davecheney/s/take/tag23:15
wallyworld_davecheney: i think so, i'll have to check th exact syntax23:20
wallyworld_i think it's -c23:21
wallyworld_nope23:22
bigjools-r23:24
wallyworld_i just tried -r and it still pulled in all 1414 revisions23:25
wallyworld_ah cobzr stuffs it up23:27
davecheneywallyworld_: that doens't surprise me23:29
davecheneyso, bzr branch -r 1414 lp:juju-core mybranch ?23:30
wallyworld_davecheney: yeah, i really need to go back to using straight bzr like i did for lp23:30
wallyworld_yes23:30
davecheneywallyworld_: thanks for fixing the simple streams snafu23:30
davecheneylooks like we'll have a release today23:30
wallyworld_np23:30
wallyworld_i didn't rrally fix anyhting :-)23:30
wallyworld_really23:30
davecheneywallyworld_: well, you know who to throw tables at to get it fixed23:31
davecheneyahasenack: is probably right, we need more logging to show where that happened23:31
wallyworld_guess so :-)23:31
wallyworld_yes23:31
davecheneyi'm working on a branch now to show WARNINGs by default23:31
davecheneybut that means we also show ERRORs by defulat23:31
bigjoolsbzr help revisionspec23:31
davecheneywe used to quench everything23:31
wallyworld_davecheney: i've also sent emails to set up a meeting to put in place processes so this doesn't happen again23:31
davecheneywallyworld_: +123:31
davecheneyand that has upset the test cases, a lot23:32
wallyworld_yes, i am not surprised23:32
wallyworld_davecheney: i really think logging should be separate from our CLI23:32

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