Merge "Support get/set alarm state interfaces"

This commit is contained in:
Jenkins 2016-07-18 06:19:26 +00:00 committed by Gerrit Code Review
commit 65d2e625ee
6 changed files with 113 additions and 0 deletions

View File

@ -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,

View File

@ -477,6 +477,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):

View File

@ -162,3 +162,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()

View File

@ -492,3 +492,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})

View File

@ -0,0 +1,3 @@
---
features:
- Add support of get/set alarm state interfaces.

View File

@ -39,6 +39,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