Cluster Upgrade
Implements the Clusters.upgrade python API and corresponding shell command. Implements blueprint: bp/cluster-upgrade Change-Id: Iedb08c99bf8eb2a0b0d09e3c1ebd11965fdfff90
This commit is contained in:
parent
c4d9ebb66d
commit
9d3098ebaf
|
@ -0,0 +1,3 @@
|
|||
features:
|
||||
- Added cluster-upgrade command to upgrade all instances
|
||||
in a cluster to a new datastore version.
|
|
@ -102,6 +102,16 @@ class ClustersTest(testtools.TestCase):
|
|||
self.assertEqual(('/clusters/cluster1', 'cluster'),
|
||||
clusters_test.get(1))
|
||||
|
||||
def test_upgrade(self):
|
||||
resp = mock.Mock()
|
||||
resp.status_code = 200
|
||||
body = None
|
||||
clusters_test = self.get_clusters()
|
||||
clusters_test.api.client.post = mock.Mock(return_value=(resp, body))
|
||||
clusters_test.upgrade('cluster1', '5.6')
|
||||
resp.status_code = 500
|
||||
self.assertRaises(Exception, clusters_test.upgrade, 'cluster1', '5.6')
|
||||
|
||||
def test_delete(self):
|
||||
resp = mock.Mock()
|
||||
resp.status_code = 200
|
||||
|
|
|
@ -474,6 +474,11 @@ class ShellTest(utils.TestCase):
|
|||
self.run_command(cmd)
|
||||
self.assert_called('POST', '/clusters/cls-1234')
|
||||
|
||||
def test_cluster_upgrade(self):
|
||||
cmd = ('cluster-upgrade cls-1234 1234')
|
||||
self.run_command(cmd)
|
||||
self.assert_called('POST', '/clusters/cls-1234')
|
||||
|
||||
def test_cluster_create_with_locality(self):
|
||||
cmd = ('cluster-create test-clstr2 redis 3.0 --locality=affinity '
|
||||
'--instance flavor=2,volume=1 '
|
||||
|
|
|
@ -126,6 +126,15 @@ class Clusters(base.ManagerWithFind):
|
|||
body = {"shrink": instances}
|
||||
return self._action(cluster, body)
|
||||
|
||||
def upgrade(self, cluster, datastore_version):
|
||||
"""Upgrades a cluster to a new datastore version.
|
||||
|
||||
:param cluster: The cluster to upgrade
|
||||
:param datastore_version: Datastore version to which to upgrade
|
||||
"""
|
||||
body = {"upgrade": {'datastore_version': datastore_version}}
|
||||
return self._action(cluster, body)
|
||||
|
||||
|
||||
class ClusterStatus(object):
|
||||
|
||||
|
|
|
@ -414,6 +414,18 @@ def do_cluster_reset_status(cs, args):
|
|||
cs.clusters.reset_status(cluster)
|
||||
|
||||
|
||||
@utils.arg('cluster', metavar='<cluster>',
|
||||
help=_('ID or name of the cluster.'))
|
||||
@utils.arg('datastore_version',
|
||||
metavar='<datastore_version>',
|
||||
help=_('A datastore version name or ID.'))
|
||||
@utils.service_type('database')
|
||||
def do_cluster_upgrade(cs, args):
|
||||
"""Upgrades a cluster to a new datastore version."""
|
||||
cluster = _find_cluster(cs, args.cluster)
|
||||
cs.clusters.upgrade(cluster, args.datastore_version)
|
||||
|
||||
|
||||
@utils.arg('instance',
|
||||
metavar='<instance>',
|
||||
type=str,
|
||||
|
|
Loading…
Reference in New Issue