Outlines a framework and API for implementing cluster upgrades. DocImpact Change-Id: I51ccfd12a419ec93820621767db9232624b859a8
4.8 KiB
Cluster Upgrade
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:
# This is a bash command
ls -lf
# 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.
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.
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.