Merge "Fix building query key for ceilometer alarm"

This commit is contained in:
Jenkins 2016-06-16 20:35:10 +00:00 committed by Gerrit Code Review
commit 863aa83b78
2 changed files with 24 additions and 6 deletions

View File

@ -318,12 +318,13 @@ class CeilometerAlarm(resource.Resource):
# make sure the matching_metadata appears in the query like this:
# {field: metadata.$prefix.x, ...}
for m_k, m_v in six.iteritems(mmd):
if m_k.startswith('metadata.%s' % prefix):
key = m_k
elif m_k.startswith(prefix):
key = 'metadata.%s' % m_k
else:
key = 'metadata.%s%s' % (prefix, m_k)
key = 'metadata.%s' % prefix
if m_k.startswith('metadata.'):
m_k = m_k[len('metadata.'):]
if m_k.startswith('metering.') or m_k.startswith('user_metadata.'):
# check prefix
m_k = m_k.split('.', 1)[-1]
key = '%s%s' % (key, m_k)
# NOTE(prazumovsky): type of query value must be a string, but
# matching_metadata value type can not be a string, so we
# must convert value to a string type.

View File

@ -351,6 +351,23 @@ class CeilometerAlarmTest(common.HeatTestCase):
'value': u'foo', 'op': 'eq'}]
self.assertEqual(expected_query, query)
def test_alarm_metadata_correct_query_key(self):
t = template_format.parse(alarm_template)
properties = t['Resources']['MEMAlarmHigh']['Properties']
# Test that meter_name is not in NOVA_METERS
properties[alarm.CeilometerAlarm.METER_NAME] = 'memory_util'
properties['matching_metadata'] = {'metadata.user_metadata.groupname':
'foo'}
self.stack = self.create_stack(template=json.dumps(t))
rsrc = self.stack['MEMAlarmHigh']
rsrc.properties.data = rsrc.cfn_to_ceilometer(self.stack, properties)
self.assertIsNone(rsrc.properties.data.get('matching_metadata'))
query = rsrc.properties.data['threshold_rule']['query']
expected_query = [{'field': u'metadata.metering.groupname',
'value': u'foo', 'op': 'eq'}]
self.assertEqual(expected_query, query)
def test_mem_alarm_high_correct_matching_metadata(self):
t = template_format.parse(alarm_template)
properties = t['Resources']['MEMAlarmHigh']['Properties']