Merge "Cluster Upgrade"
This commit is contained in:
3
releasenotes/notes/cluster-upgrade-d58d1fc4b8da0a03.yaml
Normal file
3
releasenotes/notes/cluster-upgrade-d58d1fc4b8da0a03.yaml
Normal file
@@ -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'),
|
self.assertEqual(('/clusters/cluster1', 'cluster'),
|
||||||
clusters_test.get(1))
|
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):
|
def test_delete(self):
|
||||||
resp = mock.Mock()
|
resp = mock.Mock()
|
||||||
resp.status_code = 200
|
resp.status_code = 200
|
||||||
|
@@ -474,6 +474,11 @@ class ShellTest(utils.TestCase):
|
|||||||
self.run_command(cmd)
|
self.run_command(cmd)
|
||||||
self.assert_called('POST', '/clusters/cls-1234')
|
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):
|
def test_cluster_create_with_locality(self):
|
||||||
cmd = ('cluster-create test-clstr2 redis 3.0 --locality=affinity '
|
cmd = ('cluster-create test-clstr2 redis 3.0 --locality=affinity '
|
||||||
'--instance flavor=2,volume=1 '
|
'--instance flavor=2,volume=1 '
|
||||||
|
@@ -126,6 +126,15 @@ class Clusters(base.ManagerWithFind):
|
|||||||
body = {"shrink": instances}
|
body = {"shrink": instances}
|
||||||
return self._action(cluster, body)
|
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):
|
class ClusterStatus(object):
|
||||||
|
|
||||||
|
@@ -414,6 +414,18 @@ def do_cluster_reset_status(cs, args):
|
|||||||
cs.clusters.reset_status(cluster)
|
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',
|
@utils.arg('instance',
|
||||||
metavar='<instance>',
|
metavar='<instance>',
|
||||||
type=str,
|
type=str,
|
||||||
|
Reference in New Issue
Block a user