Add more properties to trigger policy.

Currently monitoring policy in Tacker is not fully validated in tosca-parser.
This made monitoring feature beoken in Tacker.

Change-Id: Iebe961eb38e36ac55a212482596c2a30fd75f1c8
This commit is contained in:
doantungbk 2017-04-13 08:29:04 -07:00
parent 8ead56f0d0
commit 0b000ae4e8
3 changed files with 83 additions and 7 deletions

View File

@ -75,6 +75,32 @@ topology_template:
inputs:
strategy: LEAST_USED
implementation: Senlin.webhook()
high_cpu_usage:
description: trigger
meter_name: cpu_util
condition:
constraint: utilization greater_than 60%
threshold: 60
period: 600
evaluations: 1
method: average
comparison_operator: gt
metadata: SG1
action: [SP1]
low_cpu_usage:
description: trigger
meter_name: cpu_util
condition:
constraint: utilization less_than 20%
threshold: 20
period: 600
evaluations: 1
method: average
comparison_operator: gt
metadata: SG1
action: [SP1]
- my_groups_placement:
type: mycompany.mytypes.myScalingPolicy
targets: [ webserver_group ]

View File

@ -1581,7 +1581,7 @@ heat-translator/master/translator/tests/data/custom_types/wordpress.yaml
lambda: Policy(name, policies[name], None, None))
self.assertEqual(expectedmessage, err.__str__())
def test_policy_trigger_valid_keyname(self):
def test_policy_trigger_valid_keyname_senlin_resources(self):
tpl_snippet = '''
triggers:
- resize_compute:
@ -1610,7 +1610,28 @@ heat-translator/master/translator/tests/data/custom_types/wordpress.yaml
name = list(triggers.keys())[0]
Triggers(name, triggers[name])
def test_policy_trigger_invalid_keyname(self):
def test_policy_trigger_valid_keyname_heat_resources(self):
tpl_snippet = '''
triggers:
- high_cpu_usage:
description: trigger
meter_name: cpu_util
condition:
constraint: utilization greater_than 60%
threshold: 60
period: 600
evaluations: 1
method: average
comparison_operator: gt
metadata: SG1
action: [SP1]
'''
triggers = (toscaparser.utils.yamlparser.
simple_parse(tpl_snippet))['triggers'][0]
name = list(triggers.keys())[0]
Triggers(name, triggers[name])
def test_policy_trigger_invalid_keyname_senlin_resources(self):
tpl_snippet = '''
triggers:
- resize_compute:
@ -1646,6 +1667,34 @@ heat-translator/master/translator/tests/data/custom_types/wordpress.yaml
lambda: Triggers(name, triggers[name]))
self.assertEqual(expectedmessage, err.__str__())
def test_policy_trigger_invalid_keyname_heat_resources(self):
tpl_snippet = '''
triggers:
- high_cpu_usage:
description: trigger
meter_name: cpu_util
condition:
constraint: utilization greater_than 60%
threshold: 60
period: 600
evaluations: 1
method: average
comparison_operator: gt
metadata1: SG1
action: [SP1]
'''
triggers = (toscaparser.utils.yamlparser.
simple_parse(tpl_snippet))['triggers'][0]
name = list(triggers.keys())[0]
expectedmessage = _(
'Triggers "high_cpu_usage" contains unknown field '
'"metadata1". Refer to the definition '
'to verify valid values.')
err = self.assertRaises(
exception.UnknownFieldError,
lambda: Triggers(name, triggers[name]))
self.assertEqual(expectedmessage, err.__str__())
def test_policy_missing_required_keyname(self):
tpl_snippet = '''
policies:

View File

@ -18,12 +18,13 @@ from toscaparser.common.exception import UnknownFieldError
from toscaparser.entity_template import EntityTemplate
from toscaparser.utils import validateutils
SECTIONS = (DESCRIPTION, EVENT, SCHEDULE, TARGET_FILTER, CONDITION, ACTION) = \
('description', 'event_type', 'schedule',
'target_filter', 'condition', 'action')
CONDITION_KEYNAMES = (METER_NAME, CONSTRAINT, PERIOD, EVALUATIONS, METHOD,
SECTIONS = (DESCRIPTION, EVENT, SCHEDULE, METER_NAME, METADATA,
TARGET_FILTER, CONDITION, ACTION) = \
('description', 'event_type', 'schedule', 'meter_name',
'metadata', 'target_filter', 'condition', 'action')
CONDITION_KEYNAMES = (CONSTRAINT, PERIOD, EVALUATIONS, METHOD,
THRESHOLD, COMPARISON_OPERATOR) = \
('meter_name', 'constraint', 'period', 'evaluations',
('constraint', 'period', 'evaluations',
'method', 'threshold', 'comparison_operator')
log = logging.getLogger('tosca')