<div dir="ltr"><div class="gmail_extra">Hi, Rob,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Appreciate your suggestions. Please see my inline comments.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 15, 2017 at 11:17 PM, Robert Putt <span dir="ltr"><<a href="mailto:Robert.Putt@rackspace.co.uk" target="_blank">Robert.Putt@rackspace.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">For me the important things are:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><u></u> <u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>a)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">Sandboxed code in some container solution</span></p></blockquote><div>Yeah, it's on the roadmap (may happen in several days.) <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="m_-4494909617917354694MsoListParagraph"><span style="font-size:11.0pt;font-family:Calibri"><u></u><u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>b)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">Pluggable backends for said sandbox to remove vendor lock in</span> </p></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="m_-4494909617917354694MsoListParagraph"><span style="font-size:11.0pt;font-family:Calibri"><u></u><u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>c)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">Pluggable storage for function packages, the default probably being Swift</span></p></blockquote><div>Qinling already supports plugable storage. In order to make it easy to test, the default is local file system. But it's up to deployer to decide which storage solution to use. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="m_-4494909617917354694MsoListParagraph"><span style="font-size:11.0pt;font-family:Calibri"><u></u><u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>d)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">Integration with Keystone for auth and role based access control e.g. sharing functions with other tenants but maybe with different permissions, e.g. dev tenant in a domain can
 publish functions but prod tenant can only execute the functions.</span></p></blockquote><div>Qinling supports Keystone for authentication. RBAC is on the roadmap. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="m_-4494909617917354694MsoListParagraph"><span style="font-size:11.0pt;font-family:Calibri"><u></u><u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>e)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">Integration with Neutron so functions can access tenant networks.</span></p></blockquote><div>This needs to be discussed further. Currently, the code is executed inside container which locates in orchestration system. Not sure it's easy to make that container access tenant network. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="m_-4494909617917354694MsoListParagraph"><span style="font-size:11.0pt;font-family:Calibri"><u></u><u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>f)<span style="font:7.0pt "Times New Roman"">       
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">A web services gateway to create RESTful APIs and map URIs / verbs / API requests to functions.</span></p></blockquote><div>Currently, user could invoke function by calling Qinling's rest api, but I agree with you that an API Gateway service is indeed necessary to provide more flexibility to end users.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p class="m_-4494909617917354694MsoListParagraph"><span style="font-size:11.0pt;font-family:Calibri"><u></u><u></u></span></p>
<p class="m_-4494909617917354694MsoListParagraph"><u></u><span style="font-size:11.0pt;font-family:Calibri"><span>g)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><u></u><span style="font-size:11.0pt;font-family:Calibri">It would also be nice to have some meta data service like what we see in Nova so functions can have an auto injected context relating to the tenant running it rather than having
 to inject all parameters via the API.</span></p></blockquote></div><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><font face="arial, helvetica, sans-serif"><br>Cheers,<br>Lingxian Kong (Larry)</font></div></div></div></div></div></div></div></div></div></div>
</div></div>