<div dir="ltr"><div dir="ltr">Thanks for your feedback!<br><br>The good thing about implementation of taskflow approach is that backend type is set in configs and does not affect code. We can create config settings in a flexible way, so that operators could choose which backend is preferable for their cloud. Just have one option as default for devstack, testing, etc.<br>Having etcd seems to be a good option, I did some experiments with it several years ago. But my concern here, if we do not have taskflow experts it may take a lot of time to implement it properly in taskflow.<br><br>It is good to hear that some of refactor could be align with other activities and won't just disrupt the main course of work.<br>Implementing all of this as an alternative controller driver is a great idea! In this case we can have it as experimental feature to gather some user feedback. <br><br>Unfortunately, I'm not attending PTG, but I hope we will find a find to discuss this in IRC. <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 24, 2019 at 5:24 AM Michael Johnson <<a href="mailto:johnsomor@gmail.com" target="_blank">johnsomor@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thank you Ann for working on this. It has been on our roadmap[1] for some time.<br>
<br>
Using Taskflow JobBoard would bring huge value to Octavia by allowing<br>
sub-flow resumption of tasks.<br>
<br>
I inquired about this in the oslo team meeting a few weeks ago and<br>
sadly it seems that most if not all of the taskflow experts are no<br>
longer working on OpenStack. This may mean "we" are the current<br>
Taskflow experts....<br>
<br>
I also inquired about adding etcd as an option for the jobs engine<br>
implementation. Currently only Zookeeper and Redis are implemented.<br>
Etcd is attractive as it provides similar functionality (to my limited<br>
knowledge of what Taskflow needs) and is already an OpenStack base<br>
service[2]. This may be an additional chunk of work to make this a<br>
viable option.<br>
<br>
The refactor of the flow data storage from oslo.db/sqlalchemy data<br>
models aligns with some of the work we need to do to make the amphora<br>
driver a proper Octavia driver. Currently it doesn't fully use the<br>
provider driver interface data passing. This work could resolve two<br>
issues at the same time.<br>
<br>
It also looks like you have found a reasonable solution to the<br>
importable flows issue.<br>
<br>
I did include this on the topic list for the PTG[3] expecting we would<br>
need to discuss it there. I think we have a number of questions to<br>
answer on this topic.<br>
<br>
1. Do we have resources to work on this?<br>
2. Is Taskflow JobBoard the right solution? Is there alternative we<br>
could implement without the overhead of JobBoard? Maybe a hybrid<br>
approach is the right answer.<br>
3. Are we ok with requiring either Zookeeper or Redis for this<br>
functionality? Do we need to implement a TaskFlow driver for etcd?<br>
4. Should this be implemented as an alternate controller driver to the<br>
current implementation? (yes, even the controller is a driver in<br>
Octavia.)<br>
<br>
Are you planning to attend the PTG? If so we can work through these<br>
questions there, it is already on the agenda.<br>
If not, we should figure out either how to include you in that<br>
discussion, or continue the discussion on the mailing list.<br>
<br>
Michael<br>
<br>
[1] <a href="https://wiki.openstack.org/wiki/Octavia/Roadmap" rel="noreferrer" target="_blank">https://wiki.openstack.org/wiki/Octavia/Roadmap</a><br>
[2] <a href="https://governance.openstack.org/tc/reference/base-services.html" rel="noreferrer" target="_blank">https://governance.openstack.org/tc/reference/base-services.html</a><br>
[3] <a href="https://etherpad.openstack.org/p/octavia-train-ptg" rel="noreferrer" target="_blank">https://etherpad.openstack.org/p/octavia-train-ptg</a><br>
<br>
On Fri, Apr 19, 2019 at 6:16 AM Anna Taraday <<a href="mailto:akamyshnikova@mirantis.com" target="_blank">akamyshnikova@mirantis.com</a>> wrote:<br>
><br>
> Hello everyone!<br>
><br>
> I was looking at the topic of usage taskflow persistence and jobboard in Octavia [1].<br>
> I created a simple PoC to check what should be done to enable this functionality [2] .<br>
><br>
> From what I see, taskflow expects that data, which will be stored in persitence backend/jobboard backend, is a dict or an object easily converted to dicts [3] (error [3.1])<br>
> Also functions that creates flow should be importable [4] (error [4.1]).<br>
><br>
> These two points lead to refactor required for Octavia to enable taskflow persistence and jobboard:<br>
> 1) Convert data which is passed between flows in dicts, at this moment it is db objects with links to other db objects.<br>
> 2) Create importable flow functions.<br>
><br>
> As far as I see the only OpenStack project which adapted taskflow persistence is poppy [5]<br>
><br>
> I'm looking for taskflow expect to take a look at all this and give some comments - whether I am correct or missing something.<br>
><br>
> Thank you for your time in advance!<br>
><br>
> [1] - <a href="https://storyboard.openstack.org/#!/story/2005072" rel="noreferrer" target="_blank">https://storyboard.openstack.org/#!/story/2005072</a><br>
> [2] - <a href="https://review.openstack.org/#/c/647406" rel="noreferrer" target="_blank">https://review.openstack.org/#/c/647406</a><br>
> [3] - <a href="https://github.com/openstack/taskflow/blob/master/taskflow/persistence/backends/impl_sqlalchemy.py#L458" rel="noreferrer" target="_blank">https://github.com/openstack/taskflow/blob/master/taskflow/persistence/backends/impl_sqlalchemy.py#L458</a><br>
> [3.1] - <a href="http://paste.openstack.org/show/749530/" rel="noreferrer" target="_blank">http://paste.openstack.org/show/749530/</a><br>
> [4] - <a href="https://docs.openstack.org/taskflow/latest/_modules/taskflow/engines/helpers.html#save_factory_details" rel="noreferrer" target="_blank">https://docs.openstack.org/taskflow/latest/_modules/taskflow/engines/helpers.html#save_factory_details</a><br>
> [4.1] - <a href="http://paste.openstack.org/show/749527/" rel="noreferrer" target="_blank">http://paste.openstack.org/show/749527/</a><br>
> [5] - <a href="https://github.com/openstack/poppy" rel="noreferrer" target="_blank">https://github.com/openstack/poppy</a><br>
><br>
><br>
> --<br>
> Regards,<br>
> Ann Taraday<br>
> Mirantis, Inc<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_8605883387815748000gmail_signature"><div dir="ltr"><div><div dir="ltr">Regards,<div>Ann Taraday</div><div>Mirantis, Inc</div></div></div></div></div>