Merge "api: handle case where metadata is None"

This commit is contained in:
Jenkins
2013-03-25 16:12:55 +00:00
committed by Gerrit Code Review
2 changed files with 26 additions and 3 deletions

View File

@@ -194,9 +194,11 @@ def _flatten_metadata(metadata):
"""Return flattened resource metadata without nested structures
and with all values converted to unicode strings.
"""
return dict((k, unicode(v))
for k, v in metadata.iteritems()
if type(v) not in set([list, dict, set]))
if metadata:
return dict((k, unicode(v))
for k, v in metadata.iteritems()
if type(v) not in set([list, dict, set]))
return {}
class Sample(wtypes.Base):

View File

@@ -39,6 +39,27 @@ class TestListResources(FunctionalTest):
data = self.get_json('/resources')
self.assertEquals([], data)
def test_instance_no_metadata(self):
counter1 = counter.Counter(
'instance',
'cumulative',
'',
1,
'user-id',
'project-id',
'resource-id',
timestamp=datetime.datetime(2012, 7, 2, 10, 40),
resource_metadata=None
)
msg = meter.meter_message_from_counter(counter1,
cfg.CONF.metering_secret,
'test',
)
self.conn.record_metering_data(msg)
data = self.get_json('/resources')
self.assertEquals(1, len(data))
def test_instances(self):
counter1 = counter.Counter(
'instance',