[openstack-dev] [nova] Placement API WSGI code -- let's just use flask
sean at dague.net
Tue Jun 21 13:10:00 UTC 2016
On 06/21/2016 08:42 AM, Doug Hellmann wrote:
> Excerpts from Sean Dague's message of 2016-06-21 08:00:50 -0400:
>> On 06/21/2016 07:39 AM, Jay Pipes wrote:
>>> On 06/21/2016 05:43 AM, Sylvain Bauza wrote:
>>>> Le 21/06/2016 10:04, Chris Dent a écrit :
>>>>> On Mon, 20 Jun 2016, Jay Pipes wrote:
>>>>>> Flask seems to be the most widely used and known WSGI framework so
>>>>>> for consistency's sake, I'm recommending we just use it and not rock
>>>>>> this boat. There are more important things to get hung up on than
>>>>>> this battle right now.
>>>>> That seems perfectly reasonable. My main goal in starting the
>>>>> discussion was to ensure that we reach some kind of consensus,
>>>>> whatever it might be. It won't be too much of an ordeal to
>>>>> turn the existing pure WSGI stuff into Flask stuff.
>>>>> From my standpoint doing the initial development in straight WSGI
>>>>> was a win as it allowed for a lot of clarity from the inside out.
>>>>> Now that that development has shown the shape of the API we can
>>>>> do what we need to do to make it clear from outside in.
>>>>> Next question: There's some support for not using Paste and
>>>>> paste.ini. Is anyone opposed to that?
>>>> Given Flask is not something we support yet in Nova, could we discuss on
>>>> that during either a Nova meeting, or maybe wait for the midcycle ?
>>> I really don't want to wait for the mid-cycle. Happy to discuss in the
>>> Nova meeting, but my preference is to have Chris just modify his patch
>>> series to use Flask now and review it.
>>>> To be honest, Chris and you were saying that you don't like Flask, and
>>>> I'm a bit agreeing with you. Why now it's a good possibility ?
>>> Because Doug persuaded me that the benefits of being consistent with
>>> what the community is using outweigh my (and Chris') personal misgivings
>>> about the particular framework.
>> Just to be clear....
>> Flask is used by 2 (relatively new) projects in OpenStack
>> If we look at the iaas base layer:
>> Keystone - custom WSGI with Routes / Paste
>> Glance - WSME + Routes / Paste
>> Cinder - custom WSGI with Routes / Paste
>> Neutron - pecan + Routes / Paste
>> Nova - custom WSGI with Routes / Paste
>> I honestly don't think raw WSGI is a bad choice here. People are going
>> to be pretty familiar with it in related projects at this level.
>> Using selector instead of Routes makes things different for unclear
>> gain. Sticking with Routes seems more prudent.
>> Doing Flask is fine, but do it because we think that's the way things
>> should be done, not because it's a common in our community, which it
>> clearly is not. The common pattern is custom WSGI + Routes / Paste (at
>> least at this layer in the stack).
> As I told Jay, I don't care which specific framework is used. I
> care about the fact that while we're trying to get other projects
> to standardize on frameworks supported upstream so we have tools
> with good documentation and we carry less code directly in this
> community, we have consistently had a hard time convincing the nova
> team to choose one instead of building one.
> Jay didn't like the object-dispatch model used in Pecan, so I pointed
> out that Flask is also in use elsewhere. The fact that Flask is not yet
> widespread indicates that project teams are not needlessly rewriting
> existing API services, rather than lack of acceptance. If you don't like
> either Flaks or Pecan, look at Pyramid or Pylons or one of the others.
> But please stop building new frameworks that make your project so
> completely different from everything else in the Python ecosystem.
The amount of wsgi glue above Routes / Paste is pretty minimal (after
you get rid of all the extensions facilities).
Templating and Session handling are things we don't need. We're not a
webapp, we're a REST service. Saying that using a web app framework is
better than a little bit of wsgi glue seems weird to me.
Falcon looks like the only thing out there which is really stripped down
to this little bit of glue layer. So if the answer is "must use
framework" that seems like the right answer. However, Routes + Paste is
really the framework we are using broadly in OpenStack. And a lot of the
common middleware assume that.
More information about the OpenStack-dev