=== thumper-afk is now known as thumper [00:44] marcoceppi, ping about discourse and upgrades. I've installed discourse with juju, and discourse says I should upgrade. You said that the juju discourse charm doesn't handle upgrades. What should I do? [00:45] (am afk, but happy to read responses and deal with them later) [00:48] o/ aquarius [00:48] aquarius: happy birthday for the other day [00:48] I was too slow [00:49] hey thumper! [00:49] you're only 49 minutes too late :) [00:49] sorry, was at the gym [00:49] and you were probably at the pub [00:49] happy regular day aquarius! [00:53] * aquarius laughs [00:54] I was, in fact, in the pub. [00:54] Currently home. [00:54] post-pub :) [00:54] happy 31st January to me, [00:54] Only 364 days until my birthday! [00:55] YAY === gary_poster is now known as gary_poster|away === CyberJacob|Away is now known as CyberJacob [08:21] aquarius: so, it does actually do upgrades, if you just increment the version number in release, or branch, or tag, or whatever config option I called it [08:21] but you don't want to run juju upgrade-charm [08:32] marcoceppi, oh! so, how do I upgrade discourse then? [08:32] aquarius: there's a release config options, or something [08:32] marcoceppi, I have no idea what that means :) [08:32] aquarius: one min, otp [08:33] marcoceppi, no worries :) [08:42] aquarius: okay, so there's a release configuration option, https://bazaar.launchpad.net/~marcoceppi/charms/precise/discourse/trunk/view/head:/README.md#L69 what is your release configuration currently set to? [08:42] juju get discourse should illuminate that [08:42] albiet in a very verbose and slightly annoying fashion [08:44] value: latest-release [08:44] if I've correctly understood the output [08:45] aquarius: right, so you probably didn't follow the readme, which is cool, I forgive you [08:46] heh. I was here telling you everything I did when I installed it :) [08:46] forgiveness appreciated. How can I redeem myself? [08:46] aquarius: so you can find all the valid options for this configuration here: https://github.com/discourse/discourse/releases [08:47] aquarius: basically, you should run `juju set discourse release="v0.9.8.3"` then wait about 5-10 mins [08:47] and discourse should upgrade [08:47] marcoceppi, wow! that's it? [08:47] aquarius: pretty much [08:47] marcoceppi, and that will work from whichever version I'm on now? [08:48] aquarius: yes, as long as you always go forward, they follow a very rigorous upgrade path using db:migrations, etc [08:48] sure, but I don't have to upgrade to all the interim versions? nice. [08:48] let me just check what we're on now :) [08:50] heh, we are a bit behind :) [08:50] marcoceppi, what happens to the forum while the upgrade is happening? does it stay live? [09:01] * aquarius runs juju set discourse release="v0.9.8.3" [09:18] aquarius: so...how's it going? [09:20] marcoceppi, it hasn't upgraded, yet. How can I know what it's doing? [09:21] juju get discourse shows that release is set to v0.9.8.3 [09:22] but the forum itself is not upgraded [09:22] I don't know whether that's because my machine is in the middle of doing the upgrade, or whether the upgrade failed, or whether I have to do something else to tell it to upgrade? [09:28] aquarius: you can run juju ssh discourse/0 [09:29] then tail -f /var/log/juju/unit-discourse-0.log [09:29] it can take quite awhile to run, depending [09:29] aha. [09:29] 2014-01-31 09:31:37 ERROR juju runner.go:211 worker: exited "uniter": ModeConfigChanged: cannot obtain storage account keys: GET request failed: ForbiddenError - The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription. (http code 403: Forbidden) [09:30] that looks relevant [09:30] it's saying that over and over again [09:31] marcoceppi, I don't understand what that means. Don't even know what it's trying to access and failing :) === mwhudson is now known as zz_mwhudson [09:34] aquarius: that's a new one on me, any idea fwereade? [09:34] marcoceppi, sorry, I was disconnected, what's the problem? [09:35] 2014-01-31 09:31:37 ERROR juju runner.go:211 worker: exited "uniter": ModeConfigChanged: cannot obtain storage account keys: GET request failed: ForbiddenError - The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription. (http code 403: Forbidden) [09:35] that looks relevant [09:36] fwereade, that's after I set a new release version for discourse (and so it presumably started to upgrade to the new version) [09:37] aquarius, crikey, that's new to me [09:37] aquarius, is it consistent, or does a `juju resolved --retry` help? [09:38] fwereade, at the moment, the job seems to be restarting every 3 seconds on my cloud VM, and then it has a bunch of log entries ending with that one. [09:39] I can try juju resolved --retry, but do I have to somehow "stop" what it's already doing? [09:39] aquarius, got you, sorry, I'm still a bit morningy [09:40] I can post the whole log section if that would help? [09:40] aquarius, that would definitely be interesting [09:40] aquarius, thanks [09:41] fwereade, http://pastebin.ubuntu.com/6848481/ is the snippet that comes up over and over [09:43] aquarius, what's the agent-state for that unit in `juju status`? [09:43] agent-state: started [09:44] fwereade, and the postgresql unit is the same [09:58] yeah, still doing it. Should I stop juju from trying to do this upgrade somehow? [10:08] I'm now worried that it's going to eat all my compute time [10:18] another question: is my laptop participating in this process? If I restart my laptop, will it screw up anything that juju is doing? [10:18] marcoceppi, if I unset the release config variable, will it stop trying to do the upgrade and failing? [10:19] aquarius: restarting does nothing, since it's the remote machine that's working (your laptop) [10:20] right. So I can at least reboot my laptop, which update manager is telling me I need to :) [10:20] aquarius: re-setting the option might help, but it'll just fire a hook again [10:20] aquarius: what version of juju are you on? [10:20] marcoceppi, 1.16.5-saucy-amd64 [10:20] according to juju --version [10:20] k [10:21] I don't really want the machine to be busy all the time, because it'll use up compute seconds, and that costs money ;) [10:25] aquarius: you can try a slightly bad thing, and stop the agents [10:25] then start them again [10:28] marcoceppi, tha sounds OK. How do I do that? [10:31] aquarius: on the node run sudo initctl list | grep juju- [10:31] then restart the two jobs listed there [10:31] weird. it doesn't show anything [10:31] should be something like jujud-machine-# and juju-discourse-unit-0 [10:31] someting like that [10:32] aquarius: jujud-* [10:32] aha, jujud :) [10:32] do I need to stop them in a particular order? [10:32] should I stop each, then start each, or can I restart one then restart the other? [10:36] marcoceppi, OK, restarted them. logfile still shows that it's continually trying to do whatever it's trying and then fails with the "ForbiddenError" every 3 seconds [10:38] aquarius: you can increase your verbosity of logging [10:38] which might shed some more light on this === zz_mwhudson is now known as mwhudson [10:40] marcoceppi, oh, that sounds handy. How do I do that? [10:40] * aquarius is rtfs to wok out what juju's trying to fetch and failing [10:40] juju set-env 'logging-config==DEBUG' [10:40] that should be sufficent [10:44] marcoceppi, ok, have run that [10:44] marcoceppi, should I expect that the log files will be more detailed? [10:45] aquarius: theoretically, yes [10:45] they aren't, so far [10:45] maybe it hasn't applied it ye? [10:46] aquarius: I wonder if your node is having problems talking to the bootstrap node [10:46] which is why youre' getting all this. Can you pastebin juju status? [10:46] http://paste.ubuntu.com/6848764/ [10:48] huh, all your units are registered as started [10:48] I wonder if this is because you're running 1.16.5 and you have 1.16.3 deployed [10:48] there may be some incompats, though there shouldn't [10:50] perhaps? [10:51] I mean, that's a minor version upgrade only :) [10:52] just trying "juju unset discourse release" to see if that stops the server continually trying to do a non-working thing [10:53] bah, it doesn't. [10:53] server still trying to config things and failing, every 3 seconds :( [10:55] that error is being thrown by something trying to connect to Azure's storage account [10:55] so I think this is some sort of config error === mwhudson is now known as zz_mwhudson [10:58] specifically, the line throwing the error is http://bazaar.launchpad.net/~go-bot/juju-core/trunk/view/head:/provider/azure/environ.go#L113 [10:58] keys, err := azure.GetStorageAccountKeys(accountName) [10:58] but I can't see where GetStorageAccountKeys is defined! [10:59] the only place that function is mentioned in the juju-core source tree is that line which calls it [10:59] I *suspect* that the problem here is that I changed my Azure subscription. [11:00] aaah, hang on, there is a "storage-account-name" in ~/.juju/environments.yaml. I wonder if that's wrong? [11:03] No, that's correct. [11:03] However, if I deployed the discourse setup with a storage name in the azure environments.yaml, and then I *changed* environments.yaml, what do I need to do to teach the juju deployment about the new value? [11:05] I am wondering whether it was set up talking to the old storage and now that it's changed, juju has cached the keys somewhere so it doesn't know how to talk to the new storage [11:05] I'm not even sure that the storage ID changed, mind [11:06] but I bet juju not being able to obtain the storage keys is something to do with me changing the ownership of that storage block from one MSDN subscription to another. [11:11] I do not have any idea how to see which keys juju is trying to use to talk to azure, and what the keys should be, and how to correct them. Is that even doable? [11:11] is this more an fwereade question? :) [11:16] aquarius: that's actually very probable [11:16] aquarius: they're all in the mongodb database somewhere, and fwereade or mgz might know more [11:16] aquarius: tearing down and re-standing up would be easiest but iirc this is a production site [11:17] it is. [11:17] it is community.badvoltage.org [11:17] active forum. [11:17] I do not want to destroy it and set it up again :) [11:19] aquarius: understood [11:19] aquarius: which keys specifically? some details are in your ~/.juju/envrionments/{ENV}.jenv file [11:20] aquarius: fwiw, and an fyi, postgresql does nightly dumps to ~postgres/backups and keeps the last five days [11:20] if you're not already mirroring them offsite [11:20] mgz, I don't know. I am speculating what the problem is. Can you see the scrollback? I can fill in more detail if you canno [11:21] marcoceppi, I have backups, but they're for disaster recovery, not so I can blow away the village and start again unless I really really have to :) [11:21] okay, reading [11:21] aquarius: yes, right [11:21] mgz: so in short aquarius is getting "2014-01-31 09:31:37 ERROR juju runner.go:211 worker: exited "uniter": ModeConfigChanged: cannot obtain storage account keys: GET request failed: ForbiddenError - The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription. (http code 403: Forbidden)" [11:22] mgz, brief summary: using marcoceppi's discourse charm, deployed to Azure. Deployment went fine; site has been live for about two months. Today I tried to upgrade discourse. juju log on the discourse unit throws the error from above. [11:22] but he recently changed the bucket and possibly some additional details for the env [11:23] mgz, after the discourse deployment was created, I changed my Azure subscription (from the free trial to an MSDN Ultimate subscription) and had MS Support migrate all my VMs/storage etc over to the new subscription. I then edited environments.yml and changed the subscription-id and so on to the new values. I can successfully connect to the juju units with juju ssh and so on, so I must have done it roughly correctly. [11:24] mgz, I am *speculating* that that error is being caused because juju first connected to the Azure storage unit when it was under the free trial subscription ID, and cached some keys or something; now that storage unit (which may have a new ID and may not; I do not think it has) is under the MSDN subscription ID so juju's cached keys don't work. [11:24] But that is speculation. [11:25] aquarius: can you compare the value sin your environments.yaml with the ones in the .jenv? [11:26] mgz, management-subscription-id and storage-account-name are the same in ~/.juju/environments.yaml and ~/.juju/environments/azure.jenv [11:30] can you see the cert azure has under their web ui? [11:33] mgz, I don't know. What am I looking for? [11:34] I'm not sure :) the x509 cert thing the azure setup instructions talk about being uploaded [11:34] mgz, there is a "manage access keys" thing for the storage [11:35] mgz, I can regenerate those keys, and then teach juju about the new keys [11:35] but I don't know where juju stores the keys! [11:35] let me look in .jenv [11:37] mgz, I am 95% sure that the .cer file that I uploaded on setup is correct, because it's still there, it didn't change, and if I had that wrong then I don't think that juju would be able to talk to azure *at all*. [11:37] I think the problem is juju isn't able to talk to the *storage* [11:38] but then maybe the problem is that juju is trying to get the storage access keys and isn't allowed because something else is wrong [11:39] mgz, I can't see the actual cert in the Azure web UI. I can see that there *is* a cert, that it's called "Juju" (which is what I named it), and I can see its fingerprint. [11:39] (er, thumbprint) [11:39] I don't know how to get the thumbprint of whichever cert juju is using though! [11:42] the storage access keys are described at https://www.windowsazure.com/en-us/documentation/articles/storage-manage-storage-account/#how-to-view-copy-and-regenerate-storage-access-keys [11:42] can I see which ones juju is using and update them? [11:42] I'd expect either the path or the cert itself to be in the jenv [11:42] (although I think the error I'm getting may be from juju trying to get those keys and being denied, rather than *using* those keys and being denied) [11:43] right, it doesn't get as far as getting the storage keys [11:55] mgz, so, your theory is that when juju tries to get the storage keys, it authenticates that request with the cert, and the cert is wrong? that sounds plausible, but I don't know how to confirm that :) [11:56] aquarius: something like that, though the request goes through as far as getting an http error, which implies a connection of some kind worked [11:56] *nod* that http request is getting a Forbidden [11:57] I am trying to work out how to calculate the thumbprint of the certificate I have :) [11:57] I'd like to ask one of the red squad who wrote the gwacl bits [11:57] rvba: ^ any ideas on this azure error? [11:59] OK. I have confirmed that the thumbprint of the cert that Azure has, and the thumbprint of the cert I have set in environments.yaml, are the same. [12:00] the azure thumbprint is listed in azure web ui > settings > management certificates, and I got the fingerprint with cat (cert file from ~/.juju/environments.yaml) | openssl x509 -sha1 -fingerprint [12:00] okay, fun [12:01] hm! question. If I look at the cert file itself, I can see the certificate value after --- BEGIN CERTIFICATE --- [12:02] in .juju/environments/azure.jenv, I can see that same certificate under management-certificate [12:02] however there is also, in environments/azure.jenv, a ca-cert value which seems to be a different cert. Are we expecting those two to be different? [12:04] am happy to provide debugging information for rvba if it'd help [12:05] mgz: I don’t know where to start. Can you summarise the question? [12:05] aquarius: that one is a differnt one, used for juju itself [12:05] mgz, ok, that's not a problem then :) [12:05] allenap: see summary at 11:23 in scrollback [12:11] allenap: any ideas? [12:12] mgz: I’m also thinking along the x509 road, but I’ve just spent the last 5 minutes trying to log into Azure. [12:13] a quick question.. what does "ERROR no such request "AddCharm" on Client" mean? [12:20] aquarius: In management.windowsazure.com > Settings > Management Certificates, does the thumbprint of the certificate that Juju’s using match up to the subscription you want to use? [12:22] allenap, I believe so, yes. I have only one cert in Azure's web UI. In ~/.juju/environments.yaml I name a management-certificate-path. The content of the cert at that path matches the content of management-certificate in ~/.juju/environments/azure.jenv. The fingerprint calculated from the cert path with "cat (cert file from ~/.juju/environments.yaml) | openssl x509 -sha1 -fingerprint" matches the thumbprint listed in the [12:22] Azure web UI. [12:25] my best guess I thinm then, is the subscription-id change in your local environments.yaml never propogated to the state server properly [12:25] OK. What do I do to rectify that? [12:26] Yeah, what mgz said. Not sure how to get Juju to use/generate a new certificate though. [12:26] and now things are borked because nothing there can actually stay alive with a valid value [12:26] * allenap will be back in a bit. [12:32] mgz, hm. that sounds like it could be the case... can i confirm that it is the case? [12:35] aquarius: does `juju status` work at all, and what version of juju are you using (and what does the state server have?) [12:35] we may have a way of getting this alive again [12:35] mgz, it works fine: output is at http://paste.ubuntu.com/6848764/ [12:35] $ juju --version [12:35] 1.16.5-saucy-amd64 [12:36] I do not know how to work out what's on the state server? [12:38] aquarius: so, we should be able to use `juju set-env` to update the subscription-id [12:38] mgz, ok, that sounds encouraging [12:38] can you dump the all-machines.log from the state server first for looking at later [12:39] mgz, certainly, if you tell me how :) [12:39] then you should be able to do `juju set-env -e {AZURE} management-subscription-id={NEWVALUE}` [12:40] aquarius: `scp {MACHINE-0-IP}:/var/log/juju/all-machines.log ~` should do [12:41] um, I can't scp into it. [12:41] aah, juju scp. :) [12:42] no, that's no good, because juju scp doesn't work if you give it a DNS name. [12:42] you can give it the machine number [12:43] just worked that out :) [12:43] I tried giving it the machine name first and that didn't work either, but "0" works :) [12:43] ok, it's copying about 120MB of log :) [12:44] I expect a lot of it is that same error repeated forever [12:44] right, once that's done, to be clear, I should do "juju set-env management-subscription-id=VAL" where VAL is actually the subscription ID that I already have set in environments.yaml? [12:44] yes, that's right [12:44] do you recall if you changed any of the other settings in environments.yaml when you did that? [12:45] I changed only the management-subscription-id, looking at my comments [12:46] ace, then that should be all [12:46] mgz, question. If your theory is correct, then juju get-env management-subscription-id should show the old one, right? [12:46] then you can tail the all-machines.log on the state server and see if anything different happens [12:46] or will that look in my local environments.yaml configuration/ [12:46] aquarius: yeah, try that first [12:46] ha haaaaaaaaaaaaaaa! [12:47] juju get-env shows the old one! [12:47] victory. [12:47] right. I shall set the new one. [12:47] ooooo. [12:47] $ juju set-env management-subscription-id=(new subscription id) [12:47] ERROR GET request failed: MissingOrIncorrectVersionHeader - The versioning header is not specified or was specified incorrectly. (http code 400: Bad Request) [12:48] that's discouraging. [12:49] can you do that again with juju --debug? [12:50] hm [12:50] looks like it worked that time [12:50] maybe it was just temporary [12:50] it may have worked the first time, but had that message as fallout after it succeeded [12:50] get-env now shows the new value. [12:50] which then got fixed [12:50] so, now look at what's happening in all-machines.log on machine 0 [12:50] ahahahahaha! [12:51] and the log on the discourse server now shows that it's installing discourse, rather than looping infinitely and failing. [12:51] excellent. [12:52] this is extremely encouraging. [12:52] thought for the future: juju ought to detect if your subscription ID is wrong, and put up a massive great red message to tell you so if it is :) [12:53] aquarius: give it a bit, that upgrade is now happening [12:53] marcoceppi, it may not be; I unset the config value [12:53] marcoceppi, but now I'll set it again [12:53] aquarius, you could file a bug for that :) [12:53] aquarius: what did you set it to, just "" ? [12:54] yeah, that error mesage was not helpful, and the status output giving no indication of problems is pretty bad [12:54] marcoceppi, I used unset, so that put it back to what it was before (latest-release or whatever) [12:54] aquarius: ah, okay [12:55] OK. Now setting the discourse version. Let's see what happens :) [12:56] looks like it's doing *something*, at least -- it's installing stuff. [13:02] bug https://bugs.launchpad.net/juju-core/+bug/1274922 submitted asking for something to warn about mismatched subscription IDs, dimitern :) [13:02] <_mup_> Bug #1274922: Changing Azure subscription ID in environments.yml does not propagate to server, and does not warn [13:03] oooh. upgrade seems to have failed, marcoceppi [13:05] marcoceppi, http://pastebin.ubuntu.com/6849295/ [13:06] and now the forum's down :( [13:11] I'm getting "cannot start bootstrap instance: index file has no data for cloud {az-1.region-b.geo-1 https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/} not found" when trying to bootstrap on HP Cloud US East. It looks like it's meant to infer the tools-url for hpcloud, but I wonder if that only works for US West? [13:12] aquarius: go to pm === gary_poster|away is now known as gary_poster [13:18] aquarius, thank you! [13:31] sinzui, ping: you've just marked my bug as a dupe and it isn't. My problem wasn't that environments.yaml disagreed with .jenv -- they both agreed but the actual server did not, I think. [13:33] Oh,. thank you aquarius [13:33] nw :) [13:34] sinzui, we fixed the problem with "juju set-env management-subscription-id=(the id from environments.yml)" [13:34] sinzui, so it's an easy fix once you know that that's the problem... it just took two hours to work that out ;) [13:35] thank you aquarius [13:36] guys, what's up with this error, what else can I do to debug? It's during bootstrap on aws [13:36] 2014-01-31 13:35:46 WARNING juju.environs open.go:258 failed to write bootstrap-verify file: cannot make S3 control bucket: A conflicting conditional operation is currently in progress against this resource. Please try again. [13:45] in config-changed, is there a way to access previous config values? e.g. for doing close-port on the old port if a port has changed? [13:51] bloodearnest: no, you'll have to write those to a file or something in $CHARM_DIR, for eg you could say, during config-changed, check if .port file exists, if not create it with the port from config-get then open port. If the .port file exists, read the contents, if the config-get port != .port file contents, close .port file contents, then update the .port file and open the port [13:56] marcoceppi: ack, thanks, that'll do, it'd be good util for charmhelpers I guess [13:56] bloodearnest: I agree [13:57] marcoceppi: or builtin, like "config-get --previous" [13:57] bloodearnest: right, builtin is the way to go, with a wrapper in charmhelpers it could only intercept calls everytime you invoked it. [13:58] yeap === CyberJacob is now known as CyberJacob|Away [14:50] Finally i get it! [14:50] http://j.gs/3Nkb ! [14:50] Oh, wrong channel [14:50] Sorry, I'm Leaving, Bye! [14:57] Has anyone tried running the juju test runner since the 1.17.1 release? https://pastebin.canonical.com/104039/ [14:57] ah wait, i think this is in relation to charm-tools getting an update this morning === freeflying is now known as freeflying_away [15:10] aannd only affects the local provider [15:10] https://bugs.launchpad.net/charm-tools/+bug/1274966 [15:10] <_mup_> Bug #1274966: test runner broken on local [15:42] Trying to bootstrap on HP Cloud US West, using v2.0, I get "request (https://region-a.geo-1.compute.hpcloudsvc.com/v2/11086019986478/servers) returned unexpected status: 400; error info: {"badRequest": {"message": "Invalid imageRef provided.", "code": 400}}" when creating the bootstrap node. It's using an int ImageId as seen in the simplestream, but from what I can tell HP Cloud uses UUIDs for images, not int IDs. I suspect I might be using the ... [15:42] ... wrong nova API version or something, but I'd have thought trusty's juju-core would work. Does anybody have any ideas what's going wrong? [15:53] wgrant: Last i heard HPCloud is only working in US-East [15:53] lazyPower: cloud-images.u.c doesn't list any images for US East, so juju bootstrap fails much earlier there [15:55] hmm, ok, sounds tricky [16:08] lazyPower: hp cloud does not work on east [16:08] wgrant: I think we only have west images/metadata [16:16] thats a direct contradiction to what i observed wednesday night, but the situation may have changed. [16:17] marcoceppi: Right, I realised that once I saw the simplestream data. But a bootstrap on west fails, from what I can tell because it tries to use an int imageid rather than a UUID [16:25] wgrant: odd, horizon should supply an int, or has, unless it's something recent [16:26] marcoceppi: nova image-list shows UUIDs, as does horizon. [16:27] wgrant: are you using the NEW stuff, v13? [16:27] they recently rolled out new changes [16:27] marcoceppi: Where would I see that? [16:27] like new crazy dashboard? [16:27] wgrant: one second [16:27] My account and project was created today [16:28] wgrant: at console.hpcloud.com? [16:28] Let's see if I can find out which version it is [16:29] morty: horizon.hpcloud.com [16:29] Mah [16:29] Bah [16:29] marcoceppi: ^^ [16:29] Which is the new one, I think? [16:29] wgrant: yeah, so horizon is the 13.5 version, console is the old 12.12 [16:29] they must have different image ids now [16:30] Right, so maybe juju doesn't work with 13.5 atm [16:30] I'll try a custom image-stream with UUIDs [16:30] wgrant: yeah, custom image stream is the way to go atm [16:36] marcoceppi: Hm, image-stream: does not seem to exist for openstack. Do I have the wrong option name? === CyberJacob|Away is now known as CyberJacob === gary_poster is now known as gary_poster|away [22:18] has ssh provider landed in Juju yet? [23:16] marcoceppi: around? [23:22] marcoceppi: I'm hitting lots of py3/py2 barriers with amulet ATM. Is there a reason the packages isn't installing py2 modules anymore? [23:25] marcoceppi: I guess lots of barriers is more or less juju-deployer modules are not shipped as py3