Remove Null Data from Publisher

Monasca has added a check for null data. When the publisher does not
find the meter value or metadata it defaults it to Null.

This causes Monasca API to reject the sample. This is particularly
evident in the Central and Compute Agents since they collect data
that may be null.

Change-Id: I51ca07ec10c6b414b6a26c057edc09487053f982
This commit is contained in:
Fabio Giannetti 2015-11-10 20:42:30 -08:00
parent 9db47cc446
commit 3f823deee6
2 changed files with 11 additions and 5 deletions

View File

@ -109,12 +109,16 @@ class MonascaDataFilter(object):
if val:
value_meta[meta_key] = val
meter_value = sample.get('volume') or sample.get('counter_volume')
if meter_value is None:
meter_value = 0
metric = dict(
name=meter_name,
timestamp=self._convert_timestamp(sample['timestamp']),
value=sample.get('volume') or sample.get('counter_volume'),
value=meter_value,
dimensions=dimensions,
value_meta=value_meta if value_meta else None,
value_meta=value_meta,
)
LOG.debug(_LI("Generated metric with name %(name)s,"

View File

@ -70,10 +70,12 @@ class TestMonUtils(base.BaseTestCase):
r = data_filter.process_sample_for_monasca(s)
self.assertEqual(s.name, r['name'])
self.assertIsNone(r['dimensions'].get('type'))
self.assertIsNone(r.get('value_meta'))
self.assertIsNotNone(r.get('dimensions'))
self.assertIsNotNone(r.get('value_meta'))
self.assertIsNotNone(r.get('value'))
self.assertEqual(s.user_id, r['dimensions'].get('user_id'))
self.assertEqual(s.project_id, r['dimensions']['project_id'])
self.assertEqual(s.project_id, r['dimensions'].get('project_id'))
self.assertEqual(s.resource_id, r['dimensions'].get('resource_id'))
# 2015-04-07T20:07:06.156986 compare upto millisec
monasca_ts = \
timeutils.iso8601_from_timestamp(r['timestamp'] / 1000.0,