summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-06-25 00:19:59 +0000
committerGerrit Code Review <review@openstack.org>2014-06-25 00:19:59 +0000
commit9f41025689e53ea1f1c7a96198d4f09372910c40 (patch)
tree8fd23e15eb95e51c79a2274df3f592d8a9eb9cb9
parent3e0f36341600c5a3bee371557c766b0592b3ddc6 (diff)
parent18342a412f2557199dc3d7b1d16f50baf92eac1b (diff)
downloadpython-ceilometerclient-9f41025689e53ea1f1c7a96198d4f09372910c40.tar.gz
Merge "Fix alarm-threshold-update --query option"
-rw-r--r--ceilometerclient/tests/v2/test_shell.py46
-rw-r--r--ceilometerclient/v2/shell.py1
2 files changed, 32 insertions, 15 deletions
diff --git a/ceilometerclient/tests/v2/test_shell.py b/ceilometerclient/tests/v2/test_shell.py
index 819e938..69e6a50 100644
--- a/ceilometerclient/tests/v2/test_shell.py
+++ b/ceilometerclient/tests/v2/test_shell.py
@@ -178,6 +178,20 @@ class ShellAlarmCommandTest(utils.BaseTestCase):
"type": "threshold",
"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):
super(ShellAlarmCommandTest, self).setUp()
self.cc = mock.Mock()
@@ -241,26 +255,28 @@ class ShellAlarmCommandTest(utils.BaseTestCase):
@mock.patch('sys.stdout', new=six.StringIO())
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()
- 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)
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)
- _, kwargs = self.cc.alarms.create.call_args
+ func = getattr(ceilometer_shell, 'do_alarm_threshold_' + action)
+ 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('instance running hot', kwargs.get('description'))
actions = ['log://', 'http://example.com/alarm/state']
diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py
index 9a42b0f..b13ab20 100644
--- a/ceilometerclient/v2/shell.py
+++ b/ceilometerclient/v2/shell.py
@@ -544,6 +544,7 @@ def do_alarm_update(cc, args={}):
dest='threshold_rule/threshold',
help='Threshold to evaluate against.')
@utils.arg('-q', '--query', metavar='<QUERY>',
+ dest='threshold_rule/query',
help='key[op]data_type::value; list. data_type is optional, '
'but if supplied must be string, integer, float, or boolean.')
@utils.arg('--repeat-actions', dest='repeat_actions',