summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-12-19 16:00:40 +0000
committerGerrit Code Review <review@openstack.org>2019-12-19 16:00:40 +0000
commit2656c90285508481ccc6c2c20796154ebf9af7dc (patch)
treef37143203284f7184a4e1dca174e95853d68477f
parent72524f9d856dd715242d9d96116f8238a95c048b (diff)
parent75b9b686b1c4fa2be1be00ef390035da01e331eb (diff)
downloadtrove-2656c90285508481ccc6c2c20796154ebf9af7dc.tar.gz
Merge "Show service_status_updated in instance API"
-rw-r--r--api-ref/source/database-instances.inc1
-rwxr-xr-xapi-ref/source/parameters.yaml7
-rw-r--r--api-ref/source/samples/db-instance-status-detail-response.json5
-rw-r--r--releasenotes/notes/ussuri-03-add-service-status-updated.yaml5
-rw-r--r--trove/instance/models.py4
-rw-r--r--trove/instance/views.py2
-rw-r--r--trove/tests/api/instances.py11
7 files changed, 29 insertions, 6 deletions
diff --git a/api-ref/source/database-instances.inc b/api-ref/source/database-instances.inc
index fa48ecb6..41c1e09f 100644
--- a/api-ref/source/database-instances.inc
+++ b/api-ref/source/database-instances.inc
@@ -179,6 +179,7 @@ Response Parameters
- ip: instance_ip_address
- created: created
- updated: updated
+ - service_status_updated: service_status_updated
- fault: instance_fault
- fault.message: instance_fault_message
- fault.created: instance_fault_created
diff --git a/api-ref/source/parameters.yaml b/api-ref/source/parameters.yaml
index 293aa9a6..c0e4a852 100755
--- a/api-ref/source/parameters.yaml
+++ b/api-ref/source/parameters.yaml
@@ -702,6 +702,13 @@ server_id:
in: body
required: false
type: string
+service_status_updated:
+ description: |
+ The date and time when the database service status was updated. This field
+ can be used to validate if the 'HEALTHY' status is stale or not.
+ in: body
+ required: true
+ type: string
shard_id:
description: |
The shard ID of an instance.
diff --git a/api-ref/source/samples/db-instance-status-detail-response.json b/api-ref/source/samples/db-instance-status-detail-response.json
index d69ed5df..64828e80 100644
--- a/api-ref/source/samples/db-instance-status-detail-response.json
+++ b/api-ref/source/samples/db-instance-status-detail-response.json
@@ -1,6 +1,6 @@
{
"instance": {
- "created": "2014-10-30T12:30:00",
+ "created": "2019-12-14T08:08:22",
"datastore": {
"type": "mysql",
"version": "5.5"
@@ -32,8 +32,9 @@
],
"name": "json_rack_instance",
"region": "RegionOne",
+ "service_status_updated": "2019-12-14T08:51:58",
"status": "HEALTHY",
- "updated": "2014-10-30T12:30:00",
+ "updated": "2019-12-14T08:08:30",
"volume": {
"size": 2,
"used": 0.16
diff --git a/releasenotes/notes/ussuri-03-add-service-status-updated.yaml b/releasenotes/notes/ussuri-03-add-service-status-updated.yaml
new file mode 100644
index 00000000..7cb00d71
--- /dev/null
+++ b/releasenotes/notes/ussuri-03-add-service-status-updated.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - A new field named ``service_status_updated`` is added to the instance API
+ response which e.g. could be used to validate if the instance 'HEALTHY'
+ status is stale or not
diff --git a/trove/instance/models.py b/trove/instance/models.py
index 7e5b248e..fd2b935b 100644
--- a/trove/instance/models.py
+++ b/trove/instance/models.py
@@ -389,6 +389,10 @@ class SimpleInstance(object):
return self.db_info.updated
@property
+ def service_status_updated(self):
+ return self.datastore_status.updated_at
+
+ @property
def volume_id(self):
return self.db_info.volume_id
diff --git a/trove/instance/views.py b/trove/instance/views.py
index c0dab012..e08368f2 100644
--- a/trove/instance/views.py
+++ b/trove/instance/views.py
@@ -91,6 +91,8 @@ class InstanceDetailView(InstanceView):
result = super(InstanceDetailView, self).data()
result['instance']['created'] = self.instance.created
result['instance']['updated'] = self.instance.updated
+ result['instance']['service_status_updated'] = (self.instance.
+ service_status_updated)
result['instance']['datastore']['version'] = (self.instance.
datastore_version.name)
diff --git a/trove/tests/api/instances.py b/trove/tests/api/instances.py
index abd78f17..ce6aff39 100644
--- a/trove/tests/api/instances.py
+++ b/trove/tests/api/instances.py
@@ -525,7 +525,8 @@ class CreateInstanceFail(object):
'hostname', 'id', 'name', 'datastore',
'server_state_description', 'status', 'updated',
'users', 'volume', 'root_enabled_at',
- 'root_enabled_by', 'fault']
+ 'root_enabled_by', 'fault',
+ 'service_status_updated']
with CheckInstance(result._info) as check:
check.contains_allowed_attrs(
result._info, allowed_attrs,
@@ -739,7 +740,7 @@ class CreateInstance(object):
# Check these attrs only are returned in create response
allowed_attrs = ['created', 'flavor', 'addresses', 'id', 'links',
'name', 'status', 'updated', 'datastore', 'fault',
- 'region']
+ 'region', 'service_status_updated']
if ROOT_ON_CREATE:
allowed_attrs.append('password')
if VOLUME_SUPPORT:
@@ -998,7 +999,8 @@ class TestInstanceListing(object):
def test_detailed_list(self):
allowed_attrs = ['created', 'databases', 'flavor', 'hostname', 'id',
'links', 'name', 'status', 'updated', 'ip',
- 'datastore', 'fault', 'region']
+ 'datastore', 'fault', 'region',
+ 'service_status_updated']
if VOLUME_SUPPORT:
allowed_attrs.append('volume')
instances = dbaas.instances.list(detailed=True)
@@ -1017,7 +1019,8 @@ class TestInstanceListing(object):
def test_get_instance(self):
allowed_attrs = ['created', 'databases', 'flavor', 'hostname', 'id',
'links', 'name', 'status', 'updated', 'ip',
- 'datastore', 'fault', 'region']
+ 'datastore', 'fault', 'region',
+ 'service_status_updated']
if VOLUME_SUPPORT:
allowed_attrs.append('volume')
else: