<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Arial Unicode MS";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@Arial Unicode MS";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:EN-US;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-CA" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Iccha,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks for the feedback. I guess I should have been more specific – my intent here was to layout use cases and requirements and not talk about specific implementations. I believe that if we can get agreement
 on the requirements, it will be easier to review/discuss design/implementation choices. Some of your comments are specific to how one might chose to implement against these requirements – I think we should defer those questions until we gain some agreement
 on requirements.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">More feedback below…marked with [DAS]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><br>
Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Doug<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:EN-CA">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:EN-CA"> Iccha
 Sethi [mailto:iccha.sethi@RACKSPACE.COM] <br>
<b>Sent:</b> July-03-14 4:36 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [trove] Discussion of capabilities feature<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black">Hey Doug,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black">Thank you so much for putting this together. I have some questions/clarifications(inline) which would be useful to be addressed in the spec.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black">Doug Shelley <<a href="mailto:doug@tesora.com">doug@tesora.com</a>><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br>
<b>Date: </b>Thursday, July 3, 2014 at 2:20 PM<br>
<b>To: </b>"OpenStack Development Mailing List (not for usage questions) (<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>)" <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br>
<b>Subject: </b>[openstack-dev] [trove] Discussion of capabilities feature<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">At yesterday's Trove team meeting [1] there was significant discussion around the Capabilities [2] feature. While the community previously approved a BP and some
 of the initial implementation, it is apparent now that there is no agreement in the community around the requirements, use cases or proposed implementation. </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">I mentioned in the meeting that I thought it would make sense to adjust the current BP and spec to reflect the concerns and hopefully come up with something that
 we can get consensus on. Ahead of this, I thought it would to try to write up some of the key points and get some feedback here before updating the spec.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">First, here are what I think the goals of the Capabilities feature are:</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">1. Provide other components with a mechanism for understanding which aspects of Trove are currently available and/or in use</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:red;mso-fareast-language:EN-CA">>> Good point about communicating to other components. We can highlight how this would help other projects like horizon dynamically modify
 their UI based on the api response.</span><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA">[DAS] Absolutely<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:red;mso-fareast-language:EN-CA"><br>
<br>
</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:red;mso-fareast-language:EN-CA">[2] "</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS","sans-serif";color:red;background:white;mso-fareast-language:EN-CA">This
 proposal includes the ability to setup different capabilities for different datastore versions. “ So capabilities is specific to </span><span style="font-size:12.0pt;font-family:"Arial Unicode MS","sans-serif";color:red;mso-fareast-language:EN-CA">data stores/datastore
 versions and not for trove in general right?</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS","sans-serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA">[DAS] This is from the original spec – I kind of pushed the reset to make sure we understand the requirements at this point. Although what the requirements below contemplate is certainly
 oriented around datastore managers/datastores and versions.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:red;mso-fareast-language:EN-CA">Also it would be useful for us as a community to maybe lay some ground rules for what is a capability and what is not in the spec. For example, how to distinguish what
 goes in </span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:red;mso-fareast-language:EN-CA"><a href="https://github.com/openstack/trove/blob/master/trove/common/cfg.py#L273"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">https://github.com/openstack/trove/blob/master/trove/common/cfg.py#L273</span></a></span><span style="font-size:10.5pt;color:red;mso-fareast-language:EN-CA"> as
 a config value and what does not.</span><span style="font-size:10.5pt;mso-fareast-language:EN-CA"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA">[DAS] Hopefully this will become clearer through this process<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">2. Allow operators the ability to control some aspects of Trove at deployment time</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">>> If we are controlling the aspects at deploy time what advantages do having tables like capabilities and capabilities_overrides offer over having in the config file under the config groups for different data stores
 like [mysql][redis] etc? I think it would be useful to document these answers because they might keep resurfacing in the future.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">[DAS] Certainly at the time the design/implementation is fleshed out these choices would be relevant to be discussed.<o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:red;mso-fareast-language:EN-CA">Also want to make sure we are not trying to solve the problem of config override during run time here because that is an entirely
 different problem not in scope here.</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Use Cases</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">1. Unimplemented feature - this is the case where one/some datastore managers provide support for some specific capability but others don't. A good example would
 be replication support as we are only planning to support the MySQL manager in the first version. As other datastore managers gain support for the capability, these would be enabled.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">2. Unsupported feature - similar to #1 except this would be the case where the datastore manager inherently doesn't support the capability. For example, Redis
 doesn't have support for volumes.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">3. Operator controllable feature - this would be a capability that can be controlled at deployment time at the option of the operator. For example, whether to
 provide access to the root user on instance creation.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:red;mso-fareast-language:EN-CA">>> Are not 1 and 2 set at deploy time as well?</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA">[DAS] I see 1 and 2 and basically baked into a particular version of the product and provided at run time.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">4. Downstream capabilities addition - basically the ability to use capabilities as an extension point. Allow downstream implementations to add capabilities that
 aren't present in upstream Trove. </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Requirements</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">1. There are a well known set of capabilities that are provided with upstream Trove. Each capability is either read-only (basically use cases 1 & 2) or read-write
 (use case 3). Use case #4 capabilities are not part of the "well known" set.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">2. Each capability can be over-ridden at the datastore manager level, the datastore level or the datastore version level. The datastore manager level would be
 used for the read only capabilities and specified by a given version of Trove. Datastore/Datastore version overrides would be for Operator controllable capabilities that are read-write. </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:red;mso-fareast-language:EN-CA">>> Is there going to be a distinction at design level between read-write/read only capabilities? For example are operators going to
 be forbidden from changing certain capabilities?</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA">[DAS] Yes – It makes no sense for an operator to change a read only capability because there would because it represents an missing implementation<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">3. The datastore/datastore version overrides are only present if created by the Operator at deployment time.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:red;mso-fareast-language:EN-CA">>> Again if this is deployment time only, should we be having config files  for different data stores? And instead of having to populate
 databases by admins, this could be taken care of by config management tools in deployments? </span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-CA">[DAS] This is a design/implementation question –although I don’t really understand the comment “…having to populate databases by admins..”. However, the storage for the mechanism is
 implemented, it should be abstracted from the operators/admins/users…<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">4. A clean Trove install should create the domain of known capabilities and the datastore manager overrides relevant to the installed version of Trove.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">5. Upgrades - need to provide a mechanism to migrate from a version of Trove where:</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:36.0pt"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">a. A capability is being moved from historical config file into the capability mechanism</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:36.0pt"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">b. A previously non-existent capability is being introduced.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:36.0pt"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">c. Capability adjustments have occurred in the newer version that affect the datastore manager level capabilities. This likely has some
 impact on old-version guest agents running against capability upgrades.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Any feedback is welcome. Hopefully, based on the feedback we can update the spec and move forward on adjusting the implementation.</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Regards,</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Doug</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">[1] <a href="http://eavesdrop.openstack.org/irclogs/%23openstack-meeting-alt/%23openstack-meeting-alt.2014-07-02.log">http://eavesdrop.openstack.org/irclogs/%23openstack-meeting-alt/%23openstack-meeting-alt.2014-07-02.log</a> starting
 at 18:05</span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">[2] <a href="https://wiki.openstack.org/wiki/Trove/trove-capabilities">https://wiki.openstack.org/wiki/Trove/trove-capabilities</a></span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA">Thanks,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:EN-CA">Iccha<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Times New Roman","serif";color:black"> </span><span style="font-size:10.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"> <o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>