<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 21 June 2017 at 17:40, Édouard Thuleau <span dir="ltr"><<a href="mailto:edouard.thuleau@gmail.com" target="_blank">edouard.thuleau@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
@Chaoyi,<br>
I don't want to change the core plugin interface. But I'm not sure we<br>
are talking about the same interface. I had a very quick look into the<br>
tricycle code and I think it uses the NeutronDbPluginV2 interface [1]<br>
which implements the Neutron DB model. Our Contrail Neutron plugin<br>
implements the NeutronPluginBaseV2 interface [2]. Anyway,<br>
NeutronDbPluginV2 is inheriting from NeutronPluginBaseV2 [3].<br>
Thanks for the pointer to the stadium paragraph.<br></blockquote><div><br></div><div>Is there any bug report that captures the actual error you're facing? Out of the list of plugins that have been added to that list over time, most work just exercising the core plugin API, and we can look into the ones that don't to figure out whether we overlooked some design abstractions during code review. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
@Kevin,<br>
Service plugins loaded by default are defined in a contant list [4]<br>
and I don't see how I can remove a default service plugin to be loaded<br>
[5].<br>
<br>
[1] <a href="https://github.com/openstack/tricircle/blob/master/tricircle/network/central_plugin.py#L128" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>tricircle/blob/master/<wbr>tricircle/network/central_<wbr>plugin.py#L128</a><br>
[2] <a href="https://github.com/Juniper/contrail-neutron-plugin/blob/master/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin_base.py#L113" rel="noreferrer" target="_blank">https://github.com/Juniper/<wbr>contrail-neutron-plugin/blob/<wbr>master/neutron_plugin_<wbr>contrail/plugins/opencontrail/<wbr>contrail_plugin_base.py#L113</a><br>
[3] <a href="https://github.com/openstack/neutron/blob/master/neutron/db/db_base_plugin_v2.py#L125" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/blob/master/neutron/<wbr>db/db_base_plugin_v2.py#L125</a><br>
[4] <a href="https://github.com/openstack/neutron/blob/master/neutron/plugins/common/constants.py#L43" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/blob/master/neutron/<wbr>plugins/common/constants.py#<wbr>L43</a><br>
[5] <a href="https://github.com/openstack/neutron/blob/master/neutron/manager.py#L190" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/blob/master/neutron/<wbr>manager.py#L190</a><br>
<span class="HOEnZb"><font color="#888888"><br>
Édouard.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Wed, Jun 21, 2017 at 11:22 AM, Kevin Benton <kevin@benton.pub> wrote:<br>
> Why not just delete the service plugins you don't support from the default<br>
> plugins dict?<br>
><br>
> On Wed, Jun 21, 2017 at 1:45 AM, Édouard Thuleau <<a href="mailto:edouard.thuleau@gmail.com">edouard.thuleau@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Ok, we would like to help on that. How we can start?<br>
>><br>
>> I think the issue I raise in that thread must be the first point to<br>
>> address and my second proposition seems to be the correct one. What do<br>
>> you think?<br>
>> But it will needs some time and not sure we'll be able to fix all<br>
>> service plugins loaded by default before the next Pike release.<br>
>><br>
>> I like to propose a workaround until all default service plugins will<br>
>> be compatible with non-DB core plugins. We can continue to load that<br>
>> default service plugins list but authorizing a core plugin to disable<br>
>> it completely with a private attribut on the core plugin class like<br>
>> it's done for bulk/pagination/sorting operations.<br>
>><br>
>> Of course, we need to add the ability to report any regression on<br>
>> that. I think unit tests will help and we can also work on a<br>
>> functional test based on a fake non-DB core plugin.<br>
>><br>
>> Regards,<br>
>> Édouard.<br>
>><br>
>> On Tue, Jun 20, 2017 at 12:09 AM, Kevin Benton <kevin@benton.pub> wrote:<br>
>> > The issue is mainly developer resources. Everyone currently working<br>
>> > upstream<br>
>> > doesn't have the bandwidth to keep adding/reviewing the layers of<br>
>> > interfaces<br>
>> > to make the DB optional that go untested. (None of the projects that<br>
>> > would<br>
>> > use them run a CI system that reports results on Neutron patches.)<br>
>> ><br>
>> > I think we can certainly accept patches to do the things you are<br>
>> > proposing,<br>
>> > but there is no guarantee that it won't regress to being DB-dependent<br>
>> > until<br>
>> > there is something reporting results back telling us when it breaks.<br>
>> ><br>
>> > So it's not that the community is against non-DB core plugins, it's just<br>
>> > that the people developing those plugins don't participate in the<br>
>> > community<br>
>> > to ensure they work.<br>
>> ><br>
>> > Cheers<br>
>> ><br>
>> ><br>
>> > On Mon, Jun 19, 2017 at 2:15 AM, Édouard Thuleau<br>
>> > <<a href="mailto:edouard.thuleau@gmail.com">edouard.thuleau@gmail.com</a>><br>
>> > wrote:<br>
>> >><br>
>> >> Oops, sent too fast, sorry. I try again.<br>
>> >><br>
>> >> Hi,<br>
>> >><br>
>> >> Since Mitaka release, a default service plugins list is loaded when<br>
>> >> Neutron<br>
>> >> server starts [1]. That list is not editable and was extended with few<br>
>> >> services<br>
>> >> [2]. But all of them rely on the Neutron DB model.<br>
>> >><br>
>> >> If a core driver is not based on the ML2 core plugin framework or not<br>
>> >> based on<br>
>> >> the 'neutron.db.models_v2' class, all that service plugins will not<br>
>> >> work.<br>
>> >><br>
>> >> So my first question is Does Neutron still support core plugin not<br>
>> >> based<br>
>> >> on ML2<br>
>> >> or 'neutron.db.models_v2' class?<br>
>> >><br>
>> >> If yes, I would like to propose two solutions:<br>
>> >> - permits core plugin to overload the service plugin class by it's own<br>
>> >> implementation and continuing to use the actual Neutron db based<br>
>> >> services<br>
>> >> as<br>
>> >> default.<br>
>> >> - modifying all default plugin service to use service plugin driver<br>
>> >> framework [3], and set the actual Neutron db based implementation as<br>
>> >> default driver for services. That permits to core drivers not based on<br>
>> >> the<br>
>> >> Neutron DB to specify a driver. We can see that solution was adopted in<br>
>> >> the<br>
>> >> networking-bgpvpn project, where can find two abstract driver classes,<br>
>> >> one<br>
>> >> for<br>
>> >> core driver based on Neutron DB model [4] and one used by core driver<br>
>> >> not<br>
>> >> based<br>
>> >> on the DB [5] as the Contrail driver [6].<br>
>> >><br>
>> >> [1]<br>
>> >><br>
>> >> <a href="https://github.com/openstack/neutron/commit/aadf2f30f84dff3d85f380a7ff4e16dbbb0c6bb0#diff-9169a6595980d19b2649d5bedfff05ce" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/commit/<wbr>aadf2f30f84dff3d85f380a7ff4e16<wbr>dbbb0c6bb0#diff-<wbr>9169a6595980d19b2649d5bedfff05<wbr>ce</a><br>
>> >> [2]<br>
>> >><br>
>> >> <a href="https://github.com/openstack/neutron/blob/master/neutron/plugins/common/constants.py#L43" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/blob/master/neutron/<wbr>plugins/common/constants.py#<wbr>L43</a><br>
>> >> [3]<br>
>> >><br>
>> >> <a href="https://github.com/openstack/neutron/blob/master/neutron/services/service_base.py#L27" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/blob/master/neutron/<wbr>services/service_base.py#L27</a><br>
>> >> [4]<br>
>> >><br>
>> >> <a href="https://github.com/openstack/networking-bgpvpn/blob/master/networking_bgpvpn/neutron/services/service_drivers/driver_api.py#L226" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>networking-bgpvpn/blob/master/<wbr>networking_bgpvpn/neutron/<wbr>services/service_drivers/<wbr>driver_api.py#L226</a><br>
>> >> [5]<br>
>> >><br>
>> >> <a href="https://github.com/openstack/networking-bgpvpn/blob/master/networking_bgpvpn/neutron/services/service_drivers/driver_api.py#L23" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>networking-bgpvpn/blob/master/<wbr>networking_bgpvpn/neutron/<wbr>services/service_drivers/<wbr>driver_api.py#L23</a><br>
>> >> [6]<br>
>> >><br>
>> >> <a href="https://github.com/Juniper/contrail-neutron-plugin/blob/master/neutron_plugin_contrail/plugins/opencontrail/networking_bgpvpn/contrail.py#L36" rel="noreferrer" target="_blank">https://github.com/Juniper/<wbr>contrail-neutron-plugin/blob/<wbr>master/neutron_plugin_<wbr>contrail/plugins/opencontrail/<wbr>networking_bgpvpn/contrail.py#<wbr>L36</a><br>
>> >><br>
>> >> Regards,<br>
>> >> Édouard.<br>
>> >><br>
>> >> On Mon, Jun 19, 2017 at 10:47 AM, Édouard Thuleau<br>
>> >> <<a href="mailto:edouard.thuleau@gmail.com">edouard.thuleau@gmail.com</a>> wrote:<br>
>> >> > Hi,<br>
>> >> > Since Mitaka release [1], a default service plugins list is loaded<br>
>> >> > when Neutron server starts. That list is not editable and was<br>
>> >> > extended<br>
>> >> > with few services [2]. But none of th<br>
>> >> ><br>
>> >> > [1]<br>
>> >> ><br>
>> >> > <a href="https://github.com/openstack/neutron/commit/aadf2f30f84dff3d85f380a7ff4e16dbbb0c6bb0#diff-9169a6595980d19b2649d5bedfff05ce" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/commit/<wbr>aadf2f30f84dff3d85f380a7ff4e16<wbr>dbbb0c6bb0#diff-<wbr>9169a6595980d19b2649d5bedfff05<wbr>ce</a><br>
>> >> > [2]<br>
>> >> ><br>
>> >> > <a href="https://github.com/openstack/neutron/blob/master/neutron/plugins/common/constants.py#L43" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>neutron/blob/master/neutron/<wbr>plugins/common/constants.py#<wbr>L43</a><br>
>> >><br>
>> >><br>
>> >> ______________________________<wbr>______________________________<wbr>______________<br>
>> >> OpenStack Development Mailing List (not for usage questions)<br>
>> >> Unsubscribe:<br>
>> >> <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
>> >> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> > ______________________________<wbr>______________________________<wbr>______________<br>
>> > OpenStack Development Mailing List (not for usage questions)<br>
>> > Unsubscribe:<br>
>> > <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
>> > <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br>
>> ><br>
><br>
><br>
<br>
______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br>
</div></div></blockquote></div><br></div></div>