<div dir="ltr"><div dir="ltr">On Thu, Oct 29, 2020 at 6:57 PM Bogdan Dobrelya <<a href="mailto:bdobreli@redhat.com">bdobreli@redhat.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 10/29/20 1:45 PM, Rabi Mishra wrote:<br>
> On Thu, Oct 29, 2020 at 4:59 PM Bogdan Dobrelya <<a href="mailto:bdobreli@redhat.com" target="_blank">bdobreli@redhat.com</a> <br>
> <mailto:<a href="mailto:bdobreli@redhat.com" target="_blank">bdobreli@redhat.com</a>>> wrote:<br>
> <br>
>     Hi,<br>
> <br>
>     In today TripleO client development we invoke ansible playbooks instead<br>
>     of Mistral workflows. I believe this may only be justified for<br>
>     non-trivial things. Otherwise please just import python modules into<br>
>     the<br>
>     client command actions without introducing additional moving parts in<br>
>     the form of ansible modules (that import the same python modules as<br>
>     well).<br>
> <br>
>     Ansible brings declarative DSL that sometimes can better and simpler<br>
>     and<br>
>     faster describes things to do and shape inputs data, than if the same<br>
>     would be done in python, in the client.<br>
> <br>
>     What should be the trivial thing and non-trivial then?<br>
> <br>
> <br>
> Yes, we did create a number of playbooks/ansible modules for some <br>
> trivial things starting with <a href="https://review.opendev.org/#/c/716286/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/716286/</a> (I <br>
> had a comment about it in that patch and it seems you reviewed the patch <br>
> too), that could have been achieved by making a simple tripleo-common <br>
> api calls.<br>
<br>
Yes, that change belongs to a massive conversion effort that contains <br>
hundreds of patches in the topic. Also the created ansible module <br>
doesn't look trivial to me, since the result [0] of that work looked <br>
much simpler than the original parts [1], [2], [3] of workflow and its <br>
code. And "trivial" playbook for the given example only wraps the <br>
ansible module for the caller. So that approach taken for that example <br>
looks justified.<br></blockquote><div><br></div><div>Though we're not debating that patch here but what we do in the future, not sure why it's not trivial for you. That ansible module[0] wraps single tripleo-common api call  "stack_param_utils.update_parameters", which could have been easily called from tripleoclient[2], like the example you had given.<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
[0] <br>
<a href="https://review.opendev.org/#/c/712604/7/tripleo_ansible/ansible_plugins/modules/tripleo_plan_parameters_update.py" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/712604/7/tripleo_ansible/ansible_plugins/modules/tripleo_plan_parameters_update.py</a><br>
<br>
[1] <br>
<a href="https://review.opendev.org/#/c/298682/23/tripleo_common/actions/parameters.py" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/298682/23/tripleo_common/actions/parameters.py</a><br>
<br>
[2] <br>
<a href="https://review.opendev.org/#/c/716286/4/tripleoclient/v1/overcloud_deploy.py" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/716286/4/tripleoclient/v1/overcloud_deploy.py</a><br>
<br>
[3] <a href="https://review.opendev.org/#/c/540398/2/workbooks/plan_management.yaml" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/540398/2/workbooks/plan_management.yaml</a><br>
<br>
> <br>
> IMO, creating playbooks for every cli action and moving all logic from <br>
> tripleoclient to ansible modules/playboos would have helped us in either <br>
> getting rid of tripleoclient or make it very thin. We did discuss that <br>
> in the victoria PTG[1]. Agreed that we would  end up with some <br>
> inefficient stuff (like what you've mentioned) during the transition and <br>
> later, but the user experience with ansible playbooks compared to <br>
> current logging in cli actions would have outweighed that.<br>
> <br>
> However, over the last cycle I've seen some resistance to  go in that <br>
> direction (i.e moving everything from tripleoclient to <br>
> playbooks/role/ansible mddules), If we want to keep some stuff in <br>
> tripleolcient (and some in ansible modules/playbooks), then I would <br>
> agree we should not make it complex by writing playbooks/modules for <br>
> things that could be achieved by simple tripleo-common api calls.<br>
> <br>
> [1] <a href="https://etherpad.opendev.org/p/tripleo-future-of-tripleoclient" rel="noreferrer" target="_blank">https://etherpad.opendev.org/p/tripleo-future-of-tripleoclient</a><br>
> <br>
>     Well, I think that example [0] illustrates such a trivial thing. A new<br>
>     playbook [1] would only install a few packages then "returns" back into<br>
>     python and calls a new ansible module [2]. And that new module only<br>
>     wraps [3] the same code being removed from the client:<br>
> <br>
>     from tripleo_common.image import build<br>
>     ...<br>
>     manager = build.ImageBuildManager(<args>)<br>
> <br>
>     I see no point of adding a new playbook and a new module for that<br>
>     trivial example. Those 4 packages could (and should) be as well<br>
>     installed from the client caller code without any ansible involved in<br>
>     the middle IMO.<br>
> <br>
>     [0] <a href="https://review.opendev.org/#/c/759954/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/759954/</a><br>
> <br>
>     [1]<br>
>     <a href="https://review.opendev.org/#/c/759953/3/tripleo_ansible/playbooks/cli-overcloud-image-build.yaml" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/759953/3/tripleo_ansible/playbooks/cli-overcloud-image-build.yaml</a><br>
> <br>
>     [2]<br>
>     <a href="https://review.opendev.org/#/c/759953/3/tripleo_ansible/ansible_plugins/modules/tripleo_overcloud_image_build.py@26" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/759953/3/tripleo_ansible/ansible_plugins/modules/tripleo_overcloud_image_build.py@26</a><br>
> <br>
>     -- <br>
>     Best regards,<br>
>     Bogdan Dobrelya,<br>
>     Irc #bogdando<br>
> <br>
> <br>
> <br>
> <br>
> -- <br>
> Regards,<br>
> Rabi Mishra<br>
> <br>
<br>
<br>
-- <br>
Best regards,<br>
Bogdan Dobrelya,<br>
Irc #bogdando<br>
<br>
<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div>Rabi Mishra<div><br></div></div></div></div></div></div>