Cluster Upgrade

Outlines a framework and API for implementing cluster upgrades.

DocImpact

Change-Id: I51ccfd12a419ec93820621767db9232624b859a8
This commit is contained in:
Morgan Jones 2016-08-12 11:12:35 -04:00
parent 1b8d17edbe
commit 2813b7058b
1 changed files with 234 additions and 0 deletions

View File

@ -0,0 +1,234 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
Sections of this template were taken directly from the Nova spec
template at:
https://github.com/openstack/nova-specs/blob/master/specs/juno-template.rst
..
===============
Cluster Upgrade
===============
.. If section numbers are desired, unindent this
.. sectnum::
.. If a TOC is desired, unindent this
.. contents::
Trove currently has support for upgrading since instances from one
datastore version to another, but that functionality is lacking for
clusters. This blueprint outlines a framework and API for
implementing upgrades for clusters.
Launchpad Blueprint:
https://blueprints.launchpad.net/trove/+spec/cluster-upgrade
Problem Description
===================
Trove does not currently support upgrading clusters to new datastore
versions.
Proposed Change
===============
Implement a new cluster-upgrade API for upgrading a cluster to a new
datastore version.
This blueprint will outline only the framework and API for
implementing cluster upgrades. It will not detail the implementation
of upgrade for any specific datastore as the implementation for each
datastore may be different.
If your specification proposes any changes to the Trove REST API such
as changing parameters which can be returned or accepted, or even
the semantics of what happens when a client calls into the API, then
you should add the APIImpact flag to the commit message. Specifications with
the APIImpact flag can be found with the following query:
https://review.openstack.org/#/q/status:open+project:openstack/trove-specs+message:apiimpact,n,z
Code snippets, etc. should be placed in appropriately marked blocks:
.. code-block:: bash
# This is a bash command
ls -lf
.. code-block:: python
# sample code
for count in range(1, 10):
print count
Configuration
-------------
No datastore agnostic configuration settings are envisioned. Setting
for specific datastores will be detailed in the specifications for
each datastore implementation.
Database
--------
No database changes are envisioned.
Public API
----------
A new REST API will be implemented for cluster-upgrade:
Request::
PATCH v1/{tenant_id}/cluster/{cluster_id}
{
"cluster":
{
"datastore_version": "<datastore_version_uuid>"
}
}
Response::
{
}
REST return codes::
202 - Accepted.
400 - BadRequest. Server could not understand request.
404 - Not Found. <datastore_version_id> not found.
Public API Security
-------------------
No security implications.
Python API
----------
A new method will be implemented in the trove API. This method will
upgrade a cluster to the image specified by the provided
datastore_version.
.. code-block:: python
upgrade(cluster, datastore_version)
:cluster: the cluster to upgrade
:datastore_version: the datastore version, or its id, to which the
trove cluster will be upgraded
CLI (python-troveclient)
------------------------
A new CLI call will be implemented. This new call will upgrade a
cluster to the image specified by the provided datastore_version.
.. code-block:: bash
trove cluster-upgrade <cluster> <datastore_version>
:cluster: the cluster to upgrade
:datastore_version: the datastore version to which the instance will
be upgraded
Internal API
------------
The implementation of upgrade for single instances will be used to
upgrade the guest agent on an instance.
Guest Agent
-----------
For the initial implementation it is expected that the existing pre
and post upgrade methods will suffice.
Alternatives
------------
Dashboard Impact (UX)
=====================
A new cluster action will be implemented to allow a cluster to be
upgraded. Said functionality will be similar to the functionality for
a single instance.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
6-morgan
Dashboard assignee:
<launchpad-id or None>
Milestones
----------
Target Milestone for completion:
eg. Liberty-1
Work Items
----------
The implementation of this has been posted and is ready for review
subject to this spec being approved.
Upgrade Implications
====================
No upgrade implications.
Dependencies
============
Testing
=======
No int tests will be included with this change as this is only a
framework without implementations for specific datastores.
Documentation Impact
====================
What is the impact on the docs team of this change? Some changes might require
donating resources to the docs team to have the documentation updated. Don't
repeat details discussed above, but please reference them here.
References
==========
None.
Appendix
========
None.