19:00:21 <briancurtin> #startmeeting python-openstacksdk
19:00:22 <openstack> Meeting started Tue Feb  3 19:00:21 2015 UTC and is due to finish in 60 minutes.  The chair is briancurtin. Information about MeetBot at http://wiki.debian.org/MeetBot.
19:00:23 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
19:00:25 <openstack> The meeting name has been set to 'python_openstacksdk'
19:00:36 <briancurtin> if you're here for the SDK meeting, say hi
19:00:38 <briancurtin> Brian Curtin
19:01:09 <terrylhowe> Terry Howe, HP
19:01:11 <etoews> o/
19:02:11 <briancurtin> #topic Conversations at Cinder meetup, Cinder v2 https://review.openstack.org/#/c/150979/
19:03:05 <briancurtin> so last week i was at the cinder mid-cycle meetup for the day and mike perez gave me the floor for a while. all in all it was an hour-long talk on where we're at, what we do, etc. i think of the ~25 people in the room we had active participation from 12 people
19:03:36 <etoews> what's mike's nick?
19:03:46 <briancurtin> thingee
19:04:18 <stevelle> is there an etherpad of notes from that session?
19:04:18 <briancurtin> it was all really good. a handful had heard about the project already, but after explaining the goals and the status they were really interested. in teh end i had a few people interested in contributing and about an hour after the talk i had a guy submit a simple proxy that could list volumes (a dupe of my own work, but good that he just started hacking
19:04:18 <briancurtin> right away)
19:05:00 <briancurtin> stevelle: i dont think anyone took notes on that particular part as it was less about their roadmap for kilo and just getting them to think about it, but i'll look
19:05:52 <briancurtin> anyway, once i have the proxy part of that cinder.v2 part done, which i just got started, im going to bring in walt boring and john griffith to take a look at it. after that im going to hack out the minimal compute proxy part to integrate the two for a sample app that can show attaching volumes or something
19:06:42 <terrylhowe> sounds like a good sample ap
19:07:23 <stevelle> will need to incorporate a bit of glance for the boot image I presume?
19:08:08 <etoews> a bit future looking but how should we go about getting the project teams to take ownership of development in the sdk?
19:08:10 <briancurtin> stevelle: probably. i dont actually know all of the moving parts in play there, but i also want glance for another thing, so that's also on the list
19:08:42 <etoews> while bootstraping the project we'll need to do a fair amount ourselves but that's not sustainable.
19:09:05 <etoews> i'm fine tabling that topic. just something to think about.
19:09:34 <briancurtin> etoews: not sure, talked about it briefly with cinder and their thought was just having one or two people interested in the project to spend some time looking at it and get to know the cinder parts, then see where it goes
19:10:20 <etoews> ya. and i think at some point soonish we can start being more vocal about it on the openstack-dev ml.
19:10:29 <stevelle> for glance we should have enough if we get the the v2 image proxy merged (https://review.openstack.org/#/c/147314/)
19:10:50 <etoews> "hi all, support for glance has been added, next week is cinder." etc.
19:11:44 <briancurtin> stevelle: sort of tangent but i think we should have built-out proxies like object_store that can do more than be session managers, but that's a start
19:11:49 <briancurtin> #topic Thoughts on doc work in progress? http://briancurtin.com/doc_reorg/
19:12:34 <briancurtin> part of that doc work was driven by etoews starting to work on the project, but also as other projects get involved
19:13:06 <etoews> so far it's been great
19:13:12 <etoews> i +1'd the reorg
19:13:16 <briancurtin> i dont want it to be one huge change so i think im going to add another guide on building out a proxy, and keep expanding user-guide stuff. ideally teh whole thing acts like a cookbook
19:13:25 <etoews> and i've literally been working through the contrib docs
19:13:35 <etoews> i can provide a more complete review soon
19:13:59 <etoews> haven't touched the user stuff yet
19:14:02 <briancurtin> cool, i think you're the most likely to have in depth review since you're actually going through it. anyone else?
19:14:04 <stevelle> +1 for not expanding the current change
19:14:12 <stevelle> easier to review in parts
19:14:40 <stevelle> I have it queued for review tomorrow
19:14:47 <terrylhowe> the contributor docs I went over so far looked good, but I need more time to read it all
19:15:29 <briancurtin> #topic Resource.list consistency (pagination disabled, or not supported but still returning lists) https://review.openstack.org/#/c/147686/
19:16:00 <etoews> wait. one more thing on the docs
19:16:05 <briancurtin> go for it
19:16:31 <etoews> does gerrit spit out a rendered version of each patch set?
19:16:49 <etoews> i know it can do this for docs.openstack.org
19:17:00 <briancurtin> i guess we could make it do that, but it doesn't currently
19:18:14 <briancurtin> i dont know if we get that luxury being a stackforge project or what the deal is behind that. currently the official docs are hosted at http://python-openstacksdk.readthedocs.org/en/latest/
19:18:36 <etoews> maybe annegentle knows...
19:18:36 <briancurtin> i just claimed that name and point them at github master
19:19:28 <stevelle> I'm just running sphinx to review formatting at this point
19:19:48 <terrylhowe> me too
19:19:51 <etoews> python setup.py build_sphinx
19:19:54 <etoews> correct?
19:19:58 <briancurtin> i'll look around and see what the deal is. we do have a doc builder so they are being built per changeset
19:20:05 <briancurtin> etoews: i just do "tox -e docs"
19:20:06 <stevelle> etoews: yes
19:20:20 <etoews> heh. 2 different answers.
19:20:25 <stevelle> both work
19:20:33 <etoews> do they do the same thing?
19:20:42 <briancurtin> yeah, tox runs that
19:20:56 <briancurtin> so if you're in a proper virtualenv you're just doing the manual version
19:21:33 <etoews> alright. i'll do that for now.
19:21:37 <etoews> let's move on
19:22:04 <briancurtin> Britt isn't here, but I'll see if I can get him to run that again. now that the page/list changes are in, that change lets us Resource.list anything that is a list, whether or not it supports pagination, so it's a consistent action across the board
19:22:53 <briancurtin> however, one thing it loses is an optimization i was able to put in where it does an early exit when you get back fewer items than your requested limit. i dont know how often people would do that, but that's the only downside of the change i saw
19:24:15 <briancurtin> we can still make that happen, but it'll require making things a bit more complex. in the interests of actually making Resource.list work i just ripped that stuff out. adding it back in to work would require an extra special case on top of the special casing of this being the first response
19:24:38 <briancurtin> so it's possible but maybe not worth it to add it back in
19:26:16 <terrylhowe> the last_response == response seems like it could be expensive on large pages
19:28:37 <briancurtin> terrylhowe: yeah that's one thing i want to check out. i have a container in rackspace cloud files with ~6k objects that would show how this turns out. i'll bring that auth change over and try it out and see what it does
19:29:18 <briancurtin> terrylhowe: the change is unfortunately quite naive in that it works against devstack, which includes trivially small amounts of data to test against
19:30:00 <etoews> it worked in devstack
19:30:24 <briancurtin> terrylhowe: actually, now that i think about this, we might have to have services override list because this might just be too general
19:30:30 <terrylhowe> worked not works :)
19:31:50 <briancurtin> the whole thing started because network supports pagination but disables it (and you can't know discover that it's disabled), and my optimization thing came from the way object_store works, so they don't work together well and both lose
19:32:24 <briancurtin> i just workflow-1
19:32:33 <terrylhowe> yeh briancurtin too much generalization might just get confusing
19:32:45 <briancurtin> will take it back to the drawing board and maybe only apply that type of thing where really really needed
19:33:47 <terrylhowe> I was thinking at one time about having something like “service preferences” to help with that kind of thing
19:34:32 <etoews> have to ask, do you know the rationale behind making pagination disableable in neutron?
19:34:33 <briancurtin> yeah i remember we talked about that, but i think it would then require that we have pagination turned off unless you say you want it, which might be too heavy handed
19:35:29 <briancurtin> etoews: no clue, i just know in the docs it says it accepts it but is configurable to be off. it seems to be off in devstack since i've requested pages of something with a limit of 1 and just got back all 4 things i had (i think i was trying to list /networks)
19:35:39 <terrylhowe> everyone should support pagination, but we have to deal with some services not like it or not I think
19:36:55 <etoews> i'm fine with services either having it or not having it but the idea of having it but making it disableable is bizarre to me.
19:36:59 <briancurtin> terrylhowe: this might be something we can work out in the proxy level. if object_store supports pagination we can do the iterator containers() call through list. if network /networks doesn't support pagination, we can still call it networks() in the proxy levl but just call get() under the hood, which still gives a list
19:37:39 <etoews> get gives a list?
19:38:24 <etoews> oh. get() pretty much equals GET right?
19:38:27 <briancurtin> yeah
19:39:12 <terrylhowe> well, get() has an id and the GET in list does not
19:39:36 <etoews> this is on Resource right?
19:40:04 <briancurtin> we can still call Resource.get() with no ID and have the full list of /networks returned to us. or at least that's what i think i was doing
19:40:48 <briancurtin> that's why Resource.list() on /networks is an infinite loop, since it calls GET with no ID
19:41:44 <etoews> i think i just need to get more familiar with all of this. i'll ask better questions then.
19:41:59 <terrylhowe> briancurtin: proxy level or resource level.  Seems like resource level would be better.  there are only 2 resources in object store
19:43:46 <briancurtin> terrylhowe: i think proxy. let resources do what they need to do. teh network resource works fine with just a get(), but no list(), but its get() does return a list object, so on top of that we can make it function the same as containers.list() which under the hood can make use of the list() pagination
19:44:25 <briancurtin> terrylhowe: if you run the examples.get against /networks you receive the same as you would hope from doing examples.list against /networks
19:45:40 <briancurtin> in a network proxy we would just need to have our own loop around the body we get back
19:45:58 <briancurtin> maybe i'll toy with that and see if it looks any better or more usable
19:47:37 <terrylhowe> I’d probably need to goof with it a little to form any real opinion on the best approach
19:48:45 <briancurtin> it's -1'ed for now so we can slow down and do it right. i'll talk to britt, who reported it, and get him an example of the thing i just said and see how that works
19:49:26 <briancurtin> #topic async transport backend?
19:50:58 <briancurtin> i've had a few people ask me if there's any thought to supporting something like tornado.http or any of the async versions of requests out there, and im not sure i even really know how to do this. or, i know how to do it, but it would make the entire thing async, i think. i might toy around with this as well, but does anyone know anything about making a
19:50:58 <briancurtin> library that would work both async and sync? seems quite messy, i think
19:51:57 <briancurtin> any time i mention how you can sub out your own transport, async is the first question after that
19:52:13 <terrylhowe> interesting problem, no ideas here
19:52:32 <terrylhowe> I like messages over callbacks though :)
19:53:08 <etoews> o/
19:53:38 <etoews> we had that in jclouds for the longest time and then ripped it out.
19:54:17 <briancurtin> etoews: because people didn't use it or beacuse it was a hassle?
19:54:40 <briancurtin> (or any of the many reasons to remove code :) )
19:54:42 <etoews> both
19:55:04 <etoews> the first thing it did was confuse
19:55:18 <etoews> it forced an early design decision on users
19:55:39 <etoews> oh. i need to choose between sync and async. i have no idea what i need at this point.
19:55:58 <briancurtin> maybe i'll just pin it on the next person who asks me about async to do some of the work themselves. i'm definitely not the best person to do this anyway. i know a little about it, but not enough to do it right
19:56:15 <etoews> then the underlying threading model was never quite right
19:56:19 <etoews> for their use case
19:56:22 <stevelle> I think the best way to do async is with a dedicated proxy model at least
19:57:05 <briancurtin> etoews: it was kyle kelley asking me about async fwiw
19:57:07 <stevelle> mixing the models just makes things harder
19:57:18 * sigmavirus24 is very late
19:57:30 <briancurtin> you have to do 20 pushups
19:57:38 <sigmavirus24> my 2¢: the async versions of requests are all junk
19:58:01 <sigmavirus24> If people want to use then, that's their responsibility. grequests and erequests aren't maintained iirc
19:58:19 <etoews> fwiw, we got very little complaints after we ripped it out of jclouds
19:59:13 <etoews> why not have the users wrap the sdk in async? maybe give them examples of how to do it to get them started.
19:59:34 <etoews> *has opinions, has never done async in python*
19:59:43 <sigmavirus24> etoews: it's not pretty =P
19:59:49 <etoews> take me with a grain of salt
19:59:51 <briancurtin> etoews: that was kyle's first response..."ugh, i'll have to wrap this in something or keep using my own stuff"
19:59:56 <stevelle> only way I would imagine it working well is a reactive approach to async but dunno if that is popular in py
20:00:06 <sigmavirus24> /time
20:00:26 <briancurtin> yeah, i'll follow up with a few people much better at async than me and see what we can/should do
20:00:28 <briancurtin> #endmeeting