tosca_tpl = ('https://raw.githubusercontent.com/openstack/'
'tosca-parser/master/toscaparser/tests/data/'
'tosca_single_instance_wordpress.yaml')
- tosca = ToscaTemplate(tosca_tpl, None, False)
+ tosca = ToscaTemplate(tosca_tpl, a_file=False,
+ parsed_params={"db_name": "mysql",
+ "db_user": "mysql",
+ "db_root_pwd": "1234",
+ "db_pwd": "5678",
+ "db_port": 3306,
+ "cpus": 4})
self.assertTrue(tosca.topology_template.custom_defs)
def test_url_template_with_local_abspath_import(self):
tosca_tpl = ('https://raw.githubusercontent.com/openstack/'
'tosca-parser/master/toscaparser/tests/data/'
'tosca_single_instance_wordpress_with_url_import.yaml')
- tosca = ToscaTemplate(tosca_tpl, None, False)
+ tosca = ToscaTemplate(tosca_tpl, a_file=False,
+ parsed_params={"db_root_pwd": "1234"})
self.assertTrue(tosca.topology_template.custom_defs)
def test_csar_parsing_wordpress(self):
csar_archive = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
'data/CSAR/csar_wordpress.zip')
- self.assertTrue(ToscaTemplate(csar_archive))
+ self.assertTrue(ToscaTemplate(csar_archive,
+ parsed_params={"db_name": "mysql",
+ "db_user": "mysql",
+ "db_root_pwd": "1234",
+ "db_pwd": "5678",
+ "db_port": 3306,
+ "cpus": 4}))
def test_csar_parsing_elk_url_based(self):
csar_archive = ('https://github.com/openstack/tosca-parser/raw/master/'
'toscaparser/tests/data/CSAR/csar_elk.zip')
- self.assertTrue(ToscaTemplate(csar_archive, None, False))
+ self.assertTrue(ToscaTemplate(csar_archive, a_file=False,
+ parsed_params={"my_cpus": 4}))
def test_nested_imports_in_templates(self):
tosca_tpl = os.path.join(
tosca_tpl = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
"data/CSAR/csar_elk.csar")
- tosca = ToscaTemplate(tosca_tpl)
+ tosca = ToscaTemplate(tosca_tpl, parsed_params={"my_cpus": 2})
self.assertTrue(tosca.topology_template.custom_defs)
def test_available_rel_tpls(self):
tosca_tpl = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
"data/test_containers.yaml")
- ToscaTemplate(tosca_tpl)
+ ToscaTemplate(tosca_tpl, parsed_params={"mysql_root_pwd": "12345678"})
'verify valid values.'))
def test_inputs(self):
- tpl_snippet = '''
+ tpl_snippet1 = '''
inputs:
cpus:
type: integer
required: yes
status: supported
'''
- inputs = (toscaparser.utils.yamlparser.
- simple_parse(tpl_snippet)['inputs'])
- name, attrs = list(inputs.items())[0]
- input = Input(name, attrs)
- err = self.assertRaises(exception.UnknownFieldError, input.validate)
- self.assertEqual(_('Input "cpus" contains unknown field "constraint". '
- 'Refer to the definition to verify valid values.'),
- err.__str__())
+ tpl_snippet2 = '''
+ inputs:
+ cpus:
+ type: integer
+ description: Number of CPUs for the server.
+ constraints:
+ - valid_values: [ 1, 2, 4 ]
+ required: yes
+ status: supported
+ '''
+ inputs1 = (toscaparser.utils.yamlparser.
+ simple_parse(tpl_snippet1)['inputs'])
+ name1, attrs1 = list(inputs1.items())[0]
+ inputs2 = (toscaparser.utils.yamlparser.
+ simple_parse(tpl_snippet2)['inputs'])
+ name2, attrs2 = list(inputs2.items())[0]
+ try:
+ Input(name1, attrs1)
+ except Exception as err:
+ # err=self.assertRaises(exception.UnknownFieldError,
+ # input1.validate)
+ self.assertEqual(_('Input "cpus" contains unknown field '
+ '"constraint". Refer to the definition to '
+ 'verify valid values.'),
+ err.__str__())
+ input2 = Input(name2, attrs2)
+ self.assertTrue(input2.required)
def _imports_content_test(self, tpl_snippet, path, custom_type_def):
imports = (toscaparser.utils.yamlparser.
from toscaparser.tpl_relationship_graph import ToscaGraph
from toscaparser.utils.gettextutils import _
-
# Topology template key names
SECTIONS = (DESCRIPTION, INPUTS, NODE_TEMPLATES,
RELATIONSHIP_TEMPLATES, OUTPUTS, GROUPS,
default = input.default
if default:
input.validate(default)
+ if (self.parsed_params and input.name not in self.parsed_params
+ or self.parsed_params is None) and input.required \
+ and input.default is None:
+ exception.ExceptionCollector.appendException(
+ exception.MissingRequiredParameterError(
+ what='Template',
+ input_name=input.name))
+
inputs.append(input)
return inputs