Add source field to Meter model

Just like Sample model, we should also add source field to
Meter model to identify where the meter comes from.

Change-Id: I2381d67f84692bfc7d167c2b0d90bfa32b845f00
Fixes: Bug #1225583
This commit is contained in:
Guangyu Suo
2013-09-15 12:21:18 +08:00
parent 42f02ab3c4
commit c913814445
2 changed files with 70 additions and 9 deletions

View File

@@ -446,7 +446,7 @@ class Sample(_Base):
"""
source = wtypes.text
"An identity source ID"
"The ID of the source that identifies where the sample comes from"
counter_name = wtypes.text
"The name of the meter"
@@ -770,6 +770,9 @@ class Meter(_Base):
user_id = wtypes.text
"The ID of the user who last triggered an update to the resource"
source = wtypes.text
"The ID of the source that identifies where the meter comes from"
meter_id = wtypes.text
"The unique identifier for the meter"
@@ -787,6 +790,7 @@ class Meter(_Base):
resource_id='bd9431c1-8d69-4ad3-803a-8d4a6b89fd36',
project_id='35b17138-b364-4e6a-a131-8f3099c5be68',
user_id='efd87807-12d2-4b38-9c70-5f5c2ac427ff',
source='openstack',
)

View File

@@ -131,7 +131,7 @@ class TestListMeters(FunctionalTest,
'size': 0,
'util': 0.58,
'is_public': True},
source='test_source')]:
source='test_source1')]:
msg = rpc.meter_message_from_counter(
cnt,
cfg.CONF.publisher_rpc.metering_secret)
@@ -147,6 +147,8 @@ class TestListMeters(FunctionalTest,
'resource-id4']))
self.assertEqual(set(r['name'] for r in data),
set(['meter.test', 'meter.mine']))
self.assertEqual(set(r['source'] for r in data),
set(['test_source', 'test_source1']))
def test_list_meters_with_dict_metadata(self):
data = self.get_json('/meters/meter.mine',
@@ -288,8 +290,24 @@ class TestListMeters(FunctionalTest,
data = self.get_json('/meters', q=[{'field': 'resource_id',
'value': 'resource-id',
}])
ids = set(r['name'] for r in data)
self.assertEqual(set(['meter.test']), ids)
nids = set(r['name'] for r in data)
self.assertEqual(set(['meter.test']), nids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source']), sids)
def test_with_resource_and_source(self):
data = self.get_json('/meters', q=[{'field': 'resource_id',
'value': 'resource-id4',
},
{'field': 'source',
'value': 'test_source1',
}])
nids = set(r['name'] for r in data)
self.assertEqual(set(['meter.mine']), nids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source1']), sids)
def test_with_resource_and_metadata_query(self):
data = self.get_json('/meters/meter.mine',
@@ -311,11 +329,13 @@ class TestListMeters(FunctionalTest,
data = self.get_json('/meters', q=[{'field': 'source',
'value': 'test_source',
}])
ids = set(r['resource_id'] for r in data)
rids = set(r['resource_id'] for r in data)
self.assertEqual(set(['resource-id',
'resource-id2',
'resource-id3',
'resource-id4']), ids)
'resource-id3']), rids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source']), sids)
def test_with_source_and_metadata_query(self):
data = self.get_json('/meters/meter.mine',
@@ -356,6 +376,25 @@ class TestListMeters(FunctionalTest,
rids = set(r['resource_id'] for r in data)
self.assertEqual(set(['resource-id', 'resource-id2']), rids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source']), sids)
def test_with_user_and_source(self):
data = self.get_json('/meters',
q=[{'field': 'user_id',
'value': 'user-id4',
},
{'field': 'source',
'value': 'test_source1',
}],
)
uids = set(r['user_id'] for r in data)
self.assertEqual(set(['user-id4']), uids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source1']), sids)
def test_with_user_and_metadata_query(self):
data = self.get_json('/meters/meter.test',
q=[{'field': 'user_id',
@@ -385,8 +424,26 @@ class TestListMeters(FunctionalTest,
'value': 'project-id2',
}],
)
ids = set(r['resource_id'] for r in data)
self.assertEqual(set(['resource-id3', 'resource-id4']), ids)
rids = set(r['resource_id'] for r in data)
self.assertEqual(set(['resource-id3', 'resource-id4']), rids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source', 'test_source1']), sids)
def test_with_project_and_source(self):
data = self.get_json('/meters',
q=[{'field': 'project_id',
'value': 'project-id2',
},
{'field': 'source',
'value': 'test_source1',
}],
)
rids = set(r['resource_id'] for r in data)
self.assertEqual(set(['resource-id4']), rids)
sids = set(r['source'] for r in data)
self.assertEqual(set(['test_source1']), sids)
def test_with_project_and_metadata_query(self):
data = self.get_json('/meters/meter.test',