<div dir="ltr">Hi <span style="font-size:12.8000001907349px">Salvatore and Kevin,</span><div><br></div><div>I'm sorry for replying so late.</div><div>I wanted to see whether the community had considered data sync for these two style(agent and controller) integration. To solve integrating multiple vendor's controllers, I need some help from community. That's the original purpose of this thread. In another word, I had no idea when I sent this message and I just asked some help.</div><div><br></div><div>Anyway, the issues I mentioned last mail are exists. We still need face them. I have some rough ideas for your reference.</div><div><br></div><div>1.try best to keep the source is correct. </div><div>Think about CREATE operation, if the backend was be in exception and Neutron is timeout, then the record should be destroyed or marked ERROR to warn the operator. If Neutron was be in exception, the backend will has an extra record. To avoid this, Neutron could store and mark a record CREATE_PENDING before push it to backend, then scan data and check with the backend after restarting when exception occurs. If the record in Neutron is extra, destroy or mark ERROR to warn the operator. UPDATE and DELETE need similar logic.</div><div>Currently in Neutron, some objects have defined XX_PENDING and some not. </div><div>2.check each other when they restart.</div><div>After restarting, the backend should report the states of all objects and may re-load data from Neutron to rebuild or check local data. When Neutron restarting, it should get data from backend and check it. Maybe, it can notify backend, and backend act as it just restarted.</div><div>All in all, I think it's enough that keeping the data be correct when you write(CUD) it and check it when restarting.</div><div><br></div><div>About implementation, I think a common frame is best. Plugins or even drivers just provide methods for backend to load data, update state and etc. </div><div><br></div><div>As I mentioned earlier, this is just a rough and superficial idea. Any comment please.</div><div><br></div><div>Thanks,</div><div>Germy</div><div>.</div><div> </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 13, 2015 at 3:28 AM, Kevin Benton <span dir="ltr"><<a href="mailto:blak111@gmail.com" target="_blank">blak111@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class="">><b style="font-size:12.8px">But there is no such a feature in Neutron. Right? Will the community merge it soon? And can we consider it with agent-style mechanism together?</b><div><b style="font-size:12.8px"><br></b></div></span><div><span style="font-size:12.8px">The agents have their own mechanisms for getting information from the server. The community has no plans to merge a feature that is going to be different for almost every vendor.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">We tried to come up with some common syncing stuff in the recent ML2 meeting, the various backends had different methods of detecting when they were out of sync with Neutron (e.g. headers in hashes, recording errors, etc), all of which depended on the capabilities of the backend. Then the sync method itself was different between backends (sending deltas, sending entire state, sending a replay log, etc).</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">About the only thing they have in common is that they need a way detect if they are out of sync and they need a method to sync. So that's two abstract methods, and we likely can't even agree on when they should be called.</span></div><div><br></div><div>Echoing Salvatore's comments, what is it that you want to see?</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 12, 2015 at 12:29 AM, Germy Lure <span dir="ltr"><<a href="mailto:germy.lure@gmail.com" target="_blank">germy.lure@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Kevin,<div><br></div><div><b>Thank you for your response. Periodic data checking is a popular and effective method to sync info. But there is no such a feature in Neutron. Right? Will the community merge it soon? And can we consider it with agent-style mechanism together?</b></div><div><br></div><div>Vendor-specific extension or coding a periodic task private by vendor is not a good solution, I think. Because it means that Neutron-Sever could not integrate with multiple vendors' controller and even the controller of those vendors that introduced this extension or task could not integrate with a standard community Neutron-Server. </div><div>That is just the tip of the iceberg. Many of the other problems resulting, such as fixing bugs,upgrade,patch and etc.</div><div>But wait, is it a vendor-specific feature? Of course not. All software systems need data checking.</div><div><br></div><div>Many thanks.</div><span><font color="#888888"><div>Germy</div><div><br></div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 11, 2015 at 4:28 PM, Kevin Benton <span dir="ltr"><<a href="mailto:blak111@gmail.com" target="_blank">blak111@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">You can have a periodic task that asks your backend if it needs sync info.<div>Another option is to define a vendor-specific extension that makes it easy to retrieve all info in one call via the HTTP API.</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Sat, Oct 10, 2015 at 2:24 AM, Germy Lure <span dir="ltr"><<a href="mailto:germy.lure@gmail.com" target="_blank">germy.lure@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Hi all,<div><br></div><div>After restarting, Agents load data from Neutron via RPC. What about 3-rd controller? They only can re-gather data via NBI. Right?</div><div><br></div><div>Is it possible to provide some mechanism for those controllers and agents to sync data? or something else I missed?</div><div><br></div><div>Thanks</div><span><font color="#888888"><div>Germy</div><div><br></div></font></span></div>
<br></div></div>__________________________________________________________________________<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.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div><div>Kevin Benton</div></div>
</font></span></div>
<br>__________________________________________________________________________<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.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>
</div></div><br>__________________________________________________________________________<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.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div>Kevin Benton</div></div>
</div>
</div></div><br>__________________________________________________________________________<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.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>