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

davecheneylucky(~/charms/raring/gccgo) % juju destroy-service gccgo201:03
davecheneyjuju delucky(~/charms/raring/gccgo) % juju destroy-machine 201:03
davecheneylucky(~/charms/raring/gccgo) % juju destroy-service gccgo201:03
davecheneyjuju delucky(~/charms/raring/gccgo) % juju destroy-machine 201:03
davecheneyjuju sttauserror: no machines were destroyed: machine 2 has unit "gccgo2/0" assigned01:03
davecheneyblarg, thanks asynchrony01:03
davecheneyphase 1. complicated problem01:27
davecheneyphase 2 ....01:27
davecheneyphase 3. gnome shell!01:27
davecheneythis week in silly juju tricks http://dave.cheney.net/2013/09/09/using-juju-to-build-gccgo01:45
davecheneyhas anyone tried compiling juju with gccgo ?02:11
jammorning all05:30
axwmorning jam05:31
jamhey wallyworld_ I'm in whenever you're around05:58
wallyworld_ok05:58
davecheneyaxw: i have an urgent request06:23
davecheney2013-09-09 06:05:37 DEBUG juju.provisioner provisioner_task.go:300 Stopping instances: [0xc2002a1be0 0xc2002a1c10 0xc2002a1c60 0xc2002a1c70 0xc2002a1c80 0xc2002a1cc0 0xc2002a1cd0 0xc2002a1b80 0xc2002a1ba0 0xc2002a1c20 0xc2002a1c50 0xc2002a1c90 0xc2002a1ca0 0xc2002a1cb0 0xc2002a1b60 0xc2002a1b70 0xc2002a1b90 0xc2002a1bb0 0xc2002a1bd0 0xc2002a1c30 0xc2002a1bc0 0xc2002a1bf0 0xc2002a1c40]06:23
davecheney2013-09-09 06:05:38 DEBUG juju.provider.maas environ.go:303 error releasing instance &{0xc20030e870 0xc2002beb40}06:24
davecheney2013-09-09 06:05:38 DEBUG juju.provider.maas environ.go:303 error releasing instance &{0xc20030e8a0 0xc2002beb40}06:24
davecheney2013-09-09 06:05:38 DEBUG juju.provider.maas environ.go:303 error releasing instance &{0xc20030e960 0xc2002beb40}06:24
davecheney^ can you pease figure out what type this is in gomaasapi and add a String() method too it06:24
axwok06:24
davecheneyaxw: thanks06:24
davecheneysorry, that i haven't raised a bug06:25
davecheneythis has been an all day job to get to this point06:25
davecheneyaxw: if you raise a bug for it06:25
davecheneyplease mark it critical for 1.14.006:25
wallyworld_jam: you froze?06:26
axwdavecheney: https://bugs.launchpad.net/juju-core/+bug/122266406:34
_mup_Bug #1222664: maas provider's instance is not a Stringer <juju-core:New> <https://launchpad.net/bugs/1222664>06:34
bigjoolsshould call them Peters06:34
davecheneyaxw: ta06:36
davecheneythat'll make life easier06:36
davecheneyaxw: thanks for the quick turnaround, just checking with bigjools to make sure id() is good enough06:49
axwdavecheney: ok06:49
bigjoolsit is06:49
davecheneysweet06:50
bigjoolsID and hostname is better.  typing this in two channels. ..06:51
axwyeah ok, that would be useful I guess06:51
axwI'll add it in06:51
davecheneyaxw: thanks06:52
davecheneyi know it's double underpants06:52
davecheneybut it cost 2 man days to figure this out06:52
davecheneyactually more06:53
davecheneyat least 4 people were involved06:53
axwbigjools: is it possible for an instance's MAAS object to not have a hostname? I assume not...06:56
axw(I need to justify a panic)06:56
bigjoolsaxw: impossible06:57
bigjools(famous last words)06:57
axw:)06:57
axwthanks06:57
davecheneyi give that a week before we revert that06:57
davecheneyhttps://bugs.launchpad.net/gomaasapi/+bug/122267106:58
axwdavecheney: alternatively I can encode the error in place of the hostname?06:58
_mup_Bug #1222671: maas provider must only attempt to stop machines it owns <Go MAAS API Library:New> <https://launchpad.net/bugs/1222671>06:58
davecheneyaxw: that would be better, just put UNKNOWN or something06:58
davecheneyi know that in ec2 you can have an instance without a hostname06:58
davecheneyfor short periods06:58
rogpeppe1mornin' all!07:26
axwhey rogpeppe107:31
rogpeppe1axw: hiya07:31
dimiternrogpeppe1: hey, welcome back!08:43
rogpeppe1dimitern: yo!08:43
dimiternrogpeppe1: good holiday?08:43
rogpeppe1dimitern: great thanks; just about recovered now :-)08:43
dimiternrogpeppe1: good :)08:43
dimiternrogpeppe1: we have a complete uniter api - finished off the client-side last week08:44
rogpeppe1dimitern: fantastic!08:44
dimiternrogpeppe1: now on to the actual uniter migration from state to the api08:44
rogpeppe1dimitern: BTW, interesting tidbit from my hols - my cousin was staying with us and her partner (also there) is product manager for a significant sized startup; i found out they were doing the whole thing in Go.08:46
rogpeppe1dimitern: which was a nice surprise08:46
dimiternrogpeppe1: nice! what's the product?08:47
rogpeppe1dimitern: i think it might be https://hailocab.com/08:47
dimiternrogpeppe1: even the iphone apps? :)08:47
rogpeppe1dimitern: naah, just the back end08:48
rogpeppe1dimitern: my cousin herself is in charge of migrating the BBC to use cloud services for scaling; i tried to get in a word for juju...08:48
dimiternrogpeppe1: sweet! did she seemed interested?08:49
rogpeppe1dimitern: i'm not sure it really fits their goals08:50
dimiternrogpeppe1: how so?08:50
rogpeppe1dimitern: i don't think we're mature enough for them to consider yet08:51
dimiternrogpeppe1: ah, well we'll get there08:52
dimiternrogpeppe1: a trivial review? https://codereview.appspot.com/13292044/09:25
rogpeppe1dimitern: looking09:25
rogpeppe1dimitern: LGTM09:26
dimiternrogpeppe1: cheers09:26
dimiternfwereade: ping09:35
dimiternrogpeppe1: how do you feel about having an api call taking a relation id and returning a uniter.Relation proxy? we already migrated to using relation tags as "relation-svc1.rel1#svc2.rel2", but relations are special in that we cannot convert between id and tag without a state call09:51
dimiternrogpeppe1: now we have a Relation API call taking a tag and returning the proxy09:52
rogpeppe1dimitern: what would the API call actually do?09:52
dimiternrogpeppe1: it will take an int relation id and return the same as Relation() currently returns09:53
dimiternrogpeppe1: params.RelationResults09:53
rogpeppe1dimitern: oh of course. that seems... reasonable at first glance09:53
rogpeppe1dimitern: what needs to do that operation?09:54
dimiternrogpeppe1: what bugs me is we decided to always use tags over the wire09:54
rogpeppe1dimitern: (the mapping from relation id to relation tag, that is)09:54
dimiternrogpeppe1: but not doing that and instead refactoring a big chunk of the uniter to always use tags seems costlier09:54
dimiternrogpeppe1: uniter:401 and uniter09:54
dimitern:44609:54
dimiternrogpeppe1: it's when it loads or updates the local relations disk cache09:55
fwereadedimitern, pong09:55
dimiternfwereade: hey09:55
fwereadedimitern, hey dude09:55
dimiternfwereade: take a look a bit up^^09:55
rogpeppe1dimitern: presumably the local disk cache could record the relation tag too... but then it would be backwardly incompatible i guess09:56
fwereadedimitern, I'm with rogpeppe109:56
fwereadedimitern, cache it locally09:56
dimiternfwereade: where?09:56
fwereadedimitern, it's unchanging, and I think constructed from info that's guaranteed to be available09:56
fwereadedimitern, inside the relation state dir09:57
rogpeppe1fwereade: what about upgrading?09:57
rogpeppe1fwereade: good morning, BTW09:57
fwereaderogpeppe1, heya :)09:57
dimiternfwereade: so add RelationTag as a field to hook.Info and StateDir ?09:58
dimiternfwereade: and yeah - what about upgrading?09:58
fwereadedimitern, I hadn't been originally thinking on hook.Info09:59
fwereadedimitern, I had been imagining that the conversion to id would take place before then09:59
dimiternfwereade: ah09:59
fwereadedimitern, doesn't a hook queue get constructed with a state dir? or is it just the idealized contents of one?09:59
dimiternfwereade: well, if we have a RelationById() API call it'll solve all this09:59
fwereadedimitern, yeah, guess so, but it feels kinda ludicrous10:00
fwereadedimitern, that said go with it10:00
dimiternfwereade: it is kinda, but the relations are a special case10:00
dimiternfwereade: ok then, will do10:00
fwereadedimitern, yeah, they're somewhat unhelpfully shaped by the relationy-bits architecture in uniter I'm afraid10:01
fwereadedimitern, we shall iterate as we can10:01
fwereadesorry bbiab contract thingy10:01
dimiternrogpeppe1: and there it is https://codereview.appspot.com/13238046/10:40
rogpeppe1dimitern: looking10:40
dimiternrogpeppe1: btw we changed the standup time to be in 5m from now, 45m earlier10:40
rogpeppe1dimitern: ah, good to know, thanks10:40
dimiternrogpeppe1: I have a feeling you won't like the fact getting relations involves 2 server calls, but I'm happy to discuss that and possibly do a follow up that doesn't do that10:45
jamstandup time everyone: https://plus.google.com/hangouts/_/fe0782db82ad005f124b51fd3035bf811cb05e5d10:45
rogpeppe1dimitern: you're psychic :-)10:45
jamdimitern, rogpeppe1, fwereade ^^10:45
rogpeppe1dimitern: was just writing comment to that effect10:45
dimiternrogpeppe1: which involves not using LifeGetter for relations as well10:45
dimiternrogpeppe1: and changing both Relation() and RelationById()10:47
wallyworld_jam: since you asked :-) https://codereview.appspot.com/13619043/11:23
jamfwereade: can I get a quick chat with you about HTTPS access?11:29
fwereadejam, ofc11:29
jamfwereade: https://plus.google.com/hangouts/_/50214d40bcd2c952197a41169820a83b41457d6b11:30
dimiternrogpeppe1: updated https://codereview.appspot.com/13238046/12:17
dimiternrogpeppe1: thnaks for the review btw12:17
rogpeppe1dimitern: responded12:28
dimiternrogpeppe1: so what's your suggestion?12:29
dimiternrogpeppe1: I'd like not to change state.Endpoint if possible12:29
dimiternrogpeppe1: better comment?12:29
rogpeppe1dimitern: perhaps a comment in both state.Endpoint (to say it can only fail if the endpoint isn't found) and in getOneRelationById (to say why ErrPerm is appropriate) ?12:30
dimiternrogpeppe1: ok, will do12:31
dimiternrogpeppe1: btw there's already a comment like this: state/relation.go:23212:38
dimiternrogpeppe1: so I'll just edit the comment in prepareRelationResult12:38
rogpeppe1dimitern: good point. yeah, that seems ok12:38
dimiternrogpeppe1: updated again https://codereview.appspot.com/13238046/ - is it good to land now?12:44
rogpeppe1dimitern: yes, but without the "most likely" qualifier - the logic is only correct if that's the only possibility12:45
dimiternrogpeppe1: "most likely" means the state connection might have dropped12:46
dimiternrogpeppe1: i.e. unrelated connection error12:46
rogpeppe1dimitern: if that's a possibility (it is not currently) then the logic is wrong12:46
dimiternrogpeppe1: ok, will drop the most likely then12:46
rogpeppe1dimitern: the point is that we *never* want to mask state connection errors12:47
dimiternrogpeppe1: even when not authorized in the first place?12:48
dimiternrogpeppe1: and here's the follow-up https://codereview.appspot.com/1351104412:49
rogpeppe1dimitern: if it wasn't authorized, we either know that (in which case we should already have returned ErrPerm) or we don't, in which case we need to return the connection error, because it might be a legitimate request and we can't tell because of the connection problem.12:49
dimiternrogpeppe1: ok12:50
dimiternrogpeppe1: so then LGTM -"most likely" ? :)12:55
rogpeppe1dimitern: yeah12:55
dimiternrogpeppe1: thanks12:56
dimiternrogpeppe1: and the other CL - does it look ok?12:56
rogpeppe1dimitern: just looking12:56
dimiternrogpeppe1: thanks again - updated https://codereview.appspot.com/13511044/13:06
rogpeppe1dimitern: hmm, i don't quite see why we're making Life not work on relations any more13:10
dimiternrogpeppe1: we don't need it13:11
dimiternrogpeppe1: we have Relation() and RelationById() that returns life13:11
rogpeppe1dimitern: i guess that's reasonable, though it seems like an arbitrary restriction when the Life call works on all the other kinds of entities that have a Life13:12
rogpeppe1dimitern: i suppose it depends whether we're trying to think of the API as something coherent in itself, rather than just an exact mirror of the agents' requirements13:13
dimiternrogpeppe1: relations are different from all other entities13:13
dimiternrogpeppe1: I don't see why we can't balance both13:13
dimiternrogpeppe1: coherency and agents' requirements13:14
rogpeppe1dimitern: all entities are different from each other :-)13:14
dimiternrogpeppe1: yes, but relations have 2 identifiers which are not convertable between each other without accessing state13:15
rogpeppe1dimitern: i don't really mind (and it's less code, which is always good) but i'm not quite sure why relations are different in this particular case.13:15
dimiternrogpeppe1: well, i this particular case i chose less code, yes13:16
rogpeppe1dimitern: fair enough13:16
=== marcoceppi_ is now known as marcoceppi
dimiternrogpeppe1: so LGTM then? :)13:26
rogpeppe1dimitern: yup13:28
dimiternrogpeppe1: cheers13:29
=== hazmat` is now known as hazmat
rogpeppe1is there a currently a juju command that lists the available tools?15:29
rogpeppe1ha, i've just discovered that once you've used --upload-tools once, you can never go back.15:32
rogpeppe1i know why we implemented that logic, but it still seems a bit dubious15:32
mgzhow never is never?15:33
mgzjust deleting the bucket manually should do, shouldn't it?15:34
rogpeppe1mgz: yeah, probably, although you can't do that with juju itself, and deleting tools that are currently being used seems dubious itself.16:53
=== flaviamissi is now known as flavia_
=== flavia_ is now known as flaviamissi
* thumper waves22:47
davecheneyi love how even looking vaguely at the logging output from cmd/juju makes a raft of unrelated tests fail23:40
davecheneyOI!23:44
davecheneywhat the frack has haapened to bootstrapo23:44
davecheneyhttp://paste.ubuntu.com/6085693/23:44
davecheneywhy did it suddenly start doing that23:45
wallyworld_thumper: how was the weekend away?23:46
wallyworld_davecheney: which bit about bootstrap?23:46
bigjoolsThe MAAS integration tests currently use pyjuju.  Should we switch them to use gojuju yet?23:47
wallyworld_WCPGW?23:47
bigjoolsyou sound confident23:47
wallyworld_do the tests use tags?23:47
bigjoolsdon't think so23:48
bigjoolsit bootstraps and deploys a couple of charms23:48
wallyworld_in that case, it would be interesting to see how it goes23:48
bigjoolsit would23:49

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