api: export recorded_at in returned samples

Change-Id: I970bc82d70fd75cbb25ea6c7e0778521aaa9b255
Blueprint: storage-sample-timestamp
This commit is contained in:
Julien Danjou
2014-02-17 11:20:19 +01:00
parent dc7c4863c6
commit e26f7c6af5
3 changed files with 16 additions and 0 deletions

View File

@@ -569,6 +569,9 @@ class OldSample(_Base):
timestamp = datetime.datetime timestamp = datetime.datetime
"UTC date and time when the measurement was made" "UTC date and time when the measurement was made"
recorded_at = datetime.datetime
"When the sample has been recorded."
resource_metadata = {wtypes.text: wtypes.text} resource_metadata = {wtypes.text: wtypes.text}
"Arbitrary metadata associated with the resource" "Arbitrary metadata associated with the resource"
@@ -601,6 +604,7 @@ class OldSample(_Base):
resource_id='bd9431c1-8d69-4ad3-803a-8d4a6b89fd36', resource_id='bd9431c1-8d69-4ad3-803a-8d4a6b89fd36',
project_id='35b17138-b364-4e6a-a131-8f3099c5be68', project_id='35b17138-b364-4e6a-a131-8f3099c5be68',
user_id='efd87807-12d2-4b38-9c70-5f5c2ac427ff', user_id='efd87807-12d2-4b38-9c70-5f5c2ac427ff',
recorded_at=datetime.datetime.utcnow(),
timestamp=datetime.datetime.utcnow(), timestamp=datetime.datetime.utcnow(),
resource_metadata={'name1': 'value1', resource_metadata={'name1': 'value1',
'name2': 'value2'}, 'name2': 'value2'},
@@ -924,6 +928,9 @@ class Sample(_Base):
timestamp = datetime.datetime timestamp = datetime.datetime
"When the sample has been generated." "When the sample has been generated."
recorded_at = datetime.datetime
"When the sample has been recorded."
metadata = {wtypes.text: wtypes.text} metadata = {wtypes.text: wtypes.text}
"Arbitrary metadata associated with the sample." "Arbitrary metadata associated with the sample."
@@ -939,6 +946,7 @@ class Sample(_Base):
resource_id=m.resource_id, resource_id=m.resource_id,
source=m.source, source=m.source,
timestamp=m.timestamp, timestamp=m.timestamp,
recorded_at=m.recorded_at,
metadata=_flatten_metadata(m.resource_metadata)) metadata=_flatten_metadata(m.resource_metadata))
@classmethod @classmethod
@@ -952,6 +960,7 @@ class Sample(_Base):
project_id='35b17138-b364-4e6a-a131-8f3099c5be68', project_id='35b17138-b364-4e6a-a131-8f3099c5be68',
user_id='efd87807-12d2-4b38-9c70-5f5c2ac427ff', user_id='efd87807-12d2-4b38-9c70-5f5c2ac427ff',
timestamp=timeutils.utcnow(), timestamp=timeutils.utcnow(),
recorded_at=datetime.datetime.utcnow(),
source='openstack', source='openstack',
metadata={'name1': 'value1', metadata={'name1': 'value1',
'name2': 'value2'}, 'name2': 'value2'},

View File

@@ -24,6 +24,7 @@ import logging
import testscenarios import testscenarios
import webtest.app import webtest.app
from ceilometer.openstack.common import timeutils
from ceilometer.publisher import utils from ceilometer.publisher import utils
from ceilometer import sample from ceilometer import sample
from ceilometer.tests.api.v2 import FunctionalTest from ceilometer.tests.api.v2 import FunctionalTest
@@ -40,6 +41,7 @@ class TestListEvents(FunctionalTest,
def setUp(self): def setUp(self):
super(TestListEvents, self).setUp() super(TestListEvents, self).setUp()
timeutils.utcnow.override_time = datetime.datetime(2014, 2, 11, 16, 42)
self.sample1 = sample.Sample( self.sample1 = sample.Sample(
'instance', 'instance',
'cumulative', 'cumulative',
@@ -85,6 +87,9 @@ class TestListEvents(FunctionalTest,
def test_all(self): def test_all(self):
data = self.get_json('/meters/instance') data = self.get_json('/meters/instance')
self.assertEqual(2, len(data)) self.assertEqual(2, len(data))
for s in data:
self.assertEqual(s['recorded_at'],
timeutils.utcnow.override_time.isoformat())
def test_all_trailing_slash(self): def test_all_trailing_slash(self):
data = self.get_json('/meters/instance/') data = self.get_json('/meters/instance/')

View File

@@ -223,6 +223,7 @@ class TestListMeters(FunctionalTest,
sample_id = self.messages[1]['message_id'] sample_id = self.messages[1]['message_id']
data = self.get_json('/samples/%s' % sample_id) data = self.get_json('/samples/%s' % sample_id)
self.assertIn('id', data) self.assertIn('id', data)
del data['recorded_at']
self.assertEqual(data, { self.assertEqual(data, {
u'id': sample_id, u'id': sample_id,
u'metadata': {u'display_name': u'test-server', u'metadata': {u'display_name': u'test-server',
@@ -256,6 +257,7 @@ class TestListMeters(FunctionalTest,
}]) }])
self.assertIn('id', data[0]) self.assertIn('id', data[0])
del data[0]['id'] # Randomly generated del data[0]['id'] # Randomly generated
del data[0]['recorded_at']
self.assertEqual(data, [{ self.assertEqual(data, [{
u'user_id': u'user-id4', u'user_id': u'user-id4',
u'resource_id': u'resource-id4', u'resource_id': u'resource-id4',