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

davecheneyhttp://play.golang.org/p/0jeSRlVe8B00:00
davecheney^ maybe that makes a little more sense00:00
davecheneythumper: can you show me the hole in the code where this function would fit00:01
davecheneymaybe that would help me suggest a better implementation00:01
rick_h_davecheney: via the api we want to colocate a service with another on an existing machine. If I create a service with 0 units, and then add a unit with the machine id of an existing machine any chance of it working?00:02
rick_h_I cna't test it out via the cli becaus I can't deploy a service with --num-units=000:03
davecheneyrick_h_: deploy --to00:03
davecheney^ that is what you are trying to do, right ?00:03
rick_h_yea, that's cli, but I need api for the gui00:03
rick_h_davecheney: yes, basically00:03
davecheneyok, let me figure out how the cli does it00:03
rick_h_but doing it with manual placement00:04
rick_h_davecheney: thanks00:04
rick_h_davecheney: sorry, we're getting the demo rules changed on us and trying to get back to a working demo00:04
rick_h_appreciate the help00:04
davecheneyrick_h_: ok, i dont know what that means00:06
davecheneyoh yes i dio00:06
davecheneyODS is here isn't it00:06
rick_h_davecheney: yep :)00:06
rick_h_davecheney: and our demo of lxc container on a running machine isn't happy with openstack running on openstack00:07
rick_h_so we're trying to change it on the fly to colocated on bare metal vs in lxc00:07
davecheney        err = client.ServiceDeployWithNetworks(00:07
davecheney                curl.String(),00:07
davecheney                serviceName,00:07
davecheney                numUnits,00:07
davecheney                string(configYAML),00:07
davecheney                c.Constraints,00:07
davecheney                c.ToMachineSpec,00:07
davecheney                includeNetworks,00:07
davecheney                excludeNetworks,00:07
davecheney        )00:07
davecheneythis is the api (i guess call), there is a numunits on ther00:07
rick_h_ok, so it's coming in with the service00:08
rick_h_we need to break the steps up, but will see how we do00:08
davecheneyhang on , still checking00:08
davecheneyhttp://paste.ubuntu.com/7455044/00:10
rick_h_thanks looking00:10
davecheneyso num units 100:10
davecheneytomachinespec <- the machine you want to pin the service to00:10
rick_h_yea, we're deploying the service with 0 units and then making individual add unit calls.00:11
davecheneythat won't work00:11
davecheney--to is a dirty hack00:11
davecheneyits internal name is 'hulk smash'00:11
rick_h_ugh00:12
rick_h_ok00:12
davecheneyso you'll have to deply one unit with --to, then make additional calls to add-unit --to00:12
rick_h_yea, that breaks more stuff for us then. thanks for looking00:12
davecheneythe reason its like this is --to skips the normal machine selection logic, and just spats the unit on that machine00:13
davecheneythat splatting isn't recorded in mongo at all00:13
rick_h_understood00:13
axwwallyworld_: that issue curtis reported is fixed by the tools CL you just did?01:18
wallyworld_axw: yes01:19
axwcool01:19
wallyworld_axw: did you have time for a quick standup?01:39
axwwallyworld_: sure01:39
thumperdavecheney: around?02:13
davecheneythumper: ack02:14
thumperdavecheney: got time for a hangout?02:15
davecheneythumper: sure02:15
thumperlet me just let the dog in02:15
thumperdavecheney:  https://plus.google.com/hangouts/_/g4gj3fe657m4xgcesqioprs6vqa?hl=en02:17
davecheneyjoining ...02:18
thumperdavecheney: play.golang.org/p/3LV_d5HJb302:29
waiganiaxw: ping02:36
axwwaigani: pong02:36
waiganiaxw can I pick your brain? hangout?02:37
axwsure02:37
axwwaigani: sorry was a bit hard to hear you, didn't realise you were logging off. cya ;)02:47
waiganioh whoops, didn't mean to hang up on you :/02:48
axwwaigani: nps02:48
axwyou got everything you needed right?02:48
waiganiyep, all good now, thanks :)02:48
axwnps02:48
waiganiI was going to ask how harding was going, but you seem to be in the thick of it02:49
axwwaigani: just picking off bugs one at a time, not that different from before02:50
waiganiaxw: you're looking very productive! Thunderbird keeps popping up with merge proposals from you an wallyworld_ every 5min!02:51
axwI don't really feel very productive doing bitsy things, but it's still useful02:52
wallyworld_getting the test suite to pass reliably is very productive :-)02:53
axwwallyworld_: do you really want me to look at the LXC defaults thing, or was that just an idea? I've got a good idea about how to fix #131627202:57
_mup_Bug #1316272: juju destroy-environment >=256 nodes fails <amd64> <apport-bug> <destroy-environment> <maas-provider> <sm15k> <third-party-packages> <trusty> <juju-core:Triaged> <MAAS:Invalid> <juju-core (Ubuntu):New> <maas (Ubuntu):Invalid> <https://launchpad.net/bugs/1316272>02:57
wallyworld_go for it, it was just an idea02:58
wallyworld_that maas one is more important02:58
axwcool02:59
=== ppetraki_ is now known as ppetraki
jamthumper: gocheck provides a gc.FitsTypeOf checker that takes two objects and tells you if the first one matches the type of the second one04:00
thumperjam: I don't want the type, but object identity04:08
jamthumper: so it isn't "unsafe" to grab a uintptr object04:08
jamAIUI04:08
jamit is only "unsafe" to cast that back into a type04:08
thumperjam: however the interface is a tuple of two pointers04:09
jamthumper: reflect.Value(obj).Pointer() == reflect.Value(obj2).Pointer()04:09
thumperjam: doesn't work if the type isn't a pointer04:09
jamI don't have the scrollback on this terminal for your non-comparable types04:09
thumperit panics04:09
jamthumper: &obj is still a pointer04:09
jamwell, would always be a pointer04:09
thumperno04:09
thumperno it isn't04:10
thumpera value type can implement an interface04:10
thumperand in fact we have an example in juju-core04:10
jamsure, but &obj is still a pointer04:10
thumperwhere a value type is an error and uncomparable04:10
jamthumper: if it is a value type, then they *are not* the same obj.ect.04:10
jamobject04:10
thumperjam: but you don't know04:10
thumperjam: look, I have examples in test code04:10
thumperwhich expected behaviour04:11
thumperif it can be done a different way04:11
thumperI'm happy, but AFAIK, it cannot04:11
jamthumper, so to start with, I'm not sure that comparing errors by identity is actually what we want to be doing, rather than checking if this error is part of this type of errors.04:16
jamI realize our code is a bit mixed on this point04:16
jamwhere we have some concrete errors04:16
jamand we have other variable ones04:16
jamand we get some unhashable/uncomparable ones from various libs04:16
thumperit isn't helpful to discuss this here without examples04:16
jamI've run into it elsewhere in our code where I wanted to put error types into a map04:16
jambut it fails to lookup because we get an unhashable error type.04:17
jamIn that case, we just swallowed the panic04:17
jamthat was the Serve code, IIRC04:17
jamwhich wants to map known errors into error codes04:17
jamthumper: state/apiserver/common/errors.go func singletonCode(err error) (string, bool)04:20
jam// All error types may not be hashable; deal with04:20
jam// that by catching the panic if we try to look up04:20
jam// a non-hashable type.04:20
jamthumper: if your error is a value type, then it pretty much *cannot* be the same object as some other object, because as soon as it is passed on the stack, it is a new object.04:20
jamas such, you can just say "if this isn't a Pointer() then it isn't the same object"04:21
jamand force the equivalence to false in that case.04:21
thumperjam: play.golang.org/p/dnd98Gl1O404:24
jamthumper: http://play.golang.org/p/IjRIj8SaWk04:27
jamwithout unboxing the internal implementation04:27
jamof interface04:28
thumperbut catching panic is just as horrible04:28
thumperjam: I'm going to take this to the list anyway04:28
thumperjam: so we can discuss it there04:28
thumperpersonally I wish that golang made this easier for me, but it doesn't04:29
thumperwe will have one icky thing or the other04:29
thumperboth are horrible IMO04:29
thumperbut which is more horrible?04:29
* thumper shrugs04:29
jamthumper: they give different results, too: http://play.golang.org/p/JQ5Ga8k-xd04:33
jamsince if you have an 'error' it is pointing at a concrete value, so while you can't pass that value around without it changing to a new value, you *can* pass around the error interface to it04:33
jamwhich gives you a new interface at each step, but the underlying object is the same.04:34
thumperjam: well that is problematic04:34
jamthumper: though is the actual error you care about comparing to a value type ?04:34
thumperit may be04:34
thumperand that is one horrible bit04:34
thumperit may be a value type04:34
thumperand it *may* be uncomparable04:34
thumperand since it might happen04:35
thumperwe need to handle it04:35
jamthumper: well, we do have some control on the system and can say things like "if you want your errors to be compared to be the same, they must be comparable types"04:35
jamI'm not sure what the use case is for being able to compare all possible error implementations04:36
thumperum... because you are writing an error handling library?04:36
jamthumper: its still your code04:36
jamyou can give parameters of what is supported04:36
thumpernot all of it04:36
thumperugh04:37
jamValue type errors that are uncomparable aren't *nice* errors in go world04:37
thumperagreed04:38
=== vladk|offline is now known as vladk
davecheneywaigani: ping07:01
waiganidavecheney: pong07:01
davecheneywaigani: do you remember the issue that we had before vegas related to juju blowing up on 64k kernels ?07:03
waiganidavecheney: going offline soon07:03
davecheneythere was one test package that would always blow up07:03
davecheneywaigani: if you don't remember, that is fine07:04
waiganidavecheney: just trying to think ...07:04
waiganieverything stopped working for me before vegas07:04
waiganiyeah sorry, I'll have a look over the issues/emails in the morning and see if I can remember07:05
davecheneywaigani: np07:05
davecheneyi'll figure it out07:05
davecheney2014-05-13 07:06:58 INFO juju.worker runner.go:260 start "peergrouper"07:07
davecheney2014-05-13 07:06:58 DEBUG juju.worker.peergrouper worker.go:421 found new machine "0"07:07
davecheney2014-05-13 07:06:58 ERROR juju.worker.peergrouper worker.go:137 peergrouper loop terminated: cannot get replica set status: cannot get replica set status: not running with --replSet07:07
davecheney2014-05-13 07:06:58 ERROR juju.worker runner.go:218 exited "peergrouper": cannot get replica set status: cannot get replica set status: not running with --replSet07:07
davecheney2014-05-13 07:06:58 INFO juju.worker runner.go:252 restarting "peergrouper" in 3s07:07
davecheneylocal provider shits itself in a loop07:07
davecheneybugs raised today: 307:17
davecheneybugs fixed today: 007:17
davecheneyif I do08:09
davecheneyjuju deploy X08:10
davecheneyX is resolved by the charm store, yes ?08:10
davecheneyis it resolved by the client, or by the api server ?08:10
davecheney(having proxy issues)08:10
davecheneyubuntu@winton-02:~/src/launchpad.net/juju-core$ juju deploy --debug cs:trusty/mysql                                                                                       2014-05-13 07:54:41 INFO juju.cmd supercommand.go:301 running juju-1.19.3-trusty-ppc64 [gccgo]08:10
davecheney2014-05-13 07:54:41 DEBUG juju.conn api.go:185 trying cached API connection settings08:10
davecheney2014-05-13 07:54:41 INFO juju.conn api.go:268 connecting to API addresses: [10.245.67.6:17070]08:10
davecheney2014-05-13 07:54:41 INFO juju.state.api apiclient.go:198 dialing "wss://10.245.67.6:17070/"08:10
davecheney2014-05-13 07:54:41 INFO juju.state.api apiclient.go:144 connection established to "wss://10.245.67.6:17070/"08:10
davecheney2014-05-13 07:56:49 ERROR juju.cmd supercommand.go:304 cannot download charm "cs:trusty/mysql-0": Cannot access the charm store. Are you connected to the internet? Error details: Get https://store.juju.ubuntu.com/charm-info?charms=cs%3Atrusty%2Fmysql-0: dial tcp 91.189.95.67:443: connection timed out08:10
=== vladk is now known as vladk|offline
voidspacemorning all08:37
axwmorning voidspace08:38
axwcan someone please review a change to gomaasapi? https://code.launchpad.net/~axwalk/gomaasapi/testservice-nodes-release/+merge/21930908:39
axw(I'm updating the MAAS provider's StopInstances to do bulk release)08:40
wwitzel3voidspace: ping08:43
voidspacewwitzel3: morning :-)08:44
voidspaceaxw: morning08:44
voidspacewwitzel3: give me a few minutes and I'll join you in the hangout?08:44
wwitzel3voidspace: sounds good08:45
fwereadeaxw, lbox? I really like line-by-line comments :)08:49
fwereadeaxw, (this is not really a case where it's super-important, 'tis true)08:50
fwereadeaxw, basically LGTM but a few comments08:53
fwereadejam, axw, voidspace, wwitzel3, et al: I'm approving https://codereview.appspot.com/91390043/ but I'd still appreciate comments08:58
=== vladk|offline is now known as vladk
axwfwereade: sorry, does gomaasapi have lbox set up?09:00
axwdoes not appear to09:01
fwereadeaxw, good point -- but is it more than a .lbox file in the source tree?09:01
axwfwereade: making dinner, will take a look at your doc later09:01
axwfwereade: I have no idea09:01
jam1fwereade: I've come up with a possible problem with just putting Version into another attribute of the request header.09:05
fwereadejam1, oh yes?09:06
jam1In that old servers will just happily ignore the field and return the wrong thing09:06
jam1fwereade: it just means we have to be more careful in not allowing the client-side code to accidentally try a new version request09:06
voidspacefwereade: will read09:07
voidspacefwereade: thanks09:07
jam1fwereade: if we were to re-use the "id" field, then we would have gotten back ErrBadId, and we could have mapped that into "oh, that actually means NotImplemented"09:07
jam1now we just get "ok"09:07
fwereadejam1, ie only send versioned requests to server that have already stated they support versions? that does sound reasonable to me09:07
jam1I *think* we're ok, because we detect what the server supports at Login time.09:07
jam1fwereade: it is just one of those things where we have to be "extra careful" because we can do it wrong and things will still seem to be working, but might be subtly broken.09:09
jam1Like when we want to change the Set() api so that blank strings are accepted and don't mean "set to default".09:09
jam1if the client code had a bug that it just always used 2,Set() it would "just work" except when you tried to set to an empty string on an old server and it would set it to the default value.09:10
jam1fwereade: anyway, I have a model for how the client side code might work, and since we probe for available versions at Login time we should be able to do client side filtering appropriately09:10
fwereadejam1, yeah, I see your point, my personal instinct still slightly leads toward not reusing the field but I'm having a hard time justifying it -- at least a single layer of id-munging to support old clients using watcher ids is much more localised09:10
jam1Its just one of those "I'd like it to break noisily when we make a mistake"09:11
jam1fwereade: yeah, I like having it as an explicit Version. I was mostly just bringing up an issue that we should at least be aware of.09:11
fwereadejam1, cheers09:11
jam1fwereade: I guess partially I was also hoping that I wouldn't have to do as much changes to the RPC package because I had a new field and could do magic there, but it turns out everything was only nice and orderly because of all the other changes I've done along the way.09:12
jam1like handling Id early rather than late, etc.09:12
* fwereade cheers09:12
jamfwereade: I'm about halfway through your arch overview, and I'm trying to get a feel for how much we need the "here be dragons" side comments vs the "this is how it is laid out". I like letting people know that what we have is not perfect yet, I just wonder if they distract from getting an understanding first.09:23
jamIF we had footnotes, I think they'd make excellent footnotes09:24
fwereadejam1, I go back and forth -- "how it is" and "how it should be" *are* separate, but I find that focusing only on the former ends up giving it a misleading air of the latter09:24
fwereadejam1, yeah, footnotes would be the answer, wouldn'tthey09:25
jamsidebars, something :)09:25
jamfwereade: yeah, I certainly appreciate the "it is this way because it has been this way, and we don't quite understand why the alternatives weren't chosen"09:25
jamwhich seems like something an overview could at least hint at.09:25
jam"eponymous" a word I've probably only ever read, I'm not actually sure how it is pronounced :)09:26
fwereadejam, I like that word so I probably shouldn't use it ;)09:27
fwereadejam, I thought I remembered deleting it actually, maybe some part of my brain rebelled and inserted it somewhere else09:27
jamfwereade: for example, `Provisioner`, `Upgrader`, and `Uniter`, each used by the eponymous +worker types09:28
jamI'm fine with it, fwiw09:28
jamI was just reading it over and realized, I know exactly what he means, but I don't actually know how to pronounce that word.09:28
fwereadejam, I can say what I think it should sound like in the standup, but I'm not *certain* that I haven't just made that up09:29
jamfwereade: https://www.google.com/search?client=ubuntu&channel=fs&q=eponymous&ie=utf-8&oe=utf-8 has a "pronounce it" button09:29
fwereadejam, well, google agrees with me09:30
fwereadejam, not sure that's enough to pronounce myself "right" but I'll go with it ;)09:30
jamfwereade: :)09:31
jamfwereade: LGTM with some trivials09:33
jamfor your arch doc09:33
jamhttps://codereview.appspot.com/91390043/09:33
fwereadejam, thanks, I'll work those into the next CL09:38
jam1fwereade: so API versioning again. I like the idea that changing the Version argument can change the type of the thing being returned, but changing the Id should *not* be allowed to do so.09:39
jam1However, with us just registering a "give me an object" function09:39
jam1we can't quite tell the type without actually getting a concrete one.09:40
jam1the existing code used static introspection of functions to do some of this09:40
jam1what I'd *like* is to be able to have09:40
jam1instead of Register(func(State, Resources, Authorizer) (interface{}, error))09:41
jam1instead have09:41
jam1Register(func(State, Resources, Authorizer) (FixedType, error))09:41
jam1but I'm not sure if you can actually get away with that.09:41
jam1just because you need to be able to cast the function pointer you get to *something* to be able to call it (I think)09:42
wwitzel3jam1, fwereade: you guys have time to chat about rsyslog API stuff real quick? voidspace and I are in a hangout09:42
fwereadewwitzel3, sure09:42
jam1wwitzel3: can you link the hangout?09:42
wwitzel3https://plus.google.com/hangouts/_/canonical.com/moonstone09:43
fwereadejam1, sorry, don't wait for me re standup10:39
jam1fwereade: np10:39
fwereadejam1, just 1 main thing: you have work items, but do you also have people writing proto-docs and handing over to evilnickveitch?10:39
jam1fwereade: I believe the intent is to have Frank focus on some of that as he comes over to core10:40
jam1or you're talking more about proto-docs before implementation of current feature?10:40
jam1fwereade: for what I'm working on, I still haven't actually gotten enough implementation to know how its going to hang together, but when I get a bit further I would be happy to write how to use API versioning doc10:41
voidspacejam1: as you suspected, bringing up new state servers doesn't rewrite the rsyslog conf on units11:02
voidspacejam1: so we *definitely* need the additional notification11:03
jamvoidspace: so my guess is, that if you then bounce unit-wordpress-0 it will rewrite syslog.conf because it will read the new addresses from agent.conf11:03
jambut I think we want to do it right away11:03
voidspaceright11:03
voidspacewe're working on doing it the right way11:03
jamvoidspace: I think ideally we would be writing rsyslog data from information we get directly from the API server, rather than punning the apiaddresses data11:04
jamagent.conf (pie-in-the-sky) would be only enough information to get your real truth from the API server.11:04
voidspacejam: we're going to add an RsyslogHostPorts endpoint (or similar) that effectively (currently) wraps APIHostPorts11:09
voidspaceI think :-)11:09
axwjam: is there a way to merge an MP to trunk via LP?11:09
jamvoidspace: so thats good, we just need to change the ports as the data goes through.11:09
voidspaceright11:09
axwjam: or do I need to branch/merge/push11:09
jamaxw: what trunk?11:09
voidspacewe'll currently just add the global port to each address11:09
axwjam: gomaasapi11:09
voidspacebut that's easy to then change if we *actually* have different ports11:10
jamaxw: branch and push11:10
axwok, ta11:10
jamaxw: gwacl is controlled by our bot, but gomaas is manual11:10
jamIIRC11:10
axwyep, seems so. thanks11:10
wwitzel3voidspace: https://code.launchpad.net/~wwitzel3/juju-core/009-ha-rsyslog-api12:08
perrito666could someone please tal https://codereview.appspot.com/92320043/ ?12:34
perrito666and yes, that is awk that I am using, I am from the past12:35
natefinchperrito666: looking12:43
perrito666natefinch: turns out it was a bit less trivial than originally thought :p12:44
natefinchperrito666: heh, I never thought it would be trivial ;)12:45
perrito666I am an optimistic guy12:45
natefinchsleep 60 ...  well that inspires confidence12:45
natefinch(not a judgement of the programmer)12:45
perrito666mm, did I push that?12:47
natefinchit's there, yeah12:47
perrito666tx god for restores, bugs in bash in go are a pain to spot12:47
perrito666s/restores/reviews12:48
natefinchhonestly, the problem is that we're just passing huge strings to bash.  That's not really the way we should be running terminal commands12:48
natefinchthe single { for mongo and the double {{ for go templates is particularly gnarly12:49
perrito666natefinch: you should see how that outputs to the shell12:50
perrito666'\"'\"' <-- that is '12:50
natefinchheh12:50
natefinchreminds me of "\\\\" for a literal \ in a regex12:51
natefinch"http:\\\\\\\\"12:52
jamperrito666: I'm ~ sure that you can change the agent.conf on machine-0 to just read "localhost:17070" and it would be happy12:52
perrito666I can try12:54
jamperrito666: that can potentially simplify your logic a lot12:55
perrito666jam: true12:56
jamperrito666: also, is it possible to use the values for "state-port" and "api-port" instead of assuming they are 37017 and 17017 respectively?12:57
jamIf it is hard to do, don't worry too much about it, as I don't think anyone has *actually* run with a non-standard port, but the configuration *is* ther.12:57
perrito666jam: it is not that much effort to add it, I have been avoiding additions beyond necessity because restore is quite fragile and I did not want to make future/present bug hunting even harder12:59
natefinchI wish we could just remove the port configuration, it would make our code significantly simpler.13:02
=== BradCrittenden is now known as bac
perrito666brb13:24
natefinchjam: how do I figure out what revision a branch is on, say if the code were copied to a github, for example?  .bzr/branch/last-revision  has a revision number, but the diffs look off13:28
jamnatefinch: every branch has its own revision numbering but the revision-id is unique. You can do "bzr revno" or "bzr revision-info" to get details13:29
jamnatefinch: and you can't exactly push a bzr branch to github13:29
jambut otherwise you can pass "-d" to revision-info to select a different location13:29
jambzr revision-info -d lp:juju-core13:29
jamfor example13:30
natefinchbzr revno worked.13:30
jamnatefinch: sure I just wanted to be clear that having the same revno doesn't mean it has the same contents, because if we are both at 2250 and we both commit, we'll both be at 2251 but have different revision-ids13:31
natefinchthe code was copied into git, but I wasan't sure if that would throw off bzr, but it seems  the .bzr stuff was left intact13:32
natefinchjam: ahh I see13:32
jamnatefinch: so if you're using bzr-git, we might  be magic enough to map into git and then back into bzr again.13:32
jamotherwise you wouldn't be able to do "bzr revno $GITLOCATION"13:33
natefinchI presume revnos are at least unique per branch, right?  so trunk 2200 is a definitive revision13:34
jamnatefinch: it is, but pull/push can change the order of history and 2200 *can* become something different.13:34
jamthere are ways to enforce it (set append-revisions-only will refuse a push that would change revnos)13:35
natefinchew.... so, why even bother with revision numbers if they don't mean anything static?13:38
jamnatefinch: because most of the time (and the tool can help enforce it) they are static within a branch13:40
jamand they are *far* more meaningful and understandable than hashes13:40
jamif I tell you I changed it at rev 2500 in trunk, you can tell really quickly if your copy of trunk has the change I proposed13:41
jamthings like trunk branches should always have append_revisions_only set (I believe I did that for juju-core)13:42
jamso push can't change the old numbers.13:42
natefinchinteresting13:44
natefinchI do like numbers I can understand rather than just giant hashes that have no intrinsic meaning13:45
bodie_mornin fellas13:45
natefinchmorning bodie_13:45
perrito666sinzui: you can try turning on the restore test again13:48
sinzuiperrito666, I saw the  change and queued the test13:48
perrito666great, not that I dont have faith but Ill be expectant13:50
fwereadeguys, I'm feeling somewhat sick, I'm going to go and lie down for a while, probably back later14:11
perrito666ok, get better14:12
wwitzel3natefinch: you want to assit with this code structuring?14:19
wwitzel3assist14:20
natefinchwwitzel3: oh yeah, sorry, one second, I'll get back in the hangout14:25
jamsinzui: is there a new URL for reports.vapor.ws ? or is it intended to be private14:47
sinzuijam, oh!14:48
sinzuijam, I think abentley put it behind apache in the last 12 hours14:48
sinzuihttp://reports.vapour.ws/14:48
jamsinzui: ah, just directly not at the random port14:48
perrito666hey, does anyone have the link to the doc from the sprint, it is not showing in my docs as shared with me14:49
perrito666natefinch: well, apparently we where very consistent on not writing details regardin WAL14:53
perrito666:p14:53
natefinchperrito666: https://docs.google.com/a/canonical.com/document/d/1XZN2Wnqlag9je73mGqk-Qs9tx1gvOH0-wxMwrlDrQU4/edit#heading=h.hpeo5xue46ue14:56
natefinchperrito666: if you go to google docs for canonical, it should be in the list of recent documents, which is where I ususally go to find stuff14:56
perrito666ah, recent, didnt think of that14:57
* perrito666 facepalms14:57
natefinchperrito666: it's ok, it took me like 6 months at canonical to start using recent :)14:58
perrito666the fact that the listing of files for google docs looks like a teenagers windows desktop in the 90s does not help at all :p14:59
=== jcw4_ is now known as jcw4
sinzuiperrito666, your revision is building now in CI. I hope to see a pass in the next 80 minutes http://juju-ci.vapour.ws:8080/15:24
perrito666sinzui: oh the suspense15:33
perrito666hey anyone around here was present at the HA talks, most precisely when you talked about WAL? I think I am on track but would love to double check15:37
perrito666sinzui: yay, a dns humanly readable name cool15:37
sinzuiperrito666, PASS http://juju-ci.vapour.ws:8080/job/functional-backup-restore-devel/806/console16:24
perrito666\o/16:25
Sebas_hi folks :)16:51
voidspacefwereade: ping16:56
fwereadevoidspace, pong16:56
voidspacefwereade: you gave my branch an LGTM today16:56
fwereadevoidspace, that was nice of me :)16:57
voidspacefwereade: it turned out I'd missed some of our copy-pasta config tests16:57
voidspacefwereade: haha, it was premature of you ;-)16:57
voidspacebut yes, nice16:57
voidspacefwereade: so I've fixed those tests to use the new format, including the ruleset for a single state server16:57
voidspacefwereade: plus a test that if we have multiple state servers that we get entries for both (for the case of two) in the generated template16:57
fwereadevoidspace, <316:58
voidspacefwereade: essential testing the logic in the template16:58
voidspacefwereade: should I ask for another look at the branch, or as it's *essentially* test fixes should I just reapprove?16:58
bodie_fwereade: should we think about merging the action yaml parsing stuff into our code before dressing it for MR?16:59
fwereadevoidspace, the general answer is "use your judgment" -- if you're confident in it, and the approach has been LGTMed, don't feel you *have* to get *everything* rereviewed17:00
bodie_or make those two separate mr's (we'd assumed the previous work was a discard)17:00
voidspacefwereade: it's just fixing tests, and they all pass this time (*coff*) so I'm inclined to just re-approve17:00
voidspacethanks17:00
fwereadevoidspace, go for it17:00
fwereadevoidspace, we have the landing bot after all, so all you *really* risk there is looking stupid if they keep on failing ;p17:01
fwereadebodie_, keep them separate17:01
fwereadebodie_, that CL is basically fine, I don't want it to grow and grow and incorporate more and more, that's painful for everybody17:01
voidspacefwereade: if I was afraid of looking stupid I wouldn't get much done...17:01
bodie_was that a dumb enough question?  ;)17:02
bodie_yes17:02
fwereadebodie_, until it's exposed in the UX, and until it's doing things that affect actual DB integrity/sanity, small incremental steps are great17:02
fwereadebodie_, keep trying ;p17:02
fwereadebodie_, I'm sure you can ask much dumber questions if you put your mind to it ;p17:02
bodie_fwereade, I suppose the worst of them are the ones that remain unasked and instead are expressed as dumb code ;)17:05
fwereadebodie_, exactly :)17:06
wwitzel3anyone have a second to look at a screenshare and tell my why my tests are getting a state server not found error? fwereade, natefinch ?17:09
fwereadewwitzel3, not much more than a second tbh, but I can try :)17:11
wwitzel3https://plus.google.com/hangouts/_/canonical.com/moonstone17:11
natefinchwwitzel3: ug.  I can look, though the tests that try to set up an environment always give me like 3 days of trouble17:11
voidspacenatefinch: we have 20 minutes ;-)17:11
natefinchvoidspace: luckily fwereade offered assistance for a second, which is almost certainly worth more than my 20 minutes :)17:12
Sebas_hey there! I'm recently having an issue with lxc containers created by the juju-local in an ubuntu trusty17:17
Sebas_I installed a new fresh ubuntu each time (3 times by now)17:17
Sebas_the lxcbr0 is missing17:18
Sebas_so everything is failing apart :(17:18
Sebas_someone have's a clue of what can be or where to look?17:18
natefinchSebas_: can you pastebin your /etc/lxc/lxc.conf   /etc/default/lxc and /etc/default/lxc-net ?17:21
Sebas_natefinch: of course!17:22
Sebas_natefinch: just a minute17:22
natefinchSebas_: I'm not an lxc expert, but it sounds like maybe your lxc is configured to use a different bridge, which is a known problem with juju local17:22
Sebas_natefinch: there's no /etc/lxc/lxc.conf17:23
natefinchSebas_: that's ok, there isn't for me either, I think that's the default17:23
Sebas_hmmm but in the local machine exist properly17:23
Sebas_like lxcbr017:23
natefinchSebas_: check /etc/default/lxc-net    - that's where mine is configured to use lxcbr0, perhaps yours is configured differently for some reason17:25
Sebas_natefinch: take a look http://pastebin.com/KN4XxqrD17:26
Sebas_i'm comparing with a local virtualbox machine that is working17:27
natefinchlooks just like mine17:27
natefinchSebas_: Specifically what error are you seeing?17:28
Sebas_natefinch: the bridge is just missing :(17:28
Sebas_in the container17:28
Sebas_its really wired17:29
natefinchSebas_: can you copy and paste the actual text? It'll help me find it in the code and maybe figure out what it's trying to do and why it's failing17:29
Sebas_natefinch: the problem is that there isn't an error17:30
Sebas_its just missing so, the from it can't access internet from the container17:30
voidspaceEOD folks17:32
voidspaceg'night all17:32
voidspacesee you tomorrow17:32
natefinchnight voidspace17:32
Sebas_voidspace g'night17:32
Sebas_natefinch: whats your kernel? mine is 3.13.0-24-generic17:34
Sebas_seems ok17:35
natefinchSebas_: I'm on 3.13.1, but I doubt that's the difference17:36
Sebas_yep :(17:37
Sebas_natefinch: i dump some dmesg17:37
Sebas_http://pastebin.com/ZHjDkhHE17:37
Sebas_just wat I thought is relevant17:37
wwitzel3EOD for me17:40
perrito666wwitzel3: bye17:40
natefinchSebas_: brb, I need to reboot17:43
=== vladk is now known as vladk|offline
perrito666fwereade: still on the clock?17:50
natefinchperrito666: he's salary, that means he's always on the clock ;)17:50
perrito666natefinch: I have no clue what that means17:51
perrito666:p17:51
natefinchperrito666: salaried vs. hourly wages.  he gets paid the same amount whether he works 20 hours a week or 120.  In theory, "on the clock" applies to people who have to clock in and out because they're paid by the hour (wage).17:52
perrito666ahh I see no such linguistic distinction in spanish17:53
perrito666salary person means you get paid :p and then you need to specify by/the X17:54
natefinchyeah, we say salaried vs. hourly to differentiate17:54
perrito666anyway, I just wanted to know what percentage of his attention was still on the screen, which apparently amounts to 0 :p17:54
natefinchhaha well, it is rather late there17:55
perrito666If I understood correctly the adding wal to mongo was only to add --journal to the mongo-db invocation, and perhaps find a way to test that17:55
perrito666I was just hunting for someone that actually took part on that conversation17:56
natefinchperrito666: if --journal is defined by the mongo docs as turning on WAL, then all you need to test is that we call --journal.  No need to test that mongodb does what it says it'll do17:56
natefinchand maybe contemplate what happens when someone upgrades from a previous juju that didn't specify --journal17:57
perrito666natefinch: so it says :) http://docs.mongodb.org/manual/tutorial/manage-journaling/17:57
Sebas__natefinch: thoughts ? :P17:58
natefinchSebas__: sorry, got distracted.  Is the problem then just that the containers can't contact the internet?17:58
Sebas__natefinch: btw thanks for your help :)17:58
natefinchSebas__: doing my best, but you've unfortunately encountered the Juju dev with the least amount of Linux experience :)17:59
Sebas__yep, because of the missing lxcbr0 bridge17:59
natefinchSebas__: you said you had lxcbr0 on your local machine, right?17:59
Sebas__yes17:59
Sebas__but not into the container18:00
Sebas__which is wired hehe18:00
natefinchSebas__: so, the container doesn't need lxcbr0.... mine don't have that, and they can contact the internet just fine18:00
Sebas__hmmm18:00
Sebas__natefinch: you are right!18:01
Sebas__so now i more lost18:01
Sebas__hehe18:01
natefinchperrito666: do you know anything about lxc containers and their networking?18:01
perrito666natefinch: very little you want to ask to vladk|offline or dimitern18:05
Sebas__the thing is that, it isn't a random error18:06
Sebas__is with fresh installed ubuntu trusty18:06
perrito666lxbr0 iirc is the virt interface for bridging lxc containers, the containers themselves should have "regular" ifaces18:06
Sebas__perrito666: yeah, and it seems it haves, i checked now18:08
Sebas__and the eth0 is there like it should18:08
natefinchSebas__: so, all juju does is make LXC containers using the usual methods. It's not really doing anything magical to the containers.  I don't know why your containers are broken, but it's likely an environmental issue rather than a juju issue, per se.  I know that doesn't help you much, though.   You might try getting on #ubuntu and seeing if someone there can help debug your lxc issues.18:09
Sebas__ooh ohh! i think i know what is it18:10
Sebas__natefinch: you are correct18:10
Sebas__till now I didn't know what was it18:10
Sebas__but18:10
Sebas__i ping just the ip to see if wasn't an resolve problem18:11
Sebas__of geteway18:11
Sebas__and it pings!!18:11
Sebas__im going to try to route by hand18:12
natefinchcool :)18:12
natefinchbrb, gotta water the carrots18:12
Sebas__natefinch: yeah but the route already exist :(18:14
Sebas__damn it !18:15
Sebas__hehe18:15
fwereadeperrito666, passing by briefly: http://docs.mongodb.org/manual/tutorial/manage-journaling/ seems to imply it's on by default (at least on 64-bit) -- might we be thinking about the writeconcern, which I think needs fixing too?18:22
natefinchfwereade: I have writeconcern in a different branch.  Possibly this is a noop then18:23
fwereadeperrito666, cool -- it's still worth doing for 32-bit systems though18:23
perrito666fwereade: indeed, for what I see we even have tests that check for journaling stuff happening, we seem to be assuming it on by default18:29
=== BradCrittenden is now known as bac
=== vladk|offline is now known as vladk
perrito666ok, eod for me19:27
perrito666bye guys19:27
natefinchperrito666: see ya19:28
thumpercmars: morning20:09
cmarshi thumper20:10
thumpercmars: when I organised our chat in about an hour I had forgotten about a physio appt I have20:10
thumpercmars: can we push it back an hour?20:10
thumperso in 1:50?20:10
cmarssure20:11
thumperthanks20:12
thumperI'll put in the calendar this time20:12
fwereadethumper, btw, my eyes glazed over a little looking at that CL, but progress seems sane -- was there anything in particular you wanted to talk about?20:39
thumperfwereade: agreement on direction mainly20:40
fwereadecmars, not sure if you saw my review; I'm mainly just unsure what forces prompted it. separate certs for state vs api seems perfectly sane to me, I just haven't thought through the upgrade process and wanted to be reassured that someone had20:40
=== Ursinha is now known as Ursinha-afk
sinzuihello rocket scientists. Does anyone have a strategy for using a newly built tool for an arch not in the streams. I want to add-machine a ppc instance. Ubuntu never published an official juju-core 1.18.2, but I tested a tool that I want juju to use when provisioning20:53
* sinzui ponders creating a private stream with extra tools.20:54
sinzuinatefinch, ^ have you ever pondered this20:55
fwereadesinzui, that would be my advice -- wallyworld's `juju metadata` stuff should make it doable?20:55
* fwereade waves his hands enthusiastically20:55
sinzuifwereade, yes, I can do that making a new stream. I can change juju-metadata-tools exactly once because of a bug in juju20:55
fwereadesinzui, hmm, is that failed mutability or failed immutability?20:56
wallyworldyou should be able to create metadata for just the one tarball, and put that plus the tarball in cloud storage. it will look there and fallback to streams.c.c for other arches20:57
sinzuifwereade, we cannot change *-metadata-url once set, but we can bootstrap with out it (use streams.canonical.com), then change it once later20:57
fwereadewallyworld, I still get nervous about the falling back :)20:57
fwereadesinzui, heh, failed immutability then20:57
sinzuiI reported the tools version of the bug, other users reported the image- version of the bug20:57
fwereadewallyworld, do you recall why we made those immutable? I can see how it *could* be a can of worms, but there's a clear use case there as well20:58
wallyworldfwereade: can't recall now sorry :-( i'm sure it was a good idea at the time20:58
wallyworldalso, it never used to fallback, but we made it so20:58
sinzuifwereade, Once juju-1.18.2-trusty-ppc64el.tgz is know to the juju-ci-3 env, I am 30 minutes from have two slaves in two different networks to prove trans-cloud envs rock20:59
sinzuiwallyworld, It might have made sense to not let you change the values before we added mirrors20:59
fwereadewallyworld, yeah, I think the falling back was a bit of an act of desperation... if it's *possible* to find *some* tools, please do :)20:59
fwereadesinzui, awesome21:00
=== Ursinha-afk is now known as Ursinha
wallyworldfwereade: don't quite grok the last tools comment. the fallback thing was to allow some tools to be found in cloud storage, say, and the rest from streams21:02
fwereadewallyworld, yeah, it's precisely that that makes me nervous -- 2 different locations for tools raises an unholy spectre of two different versions of juju that think they're the same21:03
fwereadewallyworld, it's something that scares me, but probably not something I ought to get too stressed about21:03
fwereadewallyworld, and the happy path is evidently happy21:03
wallyworldi sorta agree but users complained and it was not usable the other way21:03
bodie_famous last words21:03
fwereadewallyworld, I'm just whining, you know how I love to do that21:04
wallyworldyou are english :-)21:04
fwereadebodie_, I've had 6 months since I first said them ;p21:04
wallyworldsinzui: do you have all you need to try out the jenkins github lander with my test core repo? is there anything i can do?21:05
sinzuifwereade, wallyworld . I think the scenario here is ops may want to choose new source for images and tools. They certainly want just one source. they may want to change the source to get special images or tools. private clouds need to do this if they move things. envs in public clouds may want to get special streams21:07
waiganimorning all, back again :)21:07
=== BradCrittenden is now known as bac
sinzuiwallyworld, I need time. I don't think I can start the tests until monday.21:07
wallyworldno worries, just ensuring i didn't need to do anything else to help21:08
wallyworldnot urgent :-)21:08
fwereadesinzui, that was sorta my perspective; definitely +1 on making them mutable; *also* +1 on mandating a single source, but my nightmares re allowing multiple have not yet come to pass, so your job right now should be easier even if not for my favourite reaons21:08
wallyworldsinzui: if that url bug is not already high, we can add it to the high pool21:09
bodie_fwereade -- I'm getting a strong spidey sense about the way we're trying to do Actions.  can you help me understand why it's necessary for the hook to trust the action info?21:10
bodie_if I were writing an Action hook, I'd be parsing args myself21:10
bodie_unless I'm misunderstanding the purpose of this21:10
fwereadebodie_, one somewhat-significant reason is so that we can provide a nice gui for it, but that probably shouldn't be (the* overriding reason within core21:13
fwereadebodie_, declaring what an action accepts in a standard format STM to be a Good Thing on general principles, too, fwiw21:14
fwereadebodie_, and if we *do* guarantee that the data we deliver will match the declared interface, we should be able to save charm authors quite a lot of boilerplate checking21:14
fwereadebodie_, if we don't, I think we add quite a lot to the burden of implementing an action21:15
fwereadebodie_, imagine how bad it would suck if every single method just took (args ...interface{})21:15
fwereadebodie_, spidey-sense rising or fading? ;)21:17
cmarsdoes anyone else see intermittent failures in cmd/jujud when running all the tests? they usually disappear if I 'go test ./cmd/jujud' by itself21:27
thumperyes21:29
bodie_fwereade, I see regarding reducing Action boilerplate21:33
bodie_should've mentioned I was stepping away21:34
bodie_yes, it seems like everything using interface{} would somewhat defeat the utility of Go ;)21:35
bodie_yet if we're using json-schema on the charm, why is it OK to define in a yaml file?21:39
wallyworldcmars: we're working on fixing the test suite but there's a lot to work through21:59
wallyworldfingers crossed we'll get it sorted real soon now21:59
cmarswallyworld, thanks. I was mostly wondering if it was just my dev env21:59
wallyworldnah, the bot is sad too22:00
wallyworldcmars: feel free to file a bug tagged test-failure and we can look to ensure it's not a new issue22:00
wallyworldthumper: if you are interested or have a spare moment, i'd love a look at https://codereview.appspot.com/94410043  it consolidates the lxc clone settings22:02
thumperwill look later22:02
wallyworldno hurry22:03
=== vladk is now known as vladk|offline
=== vladk|offline is now known as vladk
sinzuiwallyworld, any insights? http://pastebin.ubuntu.com/7459884/22:39
wallyworldlooking22:46
=== vladk is now known as vladk|offline
wallyworldsinzui: can you also paste the index file?22:51
sinzuiwallyworld, http://pastebin.ubuntu.com/7459905/22:52
wallyworldsinzui: sadly there's a lack of logging in the code around where i suspect it's failing, i'm still looking23:02
waiganimenn0: standup :)23:03
wallyworldcan we get the all-machines.log?23:03
sinzuiwallyworld, thank you. I have a fallback plan of bootstrapping the machine as a separate env.23:03
wallyworldsinzui: before you do, grab the all-machines.log for me and i'll look at that23:04
wallyworldi think it's failing creating the manual provisioning script23:04
* sinzui does23:04
sinzuiwallyworld, oh, 403. damn, when I recreated this container it lost the public permissions23:37
sinzuiwallyworld, I see a ppc64 machine on a different cloud being provisioned23:38
perrito666sinzui: still around?23:38
* sinzui is so excited23:38
sinzuiperrito666, I am23:38
perrito666sinzui: I have a patch proposed for HA restore, I was wondering if I should push it once its reviewed or if there is a CI test for that story in the foreseeable future23:40
perrito666no pressure23:40
sinzuiperrito666, I will have a test running tomorrow morning or even tonight. I sketched it out last week.23:41
perrito666wow you are fast :) there is a comment asking this on the bug, if you couuld add the info as an answer there once the test is there I will be very thankful23:42
perrito666(also I will be happy not to do that by hand again :p)23:42

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