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

davecheneywhat does bzr mean when it returns error code 3 ?02:15
davecheneyrogpeppe: i think i have a solution to maek the ssh tests much cleaner06:02
davecheneyif you want it06:02
davecheney-- but i know you're busy tearing that out06:02
rogpeppefwereade_: morning!06:43
fwereade_rogpeppe, heyhey06:43
fwereade_rogpeppe, how's it going?06:43
rogpeppefwereade_: sorry about trunk breakage last night06:43
rogpeppefwereade_: i didn't realise i had an old version of mongodb06:43
fwereade_rogpeppe, no worries06:44
rogpeppefwereade_: not bad at all, thanks.06:44
rogpeppefwereade_: and you?06:44
fwereade_rogpeppe, yeah, not bad :)06:44
TheMuemorning07:00
rogpeppefwereade_: i'm adding admin-secret to the environment configuration, and i *think* it should be part of config.Config, not specific to the ec2 config. it's an interesting case though, because it's *really* secret - it doesn't get pushed with the other secrets.07:05
rogpeppefwereade_: so i'm not sure whether to have a "ReallySecretAttrs" method in environs, or just to make a special case for admin-secret07:06
* fwereade_ thinks07:06
fwereade_morning TheMue btw07:06
TheMuefwereade_: heya07:07
fwereade_rogpeppe, sorry, no strong feelings either way, just a sense of unease07:07
rogpeppefwereade_: yeah, special cases make me uncomfortable too07:08
rogpeppeTheMue: hiya07:08
TheMuerogpeppe: a wonderful morning to you too (even if it is raining here) ;)07:09
rogpeppeTheMue: beautifully sunny this morning. (sun just up)07:09
TheMuerogpeppe: we had a nice october so far until yesterday. since then mostly rain, too much rain07:10
fwereade_rogpeppe, wow, massive filter change works as expected; simplifies uniter noticeably; but pushes the tests up over a minute :/07:43
rogpeppefwereade_: cool, but...07:44
rogpeppefwereade_: what's taking all the time in the tests, out of interest?07:44
fwereade_rogpeppe, thus far I know not, I will do some poking around07:44
rogpeppefwereade_: worth doing, i think.07:44
rogpeppefwereade_: go test -gocheck.vv | timestamp is always a good start07:45
fwereade_rogpeppe, some of it is probably attributable to just doing more work more often but iyt's a bit of a big change for that I think07:45
rogpeppefwereade_: a small CL: https://codereview.appspot.com/6589072/07:55
rogpeppefwereade_: for context, here's the authentication sketch: http://paste.ubuntu.com/1259533/07:56
rogpeppedavecheney: it would be good to have some feedback from you about the authentication scheme too, if poss07:56
davecheneyrogpeppe: sure thing07:56
davecheneyrogpeppe: did you see my comment about improving the ssh tests ?07:57
rogpeppedavecheney: i did07:57
davecheneyalthought I realise the horse has bolted07:57
rogpeppedavecheney: yeah, no point in flogging that one07:57
davecheneyrogpeppe: right-o07:57
fwereade_rogpeppe, so --initial-password will be ignored if a password file exists07:57
rogpeppedavecheney: i'm interested to know what your plan was though07:57
rogpeppefwereade_: yes07:57
davecheneyrogpeppe: http://codereview.appspot.com/6601043/diff/3011/ssh/sshtest/sshtest_unix_test.go07:57
davecheney~ line 15007:57
rogpeppefwereade_: well actually, it might not be07:57
davecheneyrogpeppe: which CL is the authn Cl ?07:58
rogpeppefwereade_: if we fail to connect with the password, we'll try initial-password07:58
davecheneythe paste ?07:58
rogpeppedavecheney: yeah07:58
davecheneykk07:58
rogpeppefwereade_: because we might have written the password file but failed to change it07:58
fwereade_rogpeppe, ah, sensible07:59
davecheneyrogpeppe: i'm not sure how helpful this is07:59
davecheneybut the primary customer inside canonical is Elmo08:00
davecheneyso if he doesn't like the smell of this08:00
davecheneyirrespective of its other merits08:00
davecheneyit's game over08:00
davecheneynot saying he won't like it, or that what you have is not correct08:00
fwereade_rogpeppe, CL LGTM, I will try to get myself into a suitably adversarial mode before tackling the auth overview08:00
rogpeppedavecheney: i'm not sure who Elmo is08:00
davecheneyme neither08:01
davecheneybut I hear he's the big cheese of the internal sysadmin team08:01
rogpeppedavecheney: ok, i'll make a write-up and put it on juju-dev08:02
davecheneyrogpeppe: that sounds like an excellent plan, then others can distribute as necessary08:03
davecheneyrogpeppe: my only comment of note, is the storing of the key on disk per machine agent08:04
davecheneyi don't have a solution to this08:04
rogpeppedavecheney: indeed. we need to store it somewhere08:04
davecheneyonly observe that others will see it as a potential loophole08:04
rogpeppedavecheney: we must be able to connect after reboot08:04
davecheneyyeah,08:04
davecheneyis there a concept of differeing levels of privilige ?08:04
rogpeppedavecheney: ssh has exactly the same issue08:04
davecheneyrogpeppe: yup, it sure does08:05
rogpeppedavecheney: in fact any autonomous agent must have the same issue08:05
rogpeppedavecheney: the only solution is authenticated h/w08:05
rogpeppedavecheney: which we don't have.08:05
davecheneyrogpeppe: and i'm not sure if that would actually solve the problem08:06
davecheneythe issue, as i understand it is08:06
davecheneyuser X on machine Y can get root, then get whatever details they need to connect to the state, rip off the AWS keys ..08:06
davecheneyis that correct ?08:06
rogpeppedavecheney: if there was a way of propagating a secret from bootstrap stage to the agent itself, then we could use the secret, then destroy it. then even if you were root, you couldn't get it.08:07
rogpeppedavecheney: but of course the agent needs to keep the secret around, so even then we're vulnerable08:08
davecheneyrogpeppe: the secrets are in the /e document in the /e collection, right ?08:08
rogpeppedavecheney: it's a pity everyone has root access08:08
rogpeppedavecheney: no08:08
rogpeppedavecheney: these secrets are not08:08
davecheneyrogpeppe: but the AWS creds we're trying to protect are08:08
rogpeppedavecheney: yes, they are currently08:09
rogpeppedavecheney: but they won't be when we use this scheme to leverage principal-specific access controls08:09
davecheneyso, if by some mech, the /e document could be protected from access by the machine agent, would that be a solution ?08:09
rogpeppedavecheney: it's not a solution to malicious entities on the machine being able to impersonate the machine agent08:10
rogpeppedavecheney: but that is necessary too, yes08:10
davecheneyrogpeppe: is their a spec for the security model ?08:10
rogpeppedavecheney: no08:10
rogpeppedavecheney: sigh08:11
davecheneyrogpeppe: i'm not sure how to proceed without this08:11
davecheneyat best you'll implement whatever is inside gustavos head08:11
davecheneyand worse, you won't08:11
davecheneyand niether case may be what customres want08:11
rogpeppedavecheney: i see what we're doing here as a necessary prelude to implementing the final security model, which is unspecified08:12
rogpeppedavecheney: we're adding the notion of a principal to the state info, which i think is always going to be necessary.08:12
davecheneyrogpeppe: i'm concerned it is equiv to starting to walk in an unspecified direction, without picking a destination08:12
davecheneyrogpeppe: please understand, i'm not have a go at your solution,08:13
rogpeppedavecheney: ok, the basic security model, as i understand it is:08:13
davecheneyyou know my pickyness for implementing security without a spec08:13
rogpeppedavecheney: agents identify themselves to the state; the state allows agents to agent-specific things.08:14
rogpeppes/to agent/to do agent/08:14
davecheneyrogpeppe: but there is an unspoken requirement that agents cannot be impersonanted08:14
rogpeppedavecheney: yes... well, kinda.08:14
rogpeppedavecheney: damage limitation08:15
rogpeppedavecheney: we don't want any random non-root user on a machine to be able to impersonate that machine's machine agent.08:15
rogpeppedavecheney: but if you're root, you're going to be able to do what you damn please08:15
davecheneyrogpeppe: then putting the per machine agent password in a 0600 file would work08:15
davecheneybut i think further consultation with the customer is needed08:16
rogpeppedavecheney: yes, that's what we're doing08:16
davecheneyi'm pretty sure that someone is going to say 'but what if they get root'08:16
rogpeppedavecheney: there's nothing we can do in that case.08:16
davecheneyyup08:17
rogpeppedavecheney: the trickiness in the spec i pasted above is because there's no way of passing a secret to the initial machine agent that's not accessible by non-root users.08:17
rogpeppedavecheney: hence --initial-password08:17
davecheneybut that is probably going to meen elmo rejects the idea, and we've done a lot of work for nohting08:17
rogpeppedavecheney: he can't ask the impossible08:17
davecheneyhe's a very powerful customer08:18
rogpeppedavecheney: this is significantly better than what we had before - entities get permissions on a need-to-have basis.08:18
rogpeppedavecheney: sure, but we're talking *impossible* here08:18
rogpeppedavecheney: noone else will be able to do better08:19
davecheneyrogpeppe: i never said the customer was rational :)08:19
rogpeppedavecheney: also, you won't be able to do much by impersonating a machine agent, even if you are root.08:20
rogpeppeand malicious08:20
rogpeppedavecheney: in fact the machine agent doesn't need to be able to write to the state at all08:21
rogpeppedavecheney: you can do a little more by impersonating a unit agent, but again, not too bad, i think.08:22
rogpeppedavecheney: this all assumes an entity-aware API of course.08:23
rogpeppedavecheney: the thing i'm most concerned with is man-in-the-middle attacks. i don't see how we can protect against those unless we have some kind of key-distribution scheme.08:24
davecheneyrogpeppe: them why does the MA need a password at all ?>08:26
davecheneyi we treat the machine and the machine agent as untrusted08:26
davecheneyyou can ignore their credentials08:26
rogpeppedavecheney: we want to partition machines08:26
davecheneyrogpeppe: can we trust the LXC security boundary ?08:27
rogpeppedavecheney: and i don't think we can entirely assume that non-root users can always obtain root.08:27
rogpeppedavecheney: apparently not. for root users within LXC anyway.08:27
davecheneyrogpeppe: if that is a working assumption, then the job is a lot easier08:27
rogpeppedavecheney: i think our advice should be (as per usual) don't run untrusted stuff as root.08:29
davecheneyseconded08:29
rogpeppedavecheney: this means we've essentially got a two-tier security model. primary layer: TLS-based authentication; secondary layer: entity name/password authentication08:30
rogpeppedavecheney: we assume that a malicious root user can bypass the secondary layer, but not the primary layer.08:31
davecheneyrogpeppe: is the tls layer using client side certs ?08:32
rogpeppedavecheney: it'd better!08:32
davecheneyotherwise it isn't a security authn mech :)08:32
rogpeppedavecheney: indeed08:32
rogpeppedavecheney: and vulnerable to man-in-the-middle too08:32
rogpeppedavecheney: we need a way of securely passing a cert to a new machine08:33
rogpeppedavecheney: ISTR that amz supports this08:33
rogpeppedavecheney: dunno about others08:33
davecheneyrogpeppe: in the puppet model the client generates the cert and sends it to the server for signing08:33
rogpeppedavecheney: how does the server know where the cert is coming from?08:34
davecheneythe admin is expected to manage that out of band08:34
davecheneyjust like gpg08:34
rogpeppedavecheney: we can't do that - it's all autonomous08:34
davecheneyie, if you weren't expecting to see a cert request, then don't sign it08:35
davecheneyof course, most envs turn on automatic cert signing08:35
rogpeppedavecheney: of course.08:35
rogpeppedavecheney: i don't even see how an admin can know08:35
davecheneysecurity is hard, shall we go shopping ?08:35
rogpeppedavecheney: ooh shiny08:35
davecheneyrogpeppe: generally you install machine x, insgtall puppet, then tell it to join your puppet server08:36
davecheneygo to the server, accept the request08:36
davecheneythen profit08:36
rogpeppedavecheney: what if someone got in there between the install and going to the server?08:36
rogpeppedavecheney: of course, it may be improbable, but...08:36
davecheneypuppet assumes you control the security of your environment08:37
davecheneyit's a cfg management tool08:37
davecheneyand there is a reason juju exists :)08:37
davecheneyrogpeppe: my friends that work in hosting companies08:37
davecheneyrun one puppet server per customer08:37
rogpeppedavecheney: the way i did this when we had a similar thing was i installed manually on a machine, including a private key.08:37
davecheneythe idea of a single puppet instnace for all customers is impractical08:37
rogpeppedavecheney: then when the machine dials in, you *know* that it's the right machine.08:38
rogpeppedavecheney: but that assumes a manual install, of course.08:38
davecheneyrogpeppe: yup08:38
rogpeppedavecheney: which is why you have to assume that the cloud provider can do something similar08:38
davecheneymy friends in hosting companies use vlans and shit08:38
davecheneyto separate customers environments08:38
rogpeppedavecheney: worst comes to worst you're vulnerable to mitm, but if the hosting co is compromised, you're fucked anyway08:39
rogpeppedavecheney: "For Linux instances, you can provide an optional key pair ID in the launch request (created using the CreateKeyPair or ImportKeyPair operation). The instances will have access to the public key at boot. You can use this key to provide secure access to an instance of an image on a per-instance basis. Amazon EC2 public images use this feature to provide secure access without passwords."08:42
rogpeppedavecheney: i *think* we can leverage that08:43
davecheneyrogpeppe: ooooooooooh08:46
davecheneybut, are we likely to end up in the same 'too many firewall groups' quagmire ?08:46
rogpeppedavecheney: i don't think there should be a problem creating a keypair per machine, but i may well be wrong :-)08:47
davecheneyanother stupid amazon limitation08:47
davecheneyand you'll probably get asked how to do it in the openstack/azure/hp world08:47
rogpeppedavecheney: the main problem is that this mechanism is designed for allowing you to connect to a new machine securely, not the other way around.08:50
davecheneymmm08:51
rogpeppedavecheney: i think we'd need to create a cert based on a hash of the key pair's public key or something.08:51
rogpeppedavechen1y: actually, i think we could probably go quite a long way by moving the environ config into a separate database.08:58
rogpeppedavechen1y: then we could at least restrict access to the AWS keys without needing an API08:59
davechen1yrogpeppe: yes08:59
davechen1ywhich sounds like the juju-as-a-service plan08:59
davechen1ycustomers have MA's, we run the PA08:59
rogpeppedavechen1y: yeah, that's certainly part of it08:59
rogpeppedavechen1y: by separate database, i didn't mean a separate mongo server, as it happens08:59
rogpeppedavechen1y: i meant a separate mgo.Database09:00
rogpeppedavechen1y: (we already use two)09:00
davechen1yrogpeppe: yup09:00
davechen1yi thought we did that already09:00
davechen1yor is that just different connections, same db ?09:01
rogpeppedavechen1y: same connection, different dbs09:01
rogpeppedavechen1y: but each db has its own set of users09:01
rogpeppedavechen1y: did you see this CL BTW? https://codereview.appspot.com/658706009:02
* davechen1y looks09:05
davechen1yrogpeppe: fwereade_ trivial: http://codereview.appspot.com/6601056/09:09
davechen1ylooking for a LGTM09:10
* fwereade_ looks09:10
rogpeppedavechen1y: LGTM, although i suppose the question is: why --format and not something else?09:11
davechen1yrogpeppe: this is the thing that broke09:12
davechen1yand it's intended to get people to update their gnuflag instance09:12
rogpeppedavechen1y: fair enough.09:12
rogpeppedavechen1y: it's gotta be somewhere; why not there?09:12
rogpeppedavechen1y: (rhetorical question)09:13
fwereade_davechen1y, LGTM09:16
davechen1ythanks folks09:17
* fwereade_ has made the uniter tests fast again by fixing a huge obvious repeated 500ms sleep09:18
* fwereade_ knows that has been there for ages09:18
* davechen1y applauds09:18
* rogpeppe applauds loudly09:19
rogpeppefwereade_: duration of uniter tests now?09:19
fwereade_rogpeppe, back to ~45s09:20
rogpeppefwereade_: hmm, still slow then09:20
fwereade_rogpeppe, well, yeah, the bit I fixed was pre-existing, so there's probably another 20s to be extracted somewhere, but it's really not obvious09:21
rogpeppefwereade_: 20s shorter would be much more reasonable... but i know the feeling.09:21
rogpeppedavechen1y: here's a draft of the first part of a heads-up email: http://paste.ubuntu.com/1259631/09:22
* davechen1y reads09:23
davechen1yi don't see why we need both certs and usernames/passwords09:24
davechen1ycerts can already be associated with a principal09:25
rogpeppedavechen1y: in mongodb?09:25
rogpeppedavechen1y: (i tend to agree - i feel that passwords are a bit retro)09:25
fwereade_rogpeppe, davechen1y: I need to pop out for a while, but I have this: https://codereview.appspot.com/658805309:28
fwereade_rogpeppe, davechen1y: still WIP09:28
davechen1yrogpeppe: not sure how mongo does it09:29
fwereade_rogpeppe, davechen1y: but it incorporates some significant changes after niemeyer's suggestions in various places09:29
rogpeppefwereade_: will have another look09:29
davechen1ybut if you have a TLS cert, then you can request client authentication (ie, they need a sub cert signed by the same CA that issued your cert)09:29
fwereade_rogpeppe, davechen1y: and if you have time to cast a quick eye over it for general sanity that would be great09:29
davechen1yor the TLS handshake fails09:29
fwereade_rogpeppe, issues like "all the filter tests are broken" are not what I'm looking for ;p09:29
fwereade_bbiab09:29
rogpeppedavechen1y: i'm wondering how/whether mongo converts client certs into mongo users09:30
davechen1ysounds complicate09:30
davechen1ycompilcated09:30
davechen1yi reckon drop it09:30
davechen1yjust use TLS for a secure channel to transmit creds over09:31
rogpeppedavechen1y: so don't connect direct to mongo?09:31
rogpeppedavechen1y: but use a forwarder?09:31
rogpeppedavechen1y: i don't know if that's easy09:32
rogpeppe(although at least the mongo client is written in Go)09:32
rogpeppeoh why, oh why are certificates so horribly useless in this world?09:36
davechen1yand hard, dont' forget that09:37
rogpeppedavechen1y: indeed09:37
rogpeppedavechen1y: so unnecessary09:37
rogpeppedavechen1y: it looks to me as if mongodb can't do client-certificate verification09:38
davechen1yscratch that09:39
Aramyo.10:26
rogpeppeAram: hiya11:01
davecheneyrogpeppe: fwereade_ : comments ? https://codereview.appspot.com/659108011:09
rogpeppedavecheney: looks reasonable to me, but i'm not really familiar with the issue, i'm afraid11:15
rogpeppedavecheney: "I want to ask that it be accepted." - you can always just *ask*, y'know :-)11:15
Aramrogpeppe: what mongodb version do you use?11:17
rogpeppeAram: i've just started using a different version11:17
rogpeppeAram: i was using... 2.0.3 i think11:17
Aramaha.11:17
rogpeppeAram: now i've downloaded the version we use on ec2 and am using that11:17
AramI'm kind of nervous that behavior changes so often between versions so close to eachother.11:18
rogpeppeAram: me too. it's a pretty shitty thing to get wrong.11:18
davecheneyslow cloud-init, is slow11:18
davecheneyAram: rogpeppe: i think we should switch to using the version from the public bucket, exclusively11:19
rogpeppedavecheney: and download it each time we run a test?11:19
davecheneyno, i'm sure there is a way to avoid that expense11:21
rogpeppedavecheney: it's important that we be able to run tests on an aeroplane too.11:21
davecheneyrogpeppe: i think you're reading too much into my suggestion11:22
rogpeppedavecheney: i suppose we could check the mongodb binaries into the repo11:22
davecheneyi'm just thinking of unpacking the version into somewhere inside the juju-tree11:22
davecheneythen just call that path directly11:22
davecheneyif it's there 'win'11:22
davecheneyif not, fail11:22
* davecheney wishes we have juju destroy-service11:23
rogpeppedavecheney: is there no such command in the original juju?11:23
davecheneyyeah, but we don't have it in cmd/juju yet11:23
davecheneymakes testing harder :)11:23
rogpeppedavecheney: if we don't check it into the repo (and i'm not sure we want to clutter the repo with an 8MB binary) i'm not sure that running from a different path buys us that much11:25
davecheneyrogpeppe: we don't have to check it in11:25
rogpeppedavecheney: we'd be better off running mongod --version to check that we get the expected version11:26
rogpeppedavecheney: if we don't check it in, then we have the same problem of possible version skew11:26
davecheneyjust change the mongo tests to call to a specific path, one where we have already downloaded the mongodb version, rather than just calling any mongod in th epath11:26
rogpeppeha, it looks like niemeyer didn't build mongod with ssl support11:28
AramI thought that building with SSL was the reason why we needed to build it.11:29
davecheneyrogpeppe: crap -- that was the _ENTIRE_ reason for cmd/builddb11:29
rogpeppeAram: me too11:29
rogpeppedavecheney: try mongod --help 2>&1 | grep -i ssl11:30
davecheney% juju deploy couchbase &error: cannot assign unit "cf-mongodb/0" to machine: cannot assign unit "cf-mongodb/0" to machine 8: duplicate key insert for unique index of capped collection11:31
rogpeppedavecheney: hmm, it *looks* as if builddb builds it with ssl11:31
rogpeppei wish we prefixed our errors with "juju: " rather than "error: ". i've been meaning to fix that for ages.11:32
davecheneyhere is some good news --> http://paste.ubuntu.com/1259806/11:40
rogpeppedavecheney: woo!11:40
rogpeppefwereade_: check it out!11:41
davecheneyand most of them worked !11:41
rogpeppedavecheney: that's almost like a real installation :-)11:41
davecheneyi don't think I can start any more machines11:42
davecheneyamazon will chide me11:42
rogpeppedavecheney: the security description gets longer (still haven't got to the bit that was the whole point yet though!) http://paste.ubuntu.com/1259811/11:42
davecheneythe buildbot charm failures, somethign happened with apt, it wasn't us11:43
TheMuedavecheney: nice environment ;)11:43
davecheney% juju ssh ceph/0 -- -t 'less /var/log/juju/unit*'11:43
davecheneynice11:43
rogpeppedavecheney: what does -t do?11:43
davecheneytells ssh'd to allocate a pty11:44
davecheneynormally if you do ssh host /some/command11:44
davecheneyno pty is allocated11:44
rogpeppedavecheney: ah of course11:44
davecheneywhich sucks11:44
davecheneyssh cmd does a lot of things for you11:44
rogpeppedavecheney: no, that's a good thing :-)11:44
davecheneyyeah, but then you have to figure out why it is how it is11:45
rogpeppedavecheney: for most commands a pty gets in the way11:45
davecheneytrue11:45
davecheneyso, the ceph charm is flat broke, not our fault11:45
rogpeppedavecheney: paste the log?11:45
davecheneytwo secs11:46
davecheneymost of them are missing debs11:46
davecheneyrogpeppe: http://paste.ubuntu.com/1259818/ << ceph11:47
rogpeppedavecheney: i wonder what radosgw is and if it was installed by default before.11:48
davecheney2012/10/04 11:35:31 JUJU HOOK ERROR: command: cluster-init: 10.190.42.228:8091, [Errno 111] Connection refused11:48
davecheney2012/10/04 11:35:32 JUJU HOOK + /opt/couchbase/bin/couchbase-cli bucket-create -c 10.190.42.228:8091 -u Administrator -p administrator --bucket=jienaigo --bucket-type=couchbase --bucket-password= --bucket-ramsize=1607 --bucket-replica=111:48
davecheney2012/10/04 11:35:32 JUJU HOOK ERROR: command: bucket-create: 10.190.42.228:8091, [Errno 111] Connection refused11:48
davecheney^ couchbase11:48
davecheneyi wonder if some charms install the py juju tools by accident ...11:49
davecheneyrogpeppe: re your email11:51
davecheneydrop the bit about a machine cert11:51
davecheneyi thought we weren't/couldn't do that11:51
rogpeppedavecheney: i think we have to do that, somehow.11:52
rogpeppedavecheney: although we can't currently.11:52
davecheneyrogpeppe: yup, good point11:52
rogpeppedavecheney: one way of doing it is to have a server that exchanges one-time tokens for certificate signing.11:54
rogpeppedavecheney: then we can pass a one-time token into cloudinit11:54
rogpeppedavecheney: the machine agent leverages that to get its own certificate signed.11:55
davecheneythe couchdb charm requires a ppa which is broken11:56
rogpeppedavecheney: i wonder what your duplicate key insert problem was about11:56
davecheneymongo bug11:56
davecheneyhappens a lot11:56
davecheneyniemeyer has raised a bug upstream11:56
davecheneycouchdb11:57
davecheney2012/10/04 11:37:39 JUJU HOOK  * Starting database server couchdb11:57
davecheney2012/10/04 11:37:39 JUJU HOOK    ...done.11:57
davecheney2012/10/04 11:37:39 JUJU hook failed: exit status 111:57
davecheney2012/10/04 11:37:39 JUJU reading uniter state from disk...11:57
davecheneynice11:57
Aramyeah, mongodb is... less than stellar.11:58
rogpeppeAram: it's better than zk though11:58
davecheney2012/10/04 11:37:32 JUJU HOOK + sed -e 's/^STARTDISTCC=.*/STARTDISTCC="true"/' -i /etc/default/distcc11:59
Aramthe products are so different they can't be compared like that.11:59
davecheney2012/10/04 11:37:32 JUJU HOOK + '[' -x /usr/bin/open-port ']'11:59
davecheney2012/10/04 11:37:32 JUJU hook failed: exit status 111:59
Aramthey solve a diferent problem.11:59
davecheney^ hard coded tools11:59
rogpeppeAram: you're probably right.11:59
rogpeppeAram: from my brief look at the mongo source earlier today, i wasn't enormously overjoyed.12:00
Aramoh, it's bad, I had to look through it when solving various quirks and bugs.12:00
davecheney2012/10/04 11:39:15 JUJU HOOK ldconfig deferred processing now taking place12:01
davecheney2012/10/04 11:39:17 JUJU HOOK install: cannot stat `files/php/php_conf.d_apc.ini': No such file or directory12:01
davecheney2012/10/04 11:39:17 JUJU hook failed: exit status 112:01
davecheney2012/10/04 11:39:17 JUJU reading uniter state from disk...12:01
davecheney^ drupal6 expects a file not owned by a deb that it installed12:01
rogpeppeAram: i'd forgotten that people still like ifdefs. ugh.12:01
davecheneyso, short summary, 19 charms, 9 working12:02
davecheneynone are our fault (directly)12:02
Aramopen source stuff is plagued by ifdefs.12:02
davecheneysomeone please pass on to mramm and gustavo12:03
davecheneyi12:03
davecheneyi'm off to bed12:03
rogpeppedavecheney: good work, man12:04
rogpeppedavecheney: enjoy your rest12:04
davecheneyno, congratulations to all of you12:04
davecheneywith the exceptoin of juju-log -l12:04
rogpeppedavecheney: what was the issue with that?12:04
davecheneyi haven't found a charm that is broken because we are incompatible with py juju12:04
davecheneyrogpeppe: we didn't support -l $LEVEL12:04
rogpeppedavecheney: ah12:05
rogpeppedavecheney: well, gnuflag was broken too...12:05
davecheneyrogpeppe: https://codereview.appspot.com/658406912:05
davecheney% juju destroy-environment12:06
davecheneyerror: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. (SignatureDoesNotMatch)12:06
davecheneyFUCK YOU AWS12:06
davecheneynot tonight12:06
davecheneynot with 20 machines running12:06
davecheneyit always does this when I have more than a few machines running12:06
rogpeppedavecheney: hmm, that might be our bug, i suppose12:07
rogpeppedavecheney: just got to the aws console :-)12:08
rogpeppes/got/go/12:08
davecheneyright, i have ceased hemorhaging money12:09
rogpeppedavecheney: i hope you claim it back on expenses12:09
rogpeppedavecheney: (i've been a bit crap at doing that recently)12:09
davecheneynight all12:09
rogpeppedavecheney: but i had $200 bill last month, so it's worth doing12:09
bigjoolsfwereade_: howdy, can I bug you for a bit please? got a vexing problem with juju12:33
fwereade_bigjools, heyhey12:45
bigjoolshow's it going?12:45
fwereade_bigjools, ah, not bad thanks, not sure if I can *actually* remember anything about python but I'm game for a try12:45
bigjoolsah you're a Goer12:45
fwereade_bigjools, that's what they tell me12:46
bigjools:)12:46
* fwereade_ maintains a perfectly straight face12:46
bigjoolsI'm trying use juju to test deployment on maas and it's saying it did it, yet there's no attempt at all to start a machine12:46
bigjoolsI can't see start_machine being called, not sure how to debug this and even why it started misbehaving12:46
fwereade_bigjools, hmmmm -- you're bootstrapping?12:47
bigjoolsafter that12:47
bigjoolsbootstrap is ok12:47
bigjoolsjust deploy going wrong12:47
fwereade_bigjools, what does status tell you? is it that there "should be" a machine, but it's just not started? or that the machine never gets added to state in the first place?12:49
rogpeppebigjools: have you looked at the logs on the bootstrap machine?12:49
rogpeppebigjools: (something to do after fwereade_'s suggestion, possibly)12:49
fwereade_bigjools, yeah, the start_machines will be called by the provisioning agent12:49
bigjoolsfwereade_: I see no attempt at all to even try to start a machine, but status says it's waiting for it12:49
fwereade_bigjools, assuming they're making it into state, which you can check with status, your best bet is the PA logs12:50
bigjoolsrogpeppe: I didn't look there, will do so!12:50
bigjoolsfwereade_: PA?12:50
fwereade_bigjools, provisioning agent12:50
rogpeppebigjools: /var/log/juju/*.log i think12:51
fwereade_bigjools, upstart job called somehign beginning with juju-pro IIRC12:51
bigjoolsok12:51
rogpeppefwereade_: here's the text of an email that i'm considering sending to juju-dev: http://paste.ubuntu.com/1259902/12:51
* fwereade_ reads12:51
bigjoolswell, there's a traceback12:52
rogpeppebigjools: that sounds fairly indicative :-)12:55
bigjoolshttp://pastebin.ubuntu.com/1259905/12:55
rogpeppeniemeyer: yo!12:57
niemeyerrogpeppe: Heya!12:57
niemeyerHello all!12:57
fwereade_bigjools, sorry, never seen that before12:57
bigjoolsfwereade_: darn :(12:58
bigjoolsfwereade_: happens on packaged or trunk version, I suspect some config problem but I can't work out what exactly from that traceback, it's not very helpful :(12:58
fwereade_bigjools, indeed not :(12:58
rogpeppeniemeyer: i was getting feedback from dfc this morning about the security stuff, and he suggested sensibly that we should make sure that our potential users (e.g. Elmo) are happy with the direction we're going, so i put an email together trying to explain things. i don't know whether it's actually worth sending, but it focused my mind helpfully anyway. http://paste.ubuntu.com/1259902/12:59
fssniemeyer: i sent the cl yesterday https://codereview.appspot.com/6586073/ :)13:00
bigjoolsfwereade_: I think I know what it is .... :/13:00
niemeyerrogpeppe: I don't think it's worth sending because this is not our end goal13:01
fwereade_bigjools, go on...13:01
rogpeppeniemeyer: ok. i'm not sure what our end goal is then.13:01
bigjoolsfwereade_: the ZK machine can't reach the maas server.  why that is, I don't know13:01
fwereade_bigjools, oh, hell13:02
niemeyerOct 01 11:54:59 <niemeyer>      rogpeppe: In a future universe, we'll then introduce an HTTPS API to which everyone will talk to13:02
rogpeppeniemeyer: that's what i talk about in the email13:02
rogpeppeniemeyer: as an intro13:02
rogpeppeniemeyer: then i say that these are steps in that direction13:02
bigjoolsfwereade_: well, that "integer is required" error is the fundamental problem causing that in fact.  So still not closer to working it out.13:03
fwereade_bigjools, oh, for real tracebacks in twisted13:03
niemeyerrogpeppe: That's what I mean.. our focus is on implementing these steps. If you want to discuss future with James, that sounds great, but I suggest getting hold of him in two weeks and talking to him13:03
bigjoolsfwereade_: quite :/13:04
bigjoolsfwereade_: you have to turn on deferred debugging to get them13:04
fwereade_bigjools, I don't think we expose a switch for that13:04
fwereade_bigjools, I guess you can always hack at the code the PA runs :/13:04
niemeyerrogpeppe: Meanwhile, I hope we *implement* the steps, rather than just discuss how a perfect future looks like13:05
bigjoolsfwereade_: awesome :)13:05
rogpeppeniemeyer: ok. i was thinking that it might be useful to know if we're stepping in the right direction, but if you think that's fine, i won't send anything.13:05
niemeyerrogpeppe: I'm not sure I understand your concerns13:06
niemeyerrogpeppe: If authenticating is a step in the right direction? Of course it is.. if transport security is a step in the right direction? Of course it is13:06
rogpeppeniemeyer: it may be that we don't need anything of what we're doing now.13:06
niemeyerrogpeppe: We're not doing anything fancy.. we're implementing what should be in place from day zero13:06
rogpeppeniemeyer: we already authenticate and do transport security.13:06
niemeyerrogpeppe: Transport security? Authentication?13:06
rogpeppessh13:06
niemeyerrogpeppe: Please read the code of our agents :)13:07
rogpeppeniemeyer: ok, we don't currently use ssh intra-cloud, but we could.13:07
rogpeppeniemeyer: we could do SSL security without any of the SetPassword stuff.13:08
niemeyerrogpeppe: How do you put a client SSL certificate in place?13:08
rogpeppeniemeyer: that's a question for us now too13:10
niemeyerrogpeppe: Heh13:10
rogpeppeniemeyer: perhaps we're not concerned with man-in-the-middle attacks though13:11
niemeyerrogpeppe: What man-in-the-middle attacks?13:12
niemeyerrogpeppe: Do you have man-in-the-middle attacks when you use a password on gmail?13:13
rogpeppeniemeyer: yes, potentially.13:13
niemeyerrogpeppe: No, you don't unless you ignore the security warnings from your browser13:13
niemeyerrogpeppe: I'm happy to hear proposals that are better than the one I've explained. I'm not greatly interested in stopping progress to hunt for a proposal without clear articulation of what is the problem, the solution, and the way we'll get there in time.13:17
rogpeppeniemeyer: i suppose that's what i was trying to articulate.13:17
niemeyerrogpeppe: I haven't noticed that yet.. you just told me we already authenticate and do transport security13:18
rogpeppeniemeyer: i wanted to put my sketch up on juju-dev to see if anyone could see obvious flaws in it, as we'll probably be using this model for a while. do you think that's a bad idea?13:21
niemeyerrogpeppe: Yes, I personally think it is. I'd like to see progress being made instead of exposing a half-baked plan. This is not the end goal.. we'll *not* use database constraint to secure data.13:24
rogpeppeniemeyer: ok, fair enough13:24
niemeyerrogpeppe: It's up to you, though13:24
rogpeppeniemeyer: changing the subject, what do we do about admin-secret vs the environment config?13:24
rogpeppeniemeyer: it's secret, but we don't want to push it with the rest of the secrets13:24
niemeyerrogpeppe: I personally don't mind that you're talking about it with people, of course. Feel free to do contact James, juju-dev, or whoever else.13:24
niemeyerrogpeppe: I'll be doing pressure for progress, though.13:25
niemeyerrogpeppe: I want to see code being merged that improves the situation.13:25
rogpeppeniemeyer: i'm not going to delay things at all13:25
niemeyerrogpeppe: Also, doing homework is good..13:26
niemeyer"""13:26
niemeyerIt is not clear to me whether it is possible to make MongoDB13:26
niemeyerperform client-certificate verification; if it cannot, for the time being13:26
niemeyerwe will remain vulnerable to man-in-the-middle attacks within the cloud.13:26
niemeyer"""13:26
niemeyer"""13:26
niemeyerEven within this interim13:26
niemeyermodel, we can significantly improve things by separating concerns within13:26
niemeyerthe database.  For example the environment configuration (containing13:26
niemeyerthe cloud access keys), the machines collection (allowing the creation13:26
niemeyerof new instances), and the unit-related collections could each be in13:26
niemeyer"""13:26
niemeyerWe won't do that.13:26
rogpeppeniemeyer: no?13:26
niemeyerrogpeppe: No13:26
rogpeppeniemeyer: do we have transaction that span machines and units?13:27
rogpeppetransactions13:27
niemeyerrogpeppe: Erm?13:27
rogpeppeniemeyer: sorry, i jumped to conclusions. why won't we do that?13:28
rogpeppeniemeyer: it seemed to me like keeping the environ config separate might be a cheap and easy way to make things more secure.13:28
niemeyerrogpeppe: Cheap? How do you separate out everyone that needs the environment configuration?13:29
niemeyerrogpeppe: Everybody uses it right now13:29
rogpeppeniemeyer: hmm. i suppose we do need to read the private bucket.13:30
niemeyerrogpeppe: How does MongoDB authentication will permit you to do it in a single database, or alternatively how do you span multiple databases with transactions?13:30
niemeyerrogpeppe: The solution is not to hack together such change.. the solution is to have a real API to which clients talk to, instead of communicating with the database13:31
rogpeppeniemeyer: depends whether we need to span those things in a single transaction. i thought perhaps we did not. it's true i didn't check, though.13:31
rogpeppeniemeyer: yeah that's true at least.13:31
rogpeppeniemeyer: i did try to do my homework regarding mongod client-side certificate verification, but got lost in a) the source code b) the openssl docs.13:32
=== TheMue_ is now known as TheMue
rogpeppeniemeyer: please disregard the proposed email. i wanted feedback and i got it, thanks.13:34
rogpeppeniemeyer: currently i am wondering whether to make admin-secret a special case, or to have a VerySecretAttrs method on EnvironProvider.13:35
rogpeppeniemeyer: i'm tending towards the former, and putting admin-secret in config.Config.13:36
niemeyerrogpeppe: Transport security and authentication, in place, working.. that's what we have to focus on for the moment. The need for the API is being strongly requested, and won't take long. What we're doing is a good step towards supporting it.13:37
rogpeppeniemeyer: that's cool. i understand that now. let's move on.13:37
niemeyerrogpeppe: Special case in which sense?13:38
rogpeppeniemeyer: we don't want to push it to the state13:38
rogpeppeniemeyer: at least i *think* we don't want to push it to the state13:39
rogpeppeniemeyer: otherwise it makes a mockery of our careful password management13:39
niemeyerrogpeppe: Hmm13:39
niemeyerrogpeppe: Indeed13:39
niemeyerrogpeppe: This will likely be somewhat boring, in fact..13:40
rogpeppeniemeyer: yeah13:40
niemeyerrogpeppe: Since we replace the local config with the remote one regularly13:40
niemeyerrogpeppe: and the remote one won't have the secret13:40
rogpeppeniemeyer: i'm tempted to make it a special case13:41
rogpeppeniemeyer: and never push an attribute named "admin-secret"13:41
niemeyerrogpeppe: It is a special case in either case.. I'm just wondering what that means in practice13:41
niemeyerrogpeppe: Well, I guess we only need the password when connecting, so the regular replacement may not be much of an issue13:42
rogpeppeniemeyer: i'm not sure which piece you're thinking of when you say "we replace the local config with the remote one regularly"13:43
rogpeppeniemeyer: which "local" and which "remote"?13:43
niemeyerrogpeppe: the one in memory vs. the one in the database13:43
rogpeppeniemeyer: i don't think that's a problem - we'd never have the admin-secret attribute in the cloud13:44
niemeyerrogpeppe: Exactly13:44
rogpeppeniemeyer: ah, when *the client is* connecting. yeah.13:44
niemeyerrogpeppe: Means we'll lose the local password from the configuration.. but I think that's ok13:44
rogpeppeniemeyer: i don't think we *need* to remove the password from the client-side Config object, but perhaps that's not what you're thinking of13:45
niemeyerrogpeppe: I'm thinking it is going to be removed even if we don't need it13:46
niemeyerrogpeppe: Because we load the environment configuration from the remote side13:46
rogpeppeniemeyer: we just have to change BootstrapConfig to remove admin-secret too13:50
rogpeppeniemeyer: but it would seem a bit odd if SecretAttrs didn't return admin-secret actually13:51
bigjoolsfwereade_: I restarted the PA and it made the error go away ... wtf!13:51
rogpeppeniemeyer: so a better fix would be to remove admin-secret from the secrets within juju.Conn.updateSecrets13:52
niemeyerrogpeppe: Not sure.. that's a setting for the provider itself13:52
rogpeppeniemeyer: is it?13:52
rogpeppeniemeyer: aren't we doing provider non-specific stuff with it?13:53
niemeyerrogpeppe: EnvironProvider.SecretAttrs is13:53
rogpeppeniemeyer: ah, yeah13:53
rogpeppeniemeyer: in which case changing BootstrapConfig would seem better13:53
niemeyerrogpeppe: Yeah, I think it's quite fitting13:54
niemeyerrogpeppe: We should also add a panic to State.SetEnvironConfig13:54
niemeyerrogpeppe: In case it ever sees an admin-secret13:54
rogpeppeniemeyer: that seems reasonable13:55
niemeyerrogpeppe: Or perhaps just an error.. I think we might reach the panic with "juju set admin-secret=foo"13:55
fwereade_bigjools, grar13:55
rogpeppeniemeyer: hmm yeah13:55
rogpeppeniemeyer: i was thinking a panic seemed a bit harsh actually13:55
niemeyerrogpeppe: +113:55
rogpeppeniemeyer: actually, we could make juju set admin-secret work if we wanted, i think13:56
niemeyerrogpeppe: Yeah, sounds sane, but it's a different code path anyway13:58
rogpeppeniemeyer: yeah13:58
rogpeppeniemeyer: the error case would remain13:59
rogpeppeniemeyer: oh yeah, small CL from this morning: https://codereview.appspot.com/6589072/14:15
TheMueniemeyer: morning btw from me too14:33
TheMueniemeyer: and also a CL regarding the firewall mode in EC2: https://codereview.appspot.com/6589073/14:33
niemeyerTheMue: Heya14:44
niemeyerrogpeppe: ping14:49
rogpeppeniemeyer: pong14:49
niemeyerrogpeppe: Have a moment for a call? An idea just crossed my mind14:49
rogpeppeniemeyer: sure14:49
niemeyerrogpeppe: I'm not sure if it's crack or not, or if it'd take longer or not, so would appreciate some brainstorm14:50
rogpeppeniemeyer: i'll fetch the other computer, so it doesn't die half way through14:50
rogpeppeniemeyer: on mo14:50
niemeyerrogpeppe: Cool14:50
niemeyerTheMue: Quick question before the review: is the *-global group needed? Couldn't we just use the one group?14:53
fwereade_niemeyer, this should be a trivial: https://codereview.appspot.com/660704314:54
TheMueniemeyer: started that way too, but then I found it could make sense that our machines internally share one group with possible pure internal needed ports for machine to machine communication while the global group contains those ports open to the public.14:55
niemeyerTheMue: COol14:56
niemeyerTheMue: And is there any practical benefits with that?14:57
TheMueniemeyer: currently our firewall model doesn't use it, everything is done on the global group. but we should discuss it.15:00
TheMueniemeyer: have been interrupted here, sorry15:01
TheMueniemeyer: so we can distiinguish between the source15:03
niemeyerTheMue: Cool, sounds ok15:03
TheMueniemeyer: glad you like it15:04
rogpeppeniemeyer: admin-secret: https://codereview.appspot.com/658708515:32
niemeyerrogpeppe: Cheers15:33
niemeyerfwereade_: Is it just moving the package without any semantic changes?15:33
fwereade_niemeyer, yes, + package comment tweaking15:33
niemeyerfwereade_: Beautiful, LGTM15:34
fwereade_niemeyer, cheers15:34
niemeyerrogpeppe: Great stuff15:38
rogpeppeniemeyer: thanks! unfortunately i accidentally made it dependent on a prereq, so perhaps you could have a look at that too (it's very small) https://codereview.appspot.com/6589072/15:39
niemeyerrogpeppe: Looking15:39
niemeyerrogpeppe: Hmm.. that's reviewed already15:39
rogpeppeniemeyer: oh really? cool!15:39
niemeyerLunch.. biab15:52
niemeyerfwereade_: Back on uniter here16:44
fwereade_niemeyer, ah, cool, thanks16:52
niemeyerfwereade_: Looking pretty good16:53
niemeyerfwereade_: Looks like you've managed to get the upgrade decision entirely inside the filter16:53
fwereade_niemeyer, yeah, I think it's reasonably clean16:54
fwereade_niemeyer, and it does make for a very nice interface16:54
niemeyerfwereade_: Very true16:55
niemeyerfwereade_: I'm thinking through the relationship between ModeInstalling and the follow up continuation16:55
niemeyerfwereade_: In terms of possible races given the different origins of the charm16:55
fwereade_niemeyer, not sure I follow... this is rarely a good sign ;) what race?16:56
niemeyerfwereade_: Well, that's what I'm trying to find :)16:56
fwereade_niemeyer, ok, well, I don't *think* the changes matter re upgrading at all: at some single point in time we write the current service charm in an install op, and that is the charm that gets installed, full stop16:58
fwereade_s/upgrading/installing/16:58
niemeyerfwereade_: When a delta is taken from foo to bar, and then we pick current state from baz, that's always an eye-opener16:59
niemeyerfwereade_: Okay, imagine this:16:59
niemeyer1) Unit starts up16:59
niemeyer2) filter goroutine starts up, and blocks17:00
niemeyer3) ModeInstalling runs, and picks charm C117:00
niemeyer4) filter runs, and picks charm C2 as current charm17:00
niemeyerfwereade_: What happens next?17:00
fwereade_niemeyer, at some point after this we will be in a mode that needs charms, so it will ask for charm events relative to a baseline of C1, and (assuming appropriate forcing) get the *Charm corresponding to C2 next time it reads from charmEvents17:02
niemeyerfwereade_: Why? C1 was never seen by the filter17:02
fwereade_niemeyer, yeah, we tell the filter what charm events we're interested in17:02
niemeyerfwereade_: Ah, maybe that's what I'm missing17:03
fwereade_niemeyer, wantCharmEvent now takes something like (upfradeFrom *state.Charm, mustForce bool)17:03
niemeyerfwereade_: Aha, makes sense, thanks17:03
niemeyerfwereade_: Quite nice17:04
niemeyerfwereade_: Very nice, in fact17:05
fwereade_niemeyer, cheers :)17:05
niemeyerfwereade_: Okay, so..17:06
niemeyerfwereade_: New branch/logic/etc is *awesome*17:06
niemeyerfwereade_: You did changes inside the filter that look like a great direction too17:07
niemeyerfwereade_: The select statement is neat and tight17:07
fwereade_niemeyer, it seemed worth trying again, and it seemed to work out ok this time :)17:07
niemeyerfwereade_: There's one thing I think we can improve slightly, but it's just in terms of how to do exactly the same thing, rather than changing it17:08
fwereade_niemeyer, great, improvements always welcome :)17:08
fwereade_[in the background, a wail of shock: no! mum! I don't want to eat salad!]17:08
niemeyerROTFL17:09
niemeyerfwereade_: These new closures are great in terms of naming and isolating logic, but they're begging to be real methods17:09
fwereade_niemeyer, yeah, I felt the pull17:09
fwereade_niemeyer, and then I felt like putting them on the same type as the chans would end up obscuring its purpose, and that a separate type wasn't quite right17:10
fwereade_niemeyer, which would you favour?17:10
niemeyerfwereade_: This, I suspect, will also reduce a bit the massive namespacing that we have within that one method17:10
fwereade_niemeyer, OTOH the same type as the chans is clearly the right place, given that they manipulate them17:10
fwereade_niemeyer, yeah, indeed17:11
fwereade_niemeyer, incidentally, obscuring the field namespace was also a concern17:11
niemeyerfwereade_: I'd put them in the same type.. they're a different category of methods, guaranteed17:11
fwereade_niemeyer, if I'm going to have a busy namespace a single function scope sometimes seems like the right place ;p17:11
niemeyerfwereade_: They are private methods, except everything is private at the moment because the whole type is private17:12
fwereade_niemeyer, how would yu feel about me exposing filter as Filter, and making the Events methods public?17:12
fwereade_niemeyer, or just the methods even17:12
niemeyerfwereade_: I was about to suggest the latter half only17:12
niemeyerfwereade_: +117:12
fwereade_niemeyer, convergence :)17:12
niemeyerfwereade_: ftw :)17:12
fwereade_niemeyer, great17:13
niemeyerfwereade_: The field names so far are very clear.. we have well known fields, plus want* and out*.. we can then share a few private things with proper names, and I suspect the methods will hide a few variables within their own scope17:14
fwereade_niemeyer, yeah, I think it'll work out pretty nice17:15
fwereade_niemeyer, it's just the duplication of out* names that bugs me17:18
niemeyerfwereade_: Hmm, which duplication?17:20
fwereade_niemeyer, the field that holds the real chan and the one that's the same but sometimes nil17:22
fwereade_niemeyer, which is manipulated in those closures17:22
fwereade_niemeyer, outCharm = nil; outCharm = f.outCharm17:22
niemeyerfwereade_: Hmm.. that doesn't feel too bad to me17:24
fwereade_niemeyer, well, I certainly can't think of good names for the pair17:24
fwereade_niemeyer, the outCharm above will need t be a field,right?17:24
niemeyerfwereade_: Ah, okay, I see17:25
fwereade_niemeyer, f.maybeOutCharm = f.outCharm17:25
fwereade_;p17:25
niemeyerfwereade_: f.outCharm and f.outCharmOn?17:25
fwereade_niemeyer, f.outCharm = f.outCharmOn17:26
fwereade_niemeyer,  I like it17:26
fwereade_niemeyer, ty17:26
niemeyerfwereade_: np17:26
rogpeppeniemeyer: i'm thinking about putting some encoding of the admin-secret (secure hash or b64) into cloudinit, rather than the raw password, as using the raw password exposes us to awkward upstart quoting issues.17:27
rogpeppeniemeyer: do you think that's reasonable?17:27
niemeyerrogpeppe: I don't think we ever want the raw password in cloud init17:28
rogpeppeniemeyer: good point. doh.17:28
rogpeppeniemeyer: so we can assume that the Password in the StateInfo passed to cloud-init is always nicely formed.17:30
niemeyerrogpeppe: As in, contains reasonable text? Yeah17:34
rogpeppeniemeyer: yeah17:34
rogpeppei'm off for the day. see y'all tomorrow.17:40
niemeyerrogpeppe: Cheers man17:48
niemeyerfwereade_: Sent some other minor comments on the review of that same branch17:48
niemeyerfwereade_: Only one point there may need some further talking17:49
fwereade_niemeyer, heyhey17:49
fwereade_niemeyer, I'll take a look17:50
fwereade_niemeyer, about the config events?17:51
niemeyerfwereade_: Yeah17:51
fwereade_niemeyer, it just means that if we get a really early wantConfig, we don't end up sending an event not corresponding to a real change when the initial watcher change shows up17:51
fwereade_niemeyer, clearly it's not expressed very well :)17:51
niemeyerfwereade_: I don't think I get it still17:53
fwereade_niemeyer, and re "Upgrading?" -- yes, only ModeUpgrading checks for ErrConflict, because all ModeInstalling does is pull into a new empty dir, and is therefore unlikely to experience conflicts ;)17:53
niemeyerfwereade_: How does it prevent anything.. the order is still unpredictable, and the block in the early select is the same block on the later select17:53
fwereade_niemeyer, the order is not unpredictable: doing what I do guarantees that the config.Changes() chan will be read at least once before the want chan17:54
fwereade_niemeyer, and that therefore it is impossible to (re?)activate the outConfig chan via a want *before* getting the initial event which is actually un *un*requested resend of the "original" event17:55
fwereade_niemeyer, yeah, the above is not clear17:56
fwereade_niemeyer, consider without that block17:56
fwereade_niemeyer, 1) start config watch17:56
fwereade_niemeyer, 2) get a wantConfig17:56
fwereade_niemeyer, 3) send a config event17:57
fwereade_niemeyer, 4) get the initial config change17:57
fwereade_niemeyer, 5) send a config event17:57
fwereade_niemeyer, the above sequence STM to be possible -- two events from a single config after only one want17:58
niemeyerfwereade_: Makes sense, thanks17:59
fwereade_niemeyer, np, I'll try to make it clear in the code17:59
niemeyerfwereade_: Thanks!17:59
fwereade_niemeyer, did the Upgrading? explanation make sense?17:59
niemeyerfwereade_: Does as well, thank you18:00
fwereade_niemeyer, cool18:00
fwereade_niemeyer, (just to check: you're ok with wantUpgradeEvent etc over wantCharmEvent?)18:02
fwereade_niemeyer, that's what it actually *is* now after all :)18:03
niemeyerfwereade_: Yeah, definitely18:03
niemeyerfwereade_: Happy with it, actually18:03
fwereade_niemeyer, sudden hare-brained idea, but since you're here:18:04
fwereade_niemeyer, u.f.wantConfigEvent() is not really so bad18:04
fwereade_niemeyer, I don't really think we get much from emebedding18:04
niemeyerfwereade_: +118:05
fwereade_niemeyer, cool18:05
fwereade_niemeyer, I should manage to propose again later tonight18:05
niemeyerfwereade_: Superb18:05
niemeyerfwereade_: I'll have to step out in a bit to sign routine bank papers, but will be back working later too18:06
fwereade_niemeyer, have fun :)18:06
niemeyerfwereade_: "fun" :)18:07
* niemeyer steps out18:30
=== fss is now known as flaviamissi_
=== flaviamissi_ is now known as fss
* niemeyer is back20:16
fwereade_niemeyer, https://codereview.appspot.com/6588053 reproposed21:57
niemeyerfwereade_: Brilliant.. on the phone with mramm, but will be there soon21:57
fwereade_niemeyer, cool, thanks21:57
niemeyerfwereade_: Looking22:15
fwereade_niemeyer, cheers22:15
niemeyerfwereade_: done22:40
niemeyerfwereade_: LGTM, with a few last suggestions for your consideration22:40
fwereade_niemeyer, awesome :D22:40
fwereade_niemeyer, I'll take a look22:40
fwereade_niemeyer, I'm a bit uncomfortable about serviceCharm.force sometimes meaning "force" and sometimes meaning "must force" depending on the var... but the only reason I didn't succumb to its convenience was because I though you wouldn't like it :)22:43
fwereade_niemeyer, not sure I'll quite get that merged tonight, I'm thinking sleep sounds interesting once I get my current jujuc butchery building again22:43
niemeyerfwereade_: I can definitely understand.. it took me some time to suggest variable names properly for this to not be awkward22:43
fwereade_niemeyer, yeah, those names help a lot22:44
niemeyerfwereade_: upgradeRequested.force and upgradeAvailable.force both sound about right, if not ideal22:44
fwereade_niemeyer, definitely better than anything I could think of :)22:45
niemeyerfwereade_: About sleep, I can only say have a great one! :-)22:45
niemeyerdavecheney: Morning!22:54
niemeyerWe've got an empty review queue again22:54
davecheneyniemeyer: nice one22:54
davecheneyi'll see what I can do about that22:54
davecheneyjust trying to debug this atm22:54
davecheneylucky(~/src/launchpad.net/juju-core) % juju destroy-environment22:54
davecheneyerror: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. (SignatureDoesNotMatch)22:54
niemeyerdavecheney: Uh oh ;)22:54
niemeyerdavecheney: Curious22:55
davecheney^ happens when I have more than a few machines' running22:55
niemeyerdavecheney: Up-to-date goamz/ec2?22:55
* davecheney shrugs22:55
davecheneyit's the one i've been using since hte last goamz fix22:55
* davecheney mumbles something about having to add tests to catch people using old pkg versions22:56
niemeyerdavecheney: Yeah, seems interesting22:57
davecheneyniemeyer: did you see the results from my charm testing last night22:58
davecheney9 out of 19 charms worked22:59
niemeyerdavecheney: Woah, I hadn't seen that22:59
davecheneynon failed because of compatability issues between py and go22:59
davecheneyniemeyer: check the logs for ~12 hours ago22:59
davecheneyniemeyer: http://paste.ubuntu.com/1259806/23:03
niemeyerdavecheney: Woah23:04
niemeyerThis is *awesome*23:04
niemeyerdavecheney: Deserves a mail to juju@23:04
davecheneyi don't have it setup on this machine23:05
davecheneyi was going to do a bit more triage on the failing charms23:05
davecheneyniemeyer: https://bugs.launchpad.net/juju-core/+bug/106194123:05
davecheneybug report for aws destroy-environment failure23:05
niemeyerdavecheney: Can you post some more details of the problem there?23:07
niemeyerdavecheney: This is indeed a critical issue23:07
niemeyerdavecheney: and probably easy to solve too23:08
niemeyerdavecheney: There's a private debug flag withing goamz/ec223:08
niemeyerdavecheney: I'm working a bit on multi-config meanwhile23:08
davecheneyniemeyer: ok, i'll rebuild goamz now i have a test case23:14
davecheneyniemeyer: please review the irc logs from yesterday23:16
davecheneyre: the failed charms23:16
niemeyerdavecheney: Can you paste the section you'd like me to look at so I don't have to second guess?23:21
davecheneyniemeyer: http://irclogs.ubuntu.com/2012/10/04/%23juju-dev.html#t11:4823:25
davecheney^ are we missing a command ?23:25
davecheneyhttp://irclogs.ubuntu.com/2012/10/04/%23juju-dev.html#t11:5723:25
davecheney^ dud charm23:25
davecheneyhttp://irclogs.ubuntu.com/2012/10/04/%23juju-dev.html#t11:5923:25
davecheney^ hard coded tools path23:25
davecheneyhttp://irclogs.ubuntu.com/2012/10/04/%23juju-dev.html#t12:0123:26
davecheney^ unhygenic charm23:26
davecheneyand that was as far as I got before I realised destroy-environment wasn't working :)23:26
niemeyerdavecheney: Which command are we missing?23:27
davecheneyis bucket-create a juju command ?23:28
niemeyerdavecheney: It's a bit hard to read it all and guess what you think is going on23:28
davecheneyniemeyer: yeah, i'll do more triage today23:29
niemeyerdavecheney: " /opt/couchbase/bin/couchbase-cli bucket-create"23:29
niemeyerdavecheney: That's couchbase, not juju23:29
davecheneyright, then the tally is 9 out of 19 charms make it to started, non fail because of compatibility between us and py juju23:29
davecheneyniemeyer: http://jujucharms.com/charms/precise23:30
davecheney^ can i get this data in xml/json ?23:30
niemeyerdavecheney: The list of charms?23:31
davecheneyyup23:31
niemeyerdavecheney: Let me see..23:31
davecheneyjust the charm names23:31
davecheneyniemeyer: thank you for your review on http://codereview.appspot.com/6591080/23:37
davecheneyi know it's not the right solution, but it lets me at least have a working deploy23:37
niemeyerdavecheney: np, the interim solution looks good23:38
niemeyerdavecheney: Doesn't corrupt the state, and easy to rollback23:38
davecheneyand it will be fairly obvious for others coming alone later23:39
davecheneyniemeyer: what do you think about adding so documentation to the top level, INSTALL and CONTRIBUTE23:47
davecheneyalso adding a scripts directory for some of the things like the stress test23:47
davecheneyand running gocov will need some scripting support23:47
niemeyerdavecheney: +1 on docs.. for the stress test, I'd prefer for it to have its own code base23:48
davecheneyeven if it's just a bash script ?23:49
niemeyerdavecheney: Okay, that sounds fine to have in23:49
niemeyerdavecheney: Unless the bash script is doing while true; do go test; done23:50
niemeyer;)23:50
davecheneywell, there is a little bit more, where it sets a random GOMAXPROCS23:50

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