Don't support "alarm search" and mandatory --type in "alarm list"
As discussed in mailing list, we agreed to drop "alarm search" command and add a --query parameter to "alarm list" to perform what "alarm search" does. And this patch will also drop mandatory --type in "alarm list", the --filter parameter will be added(in another patch). Change-Id: I68c5463fe37e3051b0e52d59f30a0eb36dd62424
This commit is contained in:
@@ -37,7 +37,6 @@ class AodhCommandManager(commandmanager.CommandManager):
|
||||
"alarm delete": alarm_cli.CliAlarmDelete,
|
||||
"alarm list": alarm_cli.CliAlarmList,
|
||||
"alarm show": alarm_cli.CliAlarmShow,
|
||||
"alarm search": alarm_cli.CliAlarmSearch,
|
||||
"alarm update": alarm_cli.CliAlarmUpdate,
|
||||
"alarm-history show": alarm_history_cli.CliAlarmHistoryShow,
|
||||
"alarm-history search": alarm_history_cli.CliAlarmHistorySearch,
|
||||
|
||||
@@ -24,7 +24,6 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.aodh("help", params="alarm create")
|
||||
self.aodh("help", params="alarm delete")
|
||||
self.aodh("help", params="alarm list")
|
||||
self.aodh("help", params="alarm search")
|
||||
self.aodh("help", params="alarm show")
|
||||
self.aodh("help", params="alarm update")
|
||||
|
||||
@@ -75,7 +74,7 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.assertEqual('dummy', alarm_show['event_type'])
|
||||
|
||||
# LIST
|
||||
result = self.aodh('alarm', params="list --type event")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
output_colums = ['alarm_id', 'type', 'name', 'state', 'severity',
|
||||
@@ -85,23 +84,6 @@ class AodhClientTest(base.ClientTestBase):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('ev_alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH ALL
|
||||
result = self.aodh('alarm', params=("search --type event"))
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('ev_alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH SOME
|
||||
result = self.aodh('alarm',
|
||||
params=("search --type event --query "
|
||||
"'{\"=\": {\"project_id\": \"%s\"}}'"
|
||||
% PROJECT_ID))
|
||||
alarm_list = self.parser.listing(result)[0]
|
||||
self.assertEqual(ALARM_ID, alarm_list["alarm_id"])
|
||||
self.assertEqual('ev_alarm1', alarm_list['name'])
|
||||
|
||||
# DELETE
|
||||
result = self.aodh('alarm', params="delete %s" % ALARM_ID)
|
||||
self.assertEqual("", result)
|
||||
@@ -118,7 +100,7 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.assertFirstLineStartsWith(result.split('\n'), expected)
|
||||
|
||||
# LIST DOES NOT HAVE ALARM
|
||||
result = self.aodh('alarm', params="list --type event")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertNotIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
|
||||
@@ -188,7 +170,7 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.assertEqual('10.0', alarm_show['threshold'])
|
||||
|
||||
# LIST
|
||||
result = self.aodh('alarm', params="list --type threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
output_colums = ['alarm_id', 'type', 'name', 'state', 'severity',
|
||||
@@ -198,23 +180,6 @@ class AodhClientTest(base.ClientTestBase):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH ALL
|
||||
result = self.aodh('alarm', params=("search --type threshold"))
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH SOME
|
||||
result = self.aodh('alarm',
|
||||
params=("search --type threshold --query "
|
||||
"'{\"=\": {\"project_id\": \"%s\"}}'"
|
||||
% PROJECT_ID))
|
||||
alarm_list = self.parser.listing(result)[0]
|
||||
self.assertEqual(ALARM_ID, alarm_list["alarm_id"])
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# DELETE
|
||||
result = self.aodh('alarm', params="delete %s" % ALARM_ID)
|
||||
self.assertEqual("", result)
|
||||
@@ -231,7 +196,7 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.assertFirstLineStartsWith(result.split('\n'), expected)
|
||||
|
||||
# LIST DOES NOT HAVE ALARM
|
||||
result = self.aodh('alarm', params="list --type threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertNotIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
|
||||
@@ -294,7 +259,7 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.assertEqual('calarm1', alarm_show['name'])
|
||||
|
||||
# LIST
|
||||
result = self.aodh('alarm', params="list --type composite")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertIn(alarm_id,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
output_colums = ['alarm_id', 'type', 'name', 'state', 'severity',
|
||||
@@ -304,23 +269,6 @@ class AodhClientTest(base.ClientTestBase):
|
||||
if alarm_list["alarm_id"] == alarm_id:
|
||||
self.assertEqual('calarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH ALL
|
||||
result = self.aodh('alarm', params="search --type composite")
|
||||
self.assertIn(alarm_id,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == alarm_id:
|
||||
self.assertEqual('calarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH SOME
|
||||
result = self.aodh('alarm',
|
||||
params=("search --type composite --query "
|
||||
"'{\"=\": {\"project_id\": \"%s\"}}'"
|
||||
% project_id))
|
||||
alarm_list = self.parser.listing(result)[0]
|
||||
self.assertEqual(alarm_id, alarm_list["alarm_id"])
|
||||
self.assertEqual('calarm1', alarm_list['name'])
|
||||
|
||||
# DELETE
|
||||
result = self.aodh('alarm', params="delete %s" % alarm_id)
|
||||
self.assertEqual("", result)
|
||||
@@ -337,7 +285,7 @@ class AodhClientTest(base.ClientTestBase):
|
||||
self.assertFirstLineStartsWith(result.split('\n'), expected)
|
||||
|
||||
# LIST DOES NOT HAVE ALARM
|
||||
result = self.aodh('alarm', params="list --type composite")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertNotIn(alarm_id,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
|
||||
@@ -418,8 +366,7 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
self.assertEqual('instance', alarm_show['resource_type'])
|
||||
|
||||
# LIST
|
||||
result = self.aodh(
|
||||
'alarm', params="list --type gnocchi_resources_threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
output_colums = ['alarm_id', 'type', 'name', 'state', 'severity',
|
||||
@@ -429,25 +376,6 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH ALL
|
||||
result = self.aodh(
|
||||
'alarm', params=("search --type gnocchi_resources_threshold"))
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH SOME
|
||||
result = self.aodh('alarm',
|
||||
params=("search --type gnocchi_resources_threshold "
|
||||
"--query "
|
||||
"'{\"=\": {\"project_id\": \"%s\"}}'"
|
||||
% PROJECT_ID))
|
||||
alarm_list = self.parser.listing(result)[0]
|
||||
self.assertEqual(ALARM_ID, alarm_list["alarm_id"])
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# DELETE
|
||||
result = self.aodh('alarm', params="delete %s" % ALARM_ID)
|
||||
self.assertEqual("", result)
|
||||
@@ -464,8 +392,7 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
self.assertFirstLineStartsWith(result.split('\n'), expected)
|
||||
|
||||
# LIST DOES NOT HAVE ALARM
|
||||
result = self.aodh('alarm',
|
||||
params="list --type gnocchi_resources_threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertNotIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
|
||||
@@ -548,9 +475,7 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
self.assertEqual('instance', alarm_show['resource_type'])
|
||||
|
||||
# LIST
|
||||
result = self.aodh(
|
||||
'alarm', params="list --type "
|
||||
"gnocchi_aggregation_by_resources_threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
output_colums = ['alarm_id', 'type', 'name', 'state', 'severity',
|
||||
@@ -560,26 +485,6 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH ALL
|
||||
result = self.aodh(
|
||||
'alarm', params=("search --type "
|
||||
"gnocchi_aggregation_by_resources_threshold"))
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH SOME
|
||||
result = self.aodh(
|
||||
'alarm', params=("search --type "
|
||||
"gnocchi_aggregation_by_resources_threshold "
|
||||
"--query '{\"=\": {\"project_id\": \"%s\"}}'"
|
||||
% PROJECT_ID))
|
||||
alarm_list = self.parser.listing(result)[0]
|
||||
self.assertEqual(ALARM_ID, alarm_list["alarm_id"])
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# DELETE
|
||||
result = self.aodh('alarm', params="delete %s" % ALARM_ID)
|
||||
self.assertEqual("", result)
|
||||
@@ -596,8 +501,7 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
self.assertFirstLineStartsWith(result.split('\n'), expected)
|
||||
|
||||
# LIST DOES NOT HAVE ALARM
|
||||
result = self.aodh('alarm', params="list --type "
|
||||
"gnocchi_aggregation_by_resources_threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertNotIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
|
||||
@@ -678,36 +582,13 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
self.assertEqual('last', alarm_show['aggregation_method'])
|
||||
|
||||
# LIST
|
||||
result = self.aodh(
|
||||
'alarm', params="list --type "
|
||||
"gnocchi_aggregation_by_metrics_threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH ALL
|
||||
result = self.aodh(
|
||||
'alarm', params=("search --type "
|
||||
"gnocchi_aggregation_by_metrics_threshold"))
|
||||
self.assertIn(ALARM_ID,
|
||||
[r['alarm_id'] for r in self.parser.listing(result)])
|
||||
for alarm_list in self.parser.listing(result):
|
||||
if alarm_list["alarm_id"] == ALARM_ID:
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# SEARCH SOME
|
||||
result = self.aodh(
|
||||
'alarm',
|
||||
params=("search --type "
|
||||
"gnocchi_aggregation_by_metrics_threshold "
|
||||
"--query '{\"=\": {\"project_id\": \"%s\"}}'"
|
||||
% PROJECT_ID))
|
||||
alarm_list = self.parser.listing(result)[0]
|
||||
self.assertEqual(ALARM_ID, alarm_list["alarm_id"])
|
||||
self.assertEqual('alarm1', alarm_list['name'])
|
||||
|
||||
# DELETE
|
||||
result = self.aodh('alarm', params="delete %s" % ALARM_ID)
|
||||
self.assertEqual("", result)
|
||||
@@ -725,9 +606,7 @@ class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
self.assertFirstLineStartsWith(result.split('\n'), expected)
|
||||
|
||||
# LIST DOES NOT HAVE ALARM
|
||||
result = self.aodh(
|
||||
'alarm', params="list --type "
|
||||
"gnocchi_aggregation_by_metrics_threshold")
|
||||
result = self.aodh('alarm', params="list")
|
||||
output_colums = ['alarm_id', 'type', 'name', 'state', 'severity',
|
||||
'enabled']
|
||||
for alarm_list in self.parser.listing(result):
|
||||
|
||||
@@ -43,9 +43,8 @@ class AlarmManagerTest(testtools.TestCase):
|
||||
@mock.patch.object(alarm.AlarmManager, '_get')
|
||||
def test_list(self, mock_am):
|
||||
am = alarm.AlarmManager(self.client)
|
||||
am.list('event')
|
||||
mock_am.assert_called_with(
|
||||
'v2/alarms?q.field=type&q.op=eq&q.value=event')
|
||||
am.list()
|
||||
mock_am.assert_called_with('v2/alarms')
|
||||
|
||||
@mock.patch.object(alarm.AlarmManager, '_get')
|
||||
def test_get(self, mock_am):
|
||||
@@ -69,17 +68,3 @@ class AlarmManagerTest(testtools.TestCase):
|
||||
alarm_value.pop('name')
|
||||
result = self.results.get("result1")
|
||||
self.assertEqual(alarm_value, result)
|
||||
|
||||
@mock.patch.object(alarm.AlarmManager, '_post')
|
||||
def test_search(self, mock_am):
|
||||
am = alarm.AlarmManager(self.client)
|
||||
query = '{"=": {"type": "event"}}'
|
||||
am.search(query)
|
||||
url = 'v2/query/alarms'
|
||||
expected_value = ('{"filter": "{\\"=\\": {\\"type\\":'
|
||||
' \\"event\\"}}"}')
|
||||
headers_value = {'Content-Type': "application/json"}
|
||||
mock_am.assert_called_with(
|
||||
url,
|
||||
data=expected_value,
|
||||
headers=headers_value)
|
||||
|
||||
@@ -21,10 +21,9 @@ class AlarmManager(base.Manager):
|
||||
|
||||
url = "v2/alarms"
|
||||
|
||||
def list(self, alarm_type):
|
||||
def list(self):
|
||||
"""List alarms"""
|
||||
return self._get(self.url + '?q.field=type&q.op=eq' +
|
||||
'&q.value=' + alarm_type).json()
|
||||
return self._get(self.url).json()
|
||||
|
||||
def get(self, alarm_id):
|
||||
"""Get an alarm
|
||||
@@ -101,14 +100,3 @@ class AlarmManager(base.Manager):
|
||||
:type alarm_id: str
|
||||
"""
|
||||
self._delete(self.url + '/' + alarm_id)
|
||||
|
||||
def search(self, query=None):
|
||||
"""List alarms
|
||||
|
||||
:param query: The query dictionary
|
||||
:type query: dict
|
||||
"""
|
||||
query = {'filter': query} if query else {}
|
||||
url = "v2/query/alarms"
|
||||
return self._post(url, headers={'Content-Type': "application/json"},
|
||||
data=jsonutils.dumps(query)).json()
|
||||
|
||||
@@ -36,32 +36,8 @@ ALARM_LIST_COLS = ['alarm_id', 'type', 'name', 'state', 'severity', 'enabled']
|
||||
class CliAlarmList(lister.Lister):
|
||||
"""List alarms"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(CliAlarmList, self).get_parser(prog_name)
|
||||
parser.add_argument('-t', '--type', required=True,
|
||||
choices=ALARM_TYPES, help='Type of alarm')
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
alarms = self.app.client.alarm.list(alarm_type=parsed_args.type)
|
||||
return utils.list2cols(ALARM_LIST_COLS, alarms)
|
||||
|
||||
|
||||
class CliAlarmSearch(CliAlarmList):
|
||||
"""Search alarms with specified query rules"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(CliAlarmSearch, self).get_parser(prog_name)
|
||||
parser.add_argument("--query", help="Query"),
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
type_query = '{"=": {"type": "%s"}}' % parsed_args.type
|
||||
if parsed_args.query:
|
||||
query = '{"and": [%s, %s]}' % (type_query, parsed_args.query)
|
||||
else:
|
||||
query = type_query
|
||||
alarms = self.app.client.alarm.search(query=query)
|
||||
alarms = self.app.client.alarm.list()
|
||||
return utils.list2cols(ALARM_LIST_COLS, alarms)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user