Implement Instance Upgrade
This change includes a new "trove upgrade" CLI command and a new "Instances.upgrade" python API method to implement the new Instance Upgrade feature. Change-Id: I6ec2ebb78019c014f87ba5d8cbfd284686c64f30 Implements: blueprint image-upgrade
This commit is contained in:

committed by
Doug Shelley

parent
b18d4ebf46
commit
4f3ab58687
5
releasenotes/notes/image-upgrade-dfa20861d756532d.yaml
Normal file
5
releasenotes/notes/image-upgrade-dfa20861d756532d.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Add a new trove upgrade CLI command and a new
|
||||||
|
Instances.upgrade python API method to implement
|
||||||
|
the new Instance Upgrade feature.
|
@@ -238,6 +238,16 @@ class InstancesTest(testtools.TestCase):
|
|||||||
resp.status_code = 500
|
resp.status_code = 500
|
||||||
self.assertRaises(Exception, self.instances.edit, 'instance1')
|
self.assertRaises(Exception, self.instances.edit, 'instance1')
|
||||||
|
|
||||||
|
def test_upgrade(self):
|
||||||
|
resp = mock.Mock()
|
||||||
|
resp.status_code = 200
|
||||||
|
body = None
|
||||||
|
self.instances.api.client.patch = mock.Mock(return_value=(resp, body))
|
||||||
|
self.instances.upgrade(self.instance_with_id, "5.6")
|
||||||
|
resp.status_code = 500
|
||||||
|
self.assertRaises(Exception, self.instances.upgrade,
|
||||||
|
'instance1')
|
||||||
|
|
||||||
def test_configuration(self):
|
def test_configuration(self):
|
||||||
def side_effect_func(path, inst):
|
def side_effect_func(path, inst):
|
||||||
return path, inst
|
return path, inst
|
||||||
|
@@ -608,6 +608,10 @@ class ShellTest(utils.TestCase):
|
|||||||
self.run_command('configuration-detach 1234')
|
self.run_command('configuration-detach 1234')
|
||||||
self.assert_called('PUT', '/instances/1234')
|
self.assert_called('PUT', '/instances/1234')
|
||||||
|
|
||||||
|
def test_upgrade(self):
|
||||||
|
self.run_command('upgrade 1234 c-123')
|
||||||
|
self.assert_called('PATCH', '/instances/1234')
|
||||||
|
|
||||||
def test_metadata_edit(self):
|
def test_metadata_edit(self):
|
||||||
self.run_command('metadata-edit 1234 key-123 value-123')
|
self.run_command('metadata-edit 1234 key-123 value-123')
|
||||||
self.assert_called('PATCH', '/instances/1234/metadata/key-123')
|
self.assert_called('PATCH', '/instances/1234/metadata/key-123')
|
||||||
|
@@ -167,6 +167,18 @@ class Instances(base.ManagerWithFind):
|
|||||||
resp, body = self.api.client.patch(url, body=body)
|
resp, body = self.api.client.patch(url, body=body)
|
||||||
common.check_for_exceptions(resp, body, url)
|
common.check_for_exceptions(resp, body, url)
|
||||||
|
|
||||||
|
def upgrade(self, instance, datastore_version):
|
||||||
|
"""Upgrades an instance with a new datastore version."""
|
||||||
|
body = {
|
||||||
|
"instance": {
|
||||||
|
"datastore_version": datastore_version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
url = "/instances/%s" % base.getid(instance)
|
||||||
|
resp, body = self.api.client.patch(url, body=body)
|
||||||
|
common.check_for_exceptions(resp, body, url)
|
||||||
|
|
||||||
def list(self, limit=None, marker=None, include_clustered=False):
|
def list(self, limit=None, marker=None, include_clustered=False):
|
||||||
"""Get a list of all instances.
|
"""Get a list of all instances.
|
||||||
|
|
||||||
|
@@ -759,6 +759,20 @@ def do_resize_instance(cs, args):
|
|||||||
cs.instances.resize_instance(instance, flavor_id)
|
cs.instances.resize_instance(instance, flavor_id)
|
||||||
|
|
||||||
|
|
||||||
|
@utils.arg('instance',
|
||||||
|
metavar='<instance>',
|
||||||
|
type=str,
|
||||||
|
help='ID or name of the instance.')
|
||||||
|
@utils.arg('datastore_version',
|
||||||
|
metavar='<datastore_version>',
|
||||||
|
help='A datastore version name or ID.')
|
||||||
|
@utils.service_type('database')
|
||||||
|
def do_upgrade(cs, args):
|
||||||
|
"""Upgrades an instance to a new datastore version."""
|
||||||
|
instance = _find_instance(cs, args.instance)
|
||||||
|
cs.instances.upgrade(instance, args.datastore_version)
|
||||||
|
|
||||||
|
|
||||||
@utils.arg('instance',
|
@utils.arg('instance',
|
||||||
metavar='<instance>',
|
metavar='<instance>',
|
||||||
type=str,
|
type=str,
|
||||||
|
Reference in New Issue
Block a user