Support operating_status for instance

Change-Id: I3f5badc4d3bbb41de008d39e813d48f6aa670dc1
This commit is contained in:
Lingxian Kong 2020-12-06 21:48:19 +13:00
parent b02459fb1d
commit 23b5546f53
3 changed files with 53 additions and 13 deletions

View File

@ -0,0 +1,5 @@
---
features:
- Support ``operating_status`` for listing and showing instance. When
instance is created successfully, the ``status`` is ACTIVE and
``operating_status`` is HEALTHY.

View File

@ -59,6 +59,11 @@ def get_instances_info(instances):
if 'server' in instance_info:
instance_info['server_id'] = instance_info['server'].get('id')
if 'operating_status' not in instance_info:
# In case newer version python-troveclient is talking to older
# version trove.
instance_info['operating_status'] = ''
instances_info.append(instance_info)
return instances_info
@ -106,7 +111,8 @@ def set_attributes_for_print_detail(instance):
class ListDatabaseInstances(command.Lister):
_description = _("List database instances")
columns = ['ID', 'Name', 'Datastore', 'Datastore Version', 'Status',
'Public', 'Addresses', 'Flavor ID', 'Size', 'Role']
'Operating Status', 'Public', 'Addresses', 'Flavor ID',
'Size', 'Role']
admin_columns = columns + ["Server ID", "Tenant ID"]
def get_parser(self, prog_name):

View File

@ -51,6 +51,7 @@ class TestInstanceList(TestInstances):
"id": instance_id,
"name": name,
"status": "ACTIVE",
"operating_status": "HEALTHY",
"addresses": [
{"type": "private", "address": "10.0.0.13"}
],
@ -79,7 +80,7 @@ class TestInstanceList(TestInstances):
)
values = [
(instance_id, name, 'mysql', '5.6', 'ACTIVE', False,
(instance_id, name, 'mysql', '5.6', 'ACTIVE', 'HEALTHY', False,
[{"type": "private", "address": "10.0.0.13"}],
'02', 2, 'replica'),
]
@ -95,6 +96,7 @@ class TestInstanceList(TestInstances):
"id": instance_id,
"name": name,
"status": "ACTIVE",
"operating_status": "HEALTHY",
"addresses": [
{"type": "private", "address": "10.0.0.13"}
],
@ -126,7 +128,7 @@ class TestInstanceList(TestInstances):
)
expected_instances = [
(instance_id, name, 'mysql', '5.6', 'ACTIVE', False,
(instance_id, name, 'mysql', '5.6', 'ACTIVE', 'HEALTHY', False,
[{"type": "private", "address": "10.0.0.13"}],
'02', 2, '', server_id, tenant_id),
]
@ -142,6 +144,7 @@ class TestInstanceList(TestInstances):
"id": instance_id,
"name": name,
"status": "ACTIVE",
"operating_status": "HEALTHY",
"addresses": [
{"type": "private", "address": "10.0.0.13"}
],
@ -171,7 +174,7 @@ class TestInstanceList(TestInstances):
columns
)
expected_instances = [
(instance_id, name, 'mysql', '5.6', 'ACTIVE', False,
(instance_id, name, 'mysql', '5.6', 'ACTIVE', 'HEALTHY', False,
[{"type": "private", "address": "10.0.0.13"}],
'02', 2, '', server_id, tenant_id),
]
@ -187,15 +190,9 @@ class TestInstanceList(TestInstances):
class TestInstanceShow(TestInstances):
values = ([{'address': '10.0.0.13', 'type': 'private'}], [], 'mysql',
'5.6', '5.7.29', '02', '1234', 'test-member-1', False,
'regionOne', 'fake_master_id', 'ACTIVE', 'fake_tenant_id', 2)
def setUp(self):
super(TestInstanceShow, self).setUp()
self.cmd = database_instances.ShowDatabaseInstance(self.app, None)
self.data = self.fake_instances.get_instances_1234()
self.instance_client.get.return_value = self.data
self.columns = (
'addresses',
'allowed_cidrs',
@ -205,6 +202,7 @@ class TestInstanceShow(TestInstances):
'flavor',
'id',
'name',
'operating_status',
'public',
'region',
'replica_of',
@ -214,11 +212,42 @@ class TestInstanceShow(TestInstances):
)
def test_show(self):
args = ['1234']
parsed_args = self.check_parser(self.cmd, args, [])
instance_id = self.random_uuid()
name = self.random_name('test-show')
flavor_id = self.random_uuid()
primary_id = self.random_uuid()
tenant_id = self.random_uuid()
inst = {
"id": instance_id,
"name": name,
"status": "ACTIVE",
"operating_status": "HEALTHY",
"addresses": [
{"type": "private", "address": "10.0.0.13"}
],
"volume": {"size": 2},
"flavor": {"id": flavor_id},
"region": "regionOne",
"datastore": {
"version": "5.7.29", "type": "mysql",
"version_number": "5.7.29"
},
"tenant_id": tenant_id,
"replica_of": {'id': primary_id},
"access": {"is_public": False, "allowed_cidrs": []},
}
self.instance_client.get.return_value = instances.Instance(
mock.MagicMock(), inst)
parsed_args = self.check_parser(self.cmd, [instance_id], [])
columns, data = self.cmd.take_action(parsed_args)
values = ([{'address': '10.0.0.13', 'type': 'private'}], [], 'mysql',
'5.7.29', '5.7.29', flavor_id, instance_id, name, 'HEALTHY',
False, 'regionOne', primary_id, 'ACTIVE',
tenant_id, 2)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
self.assertEqual(values, data)
class TestDatabaseInstanceDelete(TestInstances):