Merge "Fix building query key for ceilometer alarm"
This commit is contained in:
commit
863aa83b78
|
@ -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.
|
||||
|
|
|
@ -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']
|
||||
|
|
Loading…
Reference in New Issue