[00:37] <maasIVE> topic needs changing ;) i am on xenial ask me for testing :)
[09:57] <jamespage> gnuoy, two ticks for a sync +1 ?
[09:57] <jamespage> https://review.openstack.org/#/c/322097/
[10:00] <dimitern> when will juju-deployer or charm-tools/-helpers/amulet support juju 2.0 properly
[10:00] <dimitern> :/
[10:02] <gnuoy> jamespage, +1
[10:03] <jamespage> icey, cholcombe: need one of you to pickup https://bugs.launchpad.net/charms/+source/ceph-radosgw/+bug/1577519 again
[10:03] <mup> Bug #1577519: ceph-radosgw "Initialization timeout, failed to initialize" <landscape> <Landscape Server:Confirmed> <Landscape Server 16.05:Confirmed> <ceph-radosgw (Juju Charms Collection):Confirmed> <https://launchpad.net/bugs/1577519>
[10:03] <jamespage> apparently our first fix did not resolve quite suffiently
[10:59] <bbaqar> Hey guys .. I have a juju env which had some connectivity issues for short time .. hence i got the "agent is lost, sorry!" error
[10:59] <bbaqar> now the nodes are back up ..
[11:00] <bbaqar> i can ping and ssh into those nodes aswell .. using ssh ubuntu@ip
[11:02] <bbaqar> how can i restart the jujud service on a node?
[11:06] <D4RKS1D3> hi bbaqar, if you write "ls -la /etc/init | grep juju" you can see all the juju services and restarted
[11:09] <bbaqar> D4RKS1D3: cool thanks alo t
[11:11] <D4RKS1D3> Hi, I am trying to add a machine is in maas, but i received this message "ERROR juju.provisioner provisioner_task.go:655 cannot start instance for machine "40": cannot run instances gomaasapi: got error back from server: 409 CONFLICT (No available node matches constraints: name=imaginative-attention.datacentre tags=datacentre)"
[11:17] <jamespage> gnuoy, https://review.openstack.org/#/c/323264/
[11:18] <jamespage> pls :-)
[11:18] <gnuoy> sure
[12:05] <magicaltrout> can't you upgrade charms on a development branch?
[12:19] <rick_h_> magicaltrout: yes, you should be able to.
[12:19] <rick_h_> magicaltrout: what did you originally deploy?
[12:20] <magicaltrout> hey rick_h_
[12:21] <rick_h_> magicaltrout: howdy
[12:21] <magicaltrout> just testing some homebrew stuff, but when I do "juju upgrade-charm drillbit2"
[12:21] <magicaltrout> I get
[12:21] <magicaltrout> ERROR cannot resolve URL "cs:~spicule/drillbit": charm or bundle not found
[12:21] <magicaltrout> but then if I try and do: juju upgrade-charm drillbit2 cs:~spicule/drillbit
[12:21] <magicaltrout> for example
[12:21] <magicaltrout> I get invalid args
[12:23] <rick_h_> magicaltrout: hmm, let's file a bug on jujucharms.com please. Looking at the urls for this: https://jujucharms.com/u/spicule/drillbit/11 is peachy
[12:23] <rick_h_> but remove the 11 and it 404's
[12:23] <rick_h_> magicaltrout: which is a bug in it resolving there
[12:23] <magicaltrout> yeah i noticed it was being a bit funny there as well
[12:23] <magicaltrout> will do
[12:23] <rick_h_> magicaltrout: now for your original question, you're supposed to be able to deploy/upgrade following the development channel if it's public and if you deployed with the --channel flag w/ juju 2.0
[12:24] <rick_h_> magicaltrout: this bug might be getting in the way, but not sure atm. The question is how you originally deployed it though and older Juju doesn't understand the channels
[12:24] <rick_h_> they're always looking at the published stable channel
[12:24] <magicaltrout> ah it seems to know  juju upgrade-charm drillbit2 --channel development
[12:25] <rick_h_> magicaltrout: yea, that for if you want to cross channels
[12:25] <rick_h_> e.g. go from stable to development
[12:25] <magicaltrout> hmm well this would be same channel just new rev...
[12:26] <magicaltrout> I'll file the bug and move on, its no big deal its all LXD anyway so its nearly as quick to tear it down and start again
[12:26] <rick_h_> magicaltrout: ok, but let me know if things aren't working as expected. Or at least the steps to reproduce and I'll chase it down so it's set
[12:37] <kjackal> magicaltrout: Hey Tom how is the Zookeeper issue going?
[12:40] <magicaltrout> hey kjackal well it works, not sure why I'm only seeing one unit
[12:40] <magicaltrout> and my understanding of debugging reactive hooks is lousy
[12:41] <kjackal> magicaltrout: I am fairly sure you should be getting all three units
[12:41] <magicaltrout> I have a vague memory of another service where I thought that was the case and it transpire it wasn't
[12:41] <magicaltrout> but I'll trust you on that one
[12:41] <magicaltrout> but I have logs in place and its only iterating once
[12:42] <magicaltrout> or I've cocked up my function
[12:42] <magicaltrout> which is perfectly likely
[12:42] <magicaltrout> 2 mins I'll dump it in GH
[12:42] <kjackal> magicaltrout: I could take a look if you point me to the charm
[12:43] <kjackal> thanks magicaltrout
[12:43] <magicaltrout> its nothing special, I just really want Apache Drill for Saiku so I figured I'd crack on with it :)
[12:44] <magicaltrout> https://github.com/buggtb/layer-drillbit
[12:44] <magicaltrout> https://github.com/buggtb/layer-drillbit/blob/master/reactive/drillbit.py#L37
[12:45] <magicaltrout> watch out if you run it there is a blank line on line 45 where I was about to add some bootstrap stuff
[12:45] <kjackal> magicaltrout: taking a look, thanks
[12:46] <magicaltrout> the rest of it is pretty cool, drill installs and apart from the missing exec code, starts up with its configured ZK client in place
[12:59] <lazyPower> look at all this collaboration first thing in the morning ;D
[12:59] <lazyPower> \o/
[12:59] <magicaltrout> its very much mid afternoon :P
[13:00] <magicaltrout> until next week at which point i'll still be in bed
[13:00] <lazyPower> well, in EDT its very much morning, and super cool to see this thread history on what by any other name, is my monday.
[13:00] <lazyPower> so given that context... awww yeeee
[13:01] <magicaltrout> made me sad how many emails i got from the USA yesteday :P
[13:01] <lazyPower> I was only responsible for one, and Ben set me straight
[13:01] <magicaltrout> anyway, yeah, kjackal is kindly unbreaking my understanding :)
[13:01] <lazyPower> i was hoping my 2 hour stint of looking at code on a holiday would go un-noticed
[13:01]  * lazyPower shakes a tiny fist @ magicaltrout
[13:01] <magicaltrout> I'm on a big data <-> sql sprint so I can hook up Saiku 3.9 to loads of charms when its released in a week or 3
[13:02] <lazyPower> nice!
[13:02] <lazyPower> I'm working on a signifcant extraction and test coverage bump on etcd at the moment. x58 found some fun race conditions in there
[13:03] <magicaltrout> we've finally built a half decent schema designer, so you should be able to deploy a big data bundle + Drill/Phoenix etc and then attach that to Saiku and inside saiku do a few click schema generation and be good to go
[13:03] <magicaltrout> so 10 click analysis I'm hoping at most
[13:03] <lazyPower> Wait isn't drill a MapR only thing?
[13:03] <magicaltrout> its sponsored by MapR, but its not MapR only
[13:03] <magicaltrout> its an ASF project
[13:03] <lazyPower> ah ok. i thought it had the maprfs requirement
[13:03] <magicaltrout> so its as generic as it comes
[13:03] <lazyPower> #TIL
[13:04] <magicaltrout> you can run over any hbase, parquet, csv, mongodb, generic jdbc etc
[13:04] <magicaltrout> it works nicely as a data federator as well. If you have data in Hbase or somewhere and want to run a join on something in a mysql db
[13:04] <magicaltrout> you can do exactly that
[13:04] <lazyPower> since i'm moving in under a month, i may vanish on you magicaltrout. I have junk-takers showing up to grab the excess posessions in the next 20 minutes.
[13:05] <magicaltrout> hehe
[13:05] <magicaltrout> moving somewhere nice?
[13:05] <lazyPower> Planning on going full nomad for the remainder of the year
[13:05] <lazyPower> bouncing from AirBNB to AirBNB
[13:05] <magicaltrout> nice
[13:05] <lazyPower> We'll see. this was a bit more expensive than originally estimated
[13:05] <lazyPower> i may bounce somewhere and find a lease just to save on living expenses
[13:06] <lazyPower> but i'm stuffing all the good stuff in a POD. its like a shipping container (see what i did  there? container all the things?!) and have it shipped wherever i land
[13:06] <magicaltrout> cool stuff
[13:06] <lazyPower> its been a learning experience :)
[13:06] <magicaltrout> staying in the US, or moving countries?
[13:07] <lazyPower> closer to end of year I want to do a grand European tour
[13:07] <lazyPower> start in oxford and migrate west over the course of a few months and see what i can see over there
[13:08] <magicaltrout> well there's certainly some nice remote spots in the UK for nomadic working ;)
[13:11] <kjackal> magicaltrout: http://pastebin.com/UaYB0LxB I can see all two units reporting their IP. What Zookeeper charm did you deploy?
[13:11] <kjackal> lazyPower: So.... when are you visiting Greece?
[13:12] <magicaltrout> https://jujucharms.com/apache-zookeeper/trusty/3
[13:13] <kjackal> magicaltrout: how is it possible? I mean... I got my zookeeper instances reporting .... its in the pastebin....
[13:13] <lazyPower> kjackal good question, lets figure out what my conf season looks like towards fall and see where i can land up :)
[13:13] <magicaltrout> kjackal: dunno, just redeploying anyway, i'll grep the logs in a mo
[13:14] <magicaltrout> kjackal: you just deployed a single service then add units?
[13:15] <kjackal> magicaltrout: yes
[13:19] <magicaltrout> kjackal: god knows
[13:19] <magicaltrout> I only get 1 entry
[13:19] <magicaltrout> "juju-log" ["Template:\"10.106.143.126:2181\""]
[13:25] <kjackal> magicaltrout: let me see
[13:25] <kjackal> you deployed apache-zookeeper
[13:25] <kjackal> then you deployed drillbit
[13:26] <kjackal> then you added the relation between ZK and drillbit
[13:26] <kjackal> then you added a second ZK unit
[13:27] <magicaltrout> not quite
[13:27] <magicaltrout> I deployed ZK
[13:27] <magicaltrout> then I added 2 more nodes
[13:27] <kjackal> could you paste me the history of you rcommads
[13:27] <magicaltrout> then i deployed drillbit
[13:29] <magicaltrout> i'm tearing it down, i'll try again and log the input
[13:30] <kjackal> magicaltrout: thank you
[13:33] <beisner> jamespage, https://github.com/openstack-charmers/release-tools/pull/1
[13:35] <magicaltrout> kjackal: http://pastebin.com/QE00v5wZ its still in flight
[13:35] <magicaltrout> but thats the command list
[13:38] <kjackal> magicaltrout: btw the signature of configure should look something like  http://pastebin.com/63ebzdwi
[13:40] <magicaltrout> yeah in my published version its corrected
[13:40] <magicaltrout> no its not
[13:40] <magicaltrout> #fail
[13:43] <kjackal> magicaltrout: I think I suspect what is going worng
[13:43] <kjackal> magicaltrout: look....
[13:44] <kjackal> the first ZK unit that comes online becomes a quorum by itself
[13:45] <kjackal> at this point the configure method of drillbit is called and it sets the 'drillbit.configured'
[13:45] <kjackal> then the rest of ZK units join the quorum but the  'drillbit.configured' is already configured so it does not get updated
[13:46] <kjackal> so, how to fix this
[13:46] <magicaltrout> ah yeah sounds sane
[13:47] <kjackal> what if you do not set the 'drillbit.configured' at all?
[13:47] <kjackal> or at least you do not have this when_not('drillbit.configured') at configure
[13:47] <magicaltrout> yeah but then you're restart the drillbit on every execution
[13:48] <kjackal> indeed, so you want to restart when you detect a change in ZK quorum
[13:48] <magicaltrout> yeah
[13:48] <magicaltrout> so I guess we could remove that and save the quorm dict to check against
[13:48] <kjackal> have a look at this: https://github.com/juju-solutions/layer-apache-spark/blob/master/reactive/spark.py#L159
[13:49] <magicaltrout> yeah
[13:49] <magicaltrout> like that
[13:49] <magicaltrout> okay cool
[13:49] <magicaltrout> I can do that
[13:49] <magicaltrout> thanks kjackal
[13:49] <kjackal> cool...
[13:49] <kjackal> lets see what do we say in the list...
[14:04] <magicaltrout> https://ibin.co/2j3WCAhHi9Yn.png https://ibin.co/2j3WHn8H9RA1.png
[14:04] <magicaltrout> there you go kjackal
[14:04] <magicaltrout> need to tidy it up a bit but its up and running on the ZK cluster
[14:06] <magicaltrout> but its certainly cool, i now have SQL over Mongo, CSV, Parquet, HDFS, S3, Hbase and Hive for free
[14:10] <magicaltrout> although for HBase I certainly want to bring Phoenix into the CS as well
[14:20] <magicaltrout> I'll also add some hooks hopefully to auto register various data sources
[14:29] <magicaltrout> fscking balls
[14:29] <magicaltrout> why can't LXD local set hostnames correctly yet
[14:30] <magicaltrout> rick_h_: where to juju core tickets go github or launchpad?
[14:30] <rick_h_> magicaltrout: launchpad please
[14:40] <magicaltrout> grr
[14:40] <magicaltrout> filed
[14:48] <magicaltrout> woop multiple drillbits... aka a cluster \o/
[14:48] <lazyPower> nice \o/
[14:48] <magicaltrout> aye
[14:48] <rick_h_> magicaltrout: <3
[14:49] <magicaltrout> now i need some hooks so I don't have to google adding data sources every time ;)
[14:49] <rick_h_> juju actions ftw
[14:50] <magicaltrout> this is the stuff though. Juju makes it easy to setup a cool hadoop cluster, but until now there is no easy way for analyists to get the data back out unless they are Zeppelin/Spark/IPython "scientists"
[14:50] <magicaltrout> providing SQL interfaces that are stable is key to getting people using the big data stuff Juju offers
[14:50] <magicaltrout> because they can plugin they analytics tool of choice.
[14:51] <magicaltrout> Of course I biased as I write one, but you can instantly hook the charms up to Tableau or whatever the big spenders want to connect to it
[14:53] <magicaltrout> so here's a question rick_h_, do you use actions, or do you use relations or do you use a bit of both? :)
[14:55] <rick_h_> magicaltrout: I guess it depends
[14:55] <rick_h_> magicaltrout: on what the need is there, when you metion adding data sources, I got thinking of an action to add a new one
[14:56] <magicaltrout> yeah, I think you end up with a combo, some charms like Mongo you can just drag to add a relation, there's not much drill needs to know. Some other stuff is far more involved. Also you could connect to services on different networks which wouldn't work with relations
[14:57] <magicaltrout> so I reckon you end up with a mix of both. If relations work, it should be supported to make it really simple. If they don't you could defer to an action to pass it some additional information it might need
[15:00] <magicaltrout> anyway mongo is the simplest, so we'll start there and see how we get on
[15:00] <magicaltrout> i have 60 minutes to get it working before dinner.....
[15:00] <magicaltrout> Go!
[15:08] <kjackal> cory_fu: so, when we will be cheking out the bigtop branch, we will have to then copy/mv/link the layer directories under the LAYER_PATH to reach to a working workspace
[15:09] <kjackal> I guess we could automate this process with a script or something.
[15:10] <cory_fu> kjackal: Charm layers don't technically need to be under LAYER_PATH, only base layers.  So you should set your LAYER_PATH to the directory where your base layers reside (which, due to restrictions in the build tooling, cannot currently be a part of an upstream repo) but build your charm layers from the charm layer directory inside your bigtop repo checkout
[15:10] <cory_fu> IOW, don't change your workspace at all, just clone bigtop somewhere else and build from there
[15:11] <kjackal> cory_fu: yeap that makes sense
[15:31] <petevg> cory_fu, kjackal, kwmonroe: In the zookeeper charm, we fire off a "rest_config" handler when the state "config.changed.rest" is set. I don't see that state getting set anywhere, though (I'm grepping in a dir that contains both the bigtop base charm, and the zookeeper charm).
[15:31] <petevg> I see the same thing for the client_config handler, though in this case the mystery state is "zkclient.joined".
[15:32] <petevg> Am I missing a charm that does relevant things, or are both of those handlers broken?
[15:32] <cory_fu> petevg: They'll be set by base layers.
[15:33] <petevg> Right ... I didn't see it set in the bigtop base layer, though.
[15:33] <cory_fu> Specifically, the config.changed.X states get set here: https://github.com/juju-solutions/layer-basic/blob/master/lib/charms/layer/basic.py#L126
[15:33] <cory_fu> petevg: And zkclient.joined is set by the interface layer: https://github.com/juju-solutions/interface-zookeeper/blob/master/requires.py#L24
[15:34] <cory_fu> Sorry, zkclient.joined would actually be set by this: https://github.com/juju-solutions/interface-zookeeper/blob/master/provides.py#L25
[15:34] <cory_fu> Since the Zookeeper charm is the one providing that relation, not requiring it
[15:35] <petevg> Got it. That makes sense.
[15:35] <petevg> Thx.
[15:50] <arosales> mbruzek:
[15:50] <mbruzek> arosales: pong?
[15:51] <arosales> Have any documentation outstanding for terms?
[15:51] <arosales> https://github.com/juju/docs/pull/1122
[15:51] <mbruzek> arosales: aisrael did that part, let me find the link
[15:51] <arosales>  only to be or resources but has a navigation bar entry
[15:52] <arosales>  did Adam do term and you do resourcs
[15:52] <arosales> ok
[15:52] <mbruzek> https://github.com/juju/docs/pull/1048
[15:52] <arosales>  I had those confused
[15:53] <arosales> mbruzek:
[15:53] <arosales> Thanks I'll see if any of the juju core folks can take a look
[15:53] <mbruzek> arosales: Yes I believe that is the necessary next steps
[15:54] <mbruzek> arosales: I saw you ping them already last week for this.
[15:55] <mbruzek> arosales: I pinged them on the issue, so they should have got a notification, I also asked katco to review via IRC last week.
[15:56] <arosales> mbruzek: i also pinged again in juju-dev
[15:56] <arosales> mbruzek: thanks for the info and work on it
[15:56] <mbruzek> arosales: ack.
[15:58] <arosales> evilnickveitch: let us know if you see any major issues with https://github.com/juju/docs/pull/1122
[16:01] <evilnickveitch> arosales, nothing major, was waiting for a +1 on technical content
[16:03] <arosales> evilnickveitch: ack, and thanks for taking a look
[16:03] <admcleod-> cory_fu: kwmonroe kjackal petevg what state should i be using from the bigtop plugin to ensure its ready before installing pig?
[16:03] <kjackal> bigtop.available
[16:04] <petevg> Beat me to it  ... it's in the new README :-)
[16:05] <admcleod-> kjackal: petevg so if bigtop.available, hadoop is installed?
[16:06] <kjackal> no wait, you need to run puppet apply after the bigtop.available
[16:07] <kjackal> however for hadoop I guess you will need to wait for the hadoop.ready state of the plugin
[16:07] <admcleod-> kjackal: ok, thanks
[16:13] <admcleod-> kjackal: where does the hadoop.ready state come from?
[16:21] <cory_fu> admcleod-: The hadoop.ready state comes from the plugin interface layer: https://github.com/juju-solutions/interface-hadoop-plugin#provides
[16:21] <admcleod-> cory_fu: thanks
[18:40] <magicaltrout> anyone know if the mongodb interface actually works?
[18:40] <magicaltrout> it appears to be missing a provider
[18:40] <magicaltrout> cmars: ?
[18:41] <cmars> magicaltrout, it works for the requires side
[18:41] <magicaltrout> okay thats all I need, but I don't seem to be getting hostnames and stuff
[18:41]  * magicaltrout checks some more
[18:43] <cmars> magicaltrout, use the .connection_string() method on the arg passed to your reactive handler
[18:43] <cmars> magicaltrout, the state you'll want to handle is @when('<name of requires endpoint in your charm>.database.available')
[18:45] <cmars> magicaltrout, for example: https://paste.ubuntu.com/16872701/
[18:45] <magicaltrout> ah right, hadn't quite guessed the .connection_string() bit
[18:45] <cmars> magicaltrout, i usually just update unitdata and re-run a setup() function that gets called on relation hooks, config-changed, etc
[18:45] <magicaltrout> thanks for that
[18:45] <cmars> magicaltrout, sure thing
[18:48] <mbruzek> bdx:  ping
[18:54] <j_king> odd behaviour with the MySQL charm on the Trusty vagrant juju image... says the InnoDB plugin cannot allocate memory for its buffer pools... the machine doesn't seem to be out of resources... anyone else getting this?
[18:55] <j_king> maybe need to bump the box size.
[18:57] <magicaltrout> j_king: dunno if its the same or if it even applies any more but: https://jujucharms.com/mysql/
[18:57] <magicaltrout> caveats section
[18:58] <j_king> magicaltrout: ah, ty. I'll check that out too... seems relevant given what the logs are spitting out.
[19:05] <magicaltrout> cmars: i'm hitting the same error I had before with your tweaks: https://gist.github.com/buggtb/599e536da5e58d5180fe72e183f12c66
[19:05] <magicaltrout> TypeError: Can't convert 'NoneType' object to str implicitly
[19:05] <magicaltrout> seemingly its returning the None object
[19:06] <magicaltrout> any idea what the requirements are for it to not return None ? :)
[19:07] <cmars> magicaltrout, both hostname and port would need to be provided in the relation
[19:08] <cmars> magicaltrout, you could get None if you've just joined the relation but the handshaking hasn't "settled" yet
[19:08] <cmars> magicaltrout, wait, that's not right..
[19:09] <magicaltrout> people often say that to me
[19:09] <cmars> magicaltrout, if .available is set, connection_string() should not be None in the first place
[19:11] <cmars> magicaltrout, i wonder if this charm is in a weird state from a series of upgrades in development?
[19:11] <magicaltrout> could be
[19:11] <magicaltrout> i shall tear it down and start again
[19:11] <magicaltrout> thanks cmars
[19:11] <cmars> magicaltrout, but i'd program defensively in this case, and test the connection_string() at the top of the function
[19:12] <magicaltrout> k
[19:13] <bdx> mbruzek: sup
[19:13] <bdx> mbruzek: thanks for the review ... I fixed her up
[19:14] <mbruzek> bdx: I already wrote tests for you
[19:14] <mbruzek> bdx: https://code.launchpad.net/~mbruzek/charm-helpers/add_uid_gid/+merge/296132
[19:14] <bdx> mbruzek: thats awesome, just seeing that now. rawk!
[19:14] <mbruzek> I was meaning to put this merge in all morning but was swamped with meetings
[19:15] <mbruzek> bdx: Thanks for the charm-helpers submission.
[19:15] <mbruzek> Feel free to extend/enhance the tests
[19:16] <mbruzek> bdx: Also I don't see the "<<<<< TREE" stuff in my host.py file, I think that is an artifact of the bzr diff.
[19:16] <bdx> the tests look great, yea, that was the one question I had ... ok
[19:17] <bdx> mbruzek: what does the patch decorator do?
[19:17] <mbruzek> bdx: it makes it so if the code in that method call the class, python steps in and lets you define the return value or throwing exceptions
[19:18] <bdx> nice, perfect
[19:18] <mbruzek> bdx: We use that to patch out the system calls that would return different users on different systems.
[19:19] <mbruzek> We can then check the patched objects were called with what we expected.
[19:19] <mbruzek> And python does not make the call to subprocess and create a bunch of users on the test systems.
[19:20] <bdx> ahh, so patch basically mocks os level ops?
[19:20] <mbruzek> bdx: https://docs.python.org/3/library/unittest.mock.html
[19:20] <mbruzek> bdx exactly!
[19:20] <mbruzek> The patch() decorator / context manager makes it easy to mock classes or objects in a module under test.
[19:21] <bdx> mbruzek: makes total sense, and is super cool. thanks for the heads up on that
[19:22] <mbruzek> bdx: No problem. Thanks for putting in some work on charm-helpers, *we* really appreciate that
[19:23] <bdx> entirely!
[19:24] <bdx> the uid and gid specification will make it easier to nfs mount and match uid/gid for the provisioned/permissioned user across multiple hosts
[19:25] <mbruzek> bdx: Right. I saw the merge proposals for the big data stuff using this stuff
[19:27] <bdx> totally ... I want to create a user/groups provisioning layer .. I see myself lifting a bit from DistConfig in jujubigdata
[19:32] <magicaltrout> i saw that chat. User provisioning layer would be super useful
[19:34] <magicaltrout> but also making users a "thing" that juju can manage globally(outside of charms) would be very helpful as well
[19:35] <bdx> magicaltrout: yea, I feel like juju-core is so close to providing that functionality .....
[19:36] <bdx> the disconnect is model-users vs os-users on the machines
[19:38] <bdx> model users all assume the ubuntu user with the addition of the model users key in authorized_keys .... which is a no no for PCI compliance :-(
[19:39] <bdx> adding users as a first class citizen is a huge step for juju in general ... I  foresee the provisioning of model users down to the machine level to be a logical next step eh?
[19:42] <magicaltrout> yeah absolutely. Charm builders need users for installing services in specific user spaces, thats granted, but hackish if you do it in python or whatever
[19:42] <magicaltrout> charm consumers need users so they can grant access to boxes for specific users by ssh keys/passwords whatever
[19:42] <magicaltrout> but the grail is also connectivity OOTB to LDAP or something more "enterprisey"
[19:43] <bdx> magicaltrout: totally
[19:43] <magicaltrout> when i do stuff with NASA for example, all their boxes are secured with Kerberos, unsurprisingly
[19:44] <magicaltrout> and it would be great to roll out a charm and have it hook up to a kerberos realm without me pissing about with a bunch of hacks
[19:44] <bdx> magicaltrout: yeah, a problem I face in my organization as well
[19:46] <lazyPower> bdx - wanna tune into the fridge again later today? ~ 5:30 normal EOD time for me i'll kick up a stream
[19:46] <magicaltrout> being able to say "here's my service/unit, here's the users/group in my kerberos setup I want to give access to, now make it so" would be fscking amazing
[19:47] <lazyPower> magicaltrout - all that is theoretically doable. Kerb is controlled by env vars right?
[19:47] <bdx> lazyPower: cheaaa!
[19:47] <bdx> magicaltrout: yea, so a kerberos subordinate!
[19:47] <lazyPower> bdx aight i may be a bit late. hacking on a layer for a blog post atm. I'll hit you with a link when its got frequency
[19:48] <bdx> nicccce!
[19:49] <magicaltrout> oooh it works cmars, must have been a failed upgrade
[19:49] <cmars> magicaltrout, nice!
[19:53] <magicaltrout> okay next random question for anyone who wants it
[19:54] <magicaltrout> I'm creating a relation and I need to create a dynamic name for it, preferably based on the relation id
[19:54] <magicaltrout> when i'm mid-hook in a reactive charm, can I get the ID?
[19:54] <magicaltrout> does it even have an ID?
[19:54] <magicaltrout> :)
[19:55] <magicaltrout> my thinking being, say a model has 2 different mongo db services
[19:55] <magicaltrout> a user creates a relation between both and drill
[19:56] <magicaltrout> I need to create an entry for them within drill, but i also need to know to which relation it belongs so I can remove it
[19:58] <magicaltrout> come on cory_fu you know crap like that! :P
[20:01] <lazyPower> magicaltrout - you use the conversation scope and relation-name to give that clearly defined paths of behavior and communication
[20:01] <cory_fu> magicaltrout: Each relation does have an ID, and you can get them, however in the reactive "world" there may be multiple different relations in a given state at a time, so you're not encouraged to deal with the relation IDs directly
[20:01] <cory_fu> magicaltrout: I'm also not sure what you mean by "remove it"
[20:01] <lazyPower> yeah, what cory_fu said
[20:02] <magicaltrout> okay, so I create a drill service, and a mongo db service
[20:02] <magicaltrout> I connect the two
[20:02] <magicaltrout> on the drill side, i run a small rest call to the server to register the datasource
[20:02] <magicaltrout> then when I remove the relation, i need to prod the same rest service with the name of my blob to delete it
[20:03] <magicaltrout> this in a 1:1 model where you could only have 1 mongo and 1 drill for example is easy
[20:03] <magicaltrout> but if I have 2 mongos and 1 drill, i need some dynamic naming convention that I can track to a relation
[20:05] <magicaltrout> of course mongo could be anything, and the id can be anything, i just want a way to relate my datasources to a specific relation so i can de-register them
[20:05] <cory_fu> Ok, so if you have 2 mongos connected, I'm going to assume that it will be two different mongo services connected and not the same one connected twice.  If that's true, you could use the name of the service to identify them (which is what lazyPower referenced when he said "conversation scope")
[20:05] <magicaltrout> alrighty, sounds far more sensible
[20:05] <cory_fu> magicaltrout: You could also generate a UUID and store that either on the relation data or in the conversation's local data (https://pythonhosted.org/charms.reactive/charms.reactive.relations.html#charms.reactive.relations.Conversation.set_local)
[20:06] <magicaltrout> service name sounds far more sensible and human understandable
[20:10] <lazyPower> I'm all for having a simple implementation!
[20:10] <magicaltrout> indeed
[20:10] <lazyPower> I'm happy that little blurt of jargon helped actually
[20:10] <lazyPower> cory_fu *ta* for cleaning up another one of my messes :)
[20:11] <magicaltrout> from an outsiders/newbie perspective its about trying to figure out the correct patterns
[20:11] <magicaltrout> because I/we just make it up as we go along
[20:12] <magicaltrout> mostly from prodding around in python docs and random stuff
[20:13] <magicaltrout> so Service Name, if i want that lazyPower do I use hookenv.service_name ?
[20:13] <lazyPower> that works
[20:13] <lazyPower> make sure you're using distinct names in metadata.yaml for those relations too
[20:13] <magicaltrout> hmm but the docs say the service this unit belongs to
[20:13] <lazyPower> oh you're looking for remote_unit
[20:13]  * lazyPower looks
[20:13] <lazyPower> 1 sec
[20:13] <magicaltrout> sounds better
[20:14] <lazyPower> http://pythonhosted.org/charmhelpers/api/charmhelpers.core.hookenv.html#charmhelpers.core.hookenv.remote_service_name
[20:14] <magicaltrout> oh yeah
[20:14] <magicaltrout> what d'ya know
[20:14] <magicaltrout> who gave it such a sane name
[20:14] <cory_fu> Oh hey
[20:14] <cory_fu> Be careful using that in reactive
[20:15] <lazyPower> +1 to that sentiment as well
[20:15] <cory_fu> That will only work in an active relation hook context, which may not be the case in reactive
[20:15] <magicaltrout> what does that mean in english?
[20:16] <cory_fu> You should instead use Conversation.units or Conversation.relation_ids
[20:16] <lazyPower> for conv in self.conversations():
[20:16] <lazyPower> and you can scope it with each conversation id and pull data in/out of the bag
[20:16] <cory_fu> It means that reactive handlers might be triggered in, say, update-status, and remote_service_name will return None
[20:16] <lazyPower> yeah, remote_service_name from hookenv relies heavilly on only being used in the hook context, and reactive is a large abstraction away from that.
[20:17] <cory_fu> You can use conv.scope, as lazyPower suggests, but conv.units (a list) is probably better
[20:17] <cory_fu> Ok, in a meeting
[20:17] <lazyPower> i know enough about interfaces to be really dangerous
[20:17] <lazyPower> cory hasn't hit me over the head about any of them yet... but i don't think he's seen them all
[20:28] <magicaltrout> okay so help me out here lazyPower if you're not moving too much. I've seen self.conversation() in interfaces
[20:28] <magicaltrout> so I can call that in a standard reactive charm as well?
[20:29] <lazyPower> so long as you have an active instance of the interface, and that interface is scope: global
[20:29] <lazyPower> i think i may be wrong on the last part
[20:29] <lazyPower> but humor me until we find out otherwise
[20:31] <magicaltrout> someone needs to write a book on this stuff
[20:31] <magicaltrout> blimey its confusing
[20:38] <magicaltrout> Reactive Juju Charms cookbook
[20:38] <magicaltrout> that is whats needed in this world
[20:43] <lazyPower> jose was going to then we changed literally -everything- on him
[20:56] <bryan_att> gnuoy: ping
[20:58] <magicaltrout> lazyPower: okay so i have a unit list like cory_fu suggests: {'', 'mongodb/0'}
[20:58] <magicaltrout> so I should get a non null one and extract the service side of it, for a sane naming convention/
[21:01] <icey> are charmstore revision numbers ever going to be useful anymore?
[21:01] <lazyPower> zing!
[21:01] <rick_h_> icey: not really, the goal is to move to channels being meaningful
[21:02] <magicaltrout> ta
[21:02] <rick_h_> icey: revisions are just to access stuff not stuck into a channel
[21:02] <lazyPower> magicaltrout - sounds about right.
[21:02] <icey> rick_h_: people sometimes refer to us with the rev number so that they can tell us what they had deployed :-/
[21:02] <icey> oh well
[21:02] <lazyPower> icey - i dont think that changes. revisions are still a linear thing right?
[21:02] <rick_h_> icey: that's meaningful if it came from the store, you can stick that in a bundle and replicate their exact setup
[21:02] <rick_h_> right
[21:02] <rick_h_> revisions still go up up up
[21:02] <lazyPower> yeah, the channel just references a revision number
[21:03] <icey> uhm apparently nope: https://jujucharms.com/ceph-osd/
[21:03] <icey> rev 2
[21:03] <godleon> Hi folks, is there any IRC channel for discussing charm of solutions, e.g. OpenStack, Big Data ....?
[21:03] <icey> after 2+ years of deploying...
[21:03] <magicaltrout> godleon: you're in it
[21:03] <rick_h_> godleon: here is as good as any :)
[21:03] <lazyPower> icey it reset the revision number... did the charm recently change owners?
[21:03] <lazyPower> that was a known bug at one point
[21:03] <magicaltrout> all day the charm store has said no owners to a bunch of stuff
[21:04] <godleon> maficaltrout, rick_h haha, really? I though it should be discussed in mailing list
[21:05] <godleon> has someone ever tried to deploy multiple hypervisors OpenStack before ?
[21:05] <rick_h_> godleon: there's a juju mailing list
[21:05] <rick_h_> godleon: so the newest juju2 and the openstack team are working on multiple hypervisors with a lxd and kvm solution
[21:06] <rick_h_> godleon: so the openstack folks have definitely been trying it and working on it
[21:08] <godleon> rich_t oh? Canonical openstack team is working on multiple hypervisors(lxd + kvm) now?
[21:08] <rick_h_> godleon: yes
[21:09] <godleon> rick_t, I tried to do deploy that yesterday, but I found it's a little bit buggy.
[21:10] <rick_h_> godleon: https://jujucharms.com/lxd/xenial/1 ?
[21:10] <godleon> rick_t, yes, that the one of the charms.
[21:11] <godleon> rick_t, I found the nova-scheduler can not work properly, maybe I just used the wrong charm relationship, but I am not sure about that.
[21:11] <godleon> rich_t, I used the LXD openstack bundle as base to modify it to a multiple hypervisors bundle.
[21:12] <beisner> godleon, we have a proof-of-concept (dev/test) multi-hypervisor test scenario that's in pretty good shape.  although, it is currently only validated with juju 1.25.x.  there are some specific configs and image attributes necessary in order to get the scheduler to place instances appropriately.
[21:12] <godleon> rick_t, I can see the different hypervisors in Horizon, but it can not work correctly as I expected.
[21:13] <beisner> godleon, ie.  we can fire up kvm and lxd instances and they do get scheduled to the right type of hypervisor based in image attributes.
[21:13] <godleon> beisner: ok, what image attributes should I input? and where should I input???
[21:14] <bdx> beisner: hey! thats awesome!
[21:14] <bdx> beisner: where is that being developed?
[21:15] <godleon> beisner, yes, I saw that in the youtube video, but bcz I didn't see the demo, so I don't know how to set the image attributes.
[21:15] <beisner> as soon as launchpad comes back to life i can link you guys to the dev/test (ymmv/bleeding) bundle
[21:15] <beisner> which includes a lil readme to describe the deploy/post-deploy config/basic test process
[21:15] <beisner> hey bdx !
[21:16] <godleon> beisner: do you mean readme for multiple hypervisors?
[21:17] <beisner> godleon, it's a poc test scenario.  not official documentation, nor is it intended for production as it uses the tip/master charm set.  but this has been working since ~January so the stable charms should have the same basic functionality.
[21:17] <beisner> one could substitute our git: blah  charm branches for pinned charmstore revisions (stable charms)
[21:18] <beisner> i think at some point we may publish an official bundle, but i suspect seeing our test approach will give all the info one would need to take it for a spin.
[21:26] <beisner> bdx, godleon, there is a network outage at the moment, not sure how long that will last.  i'll paste a link back here for reference later.  o/
[21:28] <godleon> beisner: ok, thank you very much! :)
[21:30] <magicaltrout> woop thanks lazyPower. That seems way harder than it should be (for a newb) but it appears I have a working mongodb relation
[21:30] <magicaltrout> \o/
[21:30] <lazyPower> magicaltrout the first one is always the trickiest :)
[21:30]  * magicaltrout dumps some data into mongo to test SQL access
[21:31] <lazyPower> and pat yourself on the back knowing you've accomplished one of the hardest things to do in juju according to > 3/4 of the people i've onboarded
[21:32] <magicaltrout> like the actual code, I don't have a problem with its easy enough to grep your way around. But I come from a java world where when stuffs broken we just attach a remote debugger and step through it in the IDE. In python & debug-hooks whilst its a great way to stab stuff, its still pretty complex to be able to debug you code, especially now in reactive world
[21:33] <magicaltrout> again thats probably more lack of understanding as opposed to it actually being stupidly complex, but it does make life hard
[22:21] <magicaltrout> https://ibin.co/2j5wKx7V1x6C.png there you go lazyPower
[22:21] <magicaltrout> sql over mongodb powered by some juju hacking
[22:21] <lazyPower> nice!
[22:21] <magicaltrout> i actually have a proposal in with a client to create an elastic search adaptor for drill
[22:22] <magicaltrout> i don't think they'll go for it, but if they did, it could be SQL over beats ;)
[23:36] <arosales> lazyPower: as I don't see mbruzek around atm I wanted to ask if there was a pull request for updating k8 upstream
[23:36]  * arosales didn't see one @ https://github.com/kubernetes/kubernetes/pulls but I may have missed it
[23:37] <arosales> lazyPower: also https://github.com/kubernetes/kubernetes/tree/master/cluster/juju/layers/kubernetes is missing a LICENSE file which I think needs to be Apache
[23:37] <arosales> and copyright
[23:40] <arosales> and I guess the bundles @ https://github.com/kubernetes/kubernetes/tree/master/cluster/juju/bundles should have something similar to https://api.jujucharms.com/charmstore/v5/bundle/hadoop-processing-3/archive/copyright