Added missing source variable in storage drivers

Addresses bug 1163479
*tests/storage/base.py
*ceilometer/storage/models.py
*ceilometer/storage/impl_hbase.py
*ceilometer/storage/impl_mongodb.py
*ceilometer/storage/impl_sqlalchemy.py

Added self.assertIn statements to test_get_resources() and test_get_meters()
functions in /tests/storage/base.py

These assert statements check for the existence of the source variable and
also if the source variable is in the set of sources hard coded by the database
test data.

Added the source variable to models.Resource and models.Meter in the HBase,
MongoDB, and SQLAlchemy drivers.  Added the source variable to the
specifications for the Resource and Meter classes in models.py

Change-Id: I5a407bc8c7ce82a71be7e56705c540ece4573340
This commit is contained in:
terriyu 2013-04-30 18:44:45 +00:00 committed by Terri Yu
parent a031f7b779
commit c7877f1a32
5 changed files with 19 additions and 2 deletions

View File

@ -334,6 +334,7 @@ class Connection(base.Connection):
yield models.Resource(
resource_id=resource_id,
project_id=data['f:project_id'],
source=data['f:source'],
user_id=data['f:user_id'],
metadata=json.loads(data['f:metadata']),
meter=[
@ -381,6 +382,7 @@ class Connection(base.Connection):
unit=unit,
resource_id=data['f:resource_id'],
project_id=data['f:project_id'],
source=data['f:source'],
user_id=data['f:user_id'],
)

View File

@ -392,6 +392,7 @@ class Connection(base.Connection):
yield models.Resource(
resource_id=resource['_id'],
project_id=resource['project_id'],
source=resource['source'],
user_id=resource['user_id'],
metadata=resource['metadata'],
meter=[
@ -435,6 +436,7 @@ class Connection(base.Connection):
unit=r_meter.get('counter_unit', ''),
resource_id=r['_id'],
project_id=r['project_id'],
source=r['source'],
user_id=r['user_id'],
)

View File

@ -255,6 +255,7 @@ class Connection(base.Connection):
yield api_models.Resource(
resource_id=meter.resource_id,
project_id=meter.project_id,
source=meter.sources[0].id,
user_id=meter.user_id,
metadata=meter.resource_metadata,
meter=[
@ -303,6 +304,7 @@ class Connection(base.Connection):
unit=meter.counter_unit,
resource_id=resource.id,
project_id=resource.project_id,
source=resource.sources[0].id,
user_id=resource.user_id,
)

View File

@ -47,10 +47,12 @@ class Resource(Model):
"""Something for which sample data has been collected.
"""
def __init__(self, resource_id, project_id, user_id, metadata, meter):
def __init__(self, resource_id, project_id, source, user_id, metadata,
meter):
"""
:param resource_id: UUID of the resource
:param project_id: UUID of project owning the resource
:param source: the identifier for the user/project id definition
:param user_id: UUID of user owning the resource
:param metadata: most current metadata for the resource (a dict)
:param meter: list of the meters reporting data for the resource,
@ -58,6 +60,7 @@ class Resource(Model):
Model.__init__(self,
resource_id=resource_id,
project_id=project_id,
source=source,
user_id=user_id,
metadata=metadata,
meter=meter,
@ -88,13 +91,15 @@ class Meter(Model):
"""Definition of a meter for which sample data has been collected.
"""
def __init__(self, name, type, unit, resource_id, project_id, user_id):
def __init__(self, name, type, unit, resource_id, project_id, source,
user_id):
"""
:param name: name of the meter
:param type: type of the meter (guage, counter)
:param unit: unit of the meter
:param resource_id: UUID of the resource
:param project_id: UUID of project owning the resource
:param source: the identifier for the user/project id definition
:param user_id: UUID of user owning the resource
"""
Model.__init__(self,
@ -103,6 +108,7 @@ class Meter(Model):
unit=unit,
resource_id=resource_id,
project_id=project_id,
source=source,
user_id=user_id,
)

View File

@ -157,6 +157,7 @@ class ProjectTest(DBTestBase):
class ResourceTest(DBTestBase):
def test_get_resources(self):
msgs_sources = [msg['source'] for msg in self.msgs]
resources = list(self.conn.get_resources())
assert len(resources) == 4
for resource in resources:
@ -164,6 +165,7 @@ class ResourceTest(DBTestBase):
continue
assert resource.resource_id == 'resource-id'
assert resource.project_id == 'project-id'
self.assertIn(resource.source, msgs_sources)
assert resource.user_id == 'user-id'
assert resource.metadata['display_name'] == 'test-server'
self.assertIn(models.ResourceMeter('instance', 'cumulative', ''),
@ -236,8 +238,11 @@ class ResourceTest(DBTestBase):
class MeterTest(DBTestBase):
def test_get_meters(self):
msgs_sources = [msg['source'] for msg in self.msgs]
results = list(self.conn.get_meters())
assert len(results) == 4
for meter in results:
self.assertIn(meter.source, msgs_sources)
def test_get_meters_by_user(self):
results = list(self.conn.get_meters(user='user-id'))