fix project_id and user_id fields not set when create gnocchi alarm
When using command alarm-gnocchi-* the project_id and user_id are not set. The patch fix it and add related tests: 1.ceilometer gnocchi alarm create/update test cases 2.check gnocchi alarm create/update command args test cases 3.check update alarm without alarm-id 4.check shadowed args are restored Closes-Bug: #1506509 Change-Id: If6a8cfd9bc52b3eeff99dfcfdee2f4da7220674b
This commit is contained in:
@@ -331,6 +331,444 @@ class ShellAlarmCommandTest(utils.BaseTestCase):
|
||||
self.assertEqual(time_constraints, kwargs['time_constraints'])
|
||||
|
||||
|
||||
class ShellAlarmGnocchiCommandTest(test_shell.ShellTestBase):
|
||||
|
||||
ALARM_ID = 'b69ecdb9-f19b-4fb5-950f-5eb53938b718'
|
||||
TIME_CONSTRAINTS = [{
|
||||
u'duration': 300,
|
||||
u'start': u'0 11 * * *',
|
||||
u'description': u'desc1',
|
||||
u'name': u'cons1',
|
||||
u'timezone': u''}, {
|
||||
u'duration': 600,
|
||||
u'start': u'0 23 * * *',
|
||||
u'name': u'cons2',
|
||||
u'description': u'desc2',
|
||||
u'timezone': u''}]
|
||||
|
||||
ALARM1 = {
|
||||
u'name': u'name_gnocchi_alarm',
|
||||
u'description': u'description_gnocchi_alarm',
|
||||
u'enabled': True,
|
||||
u'ok_actions': [u'http://something/ok'],
|
||||
u'alarm_actions': [u'http://something/alarm'],
|
||||
u'timestamp': u'2015-12-21T03:10:32.305133',
|
||||
u'state_timestamp': u'2015-12-21T03:10:32.305133',
|
||||
u'gnocchi_resources_threshold_rule': {
|
||||
u'evaluation_periods': 3,
|
||||
u'metric': u'cpu_util',
|
||||
u'resource_id': u'768ff714-8cfb-4db9-9753-d484cb33a1cc',
|
||||
u'threshold': 70.0,
|
||||
u'granularity': 60,
|
||||
u'aggregation_method': u'count',
|
||||
u'comparison_operator': u'le',
|
||||
u'resource_type': u'instance',
|
||||
},
|
||||
u'time_constraints': TIME_CONSTRAINTS,
|
||||
u'alarm_id': ALARM_ID,
|
||||
u'state': u'ok',
|
||||
u'insufficient_data_actions': [u'http://something/insufficient'],
|
||||
u'repeat_actions': True,
|
||||
u'user_id': u'f28735621ee84f329144eb467c91fce6',
|
||||
u'project_id': u'97fcad0402ce4f65ac3bd42a0c6a7e74',
|
||||
u'type': u'gnocchi_resources_threshold',
|
||||
u'severity': u'critical',
|
||||
}
|
||||
|
||||
ALARM2 = {
|
||||
u'name': u'name_gnocchi_alarm',
|
||||
u'description': u'description_gnocchi_alarm',
|
||||
u'enabled': True,
|
||||
u'ok_actions': [u'http://something/ok'],
|
||||
u'alarm_actions': [u'http://something/alarm'],
|
||||
u'timestamp': u'2015-12-21T03:10:32.305133',
|
||||
u'state_timestamp': u'2015-12-21T03:10:32.305133',
|
||||
u'gnocchi_aggregation_by_metrics_threshold_rule': {
|
||||
u'evaluation_periods': 3,
|
||||
u'metrics': [u'b3d9d8ab-05e8-439f-89ad-5e978dd2a5eb',
|
||||
u'009d4faf-c275-46f0-8f2d-670b15bac2b0'],
|
||||
u'threshold': 70.0,
|
||||
u'granularity': 60,
|
||||
u'aggregation_method': u'count',
|
||||
u'comparison_operator': u'le',
|
||||
},
|
||||
u'time_constraints': TIME_CONSTRAINTS,
|
||||
u'alarm_id': ALARM_ID,
|
||||
u'state': u'ok',
|
||||
u'insufficient_data_actions': [u'http://something/insufficient'],
|
||||
u'repeat_actions': True,
|
||||
u'user_id': u'f28735621ee84f329144eb467c91fce6',
|
||||
u'project_id': u'97fcad0402ce4f65ac3bd42a0c6a7e74',
|
||||
u'type': u'gnocchi_aggregation_by_metrics_threshold',
|
||||
u'severity': u'critical',
|
||||
}
|
||||
|
||||
ALARM3 = {
|
||||
u'name': u'name_gnocchi_alarm',
|
||||
u'description': u'description_gnocchi_alarm',
|
||||
u'enabled': True,
|
||||
u'ok_actions': [u'http://something/ok'],
|
||||
u'alarm_actions': [u'http://something/alarm'],
|
||||
u'timestamp': u'2015-12-21T03:10:32.305133',
|
||||
u'state_timestamp': u'2015-12-21T03:10:32.305133',
|
||||
u'gnocchi_aggregation_by_resources_threshold_rule': {
|
||||
u'evaluation_periods': 3,
|
||||
u'metric': u'cpu_util',
|
||||
u'threshold': 70.0,
|
||||
u'granularity': 60,
|
||||
u'aggregation_method': u'count',
|
||||
u'comparison_operator': u'le',
|
||||
u'resource_type': u'instance',
|
||||
u'query': u'{"=": {"server_group":"my_autoscaling_group"}}',
|
||||
},
|
||||
u'time_constraints': TIME_CONSTRAINTS,
|
||||
u'alarm_id': ALARM_ID,
|
||||
u'state': u'ok',
|
||||
u'insufficient_data_actions': [u'http://something/insufficient'],
|
||||
u'repeat_actions': True,
|
||||
u'user_id': u'f28735621ee84f329144eb467c91fce6',
|
||||
u'project_id': u'97fcad0402ce4f65ac3bd42a0c6a7e74',
|
||||
u'type': u'gnocchi_aggregation_by_resources_threshold',
|
||||
u'severity': u'critical',
|
||||
}
|
||||
|
||||
COMMON_CLI_ARGS = [
|
||||
'--name', 'name_gnocchi_alarm',
|
||||
'--description', 'description_gnocchi_alarm',
|
||||
'--enabled', 'True',
|
||||
'--state', 'ok',
|
||||
'--severity', 'critical',
|
||||
'--ok-action', 'http://something/ok',
|
||||
'--alarm-action', 'http://something/alarm',
|
||||
'--insufficient-data-action', 'http://something/insufficient',
|
||||
'--repeat-actions', 'True',
|
||||
'--comparison-operator', 'le',
|
||||
'--aggregation-method', 'count',
|
||||
'--threshold', '70',
|
||||
'--evaluation-periods', '3',
|
||||
'--granularity', '60',
|
||||
'--time-constraint',
|
||||
'name=cons1;start="0 11 * * *";duration=300;description="desc1"',
|
||||
'--time-constraint',
|
||||
'name=cons2;start="0 23 * * *";duration=600;description="desc2"',
|
||||
'--user-id', 'f28735621ee84f329144eb467c91fce6',
|
||||
'--project-id', '97fcad0402ce4f65ac3bd42a0c6a7e74',
|
||||
]
|
||||
|
||||
GNOCCHI_RESOURCES_CLI_ARGS = COMMON_CLI_ARGS + [
|
||||
'--metric', 'cpu_util',
|
||||
'--resource-type', 'instance',
|
||||
'--resource-id', '768ff714-8cfb-4db9-9753-d484cb33a1cc',
|
||||
]
|
||||
|
||||
GNOCCHI_AGGR_BY_METRICS_CLI_ARGS = COMMON_CLI_ARGS + [
|
||||
'-m', 'b3d9d8ab-05e8-439f-89ad-5e978dd2a5eb',
|
||||
'-m', '009d4faf-c275-46f0-8f2d-670b15bac2b0',
|
||||
]
|
||||
|
||||
GNOCCHI_AGGR_BY_RESOURCES_CLI_ARGS = COMMON_CLI_ARGS + [
|
||||
'--metric', 'cpu_util',
|
||||
'--resource-type', 'instance',
|
||||
'--query', '{"=": {"server_group":"my_autoscaling_group"}}'
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
super(ShellAlarmGnocchiCommandTest, self).setUp()
|
||||
self.cc = mock.Mock()
|
||||
self.cc.alarms = mock.Mock()
|
||||
self.args = mock.Mock()
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_do_alarm_gnocchi_resources_threshold_create(self):
|
||||
|
||||
alarm = alarms.Alarm(mock.Mock(), self.ALARM1)
|
||||
self.cc.alarms.create.return_value = alarm
|
||||
ceilometer_shell.do_alarm_gnocchi_resources_threshold_create(self.cc,
|
||||
self.args)
|
||||
self.assertEqual('''\
|
||||
+---------------------------+--------------------------------------+
|
||||
| Property | Value |
|
||||
+---------------------------+--------------------------------------+
|
||||
| aggregation_method | count |
|
||||
| alarm_actions | ["http://something/alarm"] |
|
||||
| alarm_id | b69ecdb9-f19b-4fb5-950f-5eb53938b718 |
|
||||
| comparison_operator | le |
|
||||
| description | description_gnocchi_alarm |
|
||||
| enabled | True |
|
||||
| evaluation_periods | 3 |
|
||||
| granularity | 60 |
|
||||
| insufficient_data_actions | ["http://something/insufficient"] |
|
||||
| metric | cpu_util |
|
||||
| name | name_gnocchi_alarm |
|
||||
| ok_actions | ["http://something/ok"] |
|
||||
| project_id | 97fcad0402ce4f65ac3bd42a0c6a7e74 |
|
||||
| repeat_actions | True |
|
||||
| resource_id | 768ff714-8cfb-4db9-9753-d484cb33a1cc |
|
||||
| resource_type | instance |
|
||||
| severity | critical |
|
||||
| state | ok |
|
||||
| threshold | 70.0 |
|
||||
| time_constraints | [{name: cons1, |
|
||||
| | description: desc1, |
|
||||
| | start: 0 11 * * *, |
|
||||
| | duration: 300}, |
|
||||
| | {name: cons2, |
|
||||
| | description: desc2, |
|
||||
| | start: 0 23 * * *, |
|
||||
| | duration: 600}] |
|
||||
| type | gnocchi_resources_threshold |
|
||||
| user_id | f28735621ee84f329144eb467c91fce6 |
|
||||
+---------------------------+--------------------------------------+
|
||||
''', sys.stdout.getvalue())
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_do_alarm_gnocchi_aggr_by_metrics_threshold_create(self):
|
||||
|
||||
alarm = alarms.Alarm(mock.Mock(), self.ALARM2)
|
||||
self.cc.alarms.create.return_value = alarm
|
||||
ceilometer_shell.\
|
||||
do_alarm_gnocchi_aggregation_by_metrics_threshold_create(
|
||||
self.cc, self.args)
|
||||
self.assertEqual('''\
|
||||
+---------------------------+------------------------------------------\
|
||||
--------------------------+
|
||||
| Property | Value \
|
||||
|
|
||||
+---------------------------+------------------------------------------\
|
||||
--------------------------+
|
||||
| aggregation_method | count \
|
||||
|
|
||||
| alarm_actions | ["http://something/alarm"] \
|
||||
|
|
||||
| alarm_id | b69ecdb9-f19b-4fb5-950f-5eb53938b718 \
|
||||
|
|
||||
| comparison_operator | le \
|
||||
|
|
||||
| description | description_gnocchi_alarm \
|
||||
|
|
||||
| enabled | True \
|
||||
|
|
||||
| evaluation_periods | 3 \
|
||||
|
|
||||
| granularity | 60 \
|
||||
|
|
||||
| insufficient_data_actions | ["http://something/insufficient"] \
|
||||
|
|
||||
| metrics | ["b3d9d8ab-05e8-439f-89ad-5e978dd2a5eb", \
|
||||
"009d4faf-c275-46f0-8f2d- |
|
||||
| | 670b15bac2b0"] \
|
||||
|
|
||||
| name | name_gnocchi_alarm \
|
||||
|
|
||||
| ok_actions | ["http://something/ok"] \
|
||||
|
|
||||
| project_id | 97fcad0402ce4f65ac3bd42a0c6a7e74 \
|
||||
|
|
||||
| repeat_actions | True \
|
||||
|
|
||||
| severity | critical \
|
||||
|
|
||||
| state | ok \
|
||||
|
|
||||
| threshold | 70.0 \
|
||||
|
|
||||
| time_constraints | [{name: cons1, \
|
||||
|
|
||||
| | description: desc1, \
|
||||
|
|
||||
| | start: 0 11 * * *, \
|
||||
|
|
||||
| | duration: 300}, \
|
||||
|
|
||||
| | {name: cons2, \
|
||||
|
|
||||
| | description: desc2, \
|
||||
|
|
||||
| | start: 0 23 * * *, \
|
||||
|
|
||||
| | duration: 600}] \
|
||||
|
|
||||
| type | gnocchi_aggregation_by_metrics_threshold \
|
||||
|
|
||||
| user_id | f28735621ee84f329144eb467c91fce6 \
|
||||
|
|
||||
+---------------------------+------------------------------------------\
|
||||
--------------------------+
|
||||
''', sys.stdout.getvalue())
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_do_alarm_gnocchi_aggr_by_resources_threshold_create(self):
|
||||
|
||||
alarm = alarms.Alarm(mock.Mock(), self.ALARM3)
|
||||
self.cc.alarms.create.return_value = alarm
|
||||
ceilometer_shell.\
|
||||
do_alarm_gnocchi_aggregation_by_resources_threshold_create(
|
||||
self.cc, self.args)
|
||||
self.assertEqual('''\
|
||||
+---------------------------+------------------------------------------------+
|
||||
| Property | Value |
|
||||
+---------------------------+------------------------------------------------+
|
||||
| aggregation_method | count |
|
||||
| alarm_actions | ["http://something/alarm"] |
|
||||
| alarm_id | b69ecdb9-f19b-4fb5-950f-5eb53938b718 |
|
||||
| comparison_operator | le |
|
||||
| description | description_gnocchi_alarm |
|
||||
| enabled | True |
|
||||
| evaluation_periods | 3 |
|
||||
| granularity | 60 |
|
||||
| insufficient_data_actions | ["http://something/insufficient"] |
|
||||
| metric | cpu_util |
|
||||
| name | name_gnocchi_alarm |
|
||||
| ok_actions | ["http://something/ok"] |
|
||||
| project_id | 97fcad0402ce4f65ac3bd42a0c6a7e74 |
|
||||
| query | {"=": {"server_group":"my_autoscaling_group"}} |
|
||||
| repeat_actions | True |
|
||||
| resource_type | instance |
|
||||
| severity | critical |
|
||||
| state | ok |
|
||||
| threshold | 70.0 |
|
||||
| time_constraints | [{name: cons1, |
|
||||
| | description: desc1, |
|
||||
| | start: 0 11 * * *, |
|
||||
| | duration: 300}, |
|
||||
| | {name: cons2, |
|
||||
| | description: desc2, |
|
||||
| | start: 0 23 * * *, |
|
||||
| | duration: 600}] |
|
||||
| type | gnocchi_aggregation_by_resources_threshold |
|
||||
| user_id | f28735621ee84f329144eb467c91fce6 |
|
||||
+---------------------------+------------------------------------------------+
|
||||
''', sys.stdout.getvalue())
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_do_alarm_gnocchi_resources_threshold_create_args(self):
|
||||
argv = ['alarm-gnocchi-resources-threshold-create']
|
||||
argv.extend(self.GNOCCHI_RESOURCES_CLI_ARGS)
|
||||
self._test_alarm_gnocchi_resources_arguments('create', argv)
|
||||
|
||||
def test_do_alarm_gnocchi_resources_threshold_update_args(self):
|
||||
argv = ['alarm-gnocchi-resources-threshold-update']
|
||||
argv.extend(self.GNOCCHI_RESOURCES_CLI_ARGS)
|
||||
argv.append(self.ALARM_ID)
|
||||
self._test_alarm_gnocchi_resources_arguments('update', argv)
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_do_alarm_gnocchi_aggr_by_metrics_threshold_create_args(self):
|
||||
argv = ['alarm-gnocchi-aggregation-by-metrics-threshold-create']
|
||||
argv.extend(self.GNOCCHI_AGGR_BY_METRICS_CLI_ARGS)
|
||||
self._test_alarm_gnocchi_aggr_by_metrics_arguments('create', argv)
|
||||
|
||||
def test_do_alarm_gnocchi_aggr_by_metrics_threshold_update_args(self):
|
||||
argv = ['alarm-gnocchi-aggregation-by-metrics-threshold-update']
|
||||
argv.extend(self.GNOCCHI_AGGR_BY_METRICS_CLI_ARGS)
|
||||
argv.append(self.ALARM_ID)
|
||||
self._test_alarm_gnocchi_aggr_by_metrics_arguments('update', argv)
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_do_alarm_gnocchi_aggr_by_resources_threshold_create_args(self):
|
||||
argv = ['alarm-gnocchi-aggregation-by-resources-threshold-create']
|
||||
argv.extend(self.GNOCCHI_AGGR_BY_RESOURCES_CLI_ARGS)
|
||||
self._test_alarm_gnocchi_aggr_by_resources_arguments('create', argv)
|
||||
|
||||
def test_do_alarm_gnocchi_aggr_by_resources_threshold_update_args(self):
|
||||
argv = ['alarm-gnocchi-aggregation-by-resources-threshold-update']
|
||||
argv.extend(self.GNOCCHI_AGGR_BY_RESOURCES_CLI_ARGS)
|
||||
argv.append(self.ALARM_ID)
|
||||
self._test_alarm_gnocchi_aggr_by_resources_arguments('update', argv)
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def _test_common_alarm_gnocchi_arguments(self, kwargs):
|
||||
self.assertEqual('97fcad0402ce4f65ac3bd42a0c6a7e74',
|
||||
kwargs.get('project_id'))
|
||||
self.assertEqual('f28735621ee84f329144eb467c91fce6',
|
||||
kwargs.get('user_id'))
|
||||
self.assertEqual('name_gnocchi_alarm', kwargs.get('name'))
|
||||
self.assertEqual('description_gnocchi_alarm',
|
||||
kwargs.get('description'))
|
||||
self.assertEqual(['http://something/alarm'],
|
||||
kwargs.get('alarm_actions'))
|
||||
self.assertEqual(['http://something/ok'], kwargs.get('ok_actions'))
|
||||
self.assertEqual(['http://something/insufficient'],
|
||||
kwargs.get('insufficient_data_actions'))
|
||||
self.assertEqual('critical', kwargs.get('severity'))
|
||||
self.assertEqual('ok', kwargs.get('state'))
|
||||
self.assertEqual(True, kwargs.get('enabled'))
|
||||
self.assertEqual(True, kwargs.get('repeat_actions'))
|
||||
time_constraints = [dict(name='cons1', start='0 11 * * *',
|
||||
duration='300', description='desc1'),
|
||||
dict(name='cons2', start='0 23 * * *',
|
||||
duration='600', description='desc2')]
|
||||
self.assertEqual(time_constraints, kwargs['time_constraints'])
|
||||
|
||||
def _test_alarm_gnocchi_resources_arguments(self, action, argv):
|
||||
self.make_env(test_shell.FAKE_V2_ENV)
|
||||
with mock.patch.object(alarms.AlarmManager, action) as mocked:
|
||||
with mock.patch('ceilometerclient.openstack.common.apiclient.'
|
||||
'client.HTTPClient.client_request') as request:
|
||||
request.site_effect = exceptions.EndpointNotFound
|
||||
base_shell.main(argv)
|
||||
args, kwargs = mocked.call_args
|
||||
self.assertEqual('gnocchi_resources_threshold', kwargs.get('type'))
|
||||
self.assertIn('gnocchi_resources_threshold_rule', kwargs)
|
||||
rule = kwargs['gnocchi_resources_threshold_rule']
|
||||
self.assertEqual('cpu_util', rule.get('metric'))
|
||||
self.assertEqual(70.0, rule.get('threshold'))
|
||||
self.assertEqual(60, rule.get('granularity'))
|
||||
self.assertEqual('count', rule.get('aggregation_method'))
|
||||
self.assertEqual('le', rule.get('comparison_operator'))
|
||||
self.assertEqual(3, rule.get('evaluation_periods'))
|
||||
self.assertEqual('768ff714-8cfb-4db9-9753-d484cb33a1cc',
|
||||
rule.get('resource_id'))
|
||||
self.assertEqual('instance', rule.get('resource_type'))
|
||||
self._test_common_alarm_gnocchi_arguments(kwargs)
|
||||
|
||||
def _test_alarm_gnocchi_aggr_by_metrics_arguments(self, action, argv):
|
||||
self.make_env(test_shell.FAKE_V2_ENV)
|
||||
with mock.patch.object(alarms.AlarmManager, action) as mocked:
|
||||
with mock.patch('ceilometerclient.openstack.common.apiclient.'
|
||||
'client.HTTPClient.client_request') as request:
|
||||
request.site_effect = exceptions.EndpointNotFound
|
||||
base_shell.main(argv)
|
||||
args, kwargs = mocked.call_args
|
||||
self.assertEqual('gnocchi_aggregation_by_metrics_threshold',
|
||||
kwargs.get('type'))
|
||||
self.assertIn('gnocchi_aggregation_by_metrics_threshold_rule', kwargs)
|
||||
rule = kwargs['gnocchi_aggregation_by_metrics_threshold_rule']
|
||||
self.assertEqual(['b3d9d8ab-05e8-439f-89ad-5e978dd2a5eb',
|
||||
'009d4faf-c275-46f0-8f2d-670b15bac2b0'],
|
||||
rule.get('metrics'))
|
||||
self.assertEqual(70.0, rule.get('threshold'))
|
||||
self.assertEqual(60, rule.get('granularity'))
|
||||
self.assertEqual('count', rule.get('aggregation_method'))
|
||||
self.assertEqual('le', rule.get('comparison_operator'))
|
||||
self.assertEqual(3, rule.get('evaluation_periods'))
|
||||
self._test_common_alarm_gnocchi_arguments(kwargs)
|
||||
|
||||
def _test_alarm_gnocchi_aggr_by_resources_arguments(self, action, argv):
|
||||
self.make_env(test_shell.FAKE_V2_ENV)
|
||||
with mock.patch.object(alarms.AlarmManager, action) as mocked:
|
||||
with mock.patch('ceilometerclient.openstack.common.apiclient.'
|
||||
'client.HTTPClient.client_request') as request:
|
||||
request.site_effect = exceptions.EndpointNotFound
|
||||
base_shell.main(argv)
|
||||
args, kwargs = mocked.call_args
|
||||
self.assertEqual('gnocchi_aggregation_by_resources_threshold',
|
||||
kwargs.get('type'))
|
||||
self.assertIn('gnocchi_aggregation_by_resources_threshold_rule',
|
||||
kwargs)
|
||||
rule = kwargs['gnocchi_aggregation_by_resources_threshold_rule']
|
||||
self.assertEqual('cpu_util', rule.get('metric'))
|
||||
self.assertEqual(70.0, rule.get('threshold'))
|
||||
self.assertEqual(60, rule.get('granularity'))
|
||||
self.assertEqual('count', rule.get('aggregation_method'))
|
||||
self.assertEqual('le', rule.get('comparison_operator'))
|
||||
self.assertEqual(3, rule.get('evaluation_periods'))
|
||||
self.assertEqual('instance', rule.get('resource_type'))
|
||||
self.assertEqual('{"=": {"server_group":"my_autoscaling_group"}}',
|
||||
rule.get('query'))
|
||||
self._test_common_alarm_gnocchi_arguments(kwargs)
|
||||
|
||||
|
||||
class ShellSampleListCommandTest(utils.BaseTestCase):
|
||||
|
||||
METER = 'cpu_util'
|
||||
@@ -1065,6 +1503,18 @@ class ShellEmptyIdTest(utils.BaseTestCase):
|
||||
def test_alarm_combination_update_with_empty_id(self):
|
||||
self._test_alarm_action_with_empty_ids('alarm-combination-update')
|
||||
|
||||
def test_alarm_gnocchi_resources_update_with_empty_id(self):
|
||||
self._test_alarm_action_with_empty_ids(
|
||||
'alarm-gnocchi-resources-threshold-update')
|
||||
|
||||
def test_alarm_gnocchi_aggr_by_resources_update_with_empty_id(self):
|
||||
self._test_alarm_action_with_empty_ids(
|
||||
'alarm-gnocchi-aggregation-by-resources-threshold-update')
|
||||
|
||||
def test_alarm_gnocchi_aggr_by_metrics_update_with_empty_id(self):
|
||||
self._test_alarm_action_with_empty_ids(
|
||||
'alarm-gnocchi-aggregation-by-metrics-threshold-update')
|
||||
|
||||
def test_alarm_delete_with_empty_id(self):
|
||||
self._test_alarm_action_with_empty_ids('alarm-delete')
|
||||
|
||||
@@ -1264,6 +1714,53 @@ class ShellShadowedArgsTest(test_shell.ShellTestBase):
|
||||
self._test_shadowed_args_alarm('alarm-combination-update',
|
||||
cli_args, 'update')
|
||||
|
||||
def test_shadowed_args_gnocchi_resources_threshold_alarm(self):
|
||||
cli_args = [
|
||||
'--metric', 'cpu',
|
||||
'--threshold', '80',
|
||||
'--resource-type', 'instance',
|
||||
'--resource-id', 'fb16a05a-669d-414e-8bbe-93aa381df6a8',
|
||||
'--aggregation-method', 'last',
|
||||
]
|
||||
self._test_shadowed_args_alarm('alarm-gnocchi-resources-'
|
||||
'threshold-create',
|
||||
cli_args, 'create')
|
||||
cli_args += ['--alarm_id', '437b7ed0-3733-4054-a877-e9a297b8be85']
|
||||
self._test_shadowed_args_alarm('alarm-gnocchi-resources-'
|
||||
'threshold-update',
|
||||
cli_args, 'update')
|
||||
|
||||
def test_shadowed_args_gnocchi_aggr_by_resources_threshold_alarm(self):
|
||||
cli_args = [
|
||||
'--metric', 'cpu',
|
||||
'--threshold', '80',
|
||||
'--resource-type', 'instance',
|
||||
'--aggregation-method', 'last',
|
||||
'--query', '"server_group":"my_autoscaling_group"',
|
||||
]
|
||||
self._test_shadowed_args_alarm('alarm-gnocchi-aggregation-'
|
||||
'by-resources-threshold-create',
|
||||
cli_args, 'create')
|
||||
cli_args += ['--alarm_id', '437b7ed0-3733-4054-a877-e9a297b8be85']
|
||||
self._test_shadowed_args_alarm('alarm-gnocchi-aggregation-'
|
||||
'by-resources-threshold-update',
|
||||
cli_args, 'update')
|
||||
|
||||
def test_shadowed_args_gnocchi_aggr_by_metrics_threshold_alarm(self):
|
||||
cli_args = [
|
||||
'-m', 'b3d9d8ab-05e8-439f-89ad-5e978dd2a5eb',
|
||||
'-m', '009d4faf-c275-46f0-8f2d-670b15bac2b0',
|
||||
'--threshold', '80',
|
||||
'--aggregation-method', 'last',
|
||||
]
|
||||
self._test_shadowed_args_alarm('alarm-gnocchi-aggregation-'
|
||||
'by-metrics-threshold-create',
|
||||
cli_args, 'create')
|
||||
cli_args += ['--alarm_id', '437b7ed0-3733-4054-a877-e9a297b8be85']
|
||||
self._test_shadowed_args_alarm('alarm-gnocchi-aggregation-'
|
||||
'by-metrics-threshold-update',
|
||||
cli_args, 'update')
|
||||
|
||||
@mock.patch.object(samples.OldSampleManager, 'create')
|
||||
def test_shadowed_args_sample_create(self, mocked):
|
||||
self.make_env(test_shell.FAKE_V2_ENV)
|
||||
|
||||
@@ -644,6 +644,8 @@ def do_alarm_create(cc, args={}):
|
||||
@common_alarm_gnocchi_arguments('gnocchi_resources_threshold_rule',
|
||||
create=True)
|
||||
@common_alarm_gnocchi_resources_arguments(create=True)
|
||||
@_restore_shadowed_arg('project_id', 'alarm_project_id')
|
||||
@_restore_shadowed_arg('user_id', 'alarm_user_id')
|
||||
def do_alarm_gnocchi_resources_threshold_create(cc, args={}):
|
||||
"""Create a new alarm based on computed statistics."""
|
||||
fields = dict(filter(lambda x: not (x[1] is None), vars(args).items()))
|
||||
@@ -658,6 +660,8 @@ def do_alarm_gnocchi_resources_threshold_create(cc, args={}):
|
||||
@common_alarm_gnocchi_arguments(
|
||||
'gnocchi_aggregation_by_metrics_threshold_rule', create=True)
|
||||
@common_alarm_gnocchi_aggregation_by_metrics_arguments(create=True)
|
||||
@_restore_shadowed_arg('project_id', 'alarm_project_id')
|
||||
@_restore_shadowed_arg('user_id', 'alarm_user_id')
|
||||
def do_alarm_gnocchi_aggregation_by_metrics_threshold_create(cc, args={}):
|
||||
"""Create a new alarm based on computed statistics."""
|
||||
fields = dict(filter(lambda x: not (x[1] is None), vars(args).items()))
|
||||
@@ -672,6 +676,8 @@ def do_alarm_gnocchi_aggregation_by_metrics_threshold_create(cc, args={}):
|
||||
@common_alarm_gnocchi_arguments(
|
||||
'gnocchi_aggregation_by_resources_threshold_rule', create=True)
|
||||
@common_alarm_gnocchi_aggregation_by_resources_arguments(create=True)
|
||||
@_restore_shadowed_arg('project_id', 'alarm_project_id')
|
||||
@_restore_shadowed_arg('user_id', 'alarm_user_id')
|
||||
def do_alarm_gnocchi_aggregation_by_resources_threshold_create(cc, args={}):
|
||||
"""Create a new alarm based on computed statistics."""
|
||||
fields = dict(filter(lambda x: not (x[1] is None), vars(args).items()))
|
||||
@@ -865,6 +871,8 @@ def do_alarm_threshold_update(cc, args={}):
|
||||
metavar='<Constraint names>',
|
||||
dest='remove_time_constraints',
|
||||
help='Name or list of names of the time constraints to remove.')
|
||||
@_restore_shadowed_arg('project_id', 'alarm_project_id')
|
||||
@_restore_shadowed_arg('user_id', 'alarm_user_id')
|
||||
def do_alarm_gnocchi_resources_threshold_update(cc, args={}):
|
||||
"""Update an existing alarm based on computed statistics."""
|
||||
fields = dict(filter(lambda x: not (x[1] is None), vars(args).items()))
|
||||
@@ -892,6 +900,8 @@ def do_alarm_gnocchi_resources_threshold_update(cc, args={}):
|
||||
metavar='<Constraint names>',
|
||||
dest='remove_time_constraints',
|
||||
help='Name or list of names of the time constraints to remove.')
|
||||
@_restore_shadowed_arg('project_id', 'alarm_project_id')
|
||||
@_restore_shadowed_arg('user_id', 'alarm_user_id')
|
||||
def do_alarm_gnocchi_aggregation_by_metrics_threshold_update(cc, args={}):
|
||||
"""Update an existing alarm based on computed statistics."""
|
||||
fields = dict(filter(lambda x: not (x[1] is None), vars(args).items()))
|
||||
@@ -919,6 +929,8 @@ def do_alarm_gnocchi_aggregation_by_metrics_threshold_update(cc, args={}):
|
||||
metavar='<Constraint names>',
|
||||
dest='remove_time_constraints',
|
||||
help='Name or list of names of the time constraints to remove.')
|
||||
@_restore_shadowed_arg('project_id', 'alarm_project_id')
|
||||
@_restore_shadowed_arg('user_id', 'alarm_user_id')
|
||||
def do_alarm_gnocchi_aggregation_by_resources_threshold_update(cc, args={}):
|
||||
"""Update an existing alarm based on computed statistics."""
|
||||
fields = dict(filter(lambda x: not (x[1] is None), vars(args).items()))
|
||||
|
||||
Reference in New Issue
Block a user