Fix alarm-threshold-update --query option
Currently, alarm-threshold-update command can not update its query field, because the dest value is removed accidently so the query is not put under threshold_rule dict. This patch simply adds it back. Change-Id: I2eeaf8cbb26f506e097dafdcb6d0eae4ad7fec3e Closes-Bug: #1313676
This commit is contained in:
@@ -178,6 +178,20 @@ class ShellAlarmCommandTest(utils.BaseTestCase):
|
|||||||
"type": "threshold",
|
"type": "threshold",
|
||||||
"name": "cpu_high"}
|
"name": "cpu_high"}
|
||||||
|
|
||||||
|
THRESHOLD_ALARM_CLI_ARGS = [
|
||||||
|
'--name', 'cpu_high',
|
||||||
|
'--description', 'instance running hot',
|
||||||
|
'--meter-name', 'cpu_util',
|
||||||
|
'--threshold', '70.0',
|
||||||
|
'--comparison-operator', 'gt',
|
||||||
|
'--statistic', 'avg',
|
||||||
|
'--period', '600',
|
||||||
|
'--evaluation-periods', '3',
|
||||||
|
'--alarm-action', 'log://',
|
||||||
|
'--alarm-action', 'http://example.com/alarm/state',
|
||||||
|
'--query', 'resource_id=INSTANCE_ID'
|
||||||
|
]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(ShellAlarmCommandTest, self).setUp()
|
super(ShellAlarmCommandTest, self).setUp()
|
||||||
self.cc = mock.Mock()
|
self.cc = mock.Mock()
|
||||||
@@ -241,26 +255,28 @@ class ShellAlarmCommandTest(utils.BaseTestCase):
|
|||||||
|
|
||||||
@mock.patch('sys.stdout', new=six.StringIO())
|
@mock.patch('sys.stdout', new=six.StringIO())
|
||||||
def test_alarm_threshold_create_args(self):
|
def test_alarm_threshold_create_args(self):
|
||||||
|
argv = ['alarm-threshold-create'] + self.THRESHOLD_ALARM_CLI_ARGS
|
||||||
|
self._test_alarm_threshold_action_args('create', argv)
|
||||||
|
|
||||||
|
def test_alarm_threshold_update_args(self):
|
||||||
|
argv = ['alarm-threshold-update',
|
||||||
|
'--alarm_id', 'x'] + self.THRESHOLD_ALARM_CLI_ARGS
|
||||||
|
self._test_alarm_threshold_action_args('update', argv)
|
||||||
|
|
||||||
|
@mock.patch('sys.stdout', new=six.StringIO())
|
||||||
|
def _test_alarm_threshold_action_args(self, action, argv):
|
||||||
shell = base_shell.CeilometerShell()
|
shell = base_shell.CeilometerShell()
|
||||||
argv = ['alarm-threshold-create',
|
|
||||||
'--name', 'cpu_high',
|
|
||||||
'--description', 'instance running hot',
|
|
||||||
'--meter-name', 'cpu_util',
|
|
||||||
'--threshold', '70.0',
|
|
||||||
'--comparison-operator', 'gt',
|
|
||||||
'--statistic', 'avg',
|
|
||||||
'--period', '600',
|
|
||||||
'--evaluation-periods', '3',
|
|
||||||
'--alarm-action', 'log://',
|
|
||||||
'--alarm-action', 'http://example.com/alarm/state',
|
|
||||||
'--query', 'resource_id=INSTANCE_ID']
|
|
||||||
_, args = shell.parse_args(argv)
|
_, args = shell.parse_args(argv)
|
||||||
|
|
||||||
alarm = alarms.Alarm(mock.Mock(), self.ALARM)
|
alarm = alarms.Alarm(mock.Mock(), self.ALARM)
|
||||||
self.cc.alarms.create.return_value = alarm
|
getattr(self.cc.alarms, action).return_value = alarm
|
||||||
|
|
||||||
ceilometer_shell.do_alarm_threshold_create(self.cc, args)
|
func = getattr(ceilometer_shell, 'do_alarm_threshold_' + action)
|
||||||
_, kwargs = self.cc.alarms.create.call_args
|
func(self.cc, args)
|
||||||
|
_, kwargs = getattr(self.cc.alarms, action).call_args
|
||||||
|
self._check_alarm_threshold_args(kwargs)
|
||||||
|
|
||||||
|
def _check_alarm_threshold_args(self, kwargs):
|
||||||
self.assertEqual('cpu_high', kwargs.get('name'))
|
self.assertEqual('cpu_high', kwargs.get('name'))
|
||||||
self.assertEqual('instance running hot', kwargs.get('description'))
|
self.assertEqual('instance running hot', kwargs.get('description'))
|
||||||
actions = ['log://', 'http://example.com/alarm/state']
|
actions = ['log://', 'http://example.com/alarm/state']
|
||||||
|
|||||||
@@ -544,6 +544,7 @@ def do_alarm_update(cc, args={}):
|
|||||||
dest='threshold_rule/threshold',
|
dest='threshold_rule/threshold',
|
||||||
help='Threshold to evaluate against.')
|
help='Threshold to evaluate against.')
|
||||||
@utils.arg('-q', '--query', metavar='<QUERY>',
|
@utils.arg('-q', '--query', metavar='<QUERY>',
|
||||||
|
dest='threshold_rule/query',
|
||||||
help='key[op]data_type::value; list. data_type is optional, '
|
help='key[op]data_type::value; list. data_type is optional, '
|
||||||
'but if supplied must be string, integer, float, or boolean.')
|
'but if supplied must be string, integer, float, or boolean.')
|
||||||
@utils.arg('--repeat-actions', dest='repeat_actions',
|
@utils.arg('--repeat-actions', dest='repeat_actions',
|
||||||
|
|||||||
Reference in New Issue
Block a user