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

=== alexlist` is now known as alexlist
davecheneywallyworld: could you please tag goose for juju-1.1201:11
wallyworldsure01:12
wallyworldrev 99 i think?01:12
davecheneyhold up01:12
davecheneyi need this tag, juju-1.12.0 at the same revno as juju-1.11.401:12
wallyworldok01:12
wallyworlddavecheney: done01:13
* davecheney hugs wallyworld 01:13
* wallyworld goes all gooey01:13
davecheneywallyworld: what cmd did you use ?01:13
wallyworldbzr tag -d bzr+ssh://go-bot@bazaar.launchpad.net/~go-bot/goose/trunk -r99 juju-1.12.001:14
wallyworldrev 99 was what i did the other tag for01:14
davecheneyok01:18
davecheneyi don't understand bzr tags01:18
davecheneybut that dovetails nicely into all the other things i don't understand01:18
thumperwallyworld: today is a bit here and there01:32
thumperwallyworld: have to take the dog to the vet for a 2pm apt01:32
thumperdid you want a quick chat now?01:32
wallyworldthumper: sure01:32
wallyworldthumper: https://plus.google.com/hangouts/_/d3f48db1cccf0d24b0573a02f3a46f709af109a601:32
axwIf anyone is curious wtf the new guy is doing, I'm going to look at implementing debug-hooks. Feel free to redirect my attention though.01:42
davecheneyaxw: +101:45
davecheneyaxw: there is a branch for the client side part01:45
axwdavecheney: yep thanks, I saw you made a start01:45
davecheneybut the logic to intercede in the agent is an open problem01:45
axwyeah I see there's a problem with replacing the ZK ephemeral node thingy01:45
wallyworldthumper: found out what's up with the bot - lyc02 is down for maintenance \o/02:13
wallyworldmaybe we shouldn't run prod stuff on canonistack :-/02:14
thumperhaha02:31
wallyworldthumper: we don't really need to record how a machine is started because we know that from the ContainerType attribute, hence can use that to figure out how to get an address03:37
wallyworldmay still need to record if manually provisioned perhaps03:37
thumperwallyworld: no...03:37
thumperyes, manually provisioning hits this03:37
wallyworldbut in manual case we would just write the ip address directly to Addresses03:38
wallyworldso i'm not sure we need to record anything extra03:39
thumperwallyworld: about my desktop, it seems that there is no eth0 in my /etc/network/interfaces file03:40
wallyworldyou need to add it03:41
wallyworldit won't be there03:41
thumperwell I have an eth003:41
thumperproblem is that it has a static ip03:41
wallyworldyes, but it doesn't have an entry in that file by default03:41
thumperand if futz with that, other things fail03:41
wallyworldyou can add an entry in there with a static ip afaik03:42
thumperwallyworld: yeah, but that doesn't help the bridge does it?03:42
wallyworldor mark it as manual or something like that to tell it not to use dhcp03:42
thumperthis is all getting very confusing03:42
wallyworldyes03:42
wallyworldthose web links from yesterday had examples for nics with static ips i'm sure03:43
wallyworldthumper: i think i read somewhere that the host nic needs to be set to promiscuous mode using a pre-up statement on br0 bridge interface03:49
wallyworldnot sure though03:50
thumperthat sounds right03:50
thumperotherwise it is likely to filter only those for its mac address03:50
thumperwallyworld: I'm going to write up a proposal for something hacky that might work03:55
wallyworldthumper: i also read that some kernels have filtering enabled which will break it and you need to use sysctrl to fix that03:55
thumperbigjools: can I have access to your maas instance?03:55
wallyworldall very complicated03:55
bigjoolsit will cost you03:55
thumperwallyworld: we need a network specialist to work with IMO03:55
wallyworldyes indeed03:55
thumperto make sure we don't fuck up03:55
thumperbigjools: what's the cost?03:56
wallyworldyep. surely we have one of those03:56
bigjoolsa night in your arms03:56
thumperhaha03:56
thumperbut you have boy couties03:56
bigjoolsdon't worry, it's not transmittable in saliva03:56
* thumper is speechless03:57
* bigjools wins \\o/03:57
wallyworldso that doesn't mean he won't get it via other fluids03:57
* thumper blocks his ears and hands over eyes03:57
thumperlalalalala03:57
bigjoolsok give me an hour or so as I need to finish a review and then I need to refresh the package and OS03:57
bigjoolson my maas box itself03:57
thumperbigjools: not today, but may need for testing next week if that is ok03:57
bigjoolssure03:58
bigjoolswhat OS do you need?03:58
bigjoolssaucy?03:58
thumperprecise03:58
wallyworldthumper: what are you going to try?03:58
bigjoolsyou're SoL03:58
thumperSoL?03:58
thumperwallyworld: some hackery03:58
bigjoolsit's currently on raring and I ain't gonna downgrade :)03:58
bigjoolsShit Outta Luck03:58
thumperhow am I supposed to put charms on it then?03:59
* bigjools rolls eyes03:59
thumperbigjools: isn't this easy with maas?03:59
bigjoolsthe maas server is irrelevant to what gets provisioned on nodes03:59
thumperok, in which case I don't care03:59
bigjoolsyes it's trivial03:59
bigjoolsgood :)03:59
thumperbigjools: all i need is access to something that I can bootstrap with maas and juju03:59
bigjoolsactually you probably need the saucy daily since juju  broke maas recently04:00
thumperwallyworld: so, boostrap a maas precise image04:00
thumperwallyworld: shell in04:00
thumperwallyworld: tweak the interfaces file04:00
bigjoolsit was trying to upload zero sized state files04:00
thumperwallyworld: make sure I have a hacked up juju04:00
bigjoolsthumper: I will arrange that for you, no prob04:00
thumperwallyworld: so I can override the default network bridge with an environment variable04:00
thumperwallyworld: then try to start some containers04:01
thumperand see if they are pingable / addressable04:01
wallyworldbigjools: it needed to create an empty file to get a url it could use later04:01
wallyworldbigjools: why did that break? the test doubles worked ok04:01
bigjoolsyeah.... test doubles ... might have a been a bit different to reality :/04:02
bigjoolsit's fixed in latest trunk for maas anyway04:02
wallyworldsure, but why does creating a 0 length file break?04:02
bigjoolsmaas was rejecting it04:02
wallyworldwell that sucks04:02
bigjoolsindeedy04:02
bigjoolsbut no longer04:02
wallyworldthumper: so you are just setting up a "standard" lxc bridged environment04:03
wallyworld?04:06
thumperwallyworld: yeah, set eth0 to manual04:06
thumperand bridge to dhcp over eth004:06
wallyworldi tried that and lxc didn't boot04:06
thumperworked for me04:07
thumperon ec204:07
thumperI want to try on metal04:07
wallyworldhmmm. ok04:07
thumperand maas04:07
thumpermay be hacky04:07
thumperbut if it leads to installing openstack nicely on containers in maas04:08
thumperwe may be ok with it...04:08
thumpermaybe04:08
wallyworldi just has to work for iom04:08
wallyworldit04:08
thumperhuh04:08
thumperand not be entirely string, spit and duck tape04:09
wallyworldbut it would be nice to have a network guy say "do it like this"04:09
* thumper nods04:09
wallyworldsurely there's someone we can ask04:09
wallyworldmaybe from is?04:09
thumperthat's going to be part of my email04:09
thumperwill fire up to mramm and william04:09
wallyworldso i still don't think we need to record the origin of a machine in state04:10
wallyworldsince we can write the address to martin's new data model04:10
thumperI'd be happy enough if we could use hallyn's suggested hackery for IOM and MAAS with something more concrete/understandable later04:10
wallyworldhallyn?04:11
thumperwallyworld: hallyn is serge04:11
wallyworldah right04:11
thumperwallyworld: sometimes we don't know the ip address until after the machine agent has started04:11
thumperwallyworld: so the machine agent needs to know how to find out04:11
wallyworldwell, the the manual provisioning case, it just gets written directly into env04:12
wallyworldfor lxc, can't we add something to cloud init04:12
wallyworldto record the correct address in state so the agent can read it04:13
thumperI still think that sticking something in state is the right approach04:13
thumperjsut gut feel right now04:13
* thumper untangles gut feelings into an email04:14
wallyworldwe are sticking something in state - the addresses :-)04:14
wallyworldno need for any indirection04:14
* thumper punches wallyworld for not listening04:16
wallyworldhuh?04:16
* thumper punches wallyworld because he is frustrated04:16
thumperperhaps more honest04:16
thumperstand still wallyworld04:16
wallyworldouch04:17
wallyworldi listened, didn't necessarily agree :-)04:17
thumperI think we need it for later, perhaps not entirely needed now04:17
thumperas we can force  it in04:17
thumperwallyworld: if you are looking for something to do, we need to be able to parameterise machines with the containers they support04:17
wallyworldso let's just do what we are sure we need for now and iterate later if needed04:17
thumperand be able to set and update that04:18
thumperand have the deployments honour it04:18
wallyworldok. i think i have hit a roadblock with my removal of control-bucket :-(04:18
thumperwallyworld: so we can then only start an lxc provisioner if we support lxc04:18
thumperbootstrap?04:18
wallyworldbootstrap works fine. but the next time you try a juju command, it doesn't know what the control bucket is cause it's stored in state and it can't access state cause it needs a control bucket to do so04:19
wallyworldwhich make me wonder how we are going to support someone going to a different pc and using juju for the env they have set up elsewhere04:21
wallyworldthumper: so we would parameterise machines based on the provider which created them i guess? ie all ec2 machines support x,y.z; all mass machines support a,b,c ?04:22
thumperno, I don't think so04:22
thumpercould be kernel limited04:22
thumperso some kernals support kvm, some don't04:22
wallyworldso how do we know then what a machine supports?04:22
thumperwell...04:23
thumpersome job in the machine agent will need to interrogate the machine04:23
thumperif lxc is not installed, no lxc containers04:23
thumperif kernal foo, no kvm04:23
thumperetc04:23
thumperand then sets state04:23
wallyworlddoesn't sound very scalable to have to track all the kernal versions supporting kvm etc04:24
wallyworldi think also a machine could it self write into state what it supports04:25
wallyworldso a job would be called by cloud init and the machine would contact the state server and update its details04:25
wallyworld?04:26
thumperyour guess is as good as mine right now04:33
thumperand at the end of friday I have run out of fucks to give04:33
wallyworldnp. i'll try it and see if it works04:35
wallyworldlots of dead ends this week :-(04:35
thumpersometimes you have shitty weeks04:35
thumperthat's life04:35
wallyworldand the landing bot is still fucked04:35
thumperaccept it and move on04:35
* thumper finishes early04:36
jtv1wallyworld: a question about the "signedImageDataOnly" parameter to imagemetadata...  Is that about requiring images to be signed, or does it mean the simplestreams index etc. must be signed?04:57
wallyworldit's about requiring that the metadata be signed04:58
wallyworldnot the images themselves04:58
jtv1Ah OK, that explains a few things.  Thanks.05:05
jtv1(This was actually documented as I recall, but it's one of those cases where you first need to know enough to rule out the potential for ambiguity.)05:06
jtv1wallyworld: do we have anything like a test double for simplestreams?05:21
=== jtv1 is now known as jtv
jtvwallyworld: also, there seem to be "releases" and "daily" versions of the base URL, but also "releases" and "daily" streams inside the indexes found at those base URLs.  Is that correct?05:32
wallyworld_jtv: yes, there are releases and daily. we use releases unless specified otherwise06:45
jtvwallyworld_: what I mean is, there's separate base URLs for releases and daily, but that doesn't seem to be the same thing as setting the Streams selector to "releases" or "daily," is it?07:23
wallyworld_i've only ever used the base url with "releases" at the end. and within that, chosen the releases metadata as opposed to the daily metadata07:24
wallyworld_i've not used a daily base url. didn't know one existed07:25
jtvMaybe it's outdated...  there's a bug open for the "daily" one not having an Azure file.07:38
wallyworld_jtv: we've always just used the release images for openstack and ec207:47
wallyworld_jtv: as far as a test double - we have tests that set up sample data and a matching  http service, but that hasn't been packaged into a re-usable instance07:48
jtvSo I may have to export it.07:49
wallyworld_export it?07:50
jtvCapitalize some names.07:51
wallyworld_sure, but what is "it"?07:51
jtvtestRoundTripper.07:51
wallyworld_just make a new one07:52
wallyworld_var testRoundTripper = &jujutest.ProxyRoundTripper{}07:52
wallyworld_i guess it could be packaged07:52
jtvAnd the code that puts it in place.07:52
wallyworld_i think it's all of 4 lines07:53
wallyworld_the image data will be different for each test case i would imagine07:54
rogpeppemornin' all07:54
wallyworld_g'day07:54
rogpeppewallyworld_: hiya07:54
wallyworld_rogpeppe: i went to land that simplestreams branch today cause i really need it. but canonistack went down for maintenance and now our landing bot is gone07:55
wallyworld_and i don't know how to restart it07:55
rogpeppewallyworld_: oh dear07:55
wallyworld_yeah :-(07:55
rogpeppewallyworld_: mgz probably does07:56
wallyworld_the IS guys said why the fuck are you running prod stuff on canonistack?07:56
wallyworld_i didn't have a good answer :-)07:56
=== mthaddon` is now known as mthaddon
wallyworld_rogpeppe: i'm unsure about the correct way to do stuff with the api changes. in the jujud Machineagent Run() method, it is kosher to get a state object using openState() and then go machine = st.getMachine(234) and then invoke methods on the machine object?08:04
rogpeppewallyworld_: the correct answer depends on what you're trying to do08:05
wallyworld_rogpeppe: a code snippet http://pastebin.ubuntu.com/5914001/08:05
wallyworld_i want to write some data to the machineDoc08:05
wallyworld_on which the agent is running08:06
rogpeppewallyworld_: i *think* that will probably be best done in one of the machine agent workers08:08
rogpeppewallyworld_: probably deployer, or maybe machiner08:08
wallyworld_rogpeppe: the code to set up the supported containers is in the run method08:09
wallyworld_so i have the info at hand at that point08:09
* rogpeppe thinks08:11
wallyworld_i'll see if i can move the code08:11
wallyworld_cause some more lxc sruff is done in StateWorker()08:11
wallyworld_so it might make sense to put it all together08:12
wallyworld_i'm just reading all this code for the first time08:12
wallyworld_i think i can stick it in StateWorker()08:12
rogpeppewallyworld_: i think that's reasonable for the moment. we're going to be moving away from doing anything in the state worker though, as we start to use the API for everything08:16
rogpeppewallyworld_: so we'll need a SetSupportedContainers API call in the relevant worker (or perhaps on MachineAgent.State08:17
rogpeppe)08:17
wallyworld_rogpeppe: except i just saw that StateWorker is only run on bootstrap node. and it just calls openState() anyway. so i might leave the code in the Run method08:17
rogpeppewallyworld_: no, every client runs StateWorker currently08:18
rogpeppewallyworld_: otherwise nothing would work, because we haven't moved all the agents to using the API yet08:18
wallyworld_ok. i'm still not across all the new design08:19
rogpeppewallyworld_: can we really not tell what containers a machine supports until it comes up?08:19
rogpeppewallyworld_: i'm thinking that this breaks the nice usual mode of operation: if i interpret this right, you won't be able to deploy to a given container on a machine until that machine has actually come up08:20
rogpeppewallyworld_: or am i misunderstanding what SetSupportedContainers is to be used for here?08:21
fwereaderogpeppe, if you have any clever way of determining the answer to that question we would be most interested to hear it08:22
fwereaderogpeppe, wallyworld_: but I don't think we can prevent adding containers until the host's up08:23
rogpeppefwereade: i'm thinking that we should probably *allow* deployment to a container before a machine's up, yes08:23
rogpeppefwereade: but the deployment should fail if the container's not supported08:23
fwereaderogpeppe, wallyworld_: isn't that just a provisioning failure?08:23
rogpeppefwereade: +108:24
rogpeppefwereade: but perhaps that's what wallyworld_'s envisaging anyway, i'm not sure08:24
wallyworld_rogpeppe: there's a method called EnsureLXCContainers08:24
wallyworld_that is called at the start of the Run method08:24
rogpeppewallyworld_: method on what?08:25
wallyworld_so we know then if lxc is supported08:25
wallyworld_MachineAgent08:25
rogpeppewallyworld_: you mean EnsureWeHaveLXC ?08:25
wallyworld_yeah08:25
wallyworld_sorry, bad memory08:25
wallyworld_rogpeppe: and yes, set supported containers is supposed to be used so that we only attempt to create a container on a host that can support it08:26
wallyworld_eg not all hosts can run kvm08:26
wallyworld_or lxc (eg windows)08:26
fwereadewallyworld_, I'm a bit worried about the inconsistency there08:26
=== tasdomas_afk is now known as tasdomas
rogpeppewallyworld_: i think that breaks juju's basic workflow, unfortunately08:26
fwereadewallyworld_, what's the benefit of having two different ways of failing the same operation?08:27
wallyworld_fwereade: rogpeppe: i have to go have dinner and play soccer, i'll talk to you later this evening when i'm back08:27
rogpeppewallyworld_: np, have fun08:27
fwereadewallyworld_, sure, have fun08:27
wallyworld_fwereade: also, bot is down08:27
fwereadegrar, ty08:27
wallyworld_canonistack got nuked today for upgrade08:27
wallyworld_and bot disappeared08:27
wallyworld_and i have nfi how to restart it08:27
wallyworld_we need to not run bot on canonistack08:28
wallyworld_anywats, ttyl08:28
fwereademgz, do I recall that jam handed bot-bouncing duties over to you when he left?08:28
* fwereade getting breakfast quickly08:48
axwfwereade: when you have a moment, can you please read my comment here? https://bugs.launchpad.net/juju-core/+bug/102787609:11
_mup_Bug #1027876: cmdline: Support debug-hooks <cmdline> <juju-core:Triaged by axwalk> <https://launchpad.net/bugs/1027876>09:11
fwereadeaxw, that looks pretty plausible actually09:27
fwereadeaxw, are you interested in investigating that a little bit?09:27
axwyeah, I'd be happy to have a crack at it09:27
axwit'll probably take me a little while longer than others, still learning things obviously :)09:28
axwthanks for taking a look09:28
fwereadeaxw, the only wrinkle I can see is clearly communicating what's going on when two users try to debug hooks on the same unit (and making sure it works if two people are doing different units on the same machine)09:28
fwereadeaxw, cool, that would be very much appreciated09:29
axwyeah I dd think of that as I was writing it up... only simple solution I could think of was the time out the ssh command and print something useful09:29
fwereadeaxw, I can live with a bit of inelegance there, though, it is very much a charmer-focused tool09:30
axwactually the flock can do that09:30
axwok09:30
axwcool09:30
TheMueso, second part of syncing is in: https://codereview.appspot.com/1191004309:53
TheMueanyone interested in a review?09:53
jtvTheMue: I think I can take it.09:54
TheMuejtv: thx09:54
axwI'm off. Have a nice weekend everyone.09:57
=== ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: mgz | Bugs: 5 Critical, 76 High - https://bugs.launchpad.net/juju-core/
fwereadedimitern, ping10:18
dimiternfwereade: pong10:18
fwereadedimitern, any thoughts on CanDeploy? AFAICT we don't really need it10:18
fwereadedimitern, because we'll get unath errors out of Life for any unit we're not meant to know about10:19
dimiternfwereade: well it started as AssignedMachineId10:19
dimiternfwereade: but you're probably right10:19
fwereadedimitern, the plan was that we could drop all of that bit, I think -- "responsible" is now handled implicitly behind the api10:19
fwereadedimitern, that's what getAuthFunc does for us10:19
dimiternfwereade: any chance for mistakes? like recalling a unit we think we cannot access?10:20
fwereadedimitern, so long as we're barfing on error that aren't unath, and we're only returning unauth errors in appropriate situations I think we're good10:20
fwereadedimitern, and CanDeploy just duplicates the work of getAuthFunc from the other direction AFAICT10:21
=== teknico1 is now known as teknico
fwereadedimitern, you should be able to drop the CanDeploy bit and all tests should still pass, I think10:21
fwereadedimitern, if that doesn't work we should look closer10:21
dimiternfwereade: i'll try that out10:22
jtvHi folks — I was wondering why the Virtual RoundTripper in environs/jujutest/metadata.go lists files as an array of filename/content tuples?  Wouldn't a map from filenames to contents be easier to understand?10:34
fwereadejtv, sounds like it'd eliminate possible confusion too, but I don;t specifically know about that code10:42
jtvThanks.  Something to keep in mind...  I found it hard to get my mind around the test setup, but I figured it was a better investment than mindlessly copying what everybody else does.  :-)10:51
fwereadejtv, +110:51
dimiternfwereade, rogpeppe: I'd like to leave the UnitTag, consts, regexpes and other common stuff between api and state that's now duplicated to be cleaned up in a follow up, if you don't mind, not to complicate this CL11:13
rogpeppedimitern: sgtm11:13
fwereadedimitern, ah, has duplication already started elsewhere?11:13
dimiternfwereade: yeah, in a few places, not many11:14
fwereadedimitern, ok, yeah, best clear it up all in one go after this then11:14
dimiternfwereade: yeah11:14
fwereadedimitern, does CanDeploy evaporate cleanly?11:14
dimiternfwereade, rogpeppe: I also removed CanDeploy altogether and reverted the NotAssignedError changes, running tests now, then will test it live, if it works it should be done11:15
fwereadedimitern, lovely, tyvm11:15
rogpeppedimitern: brill, thanks11:16
dimiternrogpeppe, fwereade: yep, tests pass without it, testing live now11:17
dimiternwallyworld_: standup?11:33
* rogpeppe goes for lunch11:56
frankbandimitern: re William question in my review, i don't see a StringsWorker in the worker package (there is only a notifyWorker), so I guess it's not yet implemented, correct?12:00
mgzdimitern: so, the go-bot creds, can you send them to me?12:01
dimiternfrankban: yes it's not - so far only one worker could use it - the machiner, if others appear we can factor out the common code into a stringsworker12:03
dimiternmgz: just a sec12:03
frankbandimitern: well, the minunits worker will be the second one12:04
dimiternfrankban: great12:05
dimiternfrankban: we can follow the notifyworker pattern then12:06
mgzso, for now, people should manually land on trunk I think12:07
mgzif anyone is not sure how to do that or wants help, poke me12:07
* dimitern boo we want the bot!!12:08
dimitern:)12:08
mgzonce you bot, you don't want to go back...12:08
dimiternsure!12:09
dimiternfwereade, rogpeppe: https://codereview.appspot.com/11800045/ updated12:13
TheMueso, first step done, a pre-check12:24
fwereademgz, rogpeppe, I might have lunch before I chat to you guys, will you be around a bit later? am I blocking you at all?12:45
rogpeppefwereade: i'll be around12:45
rogpeppedimitern: "No, if I do the test still succeeds, but it takes 10s (LongWait) more."12:47
rogpeppedimitern: i'd like to understand why that's true12:48
rogpeppedimitern: i can't see why it would be12:48
rogpeppedimitern: because isRemoved doesn't call Sync or StartSync12:48
mgzfwereade: I shall lunch as well12:49
rogpeppedimitern: and anyway Sync doesn't affect anything except watchers, and waitFor doesn't use a watcher12:50
rogpeppemgz: enjoy12:50
fwereadereviewing dimitern's branch but off shortly, cath's whereabouts are unknown12:51
dimiternrogpeppe: I don't know but I observed so12:51
rogpeppedimitern: that's really weird12:51
rogpeppefwereade: lost in a maze of twisty passages, all alike?12:52
fwereaderogpeppe, london streets have the occasional distinguishing feature, but yeah12:52
rogpeppefwereade: ah, i thought you were still in a large country house in wiltshire...12:52
dimiternrogpeppe: pull the branch and try it out for yourself, if you want12:54
rogpeppedimitern: am just doing that12:55
rogpeppedimitern: i can't reproduce the behaviour12:59
rogpeppedimitern: did you change BackingState to State in waitFor too?12:59
rogpeppedimitern: because that *would* have the results you saw13:00
dimiternrogpeppe: I changed them everywhere13:06
dimiternrogpeppe: when I saw the delays of 10s13:07
rogpeppedimitern: ah, that was not my suggestion13:07
rogpeppedimitern: the only place it makes a difference for a call to Sync13:07
rogpeppes/for/is for/13:07
rogpeppedimitern: i think it's worth using BackingState only when necessary rather than changing it as if it's magic powder :-)13:07
rogpeppes/changing/using/13:08
dimitern:)13:08
dimiternrogpeppe: ok will try13:08
rogpeppedimitern: tbh, i'm not sure we should have provided BackingState at all - JujuConnSuite.Sync/StartSync would probably be a better idea13:08
dimiternrogpeppe: it's useful sometimes13:10
dimiternrogpeppe: with watchers through the api13:11
rogpeppedimitern: agreed, but what would you ever need to do on it other than call Sync or StartSync ?13:11
rogpeppedimitern: (genuine question)13:12
dimiternrogpeppe: i can't think of other uses, but jam probably has some13:13
rogpeppedimitern: i can't think of any other case where it would make a difference13:14
rogpeppedimitern: after all, they're both talking to the same underlying mongo13:14
dimiternrogpeppe: but different connections13:16
rogpeppedimitern: sure, but why would that make a difference?13:16
rogpeppedimitern: we don't do any caching13:16
dimiternrogpeppe: probably nothing, just thinking out loud13:17
ahasenackguys, got this in today's update of the whole juju-core stack from trunk:13:26
ahasenack# launchpad.net/gwacl13:26
ahasenack../go/src/launchpad.net/gwacl/management.go:317: function ends without a return statement13:26
ahasenackI'm on raring13:26
ahasenackit doesn't even say if that's an error or a warning13:27
rogpeppeahasenack: ah, that's because the builder is running go1.113:27
rogpeppeahasenack: there are no warnings13:27
ahasenackgo likes to change syntax every now and then, heh?13:27
rogpeppeahasenack: go1.1 is more lenient about return statement positioning13:27
ahasenackrogpeppe: so what do I do?13:28
rogpeppeahasenack: you could install go1.113:28
ahasenackno13:28
ahasenackthat would hide the problem13:28
rogpeppeahasenack: most of us use that13:28
ahasenackdo you plan on backporting go1.1 to raring, quantal and precise?13:28
rogpeppeahasenack: that is the plan, yes13:28
rogpeppeahasenack: although i don't know where we are with it13:28
ahasenackthen I'll get go1.1 when it's backported :)13:28
ahasenackalthough it sounds like saucy will be out before :)13:29
rogpeppeahasenack: in which case, you should file a bug with gwacl13:29
ahasenackok13:29
rogpeppeahasenack: and perhaps propose the fix (which will be trivial) if you feel charitable13:29
rogpeppeahasenack: i'm afraid i don't know where we are currently on policy around using go1.1 features13:30
rogpeppefwereade, mramm: ^ ?13:30
ahasenackhttps://bugs.launchpad.net/gwacl/+bug/120533113:30
ahasenackk, filed13:30
_mup_Bug #1205331: r203 doesn't build in raring <Go Windows Azure Client Library:New> <https://launchpad.net/bugs/1205331>13:30
rogpeppeahasenack: i was away when the builder was changed to use go1.1, i'm afraid, so i missed whatever debate there was.13:31
ahasenackseems a big deal switching compilers13:31
rogpeppeahasenack: the Go folks are very careful around backward compatibility, so it's not actually a big deal13:33
ahasenackrogpeppe: oh, I thought that bug prevented building13:33
ahasenackso it is a warning?13:34
rogpeppeahasenack: no, it's a backwardly incompatible feature13:34
ahasenackso this one in particular is a big deal then13:34
rogpeppeahasenack: it's a big deal if people use any go1.1-specific feature if we require 1.0.x compatibility13:35
rogpeppeahasenack: that's not just a compiler-switch problem, it's a problem with using any new feature AFAICS13:35
rogpeppeahasenack: that's why i *thought* we were going to continue running the bot on 1.0.2 until we could use 1.1 everywhere13:36
ahasenacksounds like the safer choice13:36
ahasenackdoesn't the bot need rebuilding, given that canonistack outage? Maybe it could be rebuild with 1.0.213:37
ahasenackor is that a different bot13:37
ahasenackrebuilt13:37
rogpeppeahasenack: mgz is restarting it, yes. he might want to use the other version, though i suspect it was changed for a reason i'm not aware of13:39
ahasenackmaybe the tls stuff13:39
ahasenackI don't recall which version had which problem, but go 1.1 and tls and gwacl were involved13:40
rogpeppeahasenack: it's possible that gwacl now requires go1.1 because they've forked net/http from tip13:44
rogpeppeahasenack: nope, "The fork is based on go version 2:1.0.2-2."13:45
fwereaderogpeppe, I am not 100% sure that the last 1.0 uses have been excised -- mgz, is there anything preventing us from going 1.1 across the board?13:46
rogpeppefwereade: is 1.1 now backported to precise etc?13:47
fwereaderogpeppe, I *think* that the most recent releases were all built with 1.1, by a variety of means which I do not have at immediate recall13:54
rogpeppefwereade: so is it a problem that gwacl is using go1.1-specific features?13:55
fwereaderogpeppe, it may not be, but I'm waiting for mgz's response, because he has better command of the situation than I do13:55
frankbanmgz: hi, any idea about this lbox error? http://pastebin.ubuntu.com/5914998/14:24
=== tasdomas_afk is now known as tasdomas
mgzfrankban: you can't use lbox submit, you don't have perms on the branch14:26
mgzcommit to trunk locally, run the tests, push to the go-bot branch as go-bot14:26
mgzso, the last command specifically is on bzr+ssh//go-bot@bazaar.launchpad.net/~go-bot/juju-core/trunk14:29
mgzyou may want to do `bzr info` on it now, to double check if your ssh keys got added to the bot account14:29
mgzwuhah, I totally missed the hilight in the log14:30
mgzahasenack: we're moving to go 1.1 becasue maintaining cross-version compat for the lifetime of our support on a young language like go isn't practical.14:32
mgzahasenack: you can use ppa:juju/golang which contains what jamespage is going to get backported to older series, and what juju-core is getting built from14:33
rogpeppemgz: so we can use go1.1 features now?14:33
* rogpeppe drools slightly14:33
mgzwe really want our releases sorted first, but yeah.14:33
fwereademgz, rogpeppe: if you're both around, do you want to talk about addresses?14:34
mgzlets14:34
rogpeppefwereade: sure14:34
frankbanmgz: thanks, I'll do14:34
mgzfrankban: if you get stuck I can land for you.14:34
fwereaderogpeppe, mgz, I'm joining the standup call14:34
ahasenackmgz: so #1205331 should be marked as invalid?14:36
_mup_Bug #1205331: r203 doesn't build in raring <Go Windows Azure Client Library:New> <https://launchpad.net/bugs/1205331>14:36
ahasenackor won't fix perhaps14:36
ahasenackuntil go 1.1 lands in raring14:36
mgzahasenack: arguably we should fix that for now14:38
frankbanmgz: bzr info bzr+ssh://go-bot@bazaar.launchpad.net/~go-bot/juju-core/trunk gives me a "Permission denied (publickey)". If you can land my branch, that would be great, otherwise I can wait for tarmac to be up again14:39
mgzI shallland shortly, which branch?14:40
frankbanmgz: lp:~frankban/juju-core/minuniter-worker thanks!14:43
=== tasdomas_afk is now known as tasdomas
dimiternfwereade: updated https://codereview.appspot.com/11800045/15:21
dimiternrogpeppe: I haven't seen your response to ^^ yet?15:21
fwereadedimitern, nice timing :)15:21
dimiternrogpeppe: changed the tests to use s.State, except for waitFor15:22
rogpeppedimitern: oh sorry, i got half way through then got distracted15:22
rogpeppedimitern: thanks15:22
fwereadedimitern, https://codereview.appspot.com/11800045/diff/22001/worker/deployer/deployer.go#newcode17615:22
fwereadedimitern, do we need an error return?15:22
fwereadedimitern, ah, I guess we check tag sanity15:23
fwereadedimitern, forget I said anything15:23
dimiternfwereade: not really, it's always nil15:23
rogpeppedimitern: have you re-proposed with those changes?15:23
dimiternfwereade: kept it like this to match the interface of state15:23
dimiternrogpeppe: yes15:23
fwereadedimitern, I'd probably drop it then, but don't do it unless you honestly think it's a good idea, it might just be churn15:24
rogpeppedimitern: oh yes, doh, reload doesn't change the patch no15:24
dimiternrogpeppe: https://codereview.appspot.com/11800045/diff2/22001:31001/worker/deployer/deployer_test.go15:24
rogpeppedimitern: yeah, i'm stupid, ignore me15:24
rogpeppedimitern: LGTM15:25
dimiternrogpeppe: great, thanks15:26
dimiternfwereade: unless you have objections, i'd like to land it, so I can start working on the (few) follow-ups15:27
fwereaderogpeppe, https://codereview.appspot.com/11800045/diff/22001/cmd/jujud/deploy_test.go#newcode9515:31
fwereadedimitern, LGTM regardless15:31
dimiternfwereade: thanks!15:33
rogpeppefwereade: it felt cleaner to have them as separate calls, especially as we might want to make them available to different clients15:33
dimiternmgz: so how's the landing dance performed?15:33
dimiternmgz: lp:~dimitern/juju-core/080-deployer-uses-api15:33
dimiternmgz: but i'd like to know how can I do it as well15:33
rogpeppefwereade: and having them as separate calls maps nicely to the future address watchers, where we may well want to watch the individual addresses separately15:34
=== tasdomas is now known as tasdomas_afk
rogpeppefwereade: so we can just use a separate StringsWatcher for both Addresses and APIAddresses15:35
mgzdimitern: so, what I'm doing,15:35
rogpeppefwereade: if it's slow making 3 request serially, then it's pretty trivial to make them concurrently as a future optimisation15:36
rogpeppes/request/requests/15:36
mgzswitch to trunk. merge your feature branch. commit with --author (if not you) using roughly rvsubmit style message. run `go test ./...`. bzr push to the magic bzr+ssh://~go-bot url ^above15:36
fwereaderogpeppe, something's still a bit itchy... maybe it's that we will probably always want cacert with either15:36
fwereaderogpeppe, but, I don't feel very strongly, I'd misinterpreted anyway15:37
dimiternmgz: ok, I'll try now15:37
mgzdimitern: you probably want to wait till after me for the merge though, so we serialise nicely15:37
mgz...the tests are taking too long to run :)15:37
rogpeppefwereade: yeah, we'll need CACert with either, but that will still change independently.15:38
dimiternmgz: I'll merge and run the tests, so when I'm done to push it, I'll tell you15:38
fwereaderogpeppe, yeah, sgtm, cheers15:38
rogpeppefwereade: cool, thanks15:38
mgzyeah, if you move the commit till after running tests, you can them pull/remerge then and (mostly) have got the same thing done :)15:40
dimiterngwacl is broken right now15:40
dimiternjust pulled and I see this:15:40
dimitern../gwacl/management.go:317: function ends without a return statement15:41
dimiternjtv, rvba, bigjools: any ideas?15:41
jtvdimitern: you need James Page's Go PPA.15:42
jtvWe're standardized on 1.1.1 nowadays.15:42
dimiternjtv: can you point me there please?15:42
jtvThe  Juju project is, that is.15:42
jtvYes I can15:42
jtvppa:james-page/golang-backports15:43
jtvThis was mailed out as a mandatory step a few weeks ago.15:43
dimiternjtv: and then what? apt-get install golang?15:44
jtvJust "apt-get update ; apt-get upgrade" should do it (as root obviously).15:46
jtvWould there be anybody available for a largish refactoring branch involving attempt strategies?  It's this one: https://codereview.appspot.com/1192304315:48
jtvdimitern: is it working now?15:50
mgzdimitern: pushed, so you can pull trunk and run the real merge/commit now15:50
mgzfrankban: branch landed15:51
dimiternjtv: yeah, thanks, I have to rebuild everything, but it works15:51
jtvOh, yes, forgot to say — you may get some weird errors from things that still link but no longer work.15:51
jtvBest to "rm -rf $GOPATH/pkg/linux_*"15:52
dimiternjtv: that's exactly what I did, and had to re-get goyaml and gwacl/...15:52
jtvI'm surprised that you  had to re-get those, but who am I...  :)15:54
dimiternjtv: i was using go 1.0.3 and haven't updated goyaml in quite a bit of time, since it was refactored to be pure go15:55
jtvoic15:56
jtvWe also no longer use libcurl in gwacl.  We got an unofficial patch for crypto/tls that solves the problem for us, so gwacl now contains forked copies of net/http and crypto/tls.15:57
jtvHmm... that largish refactoring branch I've got up for review isn't that big really, it just looks big in Rietveld because of the number of files it touches.  Launchpad calls it: 629 lines (+141/-61) 22 files modified15:58
jtvSo it's all context.15:58
jtvAny volunteers?15:59
rogpeppemgz: here's a sketchy sketch: http://paste.ubuntu.com/5915266/15:59
rogpeppemgz: it only waits until a machine has an address; it doesn't update addresses when they change later16:00
rogpeppemgz: i think we could probably leave that as a later refinement16:00
rogpeppemgz: with a couple of obvious errors removed: http://paste.ubuntu.com/5915275/16:02
rogpeppejtv: looking16:02
jtvThanks!16:02
rogpeppejtv: we always guarantee at least one attempt (and that's always been true)16:04
rogpeppejtv: so i don't think it's necessary to set Min=116:04
mgzrogpeppe: thanks, that's really useful16:05
rogpeppemgz: cool, np16:05
rogpeppemgz: it's probably full of bugs :-)16:05
jtvrogpeppe: are you sure?  I was told a few weeks back that this was an issue, but I must admit the code isn't particularly clear.16:05
jtvIt'd be nice to have this sort of thing documented.  :/16:06
rogpeppejtv: yeah, that should be documented definitely16:06
rogpeppejtv: the original comment in the code says "// we always make at least one attempt."16:06
rogpeppejtv: and i'm pretty sure i meant that when i wrote the comment16:07
jtvrogpeppe: oh, did I miss that one?  Or are you saying it was lost somewhere along the way?16:07
jtvI'd like to fix this if it's safe to do so, obviously.16:08
rogpeppejtv: it wasn't a doc comment unfortunately16:08
jtvSo might be nice to promote it.16:08
rogpeppejtv: the new code returns an Attempt with force==true, and looking at Attempt.Next, if force is true, it's guaranteed to return true, so it seems to be the case now too16:08
jtvTo avoid misunderstandings, which new code do you mean?16:09
jtvI guess I'll have to see this through now and actually write the comments.  :)16:10
rogpeppejtv: how about this, as an addition to the comment on Next:16:10
rogpeppe// Next always returns true the first time it is called -16:10
rogpeppe// we are guaranteed to make at least one attempt.16:10
jtvYes, I'll add that, thanks.16:11
rogpeppejtv: the new code is the code that's currently in the tree (i updated it quite recently from goamz which had made some useful changes)16:11
jtvThe "force" bit is a bit weird...  You'd expect the "count" field to cover the same issue.16:12
jtvAs in: initialize "count" to min(strategy.Min, 1)16:12
rogpeppejtv: i remember going through a few iterations of the review of that code16:13
rogpeppejtv: it's a bit more subtle than it looks16:13
jtvI'm sure it is.  :)16:13
rogpeppejtv: in particular, look at the way that HasNext sets force16:13
rogpeppejtv: could you reprose that branch please? rietveld is doing that annoying "chunk mismatch" thing again.16:15
rogpeppes/reprose/repropose/16:15
jtvOh dear.  Yes, hang on.16:15
jtvrogpeppe: lbox just finished re-proposing.16:21
jtvI also removed all the "Min: 1" and added your documentation text.16:21
dimiterni merged mine16:27
jtvHow do we merge?16:31
mgzjtv: you probably need to ask me or dimitern to do it, don't think red squad are in the bot ssh key set16:35
jtvAh16:35
jtvI've got a bunch of branches lined up for landing.  :)16:35
TheMueSo, have to leave. Have a nice weekend.16:35
rogpeppejtv: reviewed16:35
jtvThanks rogpeppe!16:36
jtvAnd a nice weekend, TheMue16:36
TheMuejtv: thx16:36
jtvrogpeppe: you discovered something interesting...  Not only does VerifyBootstrapInit() use env.Storage() a few times, but it's the only use it makes of env!16:38
rogpeppejtv: yeah, so you could just pass in the storage16:38
rogpeppejtv: not entirely sure if that would be a good idea though16:39
jtvNot sure either.  I guess that means I should leave it be.  :)16:39
rogpeppejtv: i guess we might want to make it verify some other property of the environ in the future16:39
jtvYes, we might well.16:43
jtvAbout those statements I moved out of the "if" conditions: those lines got longer during my work, so I had to break them up to keep them legible.  And then they got a lot shorter again.16:44
jtvSo you see how that happened.16:44
ackkhi, is the ErrorCode supposed to be present for each kind of error response from juju API?17:08
dimiternackk: only if there was an error17:09
ackkdimitern, so if make a login request with AuthTag: foo I get an error without an "ErrorCode" field, just an "Error" one17:09
ackkdimitern, "user-foo" gives me back an auth error with "unauthorized access" ErrorCode, instead17:11
ackkdimitern,  fwiw I get 'invalid entity tag "foo"' as Error in the first case17:12
rogpeppedimitern, fwereade: finally, worker/upgrader: https://codereview.appspot.com/1193204317:14
fwereaderogpeppe, ack17:14
rogpeppefwereade: much simpler than the one in cmd/jujud; hopefully ok :-)17:14
rogpeppeaaaand that's me for the day17:15
rogpeppehappy weekends to all17:15
jtvnn robbiew17:15
jtvI mean, rogpeppe17:15
jtv(damn over-eager tab completion!)17:16
rogpeppejtv: :-)17:16
rogpeppejtv: g'night17:16
ackkdimitern, I was wondering if the different behavior is a bug or it's intended17:27
dimiternackk: there is a test like that i think17:32
dimiternackk: "foo" is an invalid tag format, so you're not even getting to the unauthorized step17:32
ahasenackdimitern: but no ErrorCode came back in that case, that's the question17:33
ackkdimitern, yeah waht ahasenack said17:37
dimiternackk, ahasenack: both code and message are optional, at least one of them will be set when there's an error17:44
ahasenackah, this is how software comes to display those "sorry, unknown error occurred" messages :)17:45
sidneihttps://bugs.launchpad.net/juju-core/+bug/120545118:46
_mup_Bug #1205451: killing instance outside of juju, doesn't get noticed <juju-core:New> <https://launchpad.net/bugs/1205451>18:46
ahasenacksidnei: see this comment: https://bugs.launchpad.net/juju-core/+bug/1190715/comments/419:08
_mup_Bug #1190715: unit destruction depends on unit agents <juju-core:In Progress by fwereade> <https://launchpad.net/bugs/1190715>19:08
ahasenackand the rest of the bug, of course, for context19:09
dpb1a new  papercut one, maybe it's easy to fix? https://bugs.launchpad.net/juju-core/+bug/120546619:37
_mup_Bug #1205466: deploy charm uses cached copy even when all services are removed <papercut> <juju-core:New> <https://launchpad.net/bugs/1205466>19:37
dpb1mramm, arosales: ^19:37
mrammdpb1:  I'm not sure that's even a bug19:37
mrammyou are in control of what charm updates happen if we leave it that way19:38
mrammand not in control if we change it19:38
mrammthat said, I think it would be probably be easy enough to fix if that's the right thing to do19:38
mrammfor the local charm case it seems like it might be surprising for the charm not to update19:39
dpb1mramm: I can validate what pyjuju did, but it seems very weird that I'm asking for a local deployment of a charm that is no where in the deployed system, and I get an old thing installed19:40
mrammbut for the non-local charm case it seems like having it not use the cache might be equally suprising19:40
mrammand having it have different behaviors between the two seems likely to be surprising as well19:40
dpb1mramm: and ya, you all get to decide if you want to fix it I can see your reasoning --- just reporting that it has bitten me a number of times, and each time wastes 15 minutes or so.19:41
dpb1mramm: agreed on differing behaviors.19:41
dpb1mramm: that would be very unexpected19:41
mrammdpb1: if nothing else we should probably let people know what is happening19:41
dpb1mramm: do you want me to verify what pyjuju did, or does it matter?19:42
mrammit does matter, but not that much -- I think the important thing is that we do the "right" thing19:42
mrammif it is biting people, we need to figure out a way to make it better if we can19:43
dpb1mramm: OK, I leave it in your capable hands. :)19:44
ahasenackmramm: fwiw, I think "destroy-service", having the word "destroy" in it, should get rid of the cached copy of the charm. It's what I would expect19:49
mrammwhat if you have two service groups of the same service (two wordpress installs?)19:49
ahasenackyou mean same charm deployed under two different service names?19:50
ahasenacklike, juju deploy wordpress wordpress-A19:50
ahasenackjuju deploy wordpress wordpress-B ?19:50
ahasenackand then juju destroy-service wordpress-B19:50
ahasenackfollowed by juju deploy wordpress wordpress-C (to keep things simple, not -B again)19:51
mrammright19:51
ahasenackI think -C would use the charm as if it's the first time it's being deployed, no cached copy19:51
ahasenacklet's assume the deploy commands above were from a local charm, i.e., --repository ~/foo and local: prefix19:52
mrammbut what happens when you add-unit to A19:52
ahasenackI would expect it to use my local on-disk copy19:52
mrammsince that charm is no longer in the cache?19:52
ahasenackit would use the same charm that wordpress-A/0 has19:52
ahasenackso the cache would need to be service-name based19:52
dpb1Yes, when you upgrade-charm, then are upgraded independently.19:52
mrammso what you are saying is that the cache needs to change19:52
dpb1distinctly19:52
ahasenackso far the cache was invisible19:52
ahasenackimplementation detail19:53
mrammor is it already that way?19:53
ahasenackbut the case dpb described made it appear19:53
mrammok19:53
mrammif the cache is service name based (which makes sense)19:53
mrammany new deploy should not use the cache19:54
mrammand we should destroy it if there are no units in that service naem19:54
mrammname19:54
mrammthat does in fact seem reasonable19:54
mrammposted as much to the bug comments19:59
ahasenackmramm: +1 on your observation about unit count going down to zero not being the same20:09

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