[openstack-dev] [Neutron] Service Type Framework implementation

Akihiro MOTOKI amotoki at gmail.com
Wed Jul 10 16:49:59 UTC 2013


Thanks Engene,

I have looked at your new patch. It looks nice.
The router-provider association can be merged into service-provider
association,
but it can be done in another patch and I can do it.

I am also working to support multiple router implementations in NEC plugin
using this framework.
It is similar to Salvatore's distribution router patch.

Thanks,
Akihiro

2013/7/10 Salvatore Orlando <sorlando at nicira.com>

> Thanks Eugene,
>
> I am already looking at your new patch.
> Thankfully it seems that keeping providers in configuration files was not
> as hard as anticipated in previous rounds of reviews.
>
> I don't think what you did is a hack; I will fix rework the
> router-provider association extension in the distributed router patch or
> another patch.
> From my point of view, I think you can even remove altogether that code
> from your patch - if you don't feel happy about it.
> I will take care of restoring that extension afterwards; after all, it is
> outside of the scope of your blueprint.
>
> Salvatore
>
>
> On 10 July 2013 15:49, Eugene Nikanorov <enikanorov at mirantis.com> wrote:
>
>> Folks,
>>
>> I have put initial in-memory implementation of service providers on
>> review.
>>
>> On of the 'hacks' I had to do is decoupling RouterServiceProviderBinding
>> from service provider.
>> I've just removed foreign key to ServiceProviders table.
>> I think this needs to be fixed in the patch which introduces the code
>> which uses it (like the one published by Salvatore)
>>
>> Thanks,
>> Eugene.
>>
>>
>>
>> On Wed, Jul 10, 2013 at 2:33 PM, Akihiro MOTOKI <amotoki at gmail.com>wrote:
>>
>>> Hi,
>>>
>>> Sorry for late cut-in,
>>>
>>> I agree that dynamic configuration through the API is not easy to
>>> implement.
>>> At now, conf-based approach without database (option-1) looks the best
>>> way unless we
>>> don't have needs for dynamic configuration thru the API.
>>>
>>> > 1) From logic perspective service provider could be referenced by
>>> (service_type, name) as it's unique primary key.
>>>  > 2) From data normalization perspective it's better (and more
>>> convenient) to have an unique ID in resource provider model.
>>> > Obviously having ID works for DB implementation and doesn't work for
>>> in-memory implementation.
>>> > In other words, we can't use ID if we go with in-memory implementation.
>>>
>>> I think ID is not necessarily required.
>>> In DB approach, we can specify multiple fields as a primary key.
>>> In in-memory approach, we can use a json-serialized string as a key
>>> like json.dumps({'type': 'xxx', 'name': 'yyy'}).
>>>
>>> In typical use cases,
>>> (1) neutron-server retrieves a provider from assocation table
>>>     (which is usually implemented on database)
>>> (2) neutron-server determines a driver from a provider.
>>> In this case, dict-based approach does enough I believe.
>>> Is there any other typical access pattern?
>>>
>>> > 3) From data modelling perspective it's better to have ID in service
>>> provider model as referencing models will be simpler and easier to maintain.
>>>
>>> As long as we don't have more keys than type and name to identify
>>> providers,
>>> (type, name) combination looks simple enough.
>>>
>>> "service provider" is similar to "flavor" in nova at some point.
>>> "flavor" represents a combination of many fields.
>>> If there is a possible case where a provider definition have more unique
>>> keys, ID approach makes sense much.
>>>
>>> > 4) From CLI perspective it's more convenient if resource has ID, it's
>>> a common way of specifying resource.
>>>
>>> API perspective for an association from a resource to a provider,
>>> a "type" is determined from a resource and what we need to specify is
>>> only "name".
>>> As long as we can identify a provider by (type, name),
>>> there is no difference between using "ID" and using "name".
>>>
>>> Regarding a possible demerit without ID, it is difficult to specify a
>>> specific provider to show its detail.
>>> At now a provider has only a couple of visible field (type, name,
>>> default)
>>> through API, so list-service-providers does enough and
>>> show-service-provider
>>> does not provide more. (It just provides API consistency with other
>>> resources.)
>>>
>>> > 5) From user perspective it's more convenient to specify the name of
>>> service provider.
>>> > But that is usually solved either by Horizon or by cli, like it's done
>>> for networks/subnets where name of the object is specified.
>>> >
>>>
>>> Thanks,
>>> Akihiro
>>>
>>>
>>>
>>> 2013/7/10 Eugene Nikanorov <enikanorov at mirantis.com>
>>>
>>>> Ok, having so much pressure on db implementation, I think I'm just
>>>> going to post in-memory implementation and we'll decide if it will fit our
>>>> needs.
>>>>
>>>> Thanks,
>>>> Eugene.
>>>>
>>>>
>>>> On Wed, Jul 10, 2013 at 5:56 AM, Nachi Ueno <nachi at ntti3.com> wrote:
>>>>
>>>>> Hi Mark
>>>>>
>>>>>
>>>>> 2013/7/9 Mark McClain <mark.mcclain at dreamhost.com>:
>>>>> >
>>>>> > On Jul 9, 2013, at 5:37 PM, Nachi Ueno <nachi at ntti3.com> wrote:
>>>>> >>
>>>>> >> We have two suboption for db api based solution
>>>>> >>
>>>>> >> Option4. REST API + DB with Preload with Conf
>>>>> >>
>>>>> https://docs.google.com/presentation/d/1v0nLTEsFOwWeYpYjpw4qe3QHB5lLZEE_b0TmmR5b7ic/edit#slide=id.gf14b7b30_00
>>>>> >>
>>>>> >> so IMO, we can drop  option3.
>>>>> >>
>>>>> >> I believe option4 is easy to implement.
>>>>> >>
>>>>> >
>>>>> > I'm not onboard with option 4 either.  At the last summit, we talked
>>>>> about making Neutron easier to deploy.  Using a database to sync
>>>>> configuration state adds complexity.  Having some values in a configuration
>>>>> and others in the database (even cached) is a recipe for a major headache.
>>>>>  For the deployments running multiple instances of Neutron, they should be
>>>>> using Chef, Chef, Salt, etc for managing their configs anyway.
>>>>> >
>>>>> > Using only configuration files (option 1) remains my preference.
>>>>>
>>>>> "only configuration files (option 1)"  is also acceptable for me.
>>>>> However, the headache continues even if we choose option1, because
>>>>> relation with service type
>>>>> and service resources are in the DB.
>>>>>
>>>>> Note that we still need to provide way to add or remove service types.
>>>>>
>>>>> Option1-1)
>>>>>    Allow to create new relation if it appears in the conf.
>>>>>    Remove the relation if it is disappears from conf.
>>>>>
>>>>>    IMO, This will fall on same problem of current implementation
>>>>>
>>>>> https://docs.google.com/a/ntti3.com/presentation/d/1v0nLTEsFOwWeYpYjpw4qe3QHB5lLZEE_b0TmmR5b7ic/edit#slide=id.gf0f4e2a2_1136
>>>>>
>>>>> Option1-2) Provide admin rest api for enable/disable service types
>>>>>     Allow to create new relation if it is enabled by API
>>>>>      Remove the relation if it disabled by API
>>>>>
>>>>>     This is my preference. And IMO, this is same as option4.
>>>>>
>>>>> Best
>>>>> Nachi
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> > mark
>>>>> > _______________________________________________
>>>>> > OpenStack-dev mailing list
>>>>> > OpenStack-dev at lists.openstack.org
>>>>> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>> _______________________________________________
>>>>> OpenStack-dev mailing list
>>>>> OpenStack-dev at lists.openstack.org
>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> OpenStack-dev mailing list
>>>> OpenStack-dev at lists.openstack.org
>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Akihiro MOTOKI <amotoki at gmail.com>
>>>
>>> _______________________________________________
>>> OpenStack-dev mailing list
>>> OpenStack-dev at lists.openstack.org
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>>
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 
Akihiro MOTOKI <amotoki at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130711/47e4b469/attachment.html>


More information about the OpenStack-dev mailing list