<div dir="ltr"><div>Kaleb, <br></div><div><br></div><div>I've noticed something that i think is quickly getting out of control using the trove-manage cmd. I saw this with datastores and now similar to what you are describing for the capabilities. </div>
<div><br></div><div>What i would like to see is more like categorizing the cmds. </div><div><br></div><div>example:</div><div>trove-manage datastores [update, version_update]</div><div>trove-manage capabilities [add, remove, associate, unassociate]<br>
</div><div><br></div><div>I mainly suggest this so that we wont have 20 top level cmds to run from trove-manage. I'd like to see this something that capabilities sets as a new standard. It also falls in line with the nova-manage cmd as well.</div>
<div><br></div><div>example:</div><div>nova-manage services [describe_resource, list, enable, disable]</div><div><br></div><div>I'll respond to some of the other things later. </div><div><br></div><div>-Craig</div></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 26, 2014 at 10:40 AM, Kaleb Pomeroy <span dir="ltr"><<a href="mailto:kaleb.pomeroy@rackspace.com" target="_blank">kaleb.pomeroy@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div style="direction:ltr;font-size:10pt;font-family:Tahoma">I'm not sure I understand the first question, but it seems like you are asking how the default capabilities are determined. First, they should all be documented. Secondly, we can
have defaults setup by migrations. I agree that this is not as seamless as a default config file, and that segways into question two.<br>
<br>
We want to eventually serve this data to the customers. As far as I know, there is no precedent in Openstack to serve configuration file data to customers. All customer presented data should be contained in the database, not in flat files. Additionally, management
via the api becomes much more complex when I have to write to files instead of adding removing database rows.<br>
<br>
As far as enabled/disabled capabilities, having enabled/disabled for each feature is more prone to errors or inconsistencies. Having a list of allowed features solves the same problem without needing to maintain a full set of features and associated flags for
each datastore/version. We agreed this approach much cleaner and simpler than the prior.<br>
<br>
Implementation will be coming shortly - I'm still working on that. I'll let you know as soon as I have something ready for review.<br>
<br>
Also, supposedly, the discussions we had last week are recorded and available via some means, but I don't know where. A lot of this was discussed there if you weren't able to make it.
<br>
<br>
<br>
<div style="font-size:16px;font-family:Times New Roman">
<hr>
<div style="direction:ltr"><font color="#000000" face="Tahoma"><b>From:</b> Denis Makogon [<a href="mailto:dmakogon@mirantis.com" target="_blank">dmakogon@mirantis.com</a>]<br>
<b>Sent:</b> Wednesday, February 26, 2014 5:18 AM<div><div class="h5"><br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [TROVE] Trove capabilities<br>
</div></div></font><br>
</div><div><div class="h5">
<div></div>
<div>
<div dir="ltr">
<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">First of all, how does Trove knows what kind of capabilities
it can give to users ?</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">We should have some kind of identity, that stores the
restricted description of all capabilities. Suggested variant is not acceptable, because you could register any kind of capabilities in database.</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"> Main point: Trove should have restrict description
of all possible capabilities, and it’s should not be stored in backend table.</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-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:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">Design: What is a capability?</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">
- Almost totally disagree.</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">Only datastore vesrion association is significant, common
capabilities table is not needed at all, because all new features(capabilities) assums that Trove will be re-deployed from scratch. It means that capabilities description would be updated only 2 or 3 time per release.</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-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:normal;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:bold">Design: Why isn't this in config files?</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">
- Agreed, my solution design doesn’t required restart. Magic happes in runtime. </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:bold">Development: How are capabilities checked?
</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">- Option 2 is more preferable, because capabilities
should be stored as dictionary object that has next structure:</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:italic;font-size:16px;background-color:transparent;text-decoration:none;font-family:Arial;font-weight:normal">API call: ALLOWED/BLOCKED</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><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">Unfortunately
given design is too broad, i dont see any implementation steps description. Please provide more details and flow examples with pseudo-code.<br>
<br>
</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">Best regards,<br>
</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><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">Denis
Makogon</span><br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Wed, Feb 26, 2014 at 12:13 AM, Kaleb Pomeroy <span dir="ltr">
<<a href="mailto:kaleb.pomeroy@rackspace.com" target="_blank">kaleb.pomeroy@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div style="direction:ltr;font-size:10pt;font-family:Tahoma"><br>
<b>Design: What is a capability?</b><br>
A capabilities is an attribute of a datastore/version that allows dynamic code flow for different datastore/versions, The presence of a capability determines which code path is taken. A capability is an ID, a friendly name (used in our code), and a lengthy
description (for displaying to the user). <br>
<br>
<b>Design: Where do they live?</b><br>
Capabilities will live in their own table. In addition, there will be an association table to map between datastore versions and capabilities.<br>
<br>
<b>Design: Why isn't this in config files?<br>
</b>First, they will be able to be viewed by customers, and modified by operations. That does not lend itself to config files. Additionally, we should be able to change a datastores capabilities without a restart.<br>
<br>
<b>Operations: What happens if the capabilities table is not populated?</b><br>
We are setting everything to be <b>default off</b> for all features. For mysql to support ephemeral_volumes it would need to be added to the capabilities table and properly associated to each version of mysql.
<br>
<br>
<b>Operations: How do you manage them?</b><br>
For the first pass, trove-manage commands. There will be a add_capability, remove_capability, associate_capability_with_datastore, and unassociate_capability_from_datastore (name are completely off the top of my head and subject to discussion/change).<br>
<br>
<b>Development: When/where are capabilities checked/determined?</b><br>
Any time you would want to fork paths. The check for ephemeral_volume would happen right before the cinder volume is created, whereas the database capability would be checked as soon as possible in the api layer.
<br>
<br>
<b>Development: How are capabilities checked?</b><br>
This is still to be determined.<br>
<br>
Option one (the one discussed at the meetup): <br>
if(cfg.cababilites.mysql.ephemeral_volumes):<br>
do_code()<br>
<br>
Option two:<br>
if "ephemeral_volumes" in datastore.manager.capabilities)<br>
do_code()<br>
<br>
The advantages of option one is consistency in checking the cfg object for configuration like things. I think that is worse than checking a property of the datastore. The advantage of the second way is that is more cleanly expresses what is happening under
the hood without any additional cost. I have the second option about complete, so we can see what that looks like soon.<br>
<br>
Most of this was discussed and agreed upon last week, I just wanted to recap and confirm with everyone on what our objectives and goals are. If there are unanswered questions, lets discuss sooner rather than later.<br>
<b><br>
<br>
</b>- KPom<br>
<b><br>
<br>
Bonus: API discussion for future development (not right now)<br>
</b>I suggest we expose only the capabilities that belong to a specific datastore. As a customer, I shouldn't know every feature available, just the ones on the datastore they are looking at.<br>
<br>
GET /{tenant_id}/datastores/{datastore_version_id}/capabilities<br>
<br>
<br>
Eventually, we would want the following admin routes available, but that is mitigated by the trove-manage stuff.<br>
<br>
[GET | PUT | POST | DELETE] /capabilities<br>
[POST | DELETE] /datastores/datastore_version_id/capabilities<br>
<br>
<br>
<br>
<br>
<br>
<div style="font-size:16px;font-family:Times New Roman">
<hr>
<div style="direction:ltr"><font color="#000000" face="Tahoma"><b>From:</b> Denis Makogon [<a href="mailto:dmakogon@mirantis.com" target="_blank">dmakogon@mirantis.com</a>]<br>
<b>Sent:</b> Wednesday, February 19, 2014 1:00 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [TROVE] Trove capabilities<br>
</font><br>
</div>
<div>
<div>
<div></div>
<div>
<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>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>
<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 start="2" 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">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" 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>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
_______________________________________________<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>
</div>
</div></div></div>
</div>
</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>