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

=== negronjl_ is now known as negronjl_away
=== negronjl_away is now known as negronjl_
=== kadams54 is now known as kadams54-away
davecheneythumper: http://paste.ubuntu.com/11360922/01:47
davecheneycurrent state of play01:47
* thumper looks01:47
thumperdavecheney: seems only 10 packages have races01:48
davecheneythis was run without -p 101:48
davecheneyso some testss timed out01:49
davecheneybecuase of contention on the cpu01:49
davecheneyyeah 10 looks about right01:49
* davecheney makes cards01:49
mwhudsondavecheney: so, the "don't strip go binaries" thing02:14
mwhudsondavecheney: do you know what the actual problems are, or is it more "it's not tested and sometimes breaks things so don't do it"?02:15
axw_thumper: when you have a moment, can you glance over https://github.com/juju/utils/pull/134 and tell me if there's any reason why this should break "go run"?02:50
axw_please02:50
thumperok02:50
=== axw_ is now known as axw
thumperaxw: do I take it from this question that it is breaking juju run?02:51
axwthumper: err yeah, juju run not go run :)02:51
davecheneymwhudson: it's sort of self referential02:51
davecheneystrip(1) doesn't really follow elf02:52
axwthumper: context: fixing https://bugs.launchpad.net/juju-core/+bug/145467802:52
mupBug #1454678: "relation-set --file -" doesn't seem to work <landscape> <relation-set> <juju-core:Triaged> <juju-core 1.24:In Progress by axwalk> <https://launchpad.net/bugs/1454678>02:52
davecheneyit just doesn't mangle gcc produced things02:52
davecheneyso that broke go binaries02:52
davecheneymainly anthing that wasnt amd6402:52
axwthumper: with my pending fix, jujud would consume stdin and pass it to the backend02:52
davecheneynow, we don't test stripped binaries02:52
davecheneyso if they got better or worse over time, we don't know02:52
axwthumper: that breaks juju run, because it reads the subsequent commands piped to bash02:52
thumperhmm...02:52
axwthumper: e.g. if you did "juju run 'cat; echo 123'", you'd get output of "echo 123" rather than "123"02:53
davecheneyso it's sort of a circular problem, we tell people not to strip, they file bugs, we close them, we don't test that strip works, we tell people not to strip binaries, etc02:53
thumperaxw: well, juju run just calls 'juju-run' on the server, which enters a hook context to execute the commands...02:55
thumpercouldn't we just change how the juju-run server side command sends the actual script?02:55
thumperaxw: cmd/jujud/run.go02:56
thumperaxw: couldn'd we just hook up the stdin around line 11102:56
thumper?02:56
axwthumper: that doesn't solve this particular issue, though we might want to do that too. the problem is that at the moment, hook tools don't accept stdin at all02:57
axwhang on, I'll link my branch02:57
thumperI have the pull from above02:58
axwwallyworld: http://reviews.vapour.ws/r/1776/02:58
wallyworldok02:58
axwerr sorry, thumper^^02:58
axwwallyworld: ignore sorry02:58
axwthumper: so, atm you cannot do "echo yaml | relation-set ... --file=-"02:59
axwthumper: my branch changes it so you can. but that showed up a problem in a test where a hook tool was running underneath "juju run"02:59
axwthumper: if there are multiple hook tool commands in the same juju-run, then the first one would consume the stdin which happened to be the rest of the juju-run commands03:00
thumperah...03:01
thumperthat's kinda weird03:01
thumperand a bit strange...03:01
thumpernot quite sure how to fix that03:02
thumpersorry03:02
axwthumper: my change to utils/exec fixes it :)  I'm just wondering if there's any reason why we shouldn't do it.. I don't think so03:02
thumperaxw: I can't see a reason not to03:03
axwthanks03:03
=== kadams54 is now known as kadams54-away
davecheneythumper: there are a SHITLOAD of changes on juju/utils03:06
davecheneywhich aren't deployed because godeps has pinned the version way back in the past03:06
thumpersuccess!03:06
davecheneyno03:07
davecheneyhodl on that03:07
davecheneyfor some reason godeps didn't update my working copy03:07
davecheneyanyone http://reviews.vapour.ws/r/1782/03:13
axwthumper: how do I turn up logging in tests? is there a doc on this somewhere?03:17
thumperaxw: in the setup, do something like this:03:17
axwthumper: no env var? :\03:18
thumperloggo.GetLogger('juju.whatever').SetLogLevel(loggo.TRACE)03:18
axwok, thanks03:18
thumperaxw: no we protect all the tests from the environment03:18
axwsure, we could set up logging and then remove the env var tho03:18
axwdoesn't matter, that'll do for now03:19
davecheneyis anyone looking at the bug in reviewboard that causes it to shit on markdown liks ?03:21
davecheneylinks03:21
davecheneyaxw: thanks for the review, here is another https://github.com/juju/juju/pull/2420/files03:27
axwLGTM03:28
mupBug #1458717 was opened: utils/featureflag: data race on feature flags <juju-core:New> <https://launchpad.net/bugs/1458717>03:28
mupBug #1458721 was opened: lease: data races in tests <juju-core:New> <https://launchpad.net/bugs/1458721>03:28
axwdavecheney: dunno about the markdown links. I pinged ericsnow, but didn't hear back03:28
mwhudsondavecheney: right, i get the self-referential bit03:31
mwhudsonmaybe i'll try to bang on the details for 1.6 or something03:31
davecheneymwhudson: external linking passes everyting to /bin/ld ?03:35
davecheneythat may work03:35
mwhudsondavecheney: yes03:35
davecheneybut using the itnernal linker will probably cause sadness03:35
mwhudsonah yeah03:35
mwhudsonmakes sense03:35
menn0thumper: here's the PR to move the unit agent: http://reviews.vapour.ws/r/1784/03:57
* thumper looks03:57
thumpershipit04:00
menn0thumper: sweet04:01
davecheneythumper: on kanban, the link to LP bug link just sends be back to the board, not to lp04:12
thumperdavecheney: I'll fix it04:13
thumperit is board specific04:13
thumperand I didn't set it assuming the board I copied did04:13
davecheneyta04:14
thumperdavecheney: done04:22
thumpermenn0: I'm thinking I should have perhaps, maybe, not tried to do all this at once04:23
* thumper takes another bite of the elephant in the package04:23
* thumper makes it compile first04:23
menn0thumper: I know that feeling well04:24
davecheneymenn0: nice change on moving code out of the cmd04:24
thumperorder of operation:04:24
davecheneytesting commands is a pain04:24
thumpertests compile first04:24
davecheneymove the code elsewhere04:24
thumpertests pass second04:24
thumpertests right and correct third04:24
thumperalthough perhaps 2 and 3 will be reversed04:25
=== urulama__ is now known as urulama
davecheney1, 2, you know what to review, http://reviews.vapour.ws/r/1785/04:31
menn0davecheney: thanks... the change was essential in order to properly test what i'm working on04:32
axwdavecheney: RB is screwed, I can't reply to your comment. I don't think it makes sense to change to io.Writer, since we want to buffer the output and return it as []byte04:36
davecheneyfair enough04:37
davecheneyi couldn't see from the diff04:37
davecheneyso it was easlier to throw a comment over the wall04:37
davecheneyanyone want to retunr the favor04:39
davecheneyhttp://reviews.vapour.ws/r/1785/04:39
davecheneyits a 2 line change04:39
mupBug #1458693 was opened: juju-deployer fills up ~/.ssh/known_hosts <juju-core:New> <https://launchpad.net/bugs/1458693>04:43
davecheneyaxw: why do you think moving the line above the go statement changes the semantics of the test ?04:45
axwdavecheney: because the time is going to be different04:45
axwdavecheney: seems the time is meant to be after the lease was claimed04:45
davecheneysure, but that go routine may not be scheduled til some point in the future04:46
davecheneyhow about I move more code up ?04:46
axwdavecheney: that's what I'm suggesting: move the ClaimLease call above "leaseClaimedTime := time.Now()"04:48
davecheneyaxw: done04:48
davecheneyptal04:48
davecheneyfwiw both versions passed my stress test04:48
davecheneybut yours is more correct04:48
axwdavecheney: LGTM04:49
axwthanks04:49
thumperok... I gotta go cook dinner before picking rachel up from the airport04:51
thumpersee you folks tomorrow04:51
davecheneyoh the irony05:10
davecheneyhttp://paste.ubuntu.com/11364012/05:10
mupBug #1458741 was opened: cmd/jujud/agent: TestJobManageEnvironRunsMinUnitsWorker fails <juju-core:New> <https://launchpad.net/bugs/1458741>05:25
anastasiamacaxw_: tyvm :)06:05
anastasiamacaxw_: I'll look tonite :D06:05
axw_anastasiamac: nps06:11
anastasiamacaxw_: this store that I am adding ("allecto") exist or the charm that I am using.06:14
anastasiamacaxw_: the whole idea was to use charm with storage06:14
anastasiamacaxw_: and this one has 2 charm stores :D06:14
anastasiamaci'll update tthe code later on but i think u r spot on the money with writechanges!06:14
anastasiamacaxw_: brilliant! tyvm :)))06:15
axw_anastasiamac: sorry, didn't realise storage-block had been updated06:15
anastasiamacaxw_: guilty as charged :))06:15
axw_anastasiamac: writeChanges shouldn't cause your test to pass though, that would only make a difference if you passed an error into FlushContext06:16
axw_anastasiamac: ah, I know what hte issue is then06:16
axw_anastasiamac: you didn't specify a Count, so it was set to the MinCount of that store which is 006:16
axw_anastasiamac: it should default to 106:17
axw_(in the case of this method only)06:17
anastasiamacaxw_: axw_oomg! u r 100% right!!! thnx!!!06:17
anastasiamacaxw_: :D06:17
anastasiamacaxw_: i need this store to have 0, so I'll pass Count as 1 in the test :)06:18
anastasiamacaxw_: the whole idea of adding this store to test charm was to have a 0 ifor count range :)06:18
axw_anastasiamac: I think state.AddStorageToUnit should set Count to 1 if it's 006:18
anastasiamacaxw_: sure?06:18
anastasiamacaxw_: u don't want it to send an error back? saying env default is 0 so storage wasn't aadded?06:19
axw_anastasiamac: doesn't make sense to add storage with 0 count06:19
axw_anastasiamac: IMO, storage-add should add a single instance unless otherwise specified06:19
axw_anastasiamac: so maybe the state method should just error if Count is 0/unspecified06:20
axw_and require the client to specify it06:20
anastasiamacaxw_: k, i'll ad it to PR too! thanks for the thoughts :D06:20
anastasiamacadd*06:20
anastasiamacaxw_: at state - err if count is 0; in storage-add - set count to 1 if none specified06:22
axw_anastasiamac: yep. storage.ParseConstraints already does that (you're using that right?)06:22
axw_yes you are06:23
axw_anastasiamac: so, just error if Count is 0 and fix the tests to specify non-zero count06:24
anastasiamacaxw_: will do! tyvm :)))))))))06:30
mupBug #1458754 was opened: $REMOTE_UNIT not found in relation-list during -joined hook <juju-core:New> <https://launchpad.net/bugs/1458754>06:32
mupBug #1458758 was opened: enable to execute a command/script on lxc/kvm hypervisors before containers are created <feature-request> <juju-core:New> <https://launchpad.net/bugs/1458758>06:56
dimiternreviewers ? PTAL http://reviews.vapour.ws/r/1777/07:17
wallyworlddimitern: what are the plans for bug 1348663 ? given 1.24 is delayed till next week, are there plans to fix?07:25
mupBug #1348663: DHCP addresses for containers should be released on teardown <maas-provider> <network> <oil> <juju-core:Triaged by mfoord> <juju-core 1.24:Triaged by mfoord> <MAAS:Invalid> <https://launchpad.net/bugs/1348663>07:25
dimiternwallyworld, yes, the plan is to work around this by using the new devices api from maas - michael is working on implementing it this week07:26
wallyworlddimitern: awesome ty. for 1.24 then i asume?07:26
dimiternwallyworld, at the very least juju lets maas (1.8+) know when in spins up a container and which node is its parent07:27
wallyworldgreat07:27
dimiternwallyworld, yes, I hope we'll make it for 1.24.0, if not - for .107:27
wallyworlddimitern: ok, maybe then we move that bug off beta5 milestone and onto 1.24.007:28
dimiternwallyworld, sounds good to me07:28
wallyworlddone07:28
dimiterncheers!07:29
dimiternwallyworld, if you can, can you review http://reviews.vapour.ws/r/1777/ please?07:32
wallyworldok07:32
axw_fwereade: any thoughts on how to fix this? https://bugs.launchpad.net/juju-core/+bug/1457728/comments/607:34
mupBug #1457728: `juju upgrade-juju --upload-tools` leaves local environment unusable <local-provider> <upgrade-juju> <vagrant> <juju-core:Triaged> <juju-core 1.24:In Progress by axwalk> <https://launchpad.net/bugs/1457728>07:34
axw_fwereade: my initial thought is to make it more like the watcher API, which can be canceled when the worker is killed07:35
wallyworlddimitern: done, but a few comment sorry. i have to run away to soccer for a bit but will be back later07:41
dimiternwallyworld, ta!07:41
dimiternwallyworld, I was trying to find a way not to use JujuConnSuite, but couldn't find how - ideas welcome07:42
dimiternaxw_, ^^07:42
axw_dimitern: see {api,apiserver}/diskmanager for example07:45
dimiternaxw_, ah, ok - thanks!07:45
axw_dimitern: convert the state.State to an interface {ResumeTransactions()}07:45
axw_then in the tests you replace the state.State with a mock version07:46
wallyworlddimitern: i referenced diskmanger in the comments :-)07:46
dimiternaxw_, the problem is RegisterStandardFacade needs a factory method taking *state.State07:46
* wallyworld runs away to soccer 07:46
axw_dimitern: yeah that's a bit of a pain. couple of options: limited use of PatchValue as in apiserver/diskmanager, or have the factory defer to some other code that takes an interface07:47
dimiternaxw_, right, that's an option, but we really should change facade factory methods across the board to avoid the need to pass state07:48
axw_dimitern: I agree07:48
axw_just haven't gotten around to it :)07:48
fwereadeaxw_, oops, sorry, looking08:35
fwereadeaxw_, I'm not sure the Block is intrinsically the problem; but, yes, a watcher-style approach would be much more in keeping with everything else in juju08:37
fwereadeaxw_, the core problem I *think* is that the block can outlive the manager responsible for notifying of the change08:38
axw_fwereade: yeah, the lease manager on the apiserver just exits without notifying the subscribers08:39
axw_fwereade: so they just sit there waiting, forever08:39
fwereadeaxw_, grrrmbl08:39
fwereadeaxw_, it has a few other hang bugs too08:39
axw_fwereade: so we can close those channels, but I'm not too sure how to prevent new ones from coming in yet. the whole thing's a singleton, which makes it slightly difficult08:40
fwereadeaxw_, the singleton is a goddamn nightmare08:40
fwereadeaxw_, let me forward you a couple of mails08:40
axw_okey dokey08:40
fwereadeaxw_, if you have input re replacing it cleanly I would be most grateful08:42
* axw_ lights the pipe and puts on his reading glasses08:42
axw_sure thing08:42
fwereadeaxw_, but every approach I can see has tentacles :(08:42
fwereadeaxw_, I'm going out for a short run soon but ping me and I'll respond when I can08:43
axw_fwereade: will do, I'll have to digest all of this first08:43
fwereadeaxw_, yeah, I'm not expecting immediate responses at all :)08:44
axw_:)08:44
axw_fwereade: I'll investigate making lease a non-singleton. will let you know if I get anywhere09:12
fwereadeaxw_, awesome, tyvm, http://reviews.vapour.ws/r/1787/ and my responses may be relevant background also09:13
axw_ok09:13
axw_fwereade: re worker dependencies, I think I'd avoid that initially and return an error if the apiserver facade attempts to use the lease manager if the worker is stopped. is that reasonable?09:15
fwereadeaxw_, yeah, that's fine by me09:15
fwereadeaxw_, but then we need a strategy for wiring the fresh lease manager into the api server when it's bounced...09:16
axw_fwereade: ah, I was thinking they'd all bounce.. that won't happen though will it. unless we make all lease-manager errors fatal.09:16
fwereadeaxw_, if we made the lease manager part of state directly we might cut through that problem entirely09:16
fwereadeaxw_, a state already looks after the watcher and presence "worker"s09:17
fwereadeaxw_, it's not a *good* solution but it might make a good dolution easier to see09:17
fwereadeaxw_, not sure09:17
fwereadeaxw_, really have to go out now, bbs09:17
axw_sure, ttyl09:17
dimiternaxw_, fwereade - http://reviews.vapour.ws/r/1777/ PTAL09:28
dimiternfwereade, you'll like this I believe :) ^^09:28
axw_dimitern: is resumer really run once per env? I would've thought it'd be once for the state server09:30
axw_I don't think there's a separate txn log per env is there?09:30
dimiternaxw_, I think it's run once per state server (jobmanageenviron)09:31
axw_dimitern: sorry, reading fail. I saw perEnvSingular and read perEnv09:31
dimiternaxw_, ah :)09:31
dimiternaxw_, yeah - perEnvSingular could be named better - like envManagerWorkers09:32
axw_dimitern: actually... it does look like it'll be one per (hosted) env09:33
axw_env worker manager starts those workers for each env in state09:33
* axw_ doesn't know JES well09:34
dimiternaxw_, hmm - well, that smells fishy09:34
dimiternaxw_, but I haven't changed the logic there I believe09:34
axw_dimitern: you moved it into startEnvWorkers, so I *think* there'd be one of them per hosted env. I could be wrong, thumper and co could tell you definitively. anyway, I'll keep reviewing09:36
dimiternaxw_, fair point, will ping thumper or menn009:37
axw_dimitern: stupid question. what do we gain by running this over the API anyway? it's pretty closely tied to mongo09:39
dimiternaxw_, satisfying the "thou shalt not use state directly ever" concept :)09:42
dimiternaxw_, fwereade is really keen on this and I agree - better isolation, mockability, etc.09:42
dimiternaxw_, I guess I could move the starting of resumer in postUpgradeAPIWorker when isEnvironManager == true09:44
axw_dimitern: mk. well, what's there LGTM, apart from that possible per-env issue09:44
dimiternaxw_, thanks!09:44
axw_dimitern: yeah that looks like it'd work09:45
dimiternaxw_, it will still run 1 resumer per apiserver I guess, but it should work regardless09:45
dimitern(for all hosted envs and in HA setup)09:46
axw_hm yeah, we don't have singular workers over API. welp, I dunno. is it valid for two things to try to resume transactions?09:47
axw_I guess it must be09:47
dimiternaxw_, looking in state/txn.go - ResumeAll() that ultimately gets called, it seems we always find all txns and try to resume !tapplied || !taborted09:49
perrito666mornin10:16
wallyworldfwereade: with that pr, i was only trying to do the minimal work to improve what was there for 1.24, not solve the bigger picture issues which would take a lot more effort. i was hoping that as long as what was there was no worse, and hopefully better than what exists, it could solve the huge txn queue issues (but not everything else)12:05
fwereadewallyworld, I *suspect* that all that'd take is dropping the delete/add, and leaving everythinng else as is12:10
fwereadewallyworld, but the txn builder doesn't add anything afaics -- if anything it makes it slightly worse by making the lease managers more relentless in overwriting one another12:11
fwereadewallyworld, (I think?)12:11
wallyworldfwereade: that last point i did question - i think it could be changed to just error out if the txn revno differed12:12
fwereadewallyworld, it doesn't help12:12
fwereadewallyworld, you're just checking that the database looked how it did when you decided to make the change12:12
fwereadewallyworld, but you're not using the database to help you decide whether that change is sane12:13
wallyworldwell isn't the database looking as you expect sufficient?12:13
fwereadewallyworld, no, because the only component that knows how it shoudl look is the lease manager12:13
fwereadewallyworld, the lease persistor is just doing as its told and not synchronising anything afaics12:14
fwereadewallyworld, it's only the lease manager that understands on what basis it's replacing the lease, but it's keeping that basis secret from the persistor, so the persistor can't know whether it's still a good idea at the time it looks at the db12:15
wallyworldhmmm, sounds like the lease manager needs to use the db as a point of synchronisation rather than an in memory model12:15
fwereadewallyworld, I think that is unquestionable12:15
wallyworldit could work if we could guarantee that the db 1:1 reflected the in memory model, but that doesn't work for ha etc12:16
fwereadewallyworld, it's one of those communication screwups where I'd thought that was the only way that could ever possibly work, and that clever in-memory stuff might be a smart optimisation12:16
fwereadewallyworld, it didn't even cross my mind that we'd try to build a distributed lease manager *without* synchronisation12:16
wallyworldit wouldn't be so bad is mongo wasn't so fucking sumb12:16
wallyworlddumb12:16
fwereadewallyworld, yeah, it's a genuinely interesting problem12:17
wallyworldso i was looking for a quick 1.24 fix (not perfect)12:17
wallyworldi thought that by at least making the db writes conditional, we may avoid the huge txn queue issue12:18
wallyworldnot trying to fix everuthing12:18
wallyworldalso not ignoring errors12:18
fwereadewallyworld, I haven't checked yet but I strongly suspect that the huge queues are because of the delete/add12:18
wallyworldat least we'd see what may be failing12:18
wallyworldright, so the delete add is gone12:18
fwereadewallyworld, and the trouble with not ignoring errors is that you can't really escape the tentacles12:18
wallyworldby using the buildtxn function we avoid the delete/add12:19
wallyworldas i said, not ment to be perfect12:19
wallyworldbut no worse12:19
wallyworldwith visible errors12:19
fwereadewallyworld, errors visible in the wrong place to a random subset of clients, I think?12:20
wallyworlderrors will cause worker to reboot12:20
wallyworldwith logging12:20
fwereadewallyworld, right12:20
wallyworldso better since they are visible12:20
wallyworldand maybe txn issue solved12:20
fwereadewallyworld, but the worst worker problems that cause hangs and deadlocks are not touched12:20
wallyworldyes12:20
fwereadewallyworld, and you're delivering the errors to inappropriate places12:20
wallyworldbut that wasn;t the goal12:20
wallyworldwhy inappropriate? the worker will reboot, the cache wull be reloaded, the error will be logged = imporvement12:21
wallyworldas it is now, the cache can be corrupt12:21
fwereadewallyworld, the clients who callecd the method will get some weird error they should never see12:21
fwereadewallyworld, other clients will just hang12:21
wallyworldbut that's no worse than now is it?12:22
wallyworldat least the error will be visible somehow instead of swallowed12:22
fwereadewallyworld, some errors will be visible to some clients12:22
wallyworldright, but only if something failed12:23
fwereadewallyworld, no12:23
fwereadewallyworld, ...or maybe I misunderstood you12:23
wallyworldquick hangout maybe?12:24
fwereadewallyworld, sure, 5 mins?12:24
wallyworldok12:24
wallyworldin our 1:112:24
mupBug #1457218 changed: failing windows unit tests <ci> <regression> <windows> <juju-core:Fix Committed by ericsnowcurrently> <juju-core 1.23:Fix Committed by ericsnowcurrently> <juju-core 1.24:Fix Committed by ericsnowcurrently> <https://launchpad.net/bugs/1457218>12:53
jamwallyworld: fwereade: any solutions coming out of the hangout?13:02
wallyworldjam: you could join us briefly?13:03
wallyworldhttps://plus.google.com/hangouts/_/canonical.com/ian-william13:03
jamwallyworld: link? (I'm supposed to be meeting with mramm, but he's not showing up yet)13:03
jamwallyworld: he just showed up13:04
wallyworldjam: tl;dr; i think we can land the pr with slight mods13:04
wallyworldjam: fwereade is thinking about it :-)13:04
jamwallyworld: fwereade: can we do it with opaque tokens? (manager gives a request to persister which manager needs to pass back in the next time)13:06
wallyworldjam: i'm off to bed, fwereade will fill you in13:31
fwereadejam, so, I'm reasonably sure that wallyworld's PR doesn't make things *worse*, with a couple of fixes we can put that in13:32
fwereadejam, re passing tokens -- possibly? I couldn't think of a way to do that nicely, because of the smearing of knowledge across the layers (lease persistor knows what's written; lease manager knows what those leases mean; leadership manager knows how leases map to leadership)13:34
fwereadejam, but maybe I mistake what problem you're addressing?13:35
wwitzel3natefinch: ping14:01
natefinchericsnow: check out https://github.com/natefinch/pie14:23
ericsnownatefinch: nice :)14:23
voidspacedimitern: ping14:43
dimiternvoidspace, pong14:47
voidspacedimitern: I've created three tasks for working with the devices api14:48
voidspacedimitern: pre-generating MAC addresses is actually probably simpler than our initial approach of a machine agent and apiserver methods for the container to report the MAC address after provisioning14:49
dimiternvoidspace, great, thanks! I'll have a look shortly14:49
voidspacedimitern: there are some open questions however14:49
voidspacedimitern: it doesn't look like you can associate a "device" with a "host"14:49
voidspacedimitern: so on host destruction we'll still have to manually release the addresses (destroy the containers)14:49
voidspacedimitern: that's easy, but not what we hoped14:49
dimiternvoidspace, wait I don't quite follow14:49
voidspacedimitern: I thought part of the point we were hoping to get from the devices api was the ability to declare a container as belonging to a host machine14:50
dimiternvoidspace, you need the system-id (instance id in juju terms) of the host to pass as parent= in device new, right?14:50
voidspacedimitern: gah14:50
dimiternvoidspace, that's establishes the link14:50
voidspacedimitern: I was looking at get not new14:50
dimiternthat even14:51
voidspacedimitern: so I didn't see parent14:51
voidspacedimitern: cool, that's great14:51
dimiternvoidspace, :) yeah14:51
voidspacedimitern: storing the devices uuid will be interesting14:51
voidspacedimitern: 1) it's provider specific14:51
voidspacedimitern: 2) the logical place for it is in instanceData - but that normally doesn't get created until after provisioning14:51
voidspacedimitern: so there'll be some re-working there14:51
dimiternvoidspace, yeah, true14:53
dimiternvoidspace, it seems like we need to extend SetInstanceInfo to take an extra argument14:56
voidspacedooferlad: dimitern: I picked up that PDU you recommended (dooferlad) for cheap on ebay (about half the price of that refurbed one)14:56
voidspacedimitern: right14:56
dimiternvoidspace, if that argument is set, we'll store it in a new field in the instanceData doc for the container14:56
dimiternvoidspace, nice! does it work ok?14:57
voidspacedimitern: waiting for it to arrive14:57
voidspacedimitern: alternatively, we can fetch the device id from the mac address14:57
voidspacedimitern: so we can just store that, and it's not provider specific14:58
dimiternvoidspace, interesting14:59
dimiternvoidspace, so an environ method like InstanceIdFromMAC(mac string) (instance.Id, error)15:00
voidspacedimitern: well, the release IP address method could do that15:01
voidspacedimitern: the MAAS specific one15:01
voidspacedimitern: probably no need for a new public method on Environ15:01
dimiternvoidspace, I like this!15:02
dimiternvoidspace, the hostname can be used as well15:02
voidspacedimitern: right15:02
dimitern(but it needs to be a FQDN)15:02
voidspacedimitern: so it should be easy, and no need to store provider specific information15:02
dimiternvoidspace, cool!15:02
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
voidspacedimitern: so MAC address is not stored on the machine, nor the instanceData but in a networkInterfaceDoc16:18
voidspacedimitern: (in terms of state)16:19
voidspacedimitern: and that's done from SetInstanceInfo16:20
dimiternvoidspace, yeah, that's a bit crappy and needs fixing at some point16:24
voidspacedimitern: is it the right way to store container mac address for now?16:26
voidspacedimitern: or is it *already* done like that16:26
ericsnowdimitern: is there (or will there be) networking info in charm metadata?16:26
voidspacedimitern: i.e. if we specify the MAC address for the container on creation, it will be populated correctly in state by SetInstanceInfo16:26
voidspaceericsnow: networking will largely be done as deploy time constraints and environment configuration16:27
=== kadams54 is now known as kadams54-away
ericsnowvoidspace: hmm, I would have thought it would be similar to storage, where the charm specifies up-front what networking resources it will need16:28
ericsnowvoidspace: see http://bazaar.launchpad.net/~axwalk/charms/trusty/postgresql/trunk/view/head:/metadata.yaml16:28
dimiternvoidspace, well, considering we'll most likely change what we do in SetInstanceInfo apart from calling SetProvisioned16:28
voidspaceericsnow: what networking resources do you have in mind?16:28
ericsnowvoidspace: not sure exactly :)16:29
voidspaceericsnow: what *could* a charm usefully specify...16:29
dimiternvoidspace, I'd suggest to reuse SetInstanceInfo, if possible (pass the MAC as part of the network info)16:29
ericsnowvoidspace: what have you got? :)16:29
voidspacedimitern: they should be already - as interfaces16:29
voidspaceericsnow: what "spaces" a unit can be in - specified at deploy time16:29
voidspaceericsnow: and then the creation of spaces and the creation of subnets and allocating them to spaces16:29
ericsnowvoidspace: spaces as in subnets?16:30
voidspaceericsnow: a space is a collection of subnets16:30
ericsnowvoidspace: k16:30
voidspaceericsnow: and they're environment specific, so you can't usefully specify anything about them in a charm16:30
ericsnowvoidspace: so "space" is what could meaningful in the charm metadata16:31
voidspaceericsnow: raise ParseError("what?")16:31
ericsnowvoidspace: you could at least identify the space16:31
voidspaceericsnow: but each environment will have different spaces16:31
voidspaceericsnow: so you specify them at deploy time16:31
ericsnowvoidspace: I'm asking in context of charm-launched containers16:32
ericsnowvoidspace: we are looking to specify them in the charm metadata16:32
voidspaceericsnow: well, a container will only be able to be in the spaces that the host can see16:32
ericsnowvoidspace: part of that would be identifying the networking resources the container should use16:33
=== kadams54-away is now known as kadams54
voidspaceericsnow: the spaces available to a container will depend on the host - if the physical (or virtual!) machine a container is *in* doesn't have access to the subnets in a space then the container can't either16:33
voidspaceericsnow: so I don't think there's anything useful to specify in the charm metadata there16:34
voidspaceericsnow: unless the charm can get the spaces available at container creation time and (effectively) say "be on this subnet"16:35
voidspaceericsnow: which if the host is in several spaces, that may be useful16:35
ericsnowvoidspace: exactly16:35
ericsnowvoidspace: if there is only one possibility then there's no need to decide :)16:36
voidspaceericsnow: this is metadata added at charm runtime, not upfront then?16:36
ericsnowvoidspace: it's in the face of multiple options that we'd like to be explicit16:36
ericsnowvoidspace: no, it will be part of the charm metadata16:36
voidspaceericsnow: you can't know at charm creation time what spaces will be accessible to a machine at arbitrary machine creation time16:37
voidspaceericsnow: so you can't know anything useful upfront, it's deploy time data not charm data16:37
ericsnowvoidspace: mostly declaring the space to use for a container is relevant if the charm has multiple containers and multiple spaces and the containers should be on the same subnet16:38
voidspaceericsnow: so if this is metadata encoded into the charm (i.e. not to be determined at hook runtime / container creation time) then you can't know ahead16:38
voidspaceericsnow: but what spaces units of a charm are to be deployed to is the decision of the person deploying the charm not the person writing the charm16:39
voidspaceericsnow: so you can't encode that into the charm16:39
voidspaceI think if a charm (unit of a service) creates a container, the assumption has to be that it will have the same constraints as those specified for the charm16:40
perrito666 /query natefinch16:40
perrito666lol16:40
perrito666my irc client has the worse UI in history16:40
ericsnowvoidspace: okay, so we'll just have to wing it :)16:40
voidspaceericsnow: yeah16:40
voidspaceericsnow: so there may need to be some code / checking that we *do* pick the same subnet for configuring the networking of the container16:41
voidspaceericsnow: but I think that's deterministic, so it shouldn't be a problem currently16:41
ericsnowvoidspace: agreed16:43
voidspaceericsnow: eventually we will do per-instance (including containers) firewalling - and setup routing rules so that spaces are isolated from each other16:44
voidspaceericsnow: so the host will need to know what ports the container is using as we're doing NAT16:44
voidspaceericsnow: at least with addressable containers we are16:45
voidspaceericsnow: but per-instance firewalling, and routing rules for spaces, are both some way off16:45
ericsnowvoidspace: you mean like we mostly had to do for the new vsphere provider? :)16:45
voidspaceericsnow: thankfully I have no idea...16:45
voidspaceg'night all18:11
=== urulama is now known as urulama__
=== kadams54 is now known as kadams54-away
natefinchI hate it when my job comes down to: let's find the least-sucky way to do this.  ...because invariably people disagree which way is least sucky.20:04
natefinchwwitzel3: you around?20:08
wwitzel3natefinch: yeah20:08
wwitzel3natefinch: in moonstone with ericsnow20:08
natefinchkk20:08
natefinchI was wondering if you knew if it's possible to load the existing syslogconfig ...  I can find a Write method, but not a Read method... so I don't know if we even support reading from whatever config we wrote to disk.20:10
wwitzel3natefinch: don't know off hand, I can poke around in a bit20:13
natefinchwwitzel3: that's ok, I can poke around, just figured I'd ask if you knew20:14
natefinchdammit, I hate it when the docs don't specify what happens in edge conditions.  If you os.Rename a file and the target exists.. what happens?20:32
perrito666I unix, most likely a rewrite20:32
perrito666unless there is a guard20:32
wwitzel3anyone able to explain the workflow process of developing new stuff in juju/charms?21:17
wwitzel3do you work against v5-unstable? and propose to v5?21:17
niedbalskiDoes anybody had experienced this error (missing series)  "21":   agent-state-info: invalid binary version "1.23.3--armhf" ?21:55
thumpercmars: we on for today?21:58
thumperniedbalski: wow, cool...21:59
thumperunknown series?21:59
thumperniedbalski: what host?21:59
niedbalskithumper, 1.23.3-vivid (client), 1.23.2 ( bootstrap node ) on armhf. This happens on sync-tools / add-machine operations.22:00
thumperniedbalski: what hardware are you using?22:01
thumperfor armhf?22:01
niedbalskithumper, raspberry pi 222:01
niedbalskithumper, this is not super critical, is for my local lab, but the bug is ugly anyways :)22:02
thumperack22:02
thumpercan you file a bug plz?22:02
thumpercmars: nm, I just saw the email about the decline22:02
niedbalskithumper, ok, it seems that other archs experienced this same issue in the past, btw. (http://irclogs.ubuntu.com/2014/09/24/%23juju.txt)22:03
niedbalskithumper, https://bugs.launchpad.net/juju-core/+bug/1459033, anything else I can add?22:14
mupBug #1459033: Invalid binary version, version "1.23.3--amd64" or "1.23.3--armhf" <juju-core:New> <https://launchpad.net/bugs/1459033>22:14
thumperniedbalski: nah, that is a good start22:20
thumperniedbalski: thanks22:20
mupBug #1459033 was opened: Invalid binary version, version "1.23.3--amd64" or "1.23.3--armhf" <juju-core:New> <https://launchpad.net/bugs/1459033>22:22
=== kadams54 is now known as kadams54-away
waiganiwallyworld, axw: I've hit a bug with 1.24, ec2 --upload-tools - there a bunch of CLOSE_WAIT connections on the server to s3 - full details: #45904723:41
mupBug #459047: [105158.082974] ------------[ cut here ]------------ <amd64> <apport-kerneloops> <kernel-oops> <linux (Ubuntu):Confirmed> <https://launchpad.net/bugs/459047>23:41
wallyworldoh joy23:42
wallyworldmaybe bug 1459047 perhaps23:42
mupBug #1459047: juju upgrade-juju --upload-tools broken on ec2 <juju-core:New> <https://launchpad.net/bugs/1459047>23:42
waiganiwallyworld: ugh, what did I paste?23:43
wallyworldmissing the 123:43
waiganiah, right heh23:43
wallyworldwaigani: so i think you're on bug duty for onyx? looks like you've a bug to work on :-)23:47
waiganiwallyworld: yep23:48
wallyworldwaigani: we're having fun fixing lease manager stuff \o/23:49
waiganiwallyworld: any idea why we're connecting to s3 with --upload-tools? I thought it was using gridfs?23:49
waiganiwallyworld: oh yeah, that one looked interesting23:49
wallyworlds3 was at one stage a repository for public tools23:49
waiganiwallyworld: do you know if we are using it for anything now?23:50
waiganis/are/should be23:50
wallyworldand s3 is still used for bootstrap state file i think (need to check)23:50
wallyworldi don't think we've ported off that yet23:50
waiganiright23:51
wallyworldso very minimal use for new environments23:51
waiganiokay, I'll leave you to your leasing :)23:51
wallyworldwe can swap :-P23:53
waiganihaha23:53
mupBug #1459047 was opened: juju upgrade-juju --upload-tools broken on ec2 <juju-core:New> <https://launchpad.net/bugs/1459047>23:58

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