diff options
author | Zuul <zuul@review.opendev.org> | 2019-12-19 16:00:40 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2019-12-19 16:00:40 +0000 |
commit | 2656c90285508481ccc6c2c20796154ebf9af7dc (patch) | |
tree | f37143203284f7184a4e1dca174e95853d68477f | |
parent | 72524f9d856dd715242d9d96116f8238a95c048b (diff) | |
parent | 75b9b686b1c4fa2be1be00ef390035da01e331eb (diff) | |
download | trove-2656c90285508481ccc6c2c20796154ebf9af7dc.tar.gz |
Merge "Show service_status_updated in instance API"
-rw-r--r-- | api-ref/source/database-instances.inc | 1 | ||||
-rwxr-xr-x | api-ref/source/parameters.yaml | 7 | ||||
-rw-r--r-- | api-ref/source/samples/db-instance-status-detail-response.json | 5 | ||||
-rw-r--r-- | releasenotes/notes/ussuri-03-add-service-status-updated.yaml | 5 | ||||
-rw-r--r-- | trove/instance/models.py | 4 | ||||
-rw-r--r-- | trove/instance/views.py | 2 | ||||
-rw-r--r-- | trove/tests/api/instances.py | 11 |
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: |