summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Weingärtner <rafael@apache.org>2020-09-08 11:03:35 -0300
committerMatthias Runge <mrunge@redhat.com>2020-09-11 06:59:07 +0000
commit76d373b1e6e08db23210516acee6480f4e6c7f35 (patch)
tree232075f504107f99eaef1d5a6ac8e335a7c8a259
parente3f4be648747b8f46961a7ae977dffb1808ec755 (diff)
downloadceilometer-76d373b1e6e08db23210516acee6480f4e6c7f35.tar.gz
Fix handling of metadatas that are set to None or False15.0.0.0rc115.0.0
Change-Id: I19bd14f57d925319a220fa7e2b8b492f29e1b8ed
-rw-r--r--ceilometer/polling/dynamic_pollster.py4
-rw-r--r--ceilometer/tests/unit/polling/test_dynamic_pollster.py62
2 files changed, 64 insertions, 2 deletions
diff --git a/ceilometer/polling/dynamic_pollster.py b/ceilometer/polling/dynamic_pollster.py
index e536a0f4..2918922d 100644
--- a/ceilometer/polling/dynamic_pollster.py
+++ b/ceilometer/polling/dynamic_pollster.py
@@ -117,8 +117,8 @@ class PollsterSampleExtractor(object):
for k in pollster_definitions['metadata_fields']:
val = self.retrieve_attribute_nested_value(pollster_sample, k)
- if val:
- metadata[k] = val
+ LOG.debug("Assigning value [%s] to metadata key [%s].", val, k)
+ metadata[k] = val
self.generate_new_metadata_fields(
metadata=metadata, pollster_definitions=pollster_definitions)
diff --git a/ceilometer/tests/unit/polling/test_dynamic_pollster.py b/ceilometer/tests/unit/polling/test_dynamic_pollster.py
index e2e41c14..aadb3587 100644
--- a/ceilometer/tests/unit/polling/test_dynamic_pollster.py
+++ b/ceilometer/tests/unit/polling/test_dynamic_pollster.py
@@ -935,3 +935,65 @@ class TestDynamicPollster(base.BaseTestCase):
.get_request_linked_samples_url(kwargs)
self.assertEqual(expected_url, url)
+
+ def test_generate_sample_and_extract_metadata(self):
+ definition = self.pollster_definition_only_required_fields.copy()
+ definition['metadata_fields'] = ["metadata1", 'metadata2']
+
+ pollster = dynamic_pollster.DynamicPollster(definition)
+
+ pollster_sample = {'metadata1': 'metadata1',
+ 'metadata2': 'metadata2',
+ 'value': 1}
+
+ sample = pollster.definitions.sample_extractor.generate_sample(
+ pollster_sample)
+
+ self.assertEqual(1, sample.volume)
+ self.assertEqual(2, len(sample.resource_metadata))
+ self.assertEqual('metadata1', sample.resource_metadata['metadata1'])
+ self.assertEqual('metadata2', sample.resource_metadata['metadata2'])
+
+ def test_generate_sample_and_extract_metadata_false_value(self):
+ definition = self.pollster_definition_only_required_fields.copy()
+ definition['metadata_fields'] = ["metadata1",
+ 'metadata2',
+ 'metadata3_false']
+
+ pollster = dynamic_pollster.DynamicPollster(definition)
+
+ pollster_sample = {'metadata1': 'metadata1',
+ 'metadata2': 'metadata2',
+ 'metadata3_false': False,
+ 'value': 1}
+
+ sample = pollster.definitions.sample_extractor.generate_sample(
+ pollster_sample)
+
+ self.assertEqual(1, sample.volume)
+ self.assertEqual(3, len(sample.resource_metadata))
+ self.assertEqual('metadata1', sample.resource_metadata['metadata1'])
+ self.assertEqual('metadata2', sample.resource_metadata['metadata2'])
+ self.assertIs(False, sample.resource_metadata['metadata3_false'])
+
+ def test_generate_sample_and_extract_metadata_none_value(self):
+ definition = self.pollster_definition_only_required_fields.copy()
+ definition['metadata_fields'] = ["metadata1",
+ 'metadata2',
+ 'metadata3']
+
+ pollster = dynamic_pollster.DynamicPollster(definition)
+
+ pollster_sample = {'metadata1': 'metadata1',
+ 'metadata2': 'metadata2',
+ 'metadata3': None,
+ 'value': 1}
+
+ sample = pollster.definitions.sample_extractor.generate_sample(
+ pollster_sample)
+
+ self.assertEqual(1, sample.volume)
+ self.assertEqual(3, len(sample.resource_metadata))
+ self.assertEqual('metadata1', sample.resource_metadata['metadata1'])
+ self.assertEqual('metadata2', sample.resource_metadata['metadata2'])
+ self.assertIsNone(sample.resource_metadata['metadata3'])