<div dir="ltr"><div><div>I know that Kaleb is working on that.<br><br></div>But we(me, Kaleb, rest of guys) decided that i'm gonna present my own vision of Capabilities. <br>That is what i'm doing now. Basicaly, at meetup you all could discuss design in general, i suppose.<br>
<br></div>Best regards,<br>Denis Makogon.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 19, 2014 at 7:42 PM, Daniel Salinas <span dir="ltr"><<a href="mailto:imsplitbit@gmail.com" target="_blank">imsplitbit@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">We're at the trove meetup for the rest of this week but you should speak with Kaleb Pomeroy from Rackspace.  He's generated some code on this particular subject.</div>
<div class="gmail_extra"><br><br>
<div class="gmail_quote"><div><div class="h5">On Wed, Feb 19, 2014 at 11:11 AM, Denis Makogon <span dir="ltr"><<a href="mailto:dmakogon@mirantis.com" target="_blank">dmakogon@mirantis.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 class="h5">
<div dir="ltr"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Goodday OpenStack DBaaS communtiy.</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">I’d like to start topic related to design of capabilities [1].</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">This question was raised when multiple datastores where integrated into Trove (such as redis, cassandra, mongo in instance modes). We encountered a the problem when specific datastore doesn’t support operations that are the part of Trove API (core and extension). After some discussions with the community we decided to implement “capabilities” feature. Basicaly, “capabilities” is the list of operations acceptable for chosen “object”. To be accurate,  “capabilities” is the API for listing available Trove API(core and extensions) per some kind of an identifier.</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><h1 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-indent:36pt;text-align:center">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Design</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:normal">. </span></h1>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">I’d like to split up all tasks into small peaces:</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><ol style="margin-top:0pt;margin-bottom:0pt">


<li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.dqx5s9nxd86g" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">Nameing convintion.</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.a86gyngvxgek" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">DSL for writing reference to available capabilities.</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.p3kja3s8zex" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">Сustody strategy. How and what to store at the back-end?</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.mvusz3lj5res" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">Pinning to datastore or version?</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.df6yrbqny8te" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">How to load  actual API reference?</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.gjahbyoqoq5d" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">Default capabilities. What operations are allowed by default?</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.ihzh5pv7pmci" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">Capablities API.</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><a href="https://docs.google.com/a/mirantis.com/document/d/1FDhenfF47UYdiqTr5dGHSG_Gk828yFuvew92I9qil5I/edit#heading=h.paouley6yndv" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">Capabilities Management API.</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


</li></ol><br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold"></span><h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-indent:36pt;text-align:center">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Naming convention</span></h2>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Suggestions:</span></p><ol style="margin-top:0pt;margin-bottom:0pt">


<li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;margin-left:48px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Filename convension:</span></p>


</li></ol><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> {</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">datastore</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> or </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">datastore_version_manager</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">}.capabilities</span></p>


<ol style="margin-top:0pt;margin-bottom:0pt" start="2"><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;margin-left:48px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Attribute convension: </span></p>


</li></ol><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:144pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Trove-”API-section”:</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:216pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">- method: Identifier</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    Available sections: instance, backip, users, schemes.</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    Capability Identifier: ALLOWED/BLOCKED</span></p>


<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold"> </span></h2>


<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">DSL for writing reference to available capabilities</span></h2>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">There are several options of DSL’s that can be chosen for writing capabilities references, options:</span></p>


<ol style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">JSON.</span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">YAML.</span></p>


</li><li dir="ltr" style="vertical-align:baseline;list-style-type:decimal;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">XML.</span></p>


</li></ol><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    Personaly i’d like to choose YAML as appropriate DSL. Described capabilities would look like: </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">mysql</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">.capabilities</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Trove-Instance:</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">- create: </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">ALLOWED</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">- list: </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">BLOCKED</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">- delete: </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">ALLOWED</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Trove-Backup:</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">- create: </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">BLOCKED</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Trove-Users:</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">- create: </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">BLOCKED</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold"></span><h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Сustody strategy. How and what to store at the back-end ?</span></h2>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Before suggesting database table scheme i’d like to describe what we are going to store. It would be better to store only blocked capabilities, its cheaper, instead of storing all capabilities, either blocked and allowed. </span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Backend table scheme.</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Table 1 - Capabilities table scheme</span></p>


<div dir="ltr" style="margin-left:3.75pt"><table style="border:medium none;border-collapse:collapse"><colgroup><col width="289"><col width="316"></colgroup><tbody><tr style="height:53px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px">


<p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Datastore</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> or </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Datastore version manager</span></p>


</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Capabilities</span></p>


</td></tr><tr style="height:67px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">datastore </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">or </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">manager</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px">


<p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">“Trove-”API-section”:</span></p>


<p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">                      - method:</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> Identifier</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">“</span></p>


</td></tr></tbody></table></div><br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Where </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Identifier </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">could be </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">ALLOWED</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> or </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">BLOCKED</span></p>


<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold"> </span></h2>


<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Pinning to datastore or datastore version?</span></h2>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">As you can see from previous topics, it would be better to pin capabilities directly to datastore version, since one manager could be assigned to multiple datastore versions.</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    So, capabilities backend table scheme would have next desription:</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><ul style="margin-top:0pt;margin-bottom:0pt">


<li dir="ltr" style="vertical-align:baseline;list-style-type:disc;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">datastrove_version_manager:</span></p>


</li></ul><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">name: manager, Foreing key from DatastoreVersion table;</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">type: String.</span></p>


<ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="vertical-align:baseline;list-style-type:disc;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">capabilities: </span></p>


</li></ul><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">name: capabilities;</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">type: Text.</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">How to load actual API reference?</span></h2>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    According to previous topics i forsee the next way of discovering actual capabilities at runtime:</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    Since YAML format perfectly could be loaded as Python dictionary, the easiest way is to merge two dictionaries.</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    Example:</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">    default_capabilities = (CapabilitiesModel.</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">             load_defaults(manager=datastore_version.manager))</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">blocked_capabilities = (CapabilitiesModel.</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">load_blocked(manager=datastore_version.manager))</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">    actual_capabilities = dict(chain(</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">default_capabilities.iteritems(),</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">blocked_capabilities.iteritems()</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:108pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">)</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal">)</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:12px;background-color:transparent;text-decoration:none;font-family:'Courier New';font-weight:normal"></span><br>
<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold"></span><h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold"> </span></h2>
<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Default capabilities. What operations are allowed by default?</span></h2>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    </span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Lets take a look at those datastore types that Trove supports. For now it supports: mysql, redis, cassandra, mongo.</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    Not so long ago community team decided to bring up Capablities matrix [2]. By default each datastore should support core API [3] and extensions API [4] are optional. So, i’d like to suggest to mark core API capabilities as ALLOWED, and extensions API capabilities as BLOCKED.</span></p>


<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Capabilities API</span></h2>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Task:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">describe actual capabilities per datastore version manager</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">HTTP</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">method:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">GET</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Method name</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">show</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Route:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">/{tenant_id}/capabilities/{datastore_version_id}</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">CLI call:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">trove capabilities-show --datastore-version <UUID></span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Task:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">list all actual capabilities</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">HTTP</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">method:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">GET</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Method name</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">index</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">Route:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">/{tenant_id}/capabilities/</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">CLI call:     </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">trove capabilities-list</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"></span></p>


<h2 dir="ltr" style="line-height:1.15;margin-top:10pt;margin-bottom:0pt;text-align:center"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:19px;background-color:transparent;text-decoration:none;font-family:'Trebuchet MS';font-weight:bold">Capabilities Management API</span></h2>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    </span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">My suggestion is to add capabilities management API to </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">trove-manage</span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> utility (for the first iteration).</span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt">


<span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">trove-manage capabilities_update <datastore_manager> <Trove-”API-section”> <method> <Identifier></span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">where:</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"><datastore_manager></span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"> - </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">datastore manager (variants: mysql, redis, cassandra, mongo, percona);</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"><Trove-”API-section”></span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">  - part of API (core or extension, possible variants: Trove-Instance, Trove-Backup, Trove-Users, etc);</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-indent:36pt"><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"><method> </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">-</span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"> </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:15px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">method available for given section of Trove API (variants: create, delete, list, show etc)</span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">    </span><span style="vertical-align:baseline;font-variant:normal;font-style:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold"><Identifier> - </span><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">identifier that marks method from API section as ALLOWED/BLOCKED</span></p>


<br><br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify">


<span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">[1] </span><a href="https://wiki.openstack.org/wiki/Trove/trove-capabilities" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">https://wiki.openstack.org/wiki/Trove/trove-capabilities</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">[2] </span><a href="https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">[3] </span><a href="https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix#API_Matrix" style="text-decoration:none" target="_blank"><span style="font-size:16px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix#API_Matrix</span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">[4] </span><a href="https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix#Extensions_Matrix" style="text-decoration:none" target="_blank"><span style="font-size:15px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline">https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix#Extensions_Matrix</span></a></p>


<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><br></p><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify"><br></p><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify">


Best regards</p><span><font color="#888888"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;text-align:justify">Denis Makogon.<br><a href="https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix#Extensions_Matrix" style="text-decoration:none" target="_blank"><span style="font-size:15px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline"></span></a><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></p>


<br><span style="vertical-align:baseline;font-variant:normal;font-style:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal"></span></font></span></div>
<br></div></div>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>