diff options
author | Rafael Weingärtner <rafael@apache.org> | 2020-09-08 11:03:35 -0300 |
---|---|---|
committer | Matthias Runge <mrunge@redhat.com> | 2020-09-11 06:59:07 +0000 |
commit | 76d373b1e6e08db23210516acee6480f4e6c7f35 (patch) | |
tree | 232075f504107f99eaef1d5a6ac8e335a7c8a259 | |
parent | e3f4be648747b8f46961a7ae977dffb1808ec755 (diff) | |
download | ceilometer-15.0.0.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.py | 4 | ||||
-rw-r--r-- | ceilometer/tests/unit/polling/test_dynamic_pollster.py | 62 |
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']) |