summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshangxdy <shang.xiaodong@zte.com.cn>2017-09-01 15:16:00 +0800
committershangxdy <shang.xiaodong@zte.com.cn>2017-09-05 10:50:24 +0800
commitf416d7ba961edddfd956b556ed6566bf48824bf5 (patch)
tree52191de4969ab1ab868aa7480285798448a7b09e
parent6eac11f48f8b664af928620bf2661987aa318725 (diff)
Support version of tosca_simple_yaml_1_1
Currently tosca-parser only support tosca_version_1_0, this patch will enable it to support tosca_version_1_1. This requirement is from ONAP, but not need to submit to OpenStack currently JIRA:PARSER-146 Change-Id: If1bc470e3f2d18a606b312425241f27be33b65b4 Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
-rw-r--r--tosca2heat/tosca-parser/toscaparser/elements/tosca_type_validation.py3
-rw-r--r--tosca2heat/tosca-parser/toscaparser/tests/data/tosca_helloworld_with_version_1_1.yaml23
-rw-r--r--tosca2heat/tosca-parser/toscaparser/tests/test_toscatpl.py11
-rw-r--r--tosca2heat/tosca-parser/toscaparser/tests/test_toscatplvalidation.py1
-rw-r--r--tosca2heat/tosca-parser/toscaparser/tosca_template.py9
5 files changed, 43 insertions, 4 deletions
diff --git a/tosca2heat/tosca-parser/toscaparser/elements/tosca_type_validation.py b/tosca2heat/tosca-parser/toscaparser/elements/tosca_type_validation.py
index 45b924b..89a6a03 100644
--- a/tosca2heat/tosca-parser/toscaparser/elements/tosca_type_validation.py
+++ b/tosca2heat/tosca-parser/toscaparser/elements/tosca_type_validation.py
@@ -29,7 +29,8 @@ class TypeValidation(object):
'data_types', 'artifact_types', 'group_types',
'relationship_types', 'capability_types',
'interface_types', 'policy_types', 'topology_template', 'metadata')
- VALID_TEMPLATE_VERSIONS = ['tosca_simple_yaml_1_0']
+ VALID_TEMPLATE_VERSIONS = ['tosca_simple_yaml_1_0',
+ 'tosca_simple_yaml_1_1']
exttools = ExtTools()
VALID_TEMPLATE_VERSIONS.extend(exttools.get_versions())
diff --git a/tosca2heat/tosca-parser/toscaparser/tests/data/tosca_helloworld_with_version_1_1.yaml b/tosca2heat/tosca-parser/toscaparser/tests/data/tosca_helloworld_with_version_1_1.yaml
new file mode 100644
index 0000000..eeb5f7b
--- /dev/null
+++ b/tosca2heat/tosca-parser/toscaparser/tests/data/tosca_helloworld_with_version_1_1.yaml
@@ -0,0 +1,23 @@
+tosca_definitions_version: tosca_simple_yaml_1_1
+
+description: Template for deploying a single server with predefined properties.
+
+topology_template:
+ node_templates:
+ my_server:
+ type: tosca.nodes.Compute
+ capabilities:
+ # Host container properties
+ host:
+ properties:
+ num_cpus: 2
+ disk_size: 10 GB
+ mem_size: 512 MB
+ # Guest Operating System properties
+ os:
+ properties:
+ # host Operating System image properties
+ architecture: x86_64
+ type: Linux
+ distribution: RHEL
+ version: 6.5
diff --git a/tosca2heat/tosca-parser/toscaparser/tests/test_toscatpl.py b/tosca2heat/tosca-parser/toscaparser/tests/test_toscatpl.py
index 69dfb46..fd8ee90 100644
--- a/tosca2heat/tosca-parser/toscaparser/tests/test_toscatpl.py
+++ b/tosca2heat/tosca-parser/toscaparser/tests/test_toscatpl.py
@@ -666,6 +666,17 @@ class ToscaTemplateTest(TestCase):
self.assertEqual(tosca.version, "tosca_simple_yaml_1_0")
+ def test_yaml_dict_tpl_with_version_1_1(self):
+ test_tpl = os.path.join(
+ os.path.dirname(os.path.abspath(__file__)),
+ "data/tosca_helloworld_with_version_1_1.yaml")
+
+ yaml_dict_tpl = toscaparser.utils.yamlparser.load_yaml(test_tpl)
+
+ tosca = ToscaTemplate(yaml_dict_tpl=yaml_dict_tpl)
+
+ self.assertEqual(tosca.version, "tosca_simple_yaml_1_1")
+
def test_yaml_dict_tpl_with_params_and_url_import(self):
test_tpl = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
diff --git a/tosca2heat/tosca-parser/toscaparser/tests/test_toscatplvalidation.py b/tosca2heat/tosca-parser/toscaparser/tests/test_toscatplvalidation.py
index 2048a83..a8b1590 100644
--- a/tosca2heat/tosca-parser/toscaparser/tests/test_toscatplvalidation.py
+++ b/tosca2heat/tosca-parser/toscaparser/tests/test_toscatplvalidation.py
@@ -101,6 +101,7 @@ class ToscaTemplateValidationTest(TestCase):
_('The template version "tosca_simple_yaml_1_10 in '
'custom_types/imported_sample.yaml" is invalid. '
'Valid versions are "tosca_simple_yaml_1_0, '
+ 'tosca_simple_yaml_1_1, '
'tosca_simple_profile_for_nfv_1_0_0".'))
exception.ExceptionCollector.assertExceptionMessage(
exception.UnknownFieldError,
diff --git a/tosca2heat/tosca-parser/toscaparser/tosca_template.py b/tosca2heat/tosca-parser/toscaparser/tosca_template.py
index 3301999..ac534dc 100644
--- a/tosca2heat/tosca-parser/toscaparser/tosca_template.py
+++ b/tosca2heat/tosca-parser/toscaparser/tosca_template.py
@@ -56,11 +56,13 @@ YAML_LOADER = toscaparser.utils.yamlparser.load_yaml
class ToscaTemplate(object):
exttools = ExtTools()
- VALID_TEMPLATE_VERSIONS = ['tosca_simple_yaml_1_0']
+ VALID_TEMPLATE_VERSIONS = ['tosca_simple_yaml_1_0',
+ 'tosca_simple_yaml_1_1']
VALID_TEMPLATE_VERSIONS.extend(exttools.get_versions())
- ADDITIONAL_SECTIONS = {'tosca_simple_yaml_1_0': SPECIAL_SECTIONS}
+ ADDITIONAL_SECTIONS = {'tosca_simple_yaml_1_0': SPECIAL_SECTIONS,
+ 'tosca_simple_yaml_1_1': SPECIAL_SECTIONS}
ADDITIONAL_SECTIONS.update(exttools.get_sections())
@@ -272,7 +274,8 @@ class ToscaTemplate(object):
what=version,
valid_versions=', '. join(self.VALID_TEMPLATE_VERSIONS)))
else:
- if version != 'tosca_simple_yaml_1_0':
+ if (version != 'tosca_simple_yaml_1_0' and
+ version != 'tosca_simple_yaml_1_1'):
update_definitions(version)
def _get_path(self, path):