From 6d660176080bf2efa1de381b20d1c5ea5f136ace Mon Sep 17 00:00:00 2001 From: Lukasz Zajaczkowski Date: Wed, 11 Apr 2018 12:55:05 +0200 Subject: [PATCH] Display unique metric names for alarm Change-Id: Ia1bfae05e4d4de28689a7cb9495383e328ff51ba Story: 2001826 Task: 12575 --- monitoring/alarms/tables.py | 15 +++++---------- monitoring/alarms/tests.py | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/monitoring/alarms/tables.py b/monitoring/alarms/tables.py index 84d21e9a..695123da 100644 --- a/monitoring/alarms/tables.py +++ b/monitoring/alarms/tables.py @@ -66,14 +66,9 @@ def show_alarm_id(data): return data['id'] -def show_metric_name(data): - if len(data['metrics']) > 1: - names = [] - for metric in data['metrics']: - names.append(metric['name']) - return ', '.join(['%s' % (n) for n in names]) - else: - return data['metrics'][0]['name'] +def show_metric_names(data): + names = set(metric['name'] for metric in data['metrics']) + return ', '.join(names) def show_def_name(data): @@ -248,8 +243,8 @@ class AlarmsTable(tables.DataTable): filters=[show_status, template.defaultfilters.safe]) name = tables.Column(transform=show_def_name, verbose_name=_('Name')) alarmId = tables.Column(transform=show_alarm_id, verbose_name=_('Alarm Id')) - metrics = tables.Column(transform=show_metric_name, - verbose_name=_('Metric Name')) + metrics = tables.Column(transform=show_metric_names, + verbose_name=_('Metric Names')) dimensions = tables.Column(transform=show_metric_dimensions, verbose_name=_('Metric Dimensions')) diff --git a/monitoring/alarms/tests.py b/monitoring/alarms/tests.py index 7aa2541f..9eb68d5c 100644 --- a/monitoring/alarms/tests.py +++ b/monitoring/alarms/tests.py @@ -15,6 +15,7 @@ from mock import patch, call # noqa from monitoring.test import helpers from monitoring.alarms import constants +from monitoring.alarms import tables INDEX_URL = urlresolvers.reverse( @@ -48,3 +49,20 @@ class AlarmsTest(helpers.TestCase): self.assertTemplateUsed( res, 'monitoring/alarms/alarm.html') + + def test_metric_conversion_single(self): + res = tables.show_metric_names({"metrics": [{"name": "mem.used_bytes"}]}) + self.assertEqual(res, "mem.used_bytes") + + def test_metric_conversion_multiple(self): + res = tables.show_metric_names({"metrics": [{"name": "mem.used_bytes"}, + {"name": "mem.total_bytes"}]}) + table_res = res.split(', ') + self.assertEqual(len(table_res), 2) + self.assertTrue("mem.used_bytes" in table_res) + self.assertTrue("mem.total_bytes" in table_res) + + def test_metric_conversion_unique(self): + res = tables.show_metric_names({"metrics": [{"name": "mem.used_bytes"}, + {"name": "mem.used_bytes"}]}) + self.assertEqual(res, "mem.used_bytes")