<div dir="ltr">Renat, <div><br></div><div>   I was talking to some friends that have more (and more recent) experience with standalone zope.interfaces inside other projects (last time I used it was inside zope and 10 years ago) and I think it might be just overcomplexity for our task at hand.</div><div><br></div><div>   Cheers,</div><div>  Adriano</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 15, 2017 at 7:05 AM, Renat Akhmerov <span dir="ltr"><<a href="mailto:renat.akhmerov@gmail.com" target="_blank">renat.akhmerov@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 style="word-wrap:break-word">Well, zope is a cool thing I believe. We can consider to use it. I just don’t see what real advantage it’ll give us now.<div>Essentially, what we’re trying to do now is pretty simple. We’re just defining one base class for all actions w/o talking</div><div>about various modifications of this class yet.</div><div><br></div><div>So if you see a concrete idea about using zope interfaces please share. I’m interested in that.</div><div><span class="HOEnZb"><font color="#888888"><br><div>
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div>Renat Akhmerov</div><div>@Nokia</div></div>

</div></font></span><div><div class="h5">
<br><div><blockquote type="cite"><div>On 14 Mar 2017, at 22:14, Adriano Petrich <<a href="mailto:apetrich@redhat.com" target="_blank">apetrich@redhat.com</a>> wrote:</div><br class="m_4254966628242112636Apple-interchange-newline"><div><div dir="ltr">Sorry if I'm missing the point here, and for being late on the discussion. But what about zope interfaces?<br><br>Would not that be clearer?<div><br></div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 14, 2017 at 11:39 AM, Dougal Matthews <span dir="ltr"><<a href="mailto:dougal@redhat.com" target="_blank">dougal@redhat.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"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_4254966628242112636h5">On 14 March 2017 at 11:14, Renat Akhmerov <span dir="ltr"><<a href="mailto:renat.akhmerov@gmail.com" target="_blank">renat.akhmerov@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 style="word-wrap:break-word">Yeah, I finally understood too what Thomas meant.<div><br></div><div>Just to clarify, I think mixed two different discussions here:</div><div><ol class="m_4254966628242112636m_-752913301545819104m_601756275399462929MailOutline"><li>Base framework for all actions residing in mistral-lib (what I was trying to discuss)</li><li>The new design for OpenStack actions</li></ol><div><br></div></div><div>On #2 I agree with you that NovaAction.get_client(context) should work. No problem with that.</div><div>And I believe that it doesn’t make sense to use multiple inheritance in this particular case, it’s</div><div>simply not worth it.</div><div><br></div><div>Getting back to #1.. Of course, using mixins can be problematic (method and state conflicts etc.).</div><div>I think mixins is just one of the options that’s possible to use if we want to. Regular class inheritance</div><div>is also an option I think. At this point if we just agree on action base class I think nothing prevents</div><div>us from choosing how to evolve in the future. So just agreeing on the base class design seems</div><div>to be sufficient for now. It’s just a base contract that a runner needs to be aware of (sorry for</div><div>repeating this thought but I think it’s important). The rest is related with action developer</div><div>convenience.</div><div><br></div>
<div><span><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>I think the outstanding questions are;</div><div><br>- should the context be a mixin or should run() always accept context? <br></div></div></div></div></blockquote><div><br></div></span><div>I’m for run() having “context” argument. Not sure why mixin is needed here. If an action doesn’t</div><div>need context it can be ignored.</div><span><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>- should async be a mixin or should we continue with the is_sync() method and overwriting that in the sublcass?<br></div></div></div></div></blockquote><div><br></div></span><div>I’m for is_sync() method as it is now. It’s more flexible and less confusing (imagine an action inheriting</div><div>AsyncAction but having is_async() returning False).</div><span><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>- should the openstack actions in mistral-extra be mixins?<br></div></div></div></div></blockquote></span></div><div><div><br class="m_4254966628242112636m_-752913301545819104m_601756275399462929webkit-block-placeholder"></div><div>No, not at all. They don’t have to be. This is a different discussion I think. We need to collect what’s bad about</div><div>the current OpenStack actions and think how to rewrite them (extract the common infrastructure they use,</div><div>make them more extensible, etc.)</div></div></div></blockquote><div><br></div></div></div><div>+1 to all of the above, I think we are in complete agreement and this will give us both a flexible interface and one that is easy to use and understand.<br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><span class="m_4254966628242112636m_-752913301545819104HOEnZb"><font color="#888888"><div><br></div><div><br></div><div><div style="word-wrap:break-word">Renat Akhmerov</div></div></font></span></div><span class="m_4254966628242112636m_-752913301545819104HOEnZb"><font color="#888888"><div><div style="word-wrap:break-word">@Nokia</div><div><br></div></div></font></span></div><span><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.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
<br></span></blockquote></div><br></div></div>
<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.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
<br></blockquote></div><br></div>
______________________________<wbr>______________________________<wbr>______________<br>OpenStack Development Mailing List (not for usage questions)<br>Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org" target="_blank">OpenStack-dev-request@lists.<wbr>openstack.org</a>?subject:<wbr>unsubscribe<br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br></div></blockquote></div><br></div></div></div></div><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>
<br></blockquote></div><br></div>