/srv/irclogs.ubuntu.com/2013/09/25/#juju-dev.txt

* thumper tries to formulate some replies02:27
axwthumper: did you want to look at my local-storage auth change before I land? I have fwereade's LGTM02:31
thumperaxw: have I reviewed it?02:31
axwthumper: no, just fwereade02:31
* thumper is replying to the upgrade emails02:31
thumpernah, I trust you, and if fwereade has acked it, that is good enough for me02:32
axwokey dokey02:32
axwcool02:32
axwthumper: the gist is, using TLS client certs for authentication; authentication=authorisation02:32
* thumper nods02:33
thumperschool run time02:58
thumperaxw, wallyworld: reminder on the code review time in 15 min03:16
wallyworldyep03:16
axwthanks03:21
thumperugh04:26
thumperhaving a very meh day04:27
axwthumper: I didn't really understand this statement in your email- "I think I agree with William here, these are more associated with a04:36
axwprovider rather than just agent config."04:36
thumperaxw: I was thinking that we wouldn't need to put it in the config04:36
axwmy intention was for the provider to control what jobs get put into the MachineConfig, which drives agent.Config creation04:36
thumperbut in state04:36
axwthumper: yes, but the bootstrap process puts the jobs into state04:36
thumperthe machine jobs are defined in state04:37
thumperare we talking about the bootstrap jujud process?04:37
thumperor the machine agent?04:37
axwyep04:37
axwum04:37
axwwhat's the difference?04:37
axwcmd/jujud/bootstrap.go04:37
thumperone is 'jujud bootstrap' the other is 'jujud machine'04:37
axwcurrently does an InjectMachine with hard-coded set of jobs04:38
thumperthere is a key/value store in format 1.1604:38
axwoh right. I'm talking about the former04:38
thumperfor the agent config04:38
thumperso if you use that, you don't need to teach the format anything new04:38
axwhmm yes, it just felt a bit wrong to put it into something so free-form... but I suppose the machine agent doesn't care about this at all04:39
thumperright04:39
thumperbut I do get your meaning04:39
thumpercould be command line params to the bootstrap ?04:39
thumperalthough that isn't much better04:40
thumperand then creates a mix of data sources04:40
axwthumper: they've all got pros and cons, so I guess key/value will do; at least there's no format change required then04:44
* thumper nods04:44
axwthumper: it sounds like we're thinking along the same lines regarding upgrades04:44
thumpergood04:44
axwI was thinking more after I sent my email last night, and that the code that I will need to add for this could be used for state schema upgrades04:45
thumpereven the multi-version jump?04:45
axwyes definitely04:45
thumpergood04:45
thumperI think that previously that has been in the "too hard" basket04:45
axwhaving to hop along like that sounds horrible04:45
thumperbut it definitely needs to be done04:45
thumperI keep thinking back to what we did with postgresql04:45
thumperwhere we had a number of patch files04:45
thumpera similar thing could be done for our version changes04:46
thumperfor each minor version, we have a slice of functions to call04:46
thumperthat will modify state based on what was left by the previous call04:46
axwyep that makes sense04:46
thumperso going from say 1.16 -> 1.18 would just require the one stack to be called04:46
thumperbut 1.16 -> 1.22 (say) would run three, one after the other04:46
* thumper waves hands04:47
thumpermagic04:47
axw:)04:47
axwthumper: so I'm vaguely thinking that there'll be an environs/upgrade package, which will handle generic upgrades, and defer to an optional EnvironUpgrader interface, which an Environ may implement04:48
axwhaven't thought through in much detail yet04:48
axwenvirons/upgrade would do schema upgrades04:49
thumpersounds good to me04:49
axwEnvironUpgrader would do provider-specific things, like adding jobs04:49
thumperaxw: I'm wondering whether state/upgrade should do schema upgrades given that state has the core "state"05:03
axwthumper: yes, probably05:04
* thumper calls a wash on today, back tomorrow05:05
=== axw_ is now known as axw
rogpeppemornin' all07:12
axwhey rogpeppe07:15
rogpeppeaxw: hiya07:15
rogpeppenice to see juju getting a shout out in this talk https://www.youtube.com/watch?v=sYukPc0y_Ro07:22
axwrogpeppe: yeah, saw that this morning - very nice! :)07:23
rogpeppeaxw: last night thumper mentioned an email thread about upgrades - where is that?07:39
axwrogpeppe: I emailed fwereade and rogpeppe only; I'll forward to you if you're interested07:40
axwerr not rogpeppe  )07:40
rogpeppeaxw: please07:40
axw:)07:40
axwthumper07:40
axwactually I'll just CC the list, since it's grown into something that everyone will probably care about07:41
rogpeppegood plan07:41
rogpeppewallyworld: hiya07:42
wallyworldhi07:42
rogpeppewallyworld: you've replied to this, but i don't think you've pushed your changes yet : https://codereview.appspot.com/1384204407:42
wallyworldi have07:42
wallyworldi pushed to lp07:43
rogpeppewallyworld: could you re-propose too, please?07:43
wallyworldit's been merged also07:43
wallyworld:-(07:43
rogpeppewallyworld: so i can see the changes in codereview07:43
wallyworldi don't have that branch easily assessicle right now07:43
wallyworldlook at lp07:43
rogpeppeok07:43
wallyworldbit stressed trying to get @^%^@!^%@! gpg working07:43
wallyworldi can't generate a private key have have Go use it07:44
rogpeppewallyworld: but in general it's nice to have the pushed version in codereview because the link is in the commit message07:44
wallyworldguess so07:44
wallyworldi hate codereview07:44
rogpeppewallyworld: you can't generate a private key?07:44
wallyworldtoo hard to use07:44
rogpeppewallyworld: funny, i think it's really good, but there y'go07:44
wallyworldi can generate fine'but when i try and use it in go, it complains it is encrypted07:45
rogpeppewallyworld: what library are you using?07:45
wallyworldso i have a private key block which i got from pgp, then i use keyring, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(signedMetadataPrivateKey))07:45
wallyworldi trying to generate some signed data to test with, i have both public and private key blocks from a test key i generated in gpg07:46
wallyworlderrors.InvalidArgumentError = "signing key is encrypted" ("openpgp: invalid argument: signing key is encrypted")07:46
wallyworldis the error07:46
wallyworldi'm not sure how to make a signing key that is unencrypted07:47
wallyworldrogpeppe: i hate codereview because i can't see the whole diff at once, so it's hard for me to navigate around the changes07:48
rogpeppewallyworld: i like codereview because i can see the whole file in context (and all the comments)07:48
rogpeppewallyworld: but it would be nice if it was much faster07:48
wallyworldyeah07:49
wallyworldrogpeppe: i got to go and buy dinner, but if you had a clue as to how I can get a pulic and private key i can use with openpgp in go that would be awesome07:49
rogpeppewallyworld: i'll have a look07:50
wallyworldthanks07:50
wallyworldi have a test private key but that comes from g a go lib test07:50
rogpeppewallyworld: did you see this bug BTW? https://bugs.launchpad.net/juju-core/+bug/122983907:50
_mup_Bug #1229839: provider/ec2: LiveTests.TestBootstrapWithDefaultSeries is broken <juju-core:New for wallyworld> <https://launchpad.net/bugs/1229839>07:50
wallyworldand the data is precanned07:50
wallyworldi replied07:50
rogpeppewallyworld: so you haven't generated the private key yourself?07:51
wallyworldwe have had that SetToolsPrefix in the code for a long time'07:51
rogpeppewallyworld: it's hideous!07:51
wallyworldrogpeppe: i have, but go refuses to import as07:51
wallyworldper the above error07:51
wallyworldrogpeppe:  i have a chunk of text  wrpped with -----BEGIN PGP PRIVATE KEY BLOCK----- etc07:52
wallyworldbut i can't use ReadArmoredKeyRing to get something i can sign stuff with07:52
rogpeppewallyworld: what command line did you use to generate your gpg private key?07:52
rogpeppewallyworld: just so i can reproduce your issue07:52
wallyworldrogpeppe: i used seahorse and exported it07:52
* rogpeppe hasn't heard of seahorse07:53
wallyworldi generated a sign only key07:53
wallyworldit's a gpg gui07:53
wallyworldrogpeppe:  but i guess "gpg --gen-key" would have worked07:53
rogpeppewallyworld: that's ok, i can never remember the gpg usage either :-)07:54
axwwallyworld: I just generated one, it worked for me07:56
axwwith --gen-key07:56
wallyworldwtf07:56
wallyworldcan you read it using ReadAmouredKeyRing07:57
wallyworldwithout getting an error07:57
axwwallyworld: yep07:57
wallyworlddid you type in a passphrase when you generated it?07:57
wallyworldaxw: i'm stupid07:58
wallyworldthe reading in bit qorks07:58
wallyworldworks07:58
wallyworldit's the signing that fails07:58
wallyworldplaintext, err := clearsign.Encode(&buf, keyring[0].PrivateKey, nil)07:58
wallyworldfails07:58
axwah07:58
wallyworldusing the keyring read in07:58
axwwallyworld: did *you* type in a passphrase?07:59
axwwill seahorse allow you not to?07:59
wallyworldno, i'll try command line07:59
axw(gpg --gen-key assigned one even when I said not to)08:00
wallyworldnot sure if that will force it08:00
wallyworldi how do i get an unencrypted private key is the question08:01
wallyworlddon't know why Go needs that08:01
wallyworldanyway, got to run to get dinner, back layter08:01
axwwallyworld: call PrivateKey.Decrypt(passphrase)08:05
axwwallyworld: see the comment on the PrivateKey.Encrypted field (http://godoc.org/code.google.com/p/go.crypto/openpgp/packet#PrivateKey)08:06
axwrogpeppe: if you didn't see it yet, I forwarded the upgrade email chain to juju-dev08:07
rogpeppeaxw: thanks08:07
rogpeppeaxw: here are some notes i made on major-version upgrades a while ago: http://paste.ubuntu.com/6153562/08:20
axwrogpeppe: heh, pretty much what I wrote I think :)  nice to know I wasn't off base08:26
axwthe pending flag bit is a bit different08:26
rogpeppeaxw: yeah, it seemed pretty similar08:26
jamespagedavecheney, still around?08:26
axwrogpeppe: I think thumper was suggesting that the API server just lock out all connections, and API clients keep attempting to reconnect08:26
axwso the "pending flag" is in effect cleared when they can finally connect08:27
axwI kinda like that approach08:27
rogpeppeaxw: just shutting off access to all agents seems a little draconian.08:31
rogpeppeaxw: but it does have some advantages08:31
rogpeppeaxw: like you don't have to wait for everyone08:32
rogpeppeaxw: but i think it might be good to let all the agents download their new version before we start to upgrade08:32
rogpeppeaxw: that way we can have a clean break08:33
axwrogpeppe: what if the API server fails during upgrade? how would you roll back the tools on the machine agents?08:34
axwor do you mean, download but don't action08:34
rogpeppeaxw: both are possible08:35
wallyworldjam: i have 2 simplestreams mps, which fix the issues you were talking about, i'm hoping to get these into 1.15 https://codereview.appspot.com/13899044/ https://codereview.appspot.com/13888043/08:35
wallyworldi got to go make dinner, but back later08:35
rogpeppeaxw: if we make sure that at least the new API is backwardly compatible to the point of finding out the agent version, then agents can downgrade if the upgrade fails08:35
axwthat sounds reasonable08:36
dimiternfwereade, hey10:01
dimiternfwereade, quick question10:01
dimiternfwereade, if we don't take an environ in NewSimpleAuthenticator in the provisioner, how should we get the state and api infos? The manual provisioner needs a state connection I think, so we can't just return nil stateInfo10:02
jam fwereade: standup ?10:46
jamhttps://plus.google.com/hangouts/_/3d4586c62aa1310a0c3f40960494578688c86f1a10:46
jamfwereade: ^^10:50
fwereadehuh, hangout experiencing difficulties11:26
* TheMue => lunch12:16
dimiternfwereade, ping12:30
abentleysinzui: ping for standup13:33
fwereadenatefinch, https://codereview.appspot.com/13802045/ LGTM with comments (and a followup?) -- let me know what you think14:49
fwereadenatefinch, wait, sorry, I seem to have skipped some files14:50
fwereadenatefinch, added to it14:52
fwereadenatefinch, maybe not LGTM any more, but should be reasonably simple to address14:56
fwereadenatefinch, I think you just need to make a distinction between nil tags and empty tags14:57
natefinchfwereade: good point about masking tags15:10
dimiternping15:41
dimitern:)15:42
dimiterni meant fwereade ping15:42
mgzwas going to ask :)15:42
fwereadedimitern, heyhey15:45
fwereadedimitern, looking15:45
natefinchfwereade: good call on empty tags... we actually aren't handling it well at all.   tags=   is getting treated as a single empty string tag, rather than an empty list16:17
mgzerk16:20
fwereademgz, eh, that's what review are for16:21
natefinchironcically, the "round trip" serialization tests don't catch this (I didn't have a test for it, but I added one, that still passes)16:21
fwereadenatefinch, thanks for checking it out16:21
mgzfwereade: yeah, but I really should have looked out for that >_<16:21
natefinchbecause []string{""}  serializes the same as []string{}16:21
natefinchso, I wrote a specific test for it to check that tags= gets deserialized into []string{} ... which currently fails, but I'll fix that.   TDD, woo!16:22
mgzyeay!16:23
* fwereade cheers16:23
rogpeppefwereade: fancy a small review (ExtraConfig in configstore)? https://codereview.appspot.com/13912043/16:33
rogpeppemgz, dimitern, TheMue, natefinch: ^16:33
mgzlooking16:34
TheMueme too16:34
TheMuerogpeppe: one minor comment, otherwise LGTM16:39
rogpeppeTheMue: i'd prefer not to define yet another map[string]interface{} type16:40
rogpeppeTheMue: i'm wondering about consolidating all of them to one type16:40
rogpeppeTheMue: but in the meantime it's nice to avoid the type conversion if it's used with testing.Attrs, for example16:40
TheMuerogpeppe: as those types doesn't cost a lot i like them explicit to give a better semantic expression16:41
rogpeppeTheMue: what does that mean?16:41
TheMuerogpeppe: especially when you set data not directly near to the function call16:42
rogpeppeTheMue: sorry, i'm not sure i get you16:42
TheMuerogpeppe: you can say cfg := ExtraConfig{"foo": 1234} then do something else, maybe add some more config, and later call SetExtraConfig(cfg)16:43
TheMuerogpeppe: in this case already the initialization shows the usage of the data16:43
rogpeppeTheMue: it's never going to be used that way16:43
dimiternrogpeppe, +1 on naming types like map[string]interface{}16:44
dimiternrogpeppe, we have too many too generic ones already16:44
TheMuerogpeppe: sure for every developer until eternity? ;)16:44
rogpeppedimitern: i think map[string]interface{} expresses exactly what is required16:44
rogpeppedimitern: but i'm thinking of creating utils.Attrs and making *everything* use that16:44
TheMuerogpeppe: it's technical, yes, but it doesn't say anything about the intention16:45
dimiternrogpeppe, i don't want to argue, just giving my opinion16:45
TheMuedimitern: thanks16:45
rogpeppeTheMue: neither does "int", but we don't retype every int16:45
rogpeppeTheMue: the argument name or function name is usually good enough16:45
TheMuerogpeppe: will start to refactor :D16:45
TheMuerogpeppe: but if it is enough you don't even need to create a utils.Attrs16:47
TheMuerogpeppe: then let as stay with it as it is16:48
rogpeppeTheMue: the current advantage to using an unnamed type is that it's compatible with other named types.16:48
TheMuerogpeppe: that's right16:49
rogpeppeTheMue: and also, given that config.Config.AllAttrs returns map[string]interface{}, I think my function should accept that exact type, because that's where its attributes are coming from16:50
dimiternrogpeppe, there's already testing.Attrs btw16:50
TheMuemany attrs ;)16:50
dimiternrogpeppe, and it's map[string]interface{}, so maybe while deciding to refactor all such cases should be considered in the codebase16:51
rogpeppedimitern: i know - i made it :-)16:51
* TheMue has to step out, somehow i'm stuck with my testing and will start freshly tomorrow morning16:51
rogpeppedimitern: i'd move it to utils16:51
rogpeppedimitern: and then make everything use it16:51
TheMuerogpeppe: +1 for utils, yes16:52
TheMueso, good n8 everybody16:53
rogpeppemgz: about the overall intention of the ExtraConfig stuff: the intention is that the extra configuration attributes are created only once, at Prepare time; subsequent operations should not add attributes, as that may well be racy.16:58
rogpeppemgz: adding endpoint address information should not be racy, as everyone will be trying to save the same info, so it's idempotent16:59
mgzrogpeppe: okay, I sort of see17:00
mgzbut then how does that distinguish from just not letting the config get overritten once in place?17:00
mgz*w17:00
mgz(having the bool "has this been created" flag, that is)17:00
rogpeppemgz: well, create fails if the info already exists17:01
rogpeppemgz: so you can only set extra config attrs if you are the one that first created the info17:01
rogpeppemgz: ... does that make sense? i'm not sure i understood your question17:02
mgzhm, sort of, I think this is implementation detail rather than something that will break things later anyway17:03
natefinchman, I love tests. I found like 4 bugs with the tests I wrote in the last hour17:04
mgznatefinch: :D17:04
natefinchmgz, fwereade: btw, you both missed the fact that constraints.IsEmpty had no tests, and actually had a bug in it ;)17:04
mgzI complained about the indenting, which should give me half points...17:05
natefinchrofl17:05
natefinchthe indenting is as gofmt would have it, all hail gofmt17:06
mgzbut but... it makes no sense ;_;17:06
natefinchmgz: it's grouping17:06
natefinchmgz: it's showing explicitly with the indenting what the implicit order of operations will do17:07
natefinchmgz: gofmt does similar stuff when it's all on one line by using spaces or no spaces to show what will get calculated together, it's actually pretty awesome17:08
dimiternfwereade, there it is the secret attrs patch https://codereview.appspot.com/1391604317:09
rogpeppeoops, just pastebin'ed all my aws security credentials17:10
mgznatefinch: I'd understand if it was just the indent after the ||, it's the indent after the first && that makes no sense17:10
rogpeppefwereade: FYI here's what the environment info file looks like with *all* the attributes stored in it: http://paste.ubuntu.com/6155286/17:12
natefinchmgz: it makes more sense if you put another || at the end like this: http://pastebin.ubuntu.com/6155319/17:12
mgzokay, but that still took a little bit of thinking about, I'd be breaking out the brackets if I got that far17:14
natefinchmgz: yes, in general... but it's handy if you think you know what it's doing , and turn out to be wrong... at least you get a hint of it.17:14
natefinchmgz: this kind of thing has already saved my butt:  https://groups.google.com/forum/#!msg/golang-nuts/qFtA6g8AIxE/oumyR1ytP4MJ17:15
fwereaderogpeppe, hmm, I dislike that a bit less than I expected to17:15
rogpeppefwereade: i think it has some definite advantages - it's nice being able to see everything in one place, minus all the config initialisation magic17:16
fwereadenatefinch, ouch, I was so happy to see IsEmpty everywhere17:16
natefinchfwereade: well, there's a test for it now, no harm, no foul. :)17:16
* fwereade strokes his chin thoughtfully17:17
natefinch(given that I was the wrong that wrote it and failed to write a test.....)17:17
natefinchs/wrong/one17:17
fwereaderogpeppe, it just feels like it's asking to replicate the Conn problems17:21
rogpeppefwereade: the Conn problems?17:21
fwereaderogpeppe, the Environ17:21
fwereaderogpeppe, which is wrong17:21
fwereaderogpeppe, and which people keep trying to use because it's so ridiculously convenient17:21
rogpeppefwereade: well, we'll want to purge the environment from the environ info when we can17:22
rogpeppefwereade: (in fact, it might even be a command)17:22
rogpeppefwereade: really, we only want to keep it around until after the first connection17:22
rogpeppefwereade: but there's that problem with what happens if you lose contact with the last-contacted API address17:23
rogpeppefwereade: but that's a problem for everyone, and most people *won't* have the extra config attrs17:23
rogpeppefwereade: so i guess i'd prefer to work on that problem (finding API endpoints without any environ credentials), and just throw the credentials away at the first opportunity17:24
fwereaderogpeppe, well, up to a point -- we *do* still have the creds around in environments.yaml and it would be silly not to use them17:25
rogpeppefwereade: well, one person does, yes17:25
rogpeppefwereade: but by fixing the issue for other people, we fix it for that person too17:26
fwereaderogpeppe, yeah -- taking that knowledge (along with eg control-bucket) away from that user is not helpful I think17:26
rogpeppefwereade: i'm not sure how much mechanism is worth adding here17:26
fwereaderogpeppe, I accept that a global fix would be ideal17:27
fwereaderogpeppe, but today we still need actual environ access for the CLI in a bunch of situations17:27
rogpeppefwereade: indeed17:27
rogpeppefwereade: i don't see what difference it makes how many attributes you've got in that file though17:27
rogpeppefwereade: you've either got the environ attrs or not17:28
rogpeppefwereade: keeping them all in one place makes our life simpler17:28
rogpeppefwereade: (and probably users' lives too)17:28
fwereaderogpeppe, I need to sleep on it I think17:33
dimiternwtf is params.StatusData ?17:33
fwereaderogpeppe, at the moment I still feel that if yu can get a complete environ config from that file alone we screwed up17:33
fwereadedimitern, dict of useful info attachable to status17:33
dimiternsomebody landed this and changed machine.SetStatus() underneath17:33
fwereadedimitern, relation hook status reporting is particularly bad17:33
dimiternok, so do need to care about it in the provisioner?17:33
fwereadedimitern, I think you can ignore it safely for now, nothing sets it on a machine17:34
dimiternfwereade, ok thanks17:35
fwereaderogpeppe, I do see the advantages in rendering to the One True Format, once, explicitly, though17:36
rogpeppefwereade: that's interesting. i'm not sure *how* that means we've screwed up, given that environments.yaml+info = the same thing17:36
fwereaderogpeppe, the problem is that it looks like a sane config but most if the time it is not17:36
fwereaderogpeppe, I have a thought though17:37
fwereaderogpeppe, what if we called it creation-config17:37
fwereaderogpeppe, that might make its status a bit more apparent17:37
rogpeppefwereade: that's not a bad idea17:37
rogpeppefwereade: or bootstrap-config17:38
fwereaderogpeppe, it's still a bit risky in the same way Conn.Environ is, but it's better than before17:38
fwereaderogpeppe, perfect17:38
natefinchI'm getting a weird test failure in state/service_test.go in TestUpdateConfigSettings17:39
natefinchcode that is no where near anything I've touched17:39
fwereaderogpeppe, validate and complete it OAOO, record it locally so we can finish bootstrap nicely, subsequently stick to changing the state-servers field and fall back to bootstrap-config just in case it offers a save for a screwed situation17:39
rogpeppefwereade: i could imagine a command, say clear-bootstrap-info, which would delete the local bootstrap config17:40
rogpeppefwereade: although it's probably unnecessary17:40
fwereaderogpeppe, I'm not sure it deserves a UI17:40
fwereaderogpeppe, anyone who can be trusted to run it can handle deleting a few lines;p17:40
rogpeppefwereade: yeah17:40
rogpeppefwereade: what *might* be nice though is a way of exporting the file without the bootstrap-config17:41
fwereaderogpeppe, yeah, I think that definitely deserves a UI17:41
fwereaderogpeppe, import/export environment basically17:41
rogpeppefwereade: yeah17:42
fwereaderogpeppe, but I think that vocab's taken so we should think of something else17:42
rogpeppefwereade: endpoint17:42
rogpeppefwereade: export-endpoint, import-endpoint ?17:42
fwereaderogpeppe, I'm wondering whether it's more like an identity almost17:43
rogpeppefwereade: it would be great if it contained the environ's UUID17:43
fwereaderogpeppe, that's a good point17:44
natefinchmgz, fwereade, rogpeppe, dimitern: help with this test failure?  I don't know where it's coming from - http://pastebin.ubuntu.com/6155445/17:44
fwereaderogpeppe, we do something annoying like defer its creation to bootstrap-state now, don't we?17:44
rogpeppefwereade: tbh it would be nice if the UUID was generated at bootstrap time17:44
rogpeppefwereade: yeah17:44
rogpeppefwereade: i argued against that at the time :-)17:44
fwereaderogpeppe, well forseen17:44
fwereaderogpeppe, eh, we can always add that to the info file, along with the state-servers, rather than jam it into config17:45
rogpeppefwereade: that's true17:45
fwereaderogpeppe, just pick it up a bit later17:45
dimiternnatefinch, probably you need to merge trunk and frank's changes for updating default/empty settings values?17:46
rogpeppefwereade: although it would be nicer to verify that the other end has that UUID rather than taking it for granted we're talking to the right one17:46
natefinchdimitern: hmm... I did just merge trunk.. let me double check17:46
fwereaderogpeppe, agreed that Prepare-time UUID generation would be nicer17:47
jamrogpeppe: any chance to not double space the cert?17:47
rogpeppejam: that's just how goyaml produces multiline strings17:48
rogpeppejam: if you wanted to patch goyaml... :-)17:48
jamrogpeppe: is it part of the yaml spec? in that if you don't double space you end up with everything on-one-line ?17:50
rogpeppejam: inside single quotes, yes17:50
jamrogpeppe: you can always use a custom type with a MarshalYAML or whatever the func is.17:50
rogpeppejam: yaml has the most abstruse quoting rules ever17:50
rogpeppejam: that can't help us, unfortunately17:50
rogpeppejam: because MarshalYAML returns interface{} containing values which will be marshalled according to the usual yaml marshalling rules17:51
rogpeppejam: GetYAML, i mean17:51
* rogpeppe has reached eod17:52
natefinchdimitern: all set.  looks like it was old cruft from go install that needed to be rebuilt.17:53
dimiternnatefinch, ah, yeah - we keep bumping into that17:54
dimiternfwereade, any chance of looking at https://codereview.appspot.com/13916043 ?17:54
rogpeppefwereade: seems like we have a plan17:55
fwereadedimitern, sorry, got lost on the stack, doing it now17:55
natefinchdimitern: yeah, I've hit it before, just didn't think of it this time... I just try never to do go install anymore... it's too fraught with problems like that17:55
fwereaderogpeppe, I think so17:55
fwereaderogpeppe, thanks17:55
rogpeppefwereade: cool.17:55
rogpeppefwereade: i'm happy.17:55
dimiternnatefinch, I tend to always do go install in cmd/juju and cmd/jujud before doing a live test with --upload-tools17:55
rogpeppeg'night all17:56
jamnatefinch: I always use "cd cmd/juju; go build; ./juju ..." which means it won't ever find "jujud" next to it :)17:56
fwereadedimitern, nice, LGTM17:56
natefinchjam: yeah, I've taken to the go build; ./juju thing too17:57
dimiternfwereade, cheers, the next one coming up shortly17:57
fwereadedimitern, awesome, I am workecueing and will be around for a bit17:58
dimiternfwereade, nice! :)17:59
natefinchmgz, fwereade: updated the maas-tags stuff with some more tests and bug fixes and now we handle nil tags vs empty list of tags properly  https://codereview.appspot.com/13802045/17:59
dimiternfwereade, and the last one https://codereview.appspot.com/1391904318:09
fwereadenatefinch, LGTM18:36
fwereadedimitern, looking18:36
dimiternfwereade, thanks!18:37
fwereadedimitern, natefinch: if you're both around, I think we may want to verify that we can still deploy a container on maas with the changes18:38
fwereadeand I believe natefinch to have something resembling reliable maas access18:38
fwereadedimitern, pending verification, LGTM18:41
dimiternnatefinch, you just need "juju deploy wordpres --to lxc:0" or something and make sure it works18:41
dimiternfwereade, but natefinch will need to pull my branch, right?18:41
* dimitern brb18:42
dimiternfwereade, you a maas live test specifically?18:53
fwereadedimitern, that'sd where we need that providsioner18:54
fwereadesorry knuckle typing18:54
fwereadepig fat18:54
dimitern:)18:54
dimiternI can do a live tests on ec2 or the local provider (or both) tomorrow18:54
fwereadeec2 runs no lxc proisioner now I Thought18:55
dimiternso local provider then?18:55
dimiternI think ec2 has it though18:56
dimiternI've seen it start in the logs while live testing iirc18:56
fwereadedimitern, hmm, maybe that has not landed yet18:56
fwereadedimitern, see whether it does run on ec218:57
fwereadedimitern, if it does, add a container and check it's deployed sanely even if not actually addressable18:57
fwereadedimitern, that'd be good enough for me I think18:58
dimiternfwereade, ok, will do first thing tomorrow18:58
fwereadedimitern, great, tyvm18:59
natefinchdimitern, fwereade: sorry, had to step out.  I can try pulling dimiter's branch and test it out19:28
fwereadenatefinch, no worries, and only if it's convenient, we can do it tomorrow as easily19:29
fwereadeI'm about to be off myself19:29
natefinchfwereade: figured. I'll actually see if I can just add everyone to the maas host's trusted_keys so we can all use this virtual maas environment19:29
fwereadenatefinch, oo, that'd be handy19:30
fwereadenatefinch, thanks19:30
natefinchfwereade: welcome19:39
gary_posterhello world.  I'm using juju core 14.1 on saucy and can't get local lxc environ to work.  I had it working fine on another machine with saucy a week ago, but not working here.  the lxc machine never goes past pending after 30 min, 45 min, 1 hr. excerpt from local log of most recent attempt (now 7 minutes into attempt) is here: http://pastebin.ubuntu.com/6156103/ .  My environments.yaml at this point in my attempts i20:49
gary_posters entirely barebones: only a local environment with an admin-secret.  Can anyone help?  thumper, you around, despite incredibly early time for you?20:49
gary_posterTo be clear, this is the kind of status I see: http://pastebin.ubuntu.com/6156113/20:50
thumperhi gary_poster20:51
thumperit is the start of my normal work day :)20:51
gary_posterhey thumper.  oh cool...I think :-) what time is it?20:51
thumperjust before 9am20:52
gary_posteroh cool, not too bad20:52
thumpernext week I will be 1 more hour closer to you20:52
thumperas we go to UTC+1320:52
gary_posterah, right, then IIRC we get even closer when we do our time shift20:52
thumpergary_poster: can you post the log from ~/.juju/local/logs/20:52
gary_postersure20:52
thumpergary_poster: yes20:52
gary_posterthumper, http://paste.ubuntu.com/6156123/20:53
gary_posterthat is local/log/machine-0.log .  there is no machine-1 fwiw20:54
* thumper nods20:54
thumperhave a look in /var/lib/juju/containers20:54
thumperthere should be a directory there gary-local-machine-120:55
gary_posterthere is20:55
thumperin there there should be two log files20:55
thumpercan you pastebin them?20:56
gary_posteron it20:56
gary_postercontainer.log http://paste.ubuntu.com/6156133/20:56
gary_posterconsole.log (as root) http://paste.ubuntu.com/6156140/20:57
gary_posterthumper, ^^20:58
thumpergary_poster: yeah, looking20:58
gary_postercool, thx20:58
thumperI think this is a key one: cloud-init-nonet waiting 120 seconds for a network device.20:59
thumpercloud-init-nonet gave up waiting for a network device.20:59
thumperalso there seems to be some issues with the container.log21:00
thumperperhaps lxc in saucy has changed something21:00
thumperwill need to follow up with serge21:00
gary_posterack thanks thumper.  thank you for looking.  Not blocked here.  anything else you need from my machine?21:01
thumperperhaps apt-cache policy lxc21:01
gary_posterthumper, http://paste.ubuntu.com/6156168/21:03
gary_posterrunning away21:03
gary_posterthanks and talk to you later21:03
thumperkk21:04
wallyworld_sinzui: hello, did you want to catch up?21:51
sinzuiwallyworld_, yeah21:52
wallyworld_mumble hates me at the moment21:52
wallyworld_so a hangout?21:52
wallyworld_https://plus.google.com/hangouts/_/57e2c830e5a49e266ebc4dbeef8b459386dbf5bf21:52
* sinzui gets drink21:53
* thumper goes for a walk to think through some issues (juju related)22:44
=== thumper is now known as thumper-dogwalk
=== thumper-dogwalk is now known as thumper

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