Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-22 Thread Kevin Benton
I am in favor not to go for a least common denominator approach with the
bgpvpn API. The API should cover the use case commonly acknowledged as
useful and which are supported by at least one of the existing back-ends,
with the aim to have various back-ends to grow in support coverage.

So then what is the goal of the bgpvpn project if every vendor-specific
feature will be allowed through? Rather than being a generic way to setup
BGP VPNs, it sounds to me like it will just become an HTTP proxy with
Keystone authentication to vendor APIs.
On Aug 21, 2015 11:26 PM, Jan Scheurich jan.scheur...@ericsson.com
wrote:

 Hi all,

 I am in favor not to go for a least common denominator approach with the
 bgpvpn API. The API should cover the use case commonly acknowledged as
 useful and which are supported by at least one of the existing back-ends,
 with the aim to have various back-ends to grow in support coverage.

 Not supported features of the API could either be rejected by drivers, or
 a fallback behavior can be specified on API level in case a specific
 non-vital
 attribute is not supported by a backend (e.g. in the case of the RD).

 My preference would be to stick to the provider framework and to allow
 most backend-specific drivers to profit from the boilerplate code in the
 service plugin.

 BTW: The ODL plugin is planned to support both Network and Router
 association and the RD attribute will not be a mandatory attribute for
 the ODL back-end.

 Regards,
 Jan


 Mathieu Rohon Wed, 19 Aug 2015 06:46:45 -0700
 Hi,

 thanks for your reply irena and salvatore.

 Currently, we're targeting 4 backends : bagpipe (the ref impelmentations
 compatible with other ref implementations of neutron), ODL, contrail and
 nuage.
 Contrail and bagpipe work with networks attachments to a bgpvpn connection,
 while ODL and Nuage work with routers attachments. We even start thinking
 about port attachments [1]
 Moreover, ODL needs a RD attribute that won't be supported by other
 backends.

 I think that each backend should be able to manage each kind of attachment
 in the future, depending on the will of the backend dev team. But in a
 firts step, we have to manage the capacity of each backend.

 So, indeed, the managment of attachments to a bgpvpn connection through the
 use of extensions will expose backend capacity. And I agree that it's not
 the good way, since when moving from one cloud to another, the API will
 change depending on the backend.

 So I see two ways to solve this issue :
 1-In first releases, backends that don't support a feature will through a
 'NotImplemented exception when the feature will be called through the
 API; We still have an inconsistent API, but hopefully, this gone be
 temporary.
 2-reducing the scope of the spec [2] and having less compatible backends,
 and a smaller community for the bgpvpn project.

 [1]https://blueprints.launchpad.net/bgpvpn/+spec/port-association
 [2]https://review.openstack.org/#/c/177740/

 regards,

 Mathieu


 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-21 Thread Jan Scheurich
Hi all,

I am in favor not to go for a least common denominator approach with the 
bgpvpn API. The API should cover the use case commonly acknowledged as
useful and which are supported by at least one of the existing back-ends,
with the aim to have various back-ends to grow in support coverage.

Not supported features of the API could either be rejected by drivers, or
a fallback behavior can be specified on API level in case a specific non-vital 
attribute is not supported by a backend (e.g. in the case of the RD).

My preference would be to stick to the provider framework and to allow
most backend-specific drivers to profit from the boilerplate code in the 
service plugin.

BTW: The ODL plugin is planned to support both Network and Router 
association and the RD attribute will not be a mandatory attribute for
the ODL back-end.

Regards, 
Jan


Mathieu Rohon Wed, 19 Aug 2015 06:46:45 -0700 
Hi,

thanks for your reply irena and salvatore.

Currently, we're targeting 4 backends : bagpipe (the ref impelmentations
compatible with other ref implementations of neutron), ODL, contrail and
nuage.
Contrail and bagpipe work with networks attachments to a bgpvpn connection,
while ODL and Nuage work with routers attachments. We even start thinking
about port attachments [1]
Moreover, ODL needs a RD attribute that won't be supported by other
backends.

I think that each backend should be able to manage each kind of attachment
in the future, depending on the will of the backend dev team. But in a
firts step, we have to manage the capacity of each backend.

So, indeed, the managment of attachments to a bgpvpn connection through the
use of extensions will expose backend capacity. And I agree that it's not
the good way, since when moving from one cloud to another, the API will
change depending on the backend.

So I see two ways to solve this issue :
1-In first releases, backends that don't support a feature will through a
'NotImplemented exception when the feature will be called through the
API; We still have an inconsistent API, but hopefully, this gone be
temporary.
2-reducing the scope of the spec [2] and having less compatible backends,
and a smaller community for the bgpvpn project.

[1]https://blueprints.launchpad.net/bgpvpn/+spec/port-association
[2]https://review.openstack.org/#/c/177740/

regards,

Mathieu


__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-19 Thread Mathieu Rohon
 a bad thing, because integration for some backends might need
 it. However this means that during review phase particular attention should
 be paid to ensure the behaviour of each service plugin respects the API
 specification.



 The reasons why I'm considering this change are :

 1. I'm not sure we would have some use cases where we would be able to
 choose one bgpvpn backend independently from the provider of the core
 plugin (or a mech driver in the ML2 case) and/or the router plugin.
 If one use ODL to manage its core resources, he won't be able to use
 nuage or contrail to manage its bgpvpn connection.
 The bgpvpn project is more about having a common API than having the
 capacity to mix backends. At least for the moment.


 I agree with this; but this problem exists regardless of whether you have
 a single service plugin with drivers or multiple service plugins. You are
 unlikely to be able to use the contrail BGPVPN service plugin is core and
 l3 are managed by ODL, I think.



 2. I'm also considering that each plugin, which would be backend
 dependent, could declare what features it supports through the use of
 extensions.


 Unfortunately extensions are the only way to declare supported
 capabilities at the moment. But please - don't end up allowing each service
 plugin exposing a different API.


 Each plugin would be a bgpvpn service type, and would implement the
 bgpvpn extension, but some of them could extend the bgpvpn_connection
 resource with other extensions also hosted in the bgpvpn project. Since
 some backends only support attachment of networks to a bgpvpn_connection,
 others support attachment of routers, and others both attachments, I'm
 considering having an extension for each type of attachment. Then the
 bgpvpn plugin declares what extensions it supports and the end user can act
 accordingly depending on the scan of neutron extensions.


 This is not good. It appears that you are forced to leak backend details
 to API consumers. Is it possible for you to share more context on why this
 is necessary and there's nothing that can be done to avoid it?



 By moving to one plugin per backend, the load of extensions would be
 done by the neutron framework, natively. We won't have to scan each service
 providers to see what extensions it supports, as it is done by the ML2
 extension manager.
 But I agree that with your workaround, of allowing only one service
 provider, we can easily scan this driver for its extensions.


 Indeed. But still, backends like contrail will have to provide their own
 service plugin I think. Which might be ok. All the backends which leverage
 the neutron DB might use the driverized plugin, and the others can supply
 their own service plugin.



 As for making a service plugin for each type, I don't see why that
 wouldn't work.  It seems a bit overkill to me though because you'd probably
 end up having 2 base classes for every service plugin type, one for using
 the service plugin database and another for the data source of truth being
 external.  Probably a better way to do this, I'm sure I'm oversimplifying.

 You're right, and you're not oversimplifying. With this change, the
 bgpvpn framework will only manage API extensions and the DB layer if
 needed. And we don't want this framework to be complicated, in a first
 step, we just want to have a consistent API for every backends.

 I don't see much technical reasons why you couldn't do this, though.
 It's just inconsistent and might cause some confusion.  I'd need to spend
 some time on it to really have an educated opinion.

 The fact that this change will lead to inconsistency between usage of
 each service plugins is a valid point and might be enough to not do it and
 instead limiting the bgpvpn service plugin to be able to only load one
 service driver for the moment. Which is also inconsistent with some other
 service plugins, but probably less.

 thanks brandon.

 Mathieu

 Thanks,
 Brandon
 --
 *From:* Mathieu Rohon mathieu.ro...@gmail.com
 *Sent:* Tuesday, August 18, 2015 7:13 AM
 *To:* OpenStack Development Mailing List
 *Subject:* [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service
 driver

 Adding the related subject :)

 On Tue, Aug 18, 2015 at 10:35 AM, Mathieu Rohon 
 mathieu.ro...@gmail.com wrote:

 Hi all,

 The current bgpvpn implementation is using the service type framework,
 with a service plugin and one or more service providers.

 After registering the bug [1], I wonder if we would rather use a
 service plugin per implementation type (bagpipe, ODL, OpenContrail,
 Nuage...) which handles API calls, instead of having one service plugin
 which forwards API calls to a service driver depending on the provider
 chosen by the end user.

 I would like to better understand what would be the main drawbacks of
 such a move apart from the fact that a deployment would be tightly coupled
 to a bgpvpn plugin, and multiple implementations of the plugin couldn't

Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-19 Thread Irena Berezovsky
 project. Since
 some backends only support attachment of networks to a bgpvpn_connection,
 others support attachment of routers, and others both attachments, I'm
 considering having an extension for each type of attachment. Then the
 bgpvpn plugin declares what extensions it supports and the end user can act
 accordingly depending on the scan of neutron extensions.


 This is not good. It appears that you are forced to leak backend details
 to API consumers. Is it possible for you to share more context on why this
 is necessary and there's nothing that can be done to avoid it?



 By moving to one plugin per backend, the load of extensions would be done
 by the neutron framework, natively. We won't have to scan each service
 providers to see what extensions it supports, as it is done by the ML2
 extension manager.
 But I agree that with your workaround, of allowing only one service
 provider, we can easily scan this driver for its extensions.


 Indeed. But still, backends like contrail will have to provide their own
 service plugin I think. Which might be ok. All the backends which leverage
 the neutron DB might use the driverized plugin, and the others can supply
 their own service plugin.



 As for making a service plugin for each type, I don't see why that
 wouldn't work.  It seems a bit overkill to me though because you'd probably
 end up having 2 base classes for every service plugin type, one for using
 the service plugin database and another for the data source of truth being
 external.  Probably a better way to do this, I'm sure I'm oversimplifying.

 You're right, and you're not oversimplifying. With this change, the
 bgpvpn framework will only manage API extensions and the DB layer if
 needed. And we don't want this framework to be complicated, in a first
 step, we just want to have a consistent API for every backends.

 I don't see much technical reasons why you couldn't do this, though.  It's
 just inconsistent and might cause some confusion.  I'd need to spend some
 time on it to really have an educated opinion.

 The fact that this change will lead to inconsistency between usage of
 each service plugins is a valid point and might be enough to not do it and
 instead limiting the bgpvpn service plugin to be able to only load one
 service driver for the moment. Which is also inconsistent with some other
 service plugins, but probably less.

 thanks brandon.

 Mathieu

 Thanks,
 Brandon
 --
 *From:* Mathieu Rohon mathieu.ro...@gmail.com
 *Sent:* Tuesday, August 18, 2015 7:13 AM
 *To:* OpenStack Development Mailing List
 *Subject:* [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service
 driver

 Adding the related subject :)

 On Tue, Aug 18, 2015 at 10:35 AM, Mathieu Rohon mathieu.ro...@gmail.com
  wrote:

 Hi all,

 The current bgpvpn implementation is using the service type framework,
 with a service plugin and one or more service providers.

 After registering the bug [1], I wonder if we would rather use a
 service plugin per implementation type (bagpipe, ODL, OpenContrail,
 Nuage...) which handles API calls, instead of having one service plugin
 which forwards API calls to a service driver depending on the provider
 chosen by the end user.

 I would like to better understand what would be the main drawbacks of
 such a move apart from the fact that a deployment would be tightly coupled
 to a bgpvpn plugin, and multiple implementations of the plugin couldn't
 coexist.

 Thanks,

 Mathieu

 [1]https://bugs.launchpad.net/bgpvpn/+bug/1485515




 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe:
 openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe:
 openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-19 Thread Salvatore Orlando
 to share more context on why this is
necessary and there's nothing that can be done to avoid it?



 By moving to one plugin per backend, the load of extensions would be done
 by the neutron framework, natively. We won't have to scan each service
 providers to see what extensions it supports, as it is done by the ML2
 extension manager.
 But I agree that with your workaround, of allowing only one service
 provider, we can easily scan this driver for its extensions.


Indeed. But still, backends like contrail will have to provide their own
service plugin I think. Which might be ok. All the backends which leverage
the neutron DB might use the driverized plugin, and the others can supply
their own service plugin.



 As for making a service plugin for each type, I don't see why that
 wouldn't work.  It seems a bit overkill to me though because you'd probably
 end up having 2 base classes for every service plugin type, one for using
 the service plugin database and another for the data source of truth being
 external.  Probably a better way to do this, I'm sure I'm oversimplifying.

 You're right, and you're not oversimplifying. With this change, the bgpvpn
 framework will only manage API extensions and the DB layer if needed. And
 we don't want this framework to be complicated, in a first step, we just
 want to have a consistent API for every backends.

I don't see much technical reasons why you couldn't do this, though.  It's
 just inconsistent and might cause some confusion.  I'd need to spend some
 time on it to really have an educated opinion.

 The fact that this change will lead to inconsistency between usage of each
 service plugins is a valid point and might be enough to not do it and
 instead limiting the bgpvpn service plugin to be able to only load one
 service driver for the moment. Which is also inconsistent with some other
 service plugins, but probably less.

 thanks brandon.

 Mathieu

 Thanks,
 Brandon
 --
 *From:* Mathieu Rohon mathieu.ro...@gmail.com
 *Sent:* Tuesday, August 18, 2015 7:13 AM
 *To:* OpenStack Development Mailing List
 *Subject:* [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service
 driver

 Adding the related subject :)

 On Tue, Aug 18, 2015 at 10:35 AM, Mathieu Rohon mathieu.ro...@gmail.com
 wrote:

 Hi all,

 The current bgpvpn implementation is using the service type framework,
 with a service plugin and one or more service providers.

 After registering the bug [1], I wonder if we would rather use a service
 plugin per implementation type (bagpipe, ODL, OpenContrail, Nuage...) which
 handles API calls, instead of having one service plugin which forwards API
 calls to a service driver depending on the provider chosen by the end user.

 I would like to better understand what would be the main drawbacks of
 such a move apart from the fact that a deployment would be tightly coupled
 to a bgpvpn plugin, and multiple implementations of the plugin couldn't
 coexist.

 Thanks,

 Mathieu

 [1]https://bugs.launchpad.net/bgpvpn/+bug/1485515



 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe:
 openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-18 Thread Mathieu Rohon
Adding the related subject :)

On Tue, Aug 18, 2015 at 10:35 AM, Mathieu Rohon mathieu.ro...@gmail.com
wrote:

 Hi all,

 The current bgpvpn implementation is using the service type framework,
 with a service plugin and one or more service providers.

 After registering the bug [1], I wonder if we would rather use a service
 plugin per implementation type (bagpipe, ODL, OpenContrail, Nuage...) which
 handles API calls, instead of having one service plugin which forwards API
 calls to a service driver depending on the provider chosen by the end
 user.

 I would like to better understand what would be the main drawbacks of such
 a move apart from the fact that a deployment would be tightly coupled to a
 bgpvpn plugin, and multiple implementations of the plugin couldn't coexist.

 Thanks,

 Mathieu

 [1]https://bugs.launchpad.net/bgpvpn/+bug/1485515

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-18 Thread Brandon Logan
?So let me make sure I understand this. You want to do a separate service 
plugin for what would normally be separate drivers under one service plugin.  
The reasons for this are:


1. You dont want users the ability to choose the type, you want it always to be 
the same one

2. Some types do want to be the source of truth of the data stored, instead of 
it being the service plugin database.


First, let me address the possibility of a solution using one service plugin 
and multiple drivers per type:


I think that you can overcome #1 in the instantiation of the service plugin to 
check if there are more than 1 provider active, if so you can just throw an 
exception saying you can only have 1.  I'd have to look at it more to see if 
there are any caveats to this, but I think that would work.


For #2, assuming #1 works, then the drivers that are defined can have some 
boolean that they set that will tell the plugin whether they are the source of 
truth or not, and depending on that you can store the data in the service 
plugin's db or just pass the data along, also pass GET requests to the drivers 
as well.


As for making a service plugin for each type, I don't see why that wouldn't 
work.  It seems a bit overkill to me though because you'd probably end up 
having 2 base classes for every service plugin type, one for using the service 
plugin database and another for the data source of truth being external.  
Probably a better way to do this, I'm sure I'm oversimplifying.  I don't see 
much technical reasons why you couldn't do this, though.  It's just 
inconsistent and might cause some confusion.  I'd need to spend some time on it 
to really have an educated opinion.


Thanks,
Brandon


From: Mathieu Rohon mathieu.ro...@gmail.com
Sent: Tuesday, August 18, 2015 7:13 AM
To: OpenStack Development Mailing List
Subject: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

Adding the related subject :)

On Tue, Aug 18, 2015 at 10:35 AM, Mathieu Rohon 
mathieu.ro...@gmail.commailto:mathieu.ro...@gmail.com wrote:
Hi all,

The current bgpvpn implementation is using the service type framework, with a 
service plugin and one or more service providers.

After registering the bug [1], I wonder if we would rather use a service plugin 
per implementation type (bagpipe, ODL, OpenContrail, Nuage...) which handles 
API calls, instead of having one service plugin which forwards API calls to a 
service driver depending on the provider chosen by the end user.

I would like to better understand what would be the main drawbacks of such a 
move apart from the fact that a deployment would be tightly coupled to a bgpvpn 
plugin, and multiple implementations of the plugin couldn't coexist.

Thanks,

Mathieu

[1]https://bugs.launchpad.net/bgpvpn/+bug/1485515

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service driver

2015-08-18 Thread Mathieu Rohon
hi brandon,

thanks for your answer.

my answers inline,



On Tue, Aug 18, 2015 at 8:53 PM, Brandon Logan brandon.lo...@rackspace.com
wrote:

 ​So let me make sure I understand this. You want to do a separate service
 plugin for what would normally be separate drivers under one service
 plugin.  The reasons for this are:


 1. You dont want users the ability to choose the type, you want it always
 to be the same one

 2. Some types do want to be the source of truth of the data stored,
 instead of it being the service plugin database.


 First, let me address the possibility of a solution using one service
 plugin and multiple drivers per type:


 I think that you can overcome #1 in the instantiation of the service
 plugin to check if there are more than 1 provider active, if so you can
 just throw an exception saying you can only have 1.  I'd have to look at it
 more to see if there are any caveats to this, but I think that would work.


 For #2, assuming #1 works, then the drivers that are defined can have some
 boolean that they set that will tell the plugin whether they are the source
 of truth or not, and depending on that you can store the data in the
 service plugin's db or just pass the data along, also pass GET requests to
 the drivers as well.


I agree that those workarounds will surely works but I wonder what is the
meaning of a service plugin/type that can only support one service
provider? can't the service plugin be the service provider directly?

The reasons why I'm considering this change are :

1. I'm not sure we would have some use cases where we would be able to
choose one bgpvpn backend independently from the provider of the core
plugin (or a mech driver in the ML2 case) and/or the router plugin.
If one use ODL to manage its core resources, he won't be able to use nuage
or contrail to manage its bgpvpn connection.
The bgpvpn project is more about having a common API than having the
capacity to mix backends. At least for the moment.

2. I'm also considering that each plugin, which would be backend dependent,
could declare what features it supports through the use of extensions. Each
plugin would be a bgpvpn service type, and would implement the bgpvpn
extension, but some of them could extend the bgpvpn_connection resource
with other extensions also hosted in the bgpvpn project. Since some
backends only support attachment of networks to a bgpvpn_connection, others
support attachment of routers, and others both attachments, I'm considering
having an extension for each type of attachment. Then the bgpvpn plugin
declares what extensions it supports and the end user can act accordingly
depending on the scan of neutron extensions.
By moving to one plugin per backend, the load of extensions would be done
by the neutron framework, natively. We won't have to scan each service
providers to see what extensions it supports, as it is done by the ML2
extension manager.
But I agree that with your workaround, of allowing only one service
provider, we can easily scan this driver for its extensions.


 As for making a service plugin for each type, I don't see why that
 wouldn't work.  It seems a bit overkill to me though because you'd probably
 end up having 2 base classes for every service plugin type, one for using
 the service plugin database and another for the data source of truth being
 external.  Probably a better way to do this, I'm sure I'm oversimplifying.

You're right, and you're not oversimplifying. With this change, the bgpvpn
framework will only manage API extensions and the DB layer if needed. And
we don't want this framework to be complicated, in a first step, we just
want to have a consistent API for every backends.

 I don't see much technical reasons why you couldn't do this, though.  It's
 just inconsistent and might cause some confusion.  I'd need to spend some
 time on it to really have an educated opinion.

The fact that this change will lead to inconsistency between usage of each
service plugins is a valid point and might be enough to not do it and
instead limiting the bgpvpn service plugin to be able to only load one
service driver for the moment. Which is also inconsistent with some other
service plugins, but probably less.

thanks brandon.

Mathieu

Thanks,
 Brandon
 --
 *From:* Mathieu Rohon mathieu.ro...@gmail.com
 *Sent:* Tuesday, August 18, 2015 7:13 AM
 *To:* OpenStack Development Mailing List
 *Subject:* [openstack-dev] [Neutron][bgpvpn] Service Plugin vs Service
 driver

 Adding the related subject :)

 On Tue, Aug 18, 2015 at 10:35 AM, Mathieu Rohon mathieu.ro...@gmail.com
 wrote:

 Hi all,

 The current bgpvpn implementation is using the service type framework,
 with a service plugin and one or more service providers.

 After registering the bug [1], I wonder if we would rather use a service
 plugin per implementation type (bagpipe, ODL, OpenContrail, Nuage...) which
 handles API calls, instead of having one service plugin which forwards