/srv/irclogs.ubuntu.com/2012/06/28/#juju-dev.txt

jcharetteanyone around to support MAAS with juju?00:47
jcharetteanyone have experience making juju work with MAAS01:45
zirpujcharette: did you try the #maas channel?01:57
jcharetteno, but i can02:08
jcharettedoesn't seem to be a maas problem, juju hasn't even tried to connect02:09
m_3davecheney: yo04:30
m_3davecheney: was gustavo's talk last night or is it tonight?04:30
m_3davecheney: we got in about 6 this morning04:30
davecheneym_3: hey hey04:49
davecheneym_3: i think it will be friday04:49
davecheneyso maybe the east coast friday04:50
m_3ha04:52
m_3ok04:52
davecheneym_3: so tired today, watched the google io demo live04:52
davecheneygot home at 5:3004:52
m_3ah, ok... that's what I was asking about04:52
m_3sorry thought that was gustavo's talk04:53
davecheneyfwereade: howdy06:49
davecheneycmd/juju only lists bootstrap and destroy-environment as options, there is no deploy06:54
davecheneywas this intentional ?06:54
fwereadedavecheney, heh, no it wasn't07:02
fwereadedavecheney, sorry about that07:02
fwereadedavecheney, re your email, the ultra-short version is that no deploy doesn't publish secrets07:03
fwereadedavecheney, I *think* that is something that should be handled by juju.Conn in the background; the first thing that should be done on client access to state is to check for complete environ config, and if keys are missing the secrets should be pushed07:04
fwereadedavecheney, sounds sane?07:05
davecheneyfwereade: yup07:08
fwereadedavecheney, cool07:08
davecheneyi hope this can be solved soon, and finally07:08
davecheneyi always find myself butting up against it07:08
davecheneyoh, also,         spec, err := findInstanceSpec(defaultInstanceConstraint)07:08
fwereadedavecheney, yeah, that is basically completely broken IMO07:09
davecheney^ this is why we can't bootstrap into an arbitary region :)07:09
davecheneydefaultInstanceConstraint says 'dude, use us-east-1'07:09
fwereadedavecheney, I know07:09
davecheneynot hard to fix07:09
fwereadedavecheney, I was looking at exactly that last night and started swinging the axe before I realised that it was a distraction from what I *actually* need to do right now07:10
davecheney:)07:10
davecheneybtw, i went to use juju deploy and found the command wasn't enabled yet07:10
davecheneyis it not ready for prime time ?07:10
fwereadedavecheney, yeah, but it's doing a bunch of stuff that is unnecessary, and some stuff that is flat-out wrong, and I'm not happy with some of the terminology, and grumble grumble grumble07:10
fwereadedavecheney, it should *work* -- although it won't enable the PA -- it's just that I forgot to actually enable it07:11
davecheneys'ok, it was a one line change07:11
fwereadedavecheney, propose it, it's a trivial07:11
davecheneybut again, no PA secrets; no machines :(07:12
davecheneyfwereade: kk07:12
* davecheney afk for a few mins07:12
fwereadedavecheney, step by step :)07:12
fwereadedavecheney, brb, weirdly sluggish system, restarting07:12
davecheneyfwereade: intresting ... even with the correct image spec, it still booted an instance in us-east-107:28
fwereadedavecheney, as I said, I am generally underwhelmed by that code07:29
fwereadedavecheney, I think it needs a fair bit of work to be useful even *without* constraints07:29
fwereadedavecheney, and that when we add constraints it will need still more07:29
davecheneyright07:30
fwereadedavecheney, sorry to bear bad tidings :(07:30
davecheneyfwereade: gotta start somewhere07:30
fwereadedavecheney, indeed :)07:31
fwereadedavecheney, if you're planning to work on that code07:32
davecheneycan i take a moment to whinge that --debug doesn't actually output anything more than you previously got07:32
davecheneythank you07:32
fwereadedavecheney, may I suggest starting by removing the useless fields from InstanceConstraint?07:33
fwereadedavecheney, we always want persistent storage, and we always want a released server image07:33
davecheneyyeah, why would we ever want to boot an unstable desktop07:33
davecheneyi'll make a bug for myself07:33
fwereadedavecheney, quite so07:34
fwereadedavecheney, cheers07:34
davecheneyfwereade: can we talk about juju.Conn for a moment ?07:36
fwereadedavecheney, ofc07:36
davecheneyis that something you are working on in your sphere ?07:36
davecheneyi kinda get the feeling that much has been discussed already07:36
fwereadedavecheney, hmmm, it's something I'm reluctant to commit to *implementing* myself in a short timeframe07:36
davecheneyfwereade: understood07:37
fwereadedavecheney, but I think I have a reasonably clear view of the issues07:37
davecheneywould i be well served by looking in the irc logs for the details ?07:37
davecheney(where are the irc logs btw)07:37
davecheneybtw, great work on the watcher refactoring, the cargo culting of new watchers was starting to smell odd07:38
fwereadedavecheney, hmmmm, probably not07:38
fwereadedavecheney, cheers :)07:38
fwereadedavecheney, let me run down what springs to mind immediately07:38
davecheneycool, iget the feeling that i'll be implementing it, 'cos I need it most urgently07:38
fwereadedavecheney, it should be done at the Conn level rather than in response to specific operations just because we have a history of forgetting that it might need to be done :)07:39
fwereadedavecheney, hmmm, it's a touch tangled in my mind, just trying to put thoughts in order07:40
fwereadedavecheney, a lot of it is down to an issue in my mind that remains a source of some discomfort07:41
fwereadedavecheney, I think there are 3 categories of environment setting07:41
fwereadedavecheney, (hm, maybe more) there are those that must always be present, regardless of provider07:41
* davecheney nods07:42
fwereadedavecheney, that is: type, name, default-series07:42
fwereadedavecheney, I am adding default-series and type handling to Initialize as we speak07:42
davecheneyfwereade: manditory, secret (but required), and optional (no sane default)07:42
fwereadedavecheney, hmm, I hadn't been thinking of optional as a category07:43
fwereadedavecheney, I was thinking juju-mandatory, provider-mandatory, and secret07:43
fwereadedavecheney, I retain unease about the fact that we just poke all the juju-mandatory ones into the provider-specific config schemas -- that feels like a potential source of tedious bugs with little corresponding benefit07:45
fwereadedavecheney, "name" is particularly an interesting one, because at the moment Initialize does not set (or even have access to ) the environment name07:45
fwereadedavecheney, in some ways this is good because the lack of a name should, I hope, be sufficient to indicate an incomplete environ config even in the case of the dummy provider07:46
davecheneyurk, that is because name is a synthetic property that comes via the yaml conversion ?07:46
fwereadedavecheney, but it *also* feels like a source of potential avoidable bugs, because as discussed elsewhere we'll be in a world of hurt if we try to change an env name at runtime07:47
fwereadedavecheney, I think it's just because "meh we don;t need it yet"07:47
davecheneyfwereade: there are lots of those bits of information07:47
davecheneyec2 region is another example07:48
fwereadedavecheney, however passing it up is a hassle -- we need to change userData, the initzk command, and state.Initialize to handle it07:48
davecheneyearly on in the config validation the region string from the config is turned into an aws.Region struct07:48
davecheneybut, nowhere in that struct does it include its short name07:48
davecheneyand so forth07:48
fwereadedavecheney, yeah, I rather feel that the environ code has been implemented without paying close enough attention to the lessons learned working with multiple providers in the python07:49
fwereadedavecheney, it's entirely understandable and forgivable, because those lessons don't rally strike home until you've done a bunch of work with them07:49
fwereadedavecheney, but still a shame07:50
davecheneyyup, maybe there is a case for doing an openstack or local provider concurrently07:50
davecheneyto expose these issues sooner07:50
fwereadedavecheney, there *definitely* is, but I think the decision to take those off the table is rational given the constraints we're working under07:50
fwereadedavecheney, explicitly acknowledged tech debt is a lot better than the accidental kind07:51
davecheneyyup, we don't get a prize if we have 3 sorta working providers, and no solid ec2 story07:51
fwereadedavecheney, it's just that we've also taken on some accidental debt as well in the course of implementation07:51
fwereadedavecheney, if you're looking into this stuff you could do worse than to take a casual look at the python provider implementations, though07:52
fwereadedavecheney, while it's not perfect I think I did a reasonable job of separating the common from the provider-specific07:53
davecheneyi think i don't spend enough time there07:53
fwereadedavecheney, although I never addressed the flat-out retarded config issue whereby we leave "default" settings empty07:53
fwereadedavecheney, and then do `config.get(key, default)` with the same default in multiple places07:54
davecheneyooh, that is a trao07:54
davecheneytrap07:54
fwereadedavecheney, yeah -- just something to be aware of07:54
fwereadedavecheney, in the context of what you're currently working on, I think formalising (the equivalent of) the machine_data we have in python would be a good idea07:56
davecheneyfwereade: thanks, i'll check it out07:57
fwereadedavecheney, I'm not quite sure whether startInstance should take (*state.Info, *environs.MachineData), or just (*environs.MachineData)07:58
fwereadedavecheney, but I'm 98% sure that a MachineData is a good idea :)07:58
davecheneyi think the state.Info is a smell07:58
davecheneyalong with the secrets problem07:58
fwereadedavecheney, there's something about that I'm not comfortable with, indeed, but I have yet to put my finger on it07:58
davecheneythe argument about which state.Info you get has taken more than it's fair share of head space07:58
fwereadedavecheney, yeah07:59
fwereadedavecheney, there's probably a better way to do it :)07:59
fwereadedavecheney, so... I hope this was slightly helpful, I feel what I've mostly said is "there are dragons here, here, and here, good luck!"08:00
fwereadedavecheney, which is not without value but possibly I have skipped things that I think are "obvious"... so please let me know if I seem to have missed stuff08:01
davecheneyfwereade: wrt startInstance and a state.Info, i think it's overengineered08:02
davecheneyactually no08:03
fwereadedavecheney, agree, I think there's quite enough info available internally08:03
davecheneyi can't ever imagine how the provider could start a machine that would not talk to the state using exactly the same connection string as the pa08:03
davecheneyhmm, i shuldn't use ever08:03
davecheneybut it's certainly not the biggest problem at the moment08:04
fwereadedavecheney, ah, but we don't know what the PA machine's address is at bootstrap time08:04
fwereadedavecheney, so we have to start it pointing at localhost08:04
fwereadedavecheney, and then figure out the actual address to use for the other machines later08:04
fwereadedavecheney, it's not a problem we can just skip entirely08:04
davecheneythis sounds like another secrets passing problem08:05
fwereadedavecheney, it shares some features, yeah08:05
davecheneythe details about the instance is started for machine/0 are so opaque we can't even say 'what is your public ip'08:05
fwereadedavecheney, but I don't think we need any external input to figure out the right address -- surely we can figure that out on the machine?08:06
fwereadedavecheney, doesn't the metadata service provide that?08:06
davecheneynot sure what you mean by metadata service08:06
fwereadedavecheney, environs/ec2/ec2.go:25308:07
fwereadedavecheney, it's what we use to figure out the instance id of the bootstrap machine at bootstrap time08:08
davecheneyfwereade: ta08:08
fwereadedavecheney, but honestly offhand I cannot remember what else it provides08:08
davecheneyfwereade: wtf08:09
davecheneyright so if you curl that url from inside your ec2 instance you can find out stuff about your instance08:09
fwereadedavecheney, exactly08:14
davecheneythat is both brilliant, and insane, in equal parts08:17
fwereadedavecheney, ha, yeah08:21
fwereadedavecheney, and ofc it can fail08:21
fwereadedavecheney, which is not something we have actually handled now I come to think of it08:21
fwereadedavecheney, I got botten by that at least once at my last job08:22
davecheneyfwereade: maybe I should add something to goamz to talk directly to it08:22
davecheneyrather than using the shell hammer08:22
fwereadedavecheney, hmmmmm maybe08:22
fwereadedavecheney, in this specific case we have providers where we *do* know the instance id before launch08:23
fwereadedavecheney, and so passing it in on the command line seems to me like the right thing to do08:23
fwereadedavecheney, rather than worrying about a provider-specific initialize08:24
fwereadedavecheney, ...but yeah, getting it *reliably* is an issue that should be addresses08:24
fwereadedavecheney, and I'm not actually sure if we do use the metadata service to figure out the long-term state info08:25
fwereadedavecheney, I suspect that's something we do from the instance-id stored on S3, making use of secrets to interrgate aws08:25
fwereadedavecheney, that's certainly what we need to do on the client, I think08:26
fwereadedavecheney, but I'm getting a moderate sense that I may be talking crap, and that it would be wise to check the python08:26
davecheneyfwereade: have a great day mate, i'm going offline now08:32
fwereadedavecheney, cheers, take care08:32
TheMueMorning08:54
* davecheney waves08:55
* TheMue waves back08:56
TheMueMorning Aram09:15
Arammorning09:15
TheMuefwereade: Heya William, online again! ;)09:37
fwereadeTheMue, heyhey, no idea what the issue was09:37
TheMuefwereade: It definitely shows how depended we are.09:37
fwereadeTheMue, well, ok, the adsl was stuck "initializing LCP" for a long time... and then suddenly it wasn't :/09:37
fwereadeTheMue, indeed :)09:37
TheMuefwereade: My current provider is here thankfully pretty good. But I'll change to a different one in July (with an overlapping time having both). I hope it's so reliable too.09:39
TheMuefwereade: Got a neat bandwidth then.09:40
Arammeh, some dude came to tell me I have to pay 52€/2 months for TV and radio.09:40
AramI don't have aither.09:40
Arameither.09:40
AramI haven't watched TV in like 15 years.09:40
TheMueAram: We have the same here. You may listen to the radio or watch TV, e.g. with the PC. So you've got to pay.09:42
Arammeh.09:42
TheMueAram: But it's cheaper.09:42
* TheMue and his family indeed watch TV and listen to the radio. :)09:43
TheMuefwereade: Just merged your and my change to watcher, little text conflicts but no probs.09:44
fwereadeTheMue, fantastic09:46
TheMuefwereade: But I'll have still to adopt your changes to the ServiceUnitsWatcher, just seen. :( The other one has been the deleted-is-now-removed-change.09:48
TheMuefwereade: I can't build and test jujud, see http://paste.ubuntu.com/1064020/. Can you reproduce that?10:02
fwereadeTheMue, sorry, got distracted -- let me grab a fresh branch and try10:20
fwereadeTheMue, works for me; if you've using the move-branches-around style of development you may want to delete your built package10:22
TheMuefwereade: Strange, no, will have a deeper look.10:26
TheMuefwereade: I took you watcher.go as merge base and only reproduced the changes regarding Deleted/Removed.10:27
fwereadeTheMue, hmm; contentWatcher has Err and Stop, and everything should embed contentWatcher10:27
TheMuefwereade: Found it, melt took the wrong file. *sigh* I hate text conflicts.10:29
fwereadeTheMue, heh, I just solve conflicts by hand every time, I think it saves me time on average ;)10:30
twobottuxaujuju: "init: juju-..." errors in syslog after uninstalling juju <http://askubuntu.com/questions/157093/init-juju-errors-in-syslog-after-uninstalling-juju>10:32
TheMuefwereade: Yep, that has been the mistake, now it works.10:38
fwereadeTheMue, cool10:38
fwereadeTheMue, and, sorry: I only remember I said I'd wait for yours after I'd submitted :((10:38
TheMuefwereade: No problem, that's always a risk using a VCS without locks (and with locks is even worse, I've once had been forced to use ClearCase).10:40
fwereadeTheMue, haha10:40
TheMuefwereade: go test ./... still leads to a funny problem here. Due to my German locale one error message of mongo doesn't match and the test fails. ;)10:46
fwereadeTheMue, eww10:46
fwereadeTheMue, what test?10:46
TheMuefwereade: The store10:47
TheMuefwereade: bzr: ERROR: Kein Zweig: »/non-existent/~jeff/charms/precise/bad/trunk/«.10:48
fwereadeTheMue, weird, that's only just started happening?10:48
TheMuefwereade: Expected is "Not a branch" instead of "Kein Zweig".10:48
TheMuefwereade: So far it's the only error. The returned error by type is the right one but the received string for it not.10:50
TheMuefwereade: That's also one reason why I dislike those generic error strings with errors.New() or fmt.Errorf().10:50
fwereadeTheMue, not i18nable?10:51
TheMuefwereade: In my apps/pkgs I use error types so that they can be compared (and later also be returned in the UI in the right language).10:51
TheMuefwereade: Yep10:51
fwereadeTheMue, yeah, I think I probably do favour your approach; OTOH I see where niemeyer's coming from, we had an embarrassing mess of error types in python that didn't really help anything at all :)10:52
TheMuefwereade: As long as we only deploy instances with English locales everything is fine.10:53
fwereadeTheMue, I agree that we shouldn't ever be depending on string values of errors in "real" code, and given that we have at least one core dev with a non-english locale I also agree we probably shouldn't be in tests either10:55
TheMuefwereade: We should talk about it in Lisbon.10:55
fwereadeTheMue, SGTM10:56
Aramis machine 0 special?13:03
Aramright now I have a lot of code that tries to detect is a unit doesn't have a machine assigned or it's just machine 0.13:03
Aramif machine 0 is special I could remove all that crap13:03
zirpuAram: machine 0 is currently the bootstrap node where zookeeper runs.13:15
zirpuso it's "special" in that sense.13:15
Aramso no new units can be assigned to it?13:15
Aramthat's great.13:15
zirpuyou can put subunits on it i think.13:16
Aramthat's fine in my design.13:16
zirpubut mostly it's meant to orchestrate the rest of the units/services.13:16
zirputhere's a bug about making the bootstrap node high available, or have a 2ndardy.13:16
zirpuhttps://bugs.launchpad.net/juju/+bug/80304213:16
fwereadeAram, sorry I missed that earlier: we really really should try not to make machine 0 special13:51
Aramhmm.13:51
fwereadeAram, it's also perfectly legitimate and expected to have any number of machines without units assigned13:51
Aramof course.13:52
TheMuefwereade: Just for info: I've adopted your watcher changes to the ServiceUnitsWatcher and it works pretty fine.13:53
fwereadeTheMue, great13:53
fwereadeTheMue, tiny nitpick -- any particular reason SUW is up at the top of the file away from the other topology watchers?13:54
Aramfwereade: I'm refactoring some really awful stuff I've worked on yesterday, I have a much better data model and the problem I had will not exist anymore, so everything is fine.13:54
fwereadeAram, cool13:54
Aramfwereade: btw, lbox was broken yesterday, niemeyer was kind enogh to fix it.13:57
Aramor was that the day before?13:57
AramI guess the day before.13:57
fwereadeAram, yeah, I saw, and serendipitously had exactly the same failure the following day13:58
fwereadeAram, thanks for blazing that trail ;)13:58
twobottuxaujuju: Can I specify tighter security group controls in EC2? <http://askubuntu.com/questions/156715/can-i-specify-tighter-security-group-controls-in-ec2>14:06
fwereadeTheMue, how would you feel about vast and hideous surgery to the state tests?14:14
fwereadeTheMue, I feel that state_test.go is way too big and we'd benefit from breaking things up into both separate files and separate suites within those files14:15
TheMuefwereade: +114:15
fwereadeTheMue, cool, cheers14:15
TheMuefwereade: It has grown a lot over the time.14:15
* fwereade dons tedium-proof outergarment14:16
TheMueDid you know that rabbits can yawn? I'm sitting on the veranda, and one of our rabbits just done it. :D14:21
Aramfwereade: yes, state_test.go is way too big, for mstate I was planning to split it up and make it provider independent.14:23
Aramwe could isolate mgo/zk things to a handful of utility functions.14:24
fwereadeAram, ouch, what are the provider dependencies?14:24
Aramand keep the tests pure.14:24
fwereadeAram, ahh, got you14:24
TheMueHmm, firewall is tricky, multiple watchers, so multiple goroutines and tombs.15:10
=== imbrando1 is now known as imbrandon
bcsallergoogle's compute engine will need a provider soon20:57
=== marrusl is now known as marrusl-ebayqbr
=== marrusl-ebayqbr is now known as marrusl
=== james_w` is now known as james_w

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