<div dir="ltr">


        
        
        
        


<p style="margin-bottom:0in" align="JUSTIFY"> Good day, Trove
community</p>
<p style="margin-bottom:0in" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in" align="JUSTIFY"> I'd like to start thread
related to orchestration based resource management. At current state
Heat support in Trove is nothing else than experimental. Trove should
be able to fully support Trove as resource management driver. 
</p>
<p style="margin-bottom:0in" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in" align="JUSTIFY"> <u>Why is it so
important?</u></p>
<p style="margin-bottom:0in" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in" align="JUSTIFY"> Because Trove should not
do what it does now (cloud service orchestration is not the part of
the OS Database Program). Trove should delegate all tasks to Cloud
Orchestration Service (Heat). 
</p>
<p style="margin-bottom:0in" align="JUSTIFY"> </p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    <u>How
can Heat help Trove?</u></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    Easily,
Trove API allows to perform next resource operations:</p>
<ol><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
        Trove instance provisioning (a combination of nova compute instance
        and cinder volume).</p>
        </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
        Resize instances (compute instance flavor resize).</p>
        </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
        Volume resize (cinder volume resize).</p>
        </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
        Security groups management (nova-network, neutron).</p>
</li></ol>
<ul><ul><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                        create rules in group;</p>
                        </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                        create group;</p></li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">update rules CIDR;</p></li></ul></ul>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    Heat
allows to do almost all given tasks.</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    <u>Resource
management interface</u></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    What
is management interface – abstract class that describes the
required tasks to accomplish. From Trove-taskmanager perspective,
management interface is nothing else than RPC service manager that
being used at service start <a href="https://github.com/openstack/trove/blob/master/trove/cmd/taskmanager.py#L51-L52">[1]</a>.</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    <u>Why
is it needed?</u></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    The
first answer is: To split-out two completely different resource
management engines.  Nova/Cinder/Neutron engine etc. called “<i><b>NATIVES</b></i>”
and Heat engine called “<i><b>ORCHESTRATOR</b></i>”.</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    As
you can all know they cannot work together, because they are acting
with resources in their own manners. But both engines are sharing
more than enough common code inside the Trove.</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    </p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    <u><br></u></p><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><u>Is
it backward compatible?</u></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">    Here
comes the third (mixed) manager called “<i><b>MIGRATION</b></i>”.
It allows to work with previously provisioned instances through
<i><b>NATIVES </b></i><span style="font-style:normal"><span style="font-weight:normal">engine
(resizes, migration, deletion) but new instances which would be
provisioned in future will be provisioned withing stacks through
</span></span><i><b>ORCHESTRATOR</b></i><span style="font-style:normal"><span style="font-weight:normal">.</span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   So,
there are three valid options:</span></span></p>
<ul><ul><li><p style="margin-bottom:0in;font-style:normal;font-weight:normal;text-decoration:none" align="JUSTIFY">
                use  <i><b>NATIVES</b></i> if there's no available Heat;</p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">use
                 </span></span><i><b>ORCHESTRATOR </b></i><span style="font-style:normal"><span style="font-weight:normal">to
                work with Heat only;</span></span><span style="font-style:normal"><span style="font-weight:normal"></span></span></p></li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">use
                         </span></span><i><b>MIGRATION </b></i><span style="font-style:normal"><span style="font-weight:normal">to
                        work with mixed manager;</span></span>
        </p></li></ul></ul>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">  TODO list:</span></span></p>

<ul><ul><li><p style="margin-bottom:0in" align="JUSTIFY"><span style="font-style:normal"><span style="text-decoration:none"><span style="font-weight:normal">provide
                abstract manager interface;</span></span></span></p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">extract
                common code shared between natives/heat/migration;</span></span></p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">implement
                native management support;</span></span></p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">implement
                orchestrator management support;</span></span></p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">implement
                migration management support;</span></span></p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">implement
                missing features in Heat;</span></span></p>
                </li><li><p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY">
                <span style="font-style:normal"><span style="font-weight:normal">re-visit
                orchestrator support;</span></span></p>
        </li></ul></ul>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   There
are already filed several blueprints which would give to Trove an
ability to fully support orchestrator based provisioning:</span></span></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   [TROVE
SPACE]</span></span></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   <a href="https://blueprints.launchpad.net/trove/+spec/stack-id">https://blueprints.launchpad.net/trove/+spec/stack-id</a></span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   <a href="https://blueprints.launchpad.net/trove/+spec/resource-manager-interface">https://blueprints.launchpad.net/trove/+spec/resource-manager-interface</a></span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   <a href="https://blueprints.launchpad.net/trove/+spec/resize-volume">https://blueprints.launchpad.net/trove/+spec/resize-volume</a></span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   <a href="https://blueprints.launchpad.net/trove/+spec/resize-instance">https://blueprints.launchpad.net/trove/+spec/resize-instance</a></span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   [HEAT
SPACE]</span></span></p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   <a href="https://blueprints.launchpad.net/heat/+spec/update-cinder-volume">https://blueprints.launchpad.net/heat/+spec/update-cinder-volume</a></span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><span style="font-style:normal"><span style="font-weight:normal">   <a href="https://blueprints.launchpad.net/heat/+spec/handle-update-for-security-groups">https://blueprints.launchpad.net/heat/+spec/handle-update-for-security-groups</a></span></span></p>

<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>
<p style="margin-bottom:0in;text-decoration:none" align="JUSTIFY"><br>
</p>

</div>