<div dir="ltr">See inline,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 21, 2013 at 2:19 AM, Isaku Yamahata <span dir="ltr"><<a href="mailto:isaku.yamahata@gmail.com" target="_blank">isaku.yamahata@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wed, Nov 20, 2013 at 10:16:46PM -0800,<br>
Gary Duan <<a href="mailto:gduan@varmour.com">gduan@varmour.com</a>> wrote:<br>
<br>
> Hi, Isaku and Edgar,<br>
<br>
Hi.<br>
<div class="im"><br>
<br>
> As part of the effort to implement L3 router service type framework, I have<br>
> reworked L3 plugin to introduce a 2-step process, precommit and postcommit,<br>
> similar to ML2. If you plan to work on L3 code, we can collaborate.<br>
<br>
</div>Sure, let's collaborate. This is discussion phase at this moment.<br>
I envisage that our plan will be<br>
- 1st step: introduce 2-step transition to ML2 plugin<br>
            (and hope other simple plugin will follow)<br>
- 2nd step: introduce locking protocol or any other mechanism like<br>
            async update similar NVP, or taskflow...<br>
            (design and implementation)<br>
  ...<br>
- Nth step: introduce debugging/test framework<br>
            e.g. insert hooks to trigger artificial sleep or context switch<br>
                 in debug mode in order to make race more likely to happen<br>
<br>
<br>
> <a href="https://blueprints.launchpad.net/neutron/+spec/l3-router-service-type-framework" target="_blank">https://blueprints.launchpad.net/neutron/+spec/l3-router-service-type-framework</a><br>
<br>
Is there any code publicly available?<br>
<div class="im"><br>
<br></div></blockquote><div><br></div><div>I will do some clean up and post the patch for discussion.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">
> Also, for advanced services such as FW and LBaas, there already is a state<br>
> transition logic in the plugin. For example, a firewall instance can have<br>
> CREATE, UPDATE and DELETE_PENDING states.<br>
<br>
</div>Oh great! Advanced services have more complex state than core plugin,<br>
I suppose. Are you aware of further issues?<br>
Does they require further synchronization in addition to 2-step transition?<br>
Like lock, serialization, async update...<br>
Probably we can learn from other projects, nova, cinder...<br>
<br></blockquote><div><br></div><div>Advanced service plugins don't have two-step transition today. IMO, If vendor plugins/drivers don't maintain their own databases for these services, it might not be urgent to add these steps in the plugin. How to make sure database and back-end implementation in sync need more thought. As configuring backend device can be an a-sync process, rollback database tables can be cumbersome.</div>
<div><br></div><div>Thanks,</div><div>Gary</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
thanks,<br>
<div class="HOEnZb"><div class="h5">--<br>
Isaku Yamahata <<a href="mailto:isaku.yamahata@gmail.com">isaku.yamahata@gmail.com</a>><br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div></div>