Support get/set alarm state interfaces
Change-Id: Iaa317aeabcf18ff09c52215892643da25135bbcd
This commit is contained in:
parent
c6b5b0b429
commit
c0b47565a4
@ -40,6 +40,8 @@ class AodhCommandManager(commandmanager.CommandManager):
|
||||
"alarm list": alarm_cli.CliAlarmList,
|
||||
"alarm show": alarm_cli.CliAlarmShow,
|
||||
"alarm update": alarm_cli.CliAlarmUpdate,
|
||||
"alarm state get": alarm_cli.CliAlarmStateGet,
|
||||
"alarm state set": alarm_cli.CliAlarmStateSet,
|
||||
"alarm-history show": alarm_history_cli.CliAlarmHistoryShow,
|
||||
"alarm-history search": alarm_history_cli.CliAlarmHistorySearch,
|
||||
"capabilities list": capabilities_cli.CliCapabilitiesList,
|
||||
|
@ -437,6 +437,27 @@ class AodhClientTest(base.ClientTestBase):
|
||||
params = 'create --type event --name alarm-no-query'
|
||||
self._test_alarm_create_show_query(params, {'query': ''})
|
||||
|
||||
def test_set_get_alarm_state(self):
|
||||
result = self.aodh(
|
||||
'alarm',
|
||||
params=("create --type threshold --name alarm_state_test "
|
||||
"-m meter_name --threshold 5"))
|
||||
alarm = self.details_multiple(result)[0]
|
||||
alarm_id = alarm['alarm_id']
|
||||
result = self.aodh(
|
||||
'alarm', params="show %s" % alarm_id)
|
||||
alarm_show = self.details_multiple(result)[0]
|
||||
self.assertEqual('insufficient data', alarm_show['state'])
|
||||
result = self.aodh('alarm', params="state get %s" % alarm_id)
|
||||
state_get = self.details_multiple(result)[0]
|
||||
self.assertEqual('insufficient data', state_get['state'])
|
||||
self.aodh('alarm',
|
||||
params="state set --state ok %s" % alarm_id)
|
||||
result = self.aodh('alarm', params="state get %s" % alarm_id)
|
||||
state_get = self.details_multiple(result)[0]
|
||||
self.assertEqual('ok', state_get['state'])
|
||||
self.aodh('alarm', params='delete %s' % alarm_id)
|
||||
|
||||
|
||||
class AodhClientGnocchiRulesTest(base.ClientTestBase):
|
||||
|
||||
|
@ -128,3 +128,24 @@ class AlarmManager(base.Manager):
|
||||
:type alarm_id: str
|
||||
"""
|
||||
self._delete(self.url + '/' + alarm_id)
|
||||
|
||||
def get_state(self, alarm_id):
|
||||
"""Get the state of an alarm
|
||||
|
||||
:param alarm_id: ID of the alarm
|
||||
:type alarm_id: str
|
||||
"""
|
||||
return self._get(self.url + '/' + alarm_id + '/state').json()
|
||||
|
||||
def set_state(self, alarm_id, state):
|
||||
"""Set the state of an alarm
|
||||
|
||||
:param alarm_id: ID of the alarm
|
||||
:type alarm_id: str
|
||||
:param state: the state to be updated to the alarm
|
||||
:type state: str
|
||||
"""
|
||||
return self._put(self.url + '/' + alarm_id + '/state',
|
||||
headers={'Content-Type': "application/json"},
|
||||
data='"%s"' % state
|
||||
).json()
|
||||
|
@ -476,3 +476,67 @@ class CliAlarmDelete(command.Command):
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.id)
|
||||
|
||||
c.alarm.delete(_id)
|
||||
|
||||
|
||||
class CliAlarmStateGet(show.ShowOne):
|
||||
"""Delete an alarm"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
return _add_name_to_parser(
|
||||
_add_id_to_parser(
|
||||
super(CliAlarmStateGet, self).get_parser(prog_name)))
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
_check_name_and_id(parsed_args, 'get state of')
|
||||
c = utils.get_client(self)
|
||||
|
||||
if parsed_args.name:
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.name)
|
||||
elif uuidutils.is_uuid_like(parsed_args.id):
|
||||
try:
|
||||
state = c.alarm.get_state(parsed_args.id)
|
||||
except exceptions.NotFound:
|
||||
# Maybe it was not an ID after all
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.id)
|
||||
else:
|
||||
return self.dict2columns({'state': state})
|
||||
else:
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.id)
|
||||
|
||||
state = c.alarm.get_state(_id)
|
||||
return self.dict2columns({'state': state})
|
||||
|
||||
|
||||
class CliAlarmStateSet(show.ShowOne):
|
||||
"""Delete an alarm"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = _add_name_to_parser(
|
||||
_add_id_to_parser(
|
||||
super(CliAlarmStateSet, self).get_parser(prog_name)))
|
||||
parser.add_argument('--state', metavar='<STATE>',
|
||||
required=True,
|
||||
choices=ALARM_STATES,
|
||||
help='State of the alarm, one of: '
|
||||
+ str(ALARM_STATES))
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
_check_name_and_id(parsed_args, 'set state of')
|
||||
c = utils.get_client(self)
|
||||
|
||||
if parsed_args.name:
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.name)
|
||||
elif uuidutils.is_uuid_like(parsed_args.id):
|
||||
try:
|
||||
state = c.alarm.set_state(parsed_args.id, parsed_args.state)
|
||||
except exceptions.NotFound:
|
||||
# Maybe it was not an ID after all
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.id)
|
||||
else:
|
||||
return self.dict2columns({'state': state})
|
||||
else:
|
||||
_id = _find_alarm_id_by_name(c, parsed_args.id)
|
||||
|
||||
state = c.alarm.set_state(_id, parsed_args.state)
|
||||
return self.dict2columns({'state': state})
|
||||
|
@ -0,0 +1,3 @@
|
||||
---
|
||||
features:
|
||||
- Add support of get/set alarm state interfaces.
|
@ -38,6 +38,8 @@ openstack.alarming.v2 =
|
||||
alarm show = aodhclient.v2.alarm_cli:CliAlarmShow
|
||||
alarm delete = aodhclient.v2.alarm_cli:CliAlarmDelete
|
||||
alarm update = aodhclient.v2.alarm_cli:CliAlarmUpdate
|
||||
alarm state get = aodhclient.v2.alarm_cli:CliAlarmStateGet
|
||||
alarm state set = aodhclient.v2.alarm_cli:CliAlarmStateSet
|
||||
alarm-history search = aodhclient.v2.alarm_history_cli:CliAlarmHistorySearch
|
||||
alarm-history show = aodhclient.v2.alarm_history_cli:CliAlarmHistoryShow
|
||||
alarming capabilities list = aodhclient.v2.capabilities_cli:CliCapabilitiesList
|
||||
|
Loading…
x
Reference in New Issue
Block a user