/srv/irclogs.ubuntu.com/2014/11/05/#juju-dev.txt

wallyworld_perrito666: from argentina, the electrons have so much further to go, and they get tred and need at rest in miami00:00
perrito666that must be it, or the fact that the country has only one freaking connection to the outside world00:01
perrito666it is a shame that when I am in countries with good internet Is always countries where bittorrent is illegal00:02
wallyworld_it's illegal here too, doesn't stop me00:02
perrito666wallyworld_: its legal in argentina00:03
wallyworld_and in holland, it's not illegal to download, only upload00:03
perrito666wallyworld_: for what I heard in France is "we send you the police" illegal00:03
bigjoolsbt is illegal???00:03
wallyworld_perrito666: you serious??? wtf00:03
bigjoolsit's illegal to download pirated stuff but not illegal to use00:04
perrito666bigjools: yeah that is what I meant00:04
katcothese countries give bt a 1:1 with pirating? that is rediculous...00:12
perrito666nono I meant bt for things like movies00:14
perrito666the fun thing is, I actually have an account in a digital movies service :p I just dont know my creds00:14
perrito666It comes with my internet+cable subscription00:15
bigjoolswell there's better places to get this stuff than BT nowadays *cough*00:15
* perrito666 sms his wife to get the creds for his service00:17
katcowallyworld_: does juju have a concept of in-memory services (overloaded term: not juju services, but a SoA service) i could reference?00:18
katcowallyworld_: i want to have only 1 instance of the lease manager running00:19
wallyworld_katco: we sorta do that using a worker00:19
wallyworld_the state server starts named workers00:19
wallyworld_each worker can host a service00:20
katcowallyworld_: is that pattern worth repeating?00:20
wallyworld_yes, it's what we use right at the moment00:20
katcowallyworld_: cool, ty sir. maas00:20
wallyworld_np. it fits with current practice, and works00:20
bigjoolskatco: ping00:20
katcobigjools: hey, how can i help you?00:21
bigjoolskatco: unping00:21
wallyworld_the service can be written indeoendent of the worker00:21
bigjoolsoops :)00:21
katcolol00:21
wallyworld_the worker glues the service into the state server00:21
wallyworld_katco: just say MAAS to get him back00:21
katcobigjools: you have a very maas day :)00:21
wallyworld_lol00:21
bigjools /ignore wallyworld_00:22
katcowallyworld_: ah ok. b/c the apiserver instantiates a new object for every api call, i need to get a singleton of some sort at init time00:22
wallyworld_katco: that's the remoting layer00:23
katcowallyworld_: because i think we want the leasing service to handle synchronization in memory00:23
wallyworld_and yes, i disagree with that implementation. but think of it like a session00:23
katcowallyworld_: right, it's the remoting layer. but at the time the leadership remote layer gets instantiated, it has to know about the single lease service00:24
wallyworld_the service should be stateless, so it could instantiate a new lease service fascade. or else rely on the fact that a lease service work (only one) has been run00:25
wallyworld_maybe easier to discuss face-face00:26
katcowallyworld_: since the ctor requires a specific signature, i'm going to use a closure to make it a bit more clear where the lease service reference is coming from00:27
katcowallyworld_: yeah probably, maybe at the stand-up00:27
wallyworld_ok00:27
katcowallyworld_: or actually i have time now, daughter just being put to bed00:27
katcowallyworld_: if you're free00:27
wallyworld_sure, let's meet in standup hangout00:28
katcookie doke00:28
katcothat sounds maas to me00:28
katcoi mean nice. nice to me.00:28
bigjools /ignore katco00:33
=== arosales_ is now known as arosales
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
perrito666ericsnow: ok, I got rid of finish restore :)01:20
perrito666tomorrow preparerestore01:20
perrito666but for now sleep01:20
ericsnowperrito666: sweet!01:20
perrito666its 2am here01:20
ericsnowperrito666: sleep!01:21
=== kadams54 is now known as kadams54-away
ericsnowmenn0: could you take one more look at http://reviews.vapour.ws/r/268/?02:14
ericsnowmenn0: I've addressed all review feedback02:14
ericsnowmenn0: it should be good to go02:14
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
menn0ericsnow: ok will do. but not for an hour or so.02:22
ericsnowmenn0: no worries02:22
ericsnowmenn0: I'm probably EOD pretty soon so no hurry02:22
menn0ericsnow: kk02:22
=== kadams54 is now known as kadams54-away
wallyworldfwereade: got a few minutes?07:06
=== liam_ is now known as Guest91925
fwereadewallyworld, heyhey08:13
wallyworldfwereade: hi, i would love to check a few things regarding the health status spec, but dinner is almost ready, can i ping you soon?08:14
fwereadewallyworld, ofc08:14
wallyworldta, will get back to you08:14
wallyworldfwereade: ok to talk now? 1:1 hangout08:40
fwereadewallyworld, with you in a minute08:42
wallyworldno hurry08:42
fwereadewallyworld, can you hear me?08:54
fwereadewallyworld, Iguess not08:54
fwereadewallyworld, endpoint: --waiting-for=db08:54
wallyworldno08:54
wallyworldsound died08:54
fwereadewallyworld, relation: --waiting-for=db:308:54
fwereadewallyworld, unit: --waiting-for=db:3:mysql/208:55
fwereadewallyworld, rejoining08:55
jamfwereade: wallyworld: are you guys in a hangout about the "juju status" doc? (I see editing going on while I'm commenting)09:09
fwereadejam, just finished09:09
wallyworldjam: we were, but fwereade has a sucky connection09:09
fwereadejam, my hangout keeps dying :/09:09
mattywmorning all09:12
voidspacehey guys, IS have a problem with juju in #is-outage09:27
voidspacethis is the error they have https://pastebin.canonical.com/119944/09:28
voidspacedo we still redirect (and throw away) mongo logging?09:28
rogpeppefwereade: fancy having a look at this, touching on some of what we chatted about yesterday? https://github.com/juju/charm/pull/7309:37
dimiternanyone available for a review on http://reviews.vapour.ws/r/349/ ?09:37
voidspacedimitern: jam: you ever seen this mongo error (or similar)?09:38
voidspaceWed Nov  5 09:13:37.209 Error: DBClientBase::findN: transport error: 127.0.0.1:37017 ns: admin.$cmd query: { whatsmyuri: 1 } at src/mongo/shell/mongo.js:14709:38
fwereaderogpeppe, based on the description I have no problem with that09:38
dimiternvoidspace, nope :/09:38
jamvoidspace: I have not09:38
fwereaderogpeppe, gonna be a beast to integrate it with core though09:39
rogpeppefwereade: i don't think so09:39
voidspacedimitern: jam: IS have lots of mongo timeouts on a production server09:39
rogpeppefwereade: i've actually already made the changes09:39
fwereaderogpeppe, sweet09:39
rogpeppefwereade: the first step is just to copy the entire repo into juju code (inside github.com/juju/juju/testing/charm-repo09:39
rogpeppe)09:39
fwereaderogpeppe, heh, that makes it easier then ;p09:40
jamfwereade: wallyworld: "what is the "mroe subt" in the title" ?09:40
rogpeppefwereade: then change all tests to use testing.Charms rather than charmtesting.Charms09:40
voidspacedimitern: jam: restarting the  the jujud-machine-0 service seems to have helped a bit anyway09:40
jamwallyworld: also, can we call the document something other than "Juju Status"? Since that is a thing that we have which is not this ?09:40
rogpeppefwereade: subsequent changes can trim down the repo and make extra repos where appropriate09:40
rogpeppefwereade: the salient changes in that PR are right at the end, BTW09:40
fwereadejam, heh, I think it's some mistargeted typing09:40
dimiternvoidspace, hmm.. it looks like a heavy load issue09:41
fwereadejam, maybe mine09:41
wallyworldjam: yeah fixed, cursor fail09:41
jamthanks09:41
jamwallyworld: "Juju Charm Status" comes to mind09:41
voidspacedimitern: thanks, they're happy (well, less unhappy) for the moment09:42
wallyworldsure09:42
rogpeppefwereade: i haven't got all tests compiling yet though - the main obstacle is finding a decent pair of identifiers when importing both github.com/juju/juju/testing and github.com/juju/juju/juju/testing :)09:42
* fwereade twitches gently09:42
rogpeppeperhaps coretesting and jujutesting, but i'm not that happy about that09:43
dimiternjujujujutesting and jujutesting - what's wrong with these :D09:43
dimiterncoretesting and corejujutesting09:43
dimiterneven better :)09:43
rogpeppedimitern: "core" isn't really a thing any more09:43
dimiternjuE3testing ?09:44
rogpeppedimitern: it would've worked if it was github.com/juju/juju-core09:44
dimiternrogpeppe, heh, sorry - I'm just happy all my tests pass finally :)09:44
rogpeppedimitern: cool09:44
rogpeppedimitern: are commits still blocked on critical bugs, BTW?09:45
dimiternrogpeppe, according to my handy bookmarklet, no: https://bugs.launchpad.net/juju-core/+bugs?field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.importance%3Alist=CRITICAL&field.tag=ci+regression+&field.tags_combinator=ALL09:45
* rogpeppe thinks that when the critical bugs are fixed, the 'bot should go through all the PRs it denied because of that, and retry them09:45
rogpeppedimitern: thanks09:46
rogpeppedimitern: ha, i tried to bookmark that, and discovered that not only had i bookmarked it, it was on my bookmarks bar as "juju-core blocks"!09:47
dimiternrogpeppe, hehe, I assume you'r using firefox then09:47
rogpeppedimitern: nope, chrome09:47
dimiternrogpeppe, ah, sorry chrome has this now as well yeah09:48
jamwallyworld: so I made a bunch of comments, but I hope they feel constructive rather than critical. The only thing I'm actually concerned about is that we poll to find the current status, when to be useful it needs to be more "lively" than that.09:49
jam(my service is down, wtf is wrong, "juju status", nope everything is ok for 5 more minutes until we wake up to check)09:50
TheMuemorning09:50
jammorning TheMue09:50
wallyworldjam: i think they are constructive, thank you. i didn't interpret as critical. i'd rather answer many questions and make a better spec. the charm calls status-set in a hook, so i'm not sure of a way other than polling where a status can be communicated, once the charm is up and running09:52
jamfwereade: wallyworld: I'd like william's input here, maybe "juju-run" is the escape hatch? But I do think we need a way that essentially a running application (postgres) can trigger data being sent to the Juju API server.09:53
wallyworldbbiab, dessert time09:53
jamwallyworld: sounds yummy09:53
voidspacedimitern: so, my final conclusion was that testing AssignPrivateIPAddresses with the mock server is not possible (in any useful way)09:54
voidspacedimitern: so I'm mocking it09:54
dimiternvoidspace, because of the needed changes to RunInstances ?09:55
voidspacedimitern: no, I got past that09:55
voidspacedimitern: setting a mock server default-vpc as an initial parameter adds a network interface09:55
voidspacedimitern: but with the mock server you can't get it to simulate error conditions09:55
dimiternvoidspace, yeah?09:55
dimiternvoidspace, for IPLimitReached etc ?09:56
voidspacedimitern: correct, or address already assigned09:56
voidspacedimitern: I've looked through the code09:56
voidspacedimitern: and when it does work, you can't test what it did - because I don't have access to the EC2 instance to fetch the network interface back09:57
voidspacedimitern: and it doesn't show on the Instance which I can reach via the mock server09:57
dimiternvoidspace, ok, so for now mocking is fine, and later we can extend the test server in goamz to reply as needed to allow better testing09:57
voidspacedimitern: right09:58
jamvoidspace: dimitern: is there a reason to start with mocking rather than start with extending?09:59
jamIt feels like if we want to do is have it in the goamz test server09:59
jamthen we're doing extra work by also doing it via mocking09:59
voidspacejam: well, we can make the error conditions testable - but with a black box test it still seems hard to test the happy path09:59
voidspacejam: although that maybe just that I haven't found the right "trick"10:00
voidspacejam: what the call to ec2Inst.AssignPrivateIPAddresses should do is add the requested IP to the NIC10:00
voidspacejam: to get the NIC back I need access from the test to an authenticated EC2 instance to fetch the network interface10:00
voidspacejam: and the auth credentials are buried10:00
jamvoidspace: doesn't that just mean that it records it enough such that listing it shows the IP?10:00
dimiternjam, voidspace, considering we don't really implement yet the subnet range tracking of IPs, mocking it for now and extending goamz later seems a good step10:00
voidspacejam: "listing it" is the issue10:01
jamvoidspace: dimitern: standup10:01
jamdidn't mean that to sound quite so much like an order :)10:01
voidspace:-)10:01
voidspacebut it is10:01
voidspace;-)10:01
jamvoidspace: would you like to join us in the standup hangout now ?10:01
jam:)10:01
fwereadejam, wallyworld: yeah, I see juju-run as the way the system can feed backinto itself10:06
wallyworldfwereade: isn't juju-run being deprecated for actions?10:08
jamfwereade: wallyworld: is it just that we add that as a discussion point in the spec? Should we try to encourage use of that instead of polling ?10:08
fwereadewallyworld, jam: "juju run" may well be10:09
wallyworldpolling is a safety net so to speak10:09
fwereadewallyworld, jam: "juju-run" is not going anywhere10:10
jamwallyworld: sure, but it gives us a much better "what should the polling rate be?" its just a backstop, and the actual event based triggers is via a different mechanism that triggers immediately.10:10
jamfwereade: and fwiw, I don't see "juju run" as an ad hoc do-some-stuff that I need right now, ever going away.10:10
fwereadejam, indeed10:11
fwereadejam, although I would still rather consider it to be a shortcut to invoking an implicit action10:11
fwereadejam, but I know that's some way away10:11
fwereadejam, wallyworld: far more important is how we actually execute juju-run stuff anyway10:12
wallyworldjam: fwereade: given juju-run executes in a context (I think), would it be "juju run status-set busy" or something?10:12
fwereadewallyworld, yeah, that should do it10:12
jamwallyworld: well, to be clear "juju run" is the user/client command10:12
fwereadejam, good point10:13
jam"juju-run" is a binary on the machine that is invoked in response to "juju run" via the API server, etc.10:13
jamthat potentially processes on that machine can also use10:13
jamwallyworld: the fact that it is confusing is partly why we should clearly document it :)10:13
wallyworldyes, i've not got a handle on what the charms would do. is there a juju run charm helper? or woud the charm just shell out and run "juju run blah"?10:14
jamwallyworld: there is no ".jenv" file on the machines for "juju" the CLI to use10:14
wallyworldor should i say jujud somthing10:14
jamso you have to use this other thing that is almost-the-same10:14
fwereadewallyworld, "juju-run"10:14
fwereadejam, wallyworld: and fwiw "juju-run" was always meant to be a purely charm-side tool10:16
fwereadejam, wallyworld: "juju run" was an outgrowth of that, and not a *particularly* necessary or helpful one, given the existence of "juju ssh"10:17
wallyworldjam: agree about documenting things from a charmer's perspective, but i see that as subtley different to this requirements doc10:17
fwereadejam, wallyworld: but people seem to like it, however hard it fucks with reproducibility of deployments10:17
jamwallyworld: so the thing is, I see "status" as needing an immediate mode, and part of the doc is describing how status is going to work10:17
jamwallyworld: so if the way to do immediate mode is "use juju-run" then it should be part of the doc (IMO)10:17
jamits not so much telling them how to write their code, but how they can get something done10:18
wallyworldjam: sure, ok. i saw the doc as describing what work needed to be done, and user doc would also come too, but perhaps separately, but i'll add it10:18
wallyworldif nothing else, will make everything unambiguously clear, and make user doc easy10:20
rogpeppefwereade: any chance of a LGTM on https://github.com/juju/charm/pull/73 ? (we need two reviews)10:34
fwereaderogpeppe, done, sorry, saw the existing one and moved on10:34
rogpeppefwereade: thanks10:35
wallyworldjam: fwereade: i've added some comments to the status spec, need to do some editing, will revisit tomorrow11:14
jamthanks wallyworld11:14
wallyworldnp, thanks for detailed review11:15
rogpeppefwereade, anyone else: this is the logical follow-on from the charm package change above: https://github.com/juju/juju/pull/104811:19
rogpeppelarge but mechanical11:19
rogpeppemattyw: this is relevant for you too11:21
mattywrogpeppe, thanks very much11:21
mattywrogpeppe, I'm also ocr today so I guess it's relevant twice :)11:21
rogpeppemattyw: cool11:21
dimiternmattyw, hey, as OCR would you take a look at http://reviews.vapour.ws/r/349/ please?11:54
mattywrogpeppe, couple of things from me on https://github.com/juju/juju/pull/104811:54
rogpeppemattyw: ta11:54
mattywdimitern, don't worry - that is on my list - I started looking but decided I'd need to wake up a bit more first ;)11:55
dimiternmattyw, cheers :)11:55
rogpeppemattyw: the repo is an exact (cp -r) copy of the repo from the charm.v4 repo. i'd prefer to keep it like that, rather than randomly applying changes at this point, because it's good to keep such a large PR as mechanical as possible IMHO11:56
mattywrogpeppe, I understand that. If you think those changes are valid can you do them in a follow up - or at least add a bug/ task somewhere so someone else can pick them up11:57
rogpeppemattyw: hopefully a bunch of the testing charms can be deleted or moved into repos for specific packages11:58
rogpeppemattyw: are juju-core bugs still being tracked in launchpad?11:59
mattywrogpeppe, afaik yes11:59
natefinchrogpeppe: yes12:04
voidspacedimitern: http://reviews.vapour.ws/r/351/diff/#12:12
voidspacedimitern: if you have time12:12
voidspacedimitern: bike shedding on error names welcomed12:12
rogpeppemattyw: responded12:13
dimiternvoidspace, already looking :)12:13
natefinchvoidspace: I voted for my color12:14
rogpeppevoidspace: FWIW, error values should always be prefixed with "Err"12:14
voidspacerogpeppe: thanks12:14
natefinchrogpeppe: that was the color I preferred as well ;)12:14
rogpeppevoidspace: and aren't capitalised12:14
rogpeppevoidspace: (the error text, that is)12:15
voidspacerogpeppe: ok, cool12:15
voidspaceI thought you meant the names weren't capitalised, which seemed odd12:15
rogpeppevoidspace: also, when specific errors are returned, they should be compared with == (or gc.Equals) not DeepEquals12:16
voidspacerogpeppe: cool, I wasn't sure12:17
rogpeppevoidspace: and it's worth comparing with c.Assert(errors.Cause(err), gc.Equals, ErrFoo) so that the errors can be wrapped if desired12:17
voidspacerogpeppe: we won't wrap here as they'll be used by the next level up to construct a user facing error12:18
voidspacerogpeppe: should I / can I use errors.Cause anyway?12:18
rogpeppevoidspace: nonetheless, it's a good general policy - you might wrap inside the implementation itself12:18
rogpeppevoidspace: yeah, i think so12:18
voidspacekk12:18
voidspacechanges maded12:22
voidspace*made12:22
voidspacenatefinch: I don't like your colour12:23
natefinchvoidspace: that's because you put a u in it ;)12:23
voidspacenatefinch: which only improves it12:23
natefinchvoidspace: but does it improuve it?12:24
voidspacenatefinch: only12:24
voidspacenatefinch: I mean, if you want consistency in your language it should be culor or even kulor12:25
natefinchvoidspace: sounds double plus good12:25
voidspace:-)12:25
natefinchvoidspace: not to double up on the paint job, but is "address" really needed in those names?  Pretty sure we know we're not talking about intellectual property :)12:26
dimiternvoidspace, reviewed12:26
voidspacenatefinch: hmmm... I tend to talk about IP addresses and less so IPs12:27
voidspacenatefinch: but I don't care overly12:27
voidspacedimitern: thanks12:28
voidspacedimitern: why test with empty address?12:28
voidspacedimitern: we're unlikely to call it with an empty address - and do you want parameter checking inside our implementation12:29
voidspacedimitern: and if we'll rely on ec2 parameter checking, it isn't actually a different case12:29
dimiternvoidspace, 1) because it can happen, and the code doesn't seem to handle this; 2) as a reminder if we change the behavior later12:29
voidspacedimitern: we'll get back InvalidParameterValue12:29
voidspacedimitern: which we do handle12:29
voidspacedimitern: which is why I say I don't think that's a different case12:30
dimiternvoidspace, hmm, that's true yeah - the test server doesn't handle this, but it will12:30
voidspacedimitern: I can duplicate the test if you think it's important12:30
dimiternvoidspace, well, at least add a test case for empty address inside the test for ErrIPAddressUnavailable12:31
voidspaceok12:31
dimiternvoidspace, thanks!12:33
voidspaceso I have a return nil erroneously in the code - meaning it can't work12:36
voidspacebut the tests checking it does work (exercising the unreachable return below) pass!12:37
voidspaceand those tests are definitely being run12:38
voidspaceah no12:38
voidspaceit's a remnant of old code and the second return is unneeded12:38
voidspacedimitern: rogpeppe: "in two sentence" error messages you wouldn't capitalise the second sentence?12:42
rogpeppevoidspace: for example?12:42
voidspacedimitern: rogpeppe: as in "unexpected AWS response. instance not found" rather than "... Instance not found."12:42
rogpeppevoidspace: we wouldn't usually use a full stop, but a colon12:42
voidspacerogpeppe: that avoids the problem12:43
rogpeppevoidspace: unexpected AWS response: instance not found12:43
voidspaceyou know your approach is basically sound when all the review comments are about the wording of your error messages ;-)12:46
voidspace(not quite all to be fair)12:46
voidspacenatefinch: Errorf without formatting passes go vet fine12:47
voidspacenatefinch: I'm happy to switch to errors.New anyway12:47
voidspacenatefinch: go vet runs as a pre-push hook12:47
voidspacedimitern: network.NewAddress is worse because I have to pass a Scope12:49
voidspacedimitern: so I replace network.Address{Value:"foo"} with network.NewAddress("foo", network.ScopeUnknown)12:50
voidspacedimitern: which I can do12:50
dimiternvoidspace, ah, fair point12:53
rogpeppemattyw: does PR #1048 look ok to you now?12:59
rogpeppemattyw: (i'd like to land it soon if possible, before it becomes conflicted)13:00
mattywrogpeppe, good call, looking again13:00
mattywrogpeppe, did you rebase it down to 1 commit?13:02
rogpeppemattyw: yes13:02
rogpeppemattyw: was that bad?13:02
voidspacedimitern: so I've fixed everything from the reviews except your suggestion to add the ip address and instance id to the error  messages13:03
voidspacedimitern: my reasoning was that this information is known to the caller, so they can annotate the error if needed13:03
voidspacedimitern: I'm happy to add it there if you prefer13:03
mattywrogpeppe, not normally, but it means I have to look through the whole thing again to see what you changed :)13:04
mattywrogpeppe, seems like it was the package docs and that's it13:04
rogpeppemattyw: i changed just the comment13:04
rogpeppemattyw: yeah13:04
dimiternvoidspace, my reasoning was - this will end up in the log file at some point, so let's make it comprehensive13:04
voidspacedimitern: ok, I'll add it13:04
dimiternvoidspace, thanks! I'll have another look13:04
mattywrogpeppe, and you raised lp:138965613:05
rogpeppemattyw: yes13:05
mattywso instead of printing a nice message about my bug number mup decides to leave - trying not to take it personal13:06
voidspacedimitern: done and pushed13:07
mattywrogpeppe, lgtm, land at your convenience13:08
rogpeppemattyw: ta!13:08
mattywashipika, did you get your prs and reviews sorted?13:08
ashipikamattyw: editing code.. will submit a bit later..13:09
ashipikamattyw:  fwereade had some useful comments.. as always13:09
dimiternvoidspace, lgtm13:10
voidspacedimitern: cool13:13
voidspacedimitern: after lunch I'll look at goamz test server13:14
dimiternvoidspace, awesome!13:14
rogpeppei'm presuming that this juju-core test failure is just "one of those things" http://juju-ci.vapour.ws:8080/job/github-merge-juju/1192/console13:26
rogpeppenatefinch: have you seen that failure mode?13:26
rogpeppefwereade: this is what i'm thinking of for the in-memory charm testing stuff: http://paste.ubuntu.com/8836186/14:14
rogpeppefwereade: that would be defined in charm.v4/testing14:15
rogpeppefwereade: there could be additional constructors if desired, to make charms with more easily specified relations or whatever14:16
rogpeppefwereade: or additional fields in the CharmSpec struct as desired14:16
rogpeppebodie_: ^14:23
rogpeppecan someone please fix the landing 'bot please; i'm seeing "write error: No space left on device"14:27
rogpeppemgz: ^14:27
rogpeppehttp://juju-ci.vapour.ws:8080/job/github-merge-juju/1194/console14:27
natefinchrogpeppe: sorry was away14:34
fwereaderogpeppe, that works for me I think14:38
sinzuinatefinch, perrito666: I don't know how to verify that the win-agents in streams are good. I hoped I could use add-machine to manually provision a windows instance to verify the machine agent was installed and it called home14:53
TheMuedimitern: thanks for explanations14:56
ericsnowperrito666: FYI, I think I've covered your entire restore patch at a high level now :)15:04
wwitzel3ericsnow: no tosca call today, so standup? :)15:05
perrito666ericsnow: is findfile landed? I am already using it :p15:40
ericsnowperrito666: working on it15:40
natefinchsinzui: I would hope that add-machine would work15:45
sinzuinatefinch, consider that add-machine wants ssh. I happen to have an win image with ssh, but even that failed15:46
natefinchsinzui: ahh hmm  yes15:49
rogpeppefwereade: cool15:49
rogpeppebodie_: here's what i ended up with: http://paste.ubuntu.com/8837430/15:50
natefinchsinzui: can you ssh there w/o a password from your machine normally?15:50
sinzuinatefinch, yes15:51
sinzuinatefinch, the juju env and the win machine are using the same key too15:52
natefinchsinzui: hmm weird15:52
rogpeppesinzui: the landing bot seems to be broken, if that's under your control15:54
bodie_rogpeppe++15:56
rogpeppebodie_: cool, thanks15:56
katcorick_h_: https://jujucharms.com/solutions, did we lose our count of # deploys?15:58
katcothose 0's make me sad :(15:59
rick_h_katco: yes, it's a new store and we don't have any counts atm. we'll either try to backfill or start new or I'm not sure yet.16:00
katcorick_h_: cool. looks great btw. nice work to you and your team :)16:01
rick_h_katco: thanks, yea lots of kinks to work out but glad to get it out the door16:01
katcoit has that new software smell :)16:01
rick_h_hah16:01
bodie_rogpeppe, what I was imagining was CharmSpec as an interface implemented by a set of pre-baked testing charms, or the user can implement by composing requirement functions (must have Actions.yaml for X action, must have config with A and B parameters) that way the user never has to implement these things, they're a toolkit for generating fake charms16:06
bodie_rogpeppe, but that's probably significantly more work without a lot more reward16:07
rogpeppebodie_: in a call, will get back to you16:07
sinzuimgz, can you look into the landing bot?16:07
TheMuealexisb: ping, I'm available16:11
=== liam_ is now known as Guest86958
=== seelaman` is now known as seelaman
ericsnowjam: would you mind taking a look at a couple of mattyw's reviews?  http://reviews.vapour.ws/r/342/ and  http://reviews.vapour.ws/r/346/16:25
ericsnownatefinch: I've addressed your comments on http://reviews.vapour.ws/r/343/16:27
mattywericsnow, for the record you can get anyone else to review them as well I think.16:30
voidspacesomeone refactored the test infrastructure so my build failed16:30
voidspacegoddamthem16:30
ericsnowmattyw: yeah16:30
ericsnowmattyw: I realized I had never followed up with a review mentor so I figured I would try it this time :)16:31
natefinchericsnow: looks good.... though the else in that if statement is spurious :)16:32
ericsnownatefinch: it's visually innocuous while still conveying the right meaning :)16:33
ericsnownatefinch: however, in this case I agree :)16:34
ericsnownatefinch: I could use a switch <0.5 wink>16:35
mattywfwereade, ping?16:44
fwereademattyw, pong16:44
mattywfolks - is anyone waiting for me to review code that I promised to do and haven't yet?17:06
rogpeppebodie_: i think that what i'm suggesting is still compatible with your thoughts there17:14
rogpeppebodie_: it's straightforward to add new constructors that make a testing.Charm, with whatever higher level specification we think might be useful17:15
bodie_rogpeppe, agree but maybe the members of CharmSpec shouldn't be exported, is my thought17:25
rogpeppebodie_: why not?17:25
bodie_probably a future change17:25
rogpeppebodie_: i don't see that that's limiting17:25
rogpeppebodie_: it's just one possible set of constructor arguments for creating a new testing Charm17:26
bodie_I see, so that would give the package user the ability to use this form and write it by hand17:26
bodie_then, move toward a more automatic version if needed17:26
rogpeppebodie_: yes17:30
rogpeppebodie_: the two forms aren't incompatible with one another17:30
rogpeppebodie_: the main problem i've just come across (again) is that we can't currently generate a YAML marshaled form of the metadata from a charm.Meta value17:31
rogpeppebodie_: so if we want to specify relations programmatically (for example) we have a bit of a problem.17:32
rogpeppebodie_: there are two ways forward here - either implement a proper GetYAML method on *charm.Metadata, or (the cheat's way) just use a different representation when generating charms, then marshal it before reading it17:35
rogpeppebodie_, fwereade, anyone else: https://github.com/juju/charm/pull/7417:56
bodie_rogpeppe, lgtm18:04
rogpeppebodie_: ta!18:04
bodie_:)18:04
bodie_rogpeppe, why can't *charm.Meta be marshaled by yaml?18:07
rogpeppebodie_: it can, but it doesn't produce anything like a metadaya.yaml file18:07
bodie_ah18:07
bodie_maybe that's the problem18:08
bodie_but I guess you can't just deprecate metadata.yaml18:09
bodie_er, the current format, anyway18:09
rogpeppebodie_: indeed, it's about the oldest file format we have18:09
rogpeppebodie_: it predates the Go version of juju18:09
bodie_even if you did, you'd still need to have a transformer for the unmarshaled form to the new format18:09
rogpeppebodie_: yup18:09
=== natefinch is now known as natefinch-afk
rogpeppebodie_: we actually do marshal the metadata directly into JSON in various places.18:10
bodie_rogpeppe, so if you use the "cheat's way", then you are really laying the groundwork for that transformer ;)18:10
rogpeppebodie_: i'm not sure18:11
rogpeppebodie_: thing is, we'd probably not choose the current data format as a file format by choice, as it has redundancy in various places18:11
rogpeppebodie_: for instance, relations are keyed by name but the name of the relation is also in the value18:12
bodie_heh18:18
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
voidspaceg'night all19:21
=== kadams54 is now known as kadams54-away
=== natefinch-afk is now known as natefinch
=== kadams54-away is now known as kadams54
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
menn0wallyworld: here's that PR to separate state-based upgrade steps from API-based upgrade steps. http://reviews.vapour.ws/r/355/21:47
wallyworldok, ta, will look soon21:48
menn0wallyworld: there's still another PR to come which changes how upgrade targets are handled (as discussed in email)21:48
wallyworldok21:48
=== jog__ is now known as jog
=== fuzzy is now known as Ponyo
=== kadams54 is now known as kadams54-away
=== kadams54-away is now known as kadams54
sinzuiwallyworld, Its been a bad day. I hope you or someone can give some answers to the speculation and testing I have done in https://bugs.launchpad.net/juju-core/+bug/138980722:43
mupBug #1389807: stable juju cannot bootstrap because it selects the devel stanza in index.json <landscape> <metadata> <regression> <theme-oil> <juju-core:Triaged> <https://launchpad.net/bugs/1389807>22:43
wallyworldsinzui: i'm trying to ramp up now22:43
wallyworldwhat's the tl;dr?22:43
wallyworldi'm reading the bug report22:43
sinzuicomment 4 https://bugs.launchpad.net/juju-core/+bug/1389807/comments/422:44
wallyworldsinzui: yes, released needs to be first22:44
wallyworldsince in 1.20 there was no discrimination on stream22:45
wallyworldwhen parsing the index file and choosing a matching stanza22:45
sinzuiwallyworld, okay, I am glad you agree with my testing. I will prep for the validation and do you agree we can rewrite the content so that we don't need to wait for beta1?22:45
wallyworldi am pretty sure, yes, 99.9%22:46
wallyworld1.20/1.18 looked for a matching stanza based on cloud details22:46
wallyworldin there are devel, released,proposed etc - they will all have the same cloud details22:47
=== kadams54 is now known as kadams54-away
wallyworldso released needs to go first22:47
wallyworldit seems obvious now22:47
wallyworldin hindsight22:48
wallyworldi think it should be tested though to be 100% sure22:48
sinzuiwallyworld, well that pastebin is from a  reproduction of a test from Saturday...I failed to notice the switch in the details22:48
sinzuioh...22:48
sinzuiwallyworld, actually, I can do something right now. I control the CPCs. I will fix the order and make the CPCs happy22:49
wallyworldok, i'll continue reading the bug etc to make sure my thoughts are correct, i've only just skimmed so far22:49
wallyworldi need to understand why clouds without a mirror are the ones affected22:50
sinzuiwallyworld, yes, please, wait and be sure. My best idea was to stop the release last night and wait to update streams.canonical.com until moew qa team were about22:51
wallyworldsinzui: the bug says private clouds - but private clouds will have their own metadata though, so i need to understand why they are reaching out to streams.canonical.com22:52
sinzuiwallyworld, no so. a lot of landscape and oil testing are open, using public streams22:53
sinzuiwallyworld, they cannot use the mirror, so the read the first item in index.json22:54
wallyworldyeah, you are right, i was thinking of private clouds behind a firewall22:54
sinzuiwallyworld, and I was think that is how stakeholders were testing myself22:54
sinzuis/think/thinking/22:54
wallyworldsinzui: i fear that putting the released stanza first may not work on ppc23:04
wallyworldthat approach relies on json deserialisation and map ordering23:05
sinzuiwallyworld, :(23:05
wallyworldit might work, needs to be tested23:05
wallyworldwith the compiled ppc binaries23:06
wallyworldi'll keep digging, see if anything else comes to light23:06
wallyworldsinzui: one nuclear option is to use a new name for the index file for 1.21 onwards, so we publish 2 index files23:08
sinzuiwallyworld, I like that option23:09
wallyworld1.21 would look for index2.json and fall back to index.json23:09
wallyworldif index2.jsin wasn't there23:09
wallyworldthe nice bit would be that only that 1 extra file is needed23:09
sinzuiwallyworld, that would require beta1. I hope ppc testing will let me change the ordering to continue releasing alpha323:10
wallyworldyes, it would require a beta 123:10
wallyworldsinzui: we will need to do the index2 option anyway, because if as i suspect map ordering is an issue, it will break on amd64 if we ever compile 1.20 with go 1.323:11
wallyworldmaybe we won't ever do that23:11
sinzuiwallyworld, json via js is officially ordered. I wrote the mirror generation with Pythons OrderedDicts to be certain I serialised exactly what I put in it23:11
sinzuiI hope go's json is ordered23:11
wallyworldsinzui: I've learnt to never assume anything with Go23:12
sinzuiyeah, this issue comes up every other day23:12
wallyworldsinzui: a quick ppc test would be to run validate-tools on ppc using the reordered index23:12
* sinzui added env to stilson-623:13
menn0wallyworld: can we chat about the upgrade steps review? I want to make sure I understand your comments.23:14
wallyworldmenn0: sure, but i need to keep an eye on irc23:15
wallyworldhttps://plus.google.com/hangouts/_/canonical.com/tanzanite-stand23:15
sinzuioops, I just tested aws which is mirrored.  ppc likes it BTW23:18
wallyworld\o/23:25
wallyworldi still fear ppc won't like the non mirrored case23:26
sinzuiwallyworld, we are about to find out. I am going to attempt an aws bootstrap first using the true aws location followed by the mirror23:28
wallyworldok23:29
sinzuiwallyworld, I would normally use my streams and mirrors on people.canonical.com, but stilsons cannot see it. It can see aws23:30
wallyworldah23:30
wallyworldsinzui: regardless, if it works, it is still built on a fragile foundation and it people pull 1.20 source and recompile it may very well break, so i think index2.json will be needed for beta1; this will just buy time till then23:31
sinzuiwallyworld, we loose. I my first attempt setting the real location shows that devel was selected even though released is first in index.json23:32
wallyworldyeah, not surprised23:32
davecheneyd sorts before r23:32
davecheney:(23:32
wallyworld:-(23:32
davecheneyso does alpa23:32
davecheneyand beta23:32
davecheneyZEVELOPMENT!23:32
wallyworlddavecheney: well, it is json unmarshaling into a mao, then then we iterate the map, so no assumptions can be made at all23:33
davecheneycrap23:34
wallyworldsinzui: i can add support for index2.(s)json files to be used, when were you thinking of releasing beta1?23:34
=== jog__ is now known as jog
sinzuiwallyworld, officially tomorrow!23:35
wallyworldsinzui: i can have a fix done today23:35
sinzuiwallyworld, but I can wait till Friday. Lets not rush.23:36
wallyworldi can do a fix and it can be tested23:36
sinzuiwallyworld, davecheney this is the official proof that we ppc wont be happy http://pastebin.ubuntu.com/8842960/23:36
* sinzui adds link the bug23:36
davecheneysinzui: poop23:38
sinzuiwallyworld, I wont release tomorrow because I need to change juju-release-tools. It needs to ensure index.json is preserved for historic juju.23:41
wallyworldsinzui: sure, np. i want to get the fix done asap to give as much time as possible for testing etc23:42
sinzuithank you very much wallyworld. I am going to drink now because it is dinner and I want to feel good that we have a plan23:44
wallyworldsure, enjoy23:44

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