<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">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><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<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 class="HOEnZb"><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>_______________________________________________<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>