Checks the type of the TopologyTemplate fields
Change-Id: Ia9140e45264e10dbd57759c6769ae41b2724d9ec Related-Bug: #1835505
This commit is contained in:
parent
048137e0b1
commit
076f09508d
@ -281,3 +281,103 @@ class TopologyTemplateTest(TestCase):
|
|||||||
lambda: ToscaTemplate(tpl_path))
|
lambda: ToscaTemplate(tpl_path))
|
||||||
exception.ExceptionCollector.assertExceptionMessage(
|
exception.ExceptionCollector.assertExceptionMessage(
|
||||||
KeyError, errormsg)
|
KeyError, errormsg)
|
||||||
|
|
||||||
|
def test_invalid_type_policies(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
policies:
|
||||||
|
some_policy:
|
||||||
|
type: tosca.policies.Placement
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('policies must be of type "list".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
|
||||||
|
def test_invalid_type_groups(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
groups:
|
||||||
|
- some_group:
|
||||||
|
type: tosca.groups.Root
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('groups must be of type "dict".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
|
||||||
|
def test_invalid_type_substitution_mappings(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
substitution_mappings:
|
||||||
|
- node_type: MyService
|
||||||
|
properties:
|
||||||
|
num_cpus: cpus
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('substitution_mappings must be of type "dict".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
|
||||||
|
def test_invalid_type_outputs(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
outputs:
|
||||||
|
- some_output:
|
||||||
|
value: some_value
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('outputs must be of type "dict".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
|
||||||
|
def test_invalid_type_relationship_templates(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
relationship_templates:
|
||||||
|
- my_connection:
|
||||||
|
type: ConnectsTo
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('relationship_templates must be of type "dict".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
|
||||||
|
def test_invalid_type_nodetemplates(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
node_templates:
|
||||||
|
- some_node:
|
||||||
|
type: tosca.nodes.Compute
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('node_templates must be of type "dict".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
|
||||||
|
def test_invalid_type_inputs(self):
|
||||||
|
tpl_snippet = '''
|
||||||
|
inputs:
|
||||||
|
- some_input:
|
||||||
|
type: integer
|
||||||
|
value: 1
|
||||||
|
'''
|
||||||
|
policies = (toscaparser.utils.yamlparser.simple_parse(tpl_snippet))
|
||||||
|
custom_defs = self._get_custom_types()
|
||||||
|
err = self.assertRaises(exception.TypeMismatchError,
|
||||||
|
lambda: TopologyTemplate(policies,
|
||||||
|
custom_defs))
|
||||||
|
errormsg = _('inputs must be of type "dict".')
|
||||||
|
self.assertEqual(errormsg, err.__str__())
|
||||||
|
@ -212,25 +212,55 @@ class TopologyTemplate(object):
|
|||||||
return description.rstrip()
|
return description.rstrip()
|
||||||
|
|
||||||
def _tpl_inputs(self):
|
def _tpl_inputs(self):
|
||||||
return self.tpl.get(INPUTS) or {}
|
inputs = self.tpl.get(INPUTS) or {}
|
||||||
|
if not isinstance(inputs, dict):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=INPUTS, type="dict"))
|
||||||
|
return inputs
|
||||||
|
|
||||||
def _tpl_nodetemplates(self):
|
def _tpl_nodetemplates(self):
|
||||||
return self.tpl.get(NODE_TEMPLATES)
|
nodetemplates = self.tpl.get(NODE_TEMPLATES)
|
||||||
|
if nodetemplates and not isinstance(nodetemplates, dict):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=NODE_TEMPLATES, type="dict"))
|
||||||
|
return nodetemplates
|
||||||
|
|
||||||
def _tpl_relationship_templates(self):
|
def _tpl_relationship_templates(self):
|
||||||
return self.tpl.get(RELATIONSHIP_TEMPLATES) or {}
|
relationship_templates = self.tpl.get(RELATIONSHIP_TEMPLATES) or {}
|
||||||
|
if not isinstance(relationship_templates, dict):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=RELATIONSHIP_TEMPLATES,
|
||||||
|
type="dict"))
|
||||||
|
return relationship_templates
|
||||||
|
|
||||||
def _tpl_outputs(self):
|
def _tpl_outputs(self):
|
||||||
return self.tpl.get(OUTPUTS) or {}
|
outputs = self.tpl.get(OUTPUTS) or {}
|
||||||
|
if not isinstance(outputs, dict):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=OUTPUTS, type="dict"))
|
||||||
|
return outputs
|
||||||
|
|
||||||
def _tpl_substitution_mappings(self):
|
def _tpl_substitution_mappings(self):
|
||||||
return self.tpl.get(SUBSTITUION_MAPPINGS) or {}
|
substitution_mappings = self.tpl.get(SUBSTITUION_MAPPINGS) or {}
|
||||||
|
if not isinstance(substitution_mappings, dict):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=SUBSTITUION_MAPPINGS,
|
||||||
|
type="dict"))
|
||||||
|
return substitution_mappings
|
||||||
|
|
||||||
def _tpl_groups(self):
|
def _tpl_groups(self):
|
||||||
return self.tpl.get(GROUPS) or {}
|
groups = self.tpl.get(GROUPS) or {}
|
||||||
|
if not isinstance(groups, dict):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=GROUPS, type="dict"))
|
||||||
|
return groups
|
||||||
|
|
||||||
def _tpl_policies(self):
|
def _tpl_policies(self):
|
||||||
return self.tpl.get(POLICIES) or {}
|
policies = self.tpl.get(POLICIES) or []
|
||||||
|
if not isinstance(policies, list):
|
||||||
|
exception.ExceptionCollector.appendException(
|
||||||
|
exception.TypeMismatchError(what=POLICIES, type="list"))
|
||||||
|
return policies
|
||||||
|
|
||||||
def _validate_field(self):
|
def _validate_field(self):
|
||||||
for name in self.tpl:
|
for name in self.tpl:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user