TOSCA-Parser

Parser for TOSCA Simple Profile in YAML.

Overview
The TOSCA Parser is an OpenStack project and licensed under Apache 2. It is developed to parse TOSCA Simple Profile in YAML. It reads the TOSCA templates and creates an in-memory graph of TOSCA nodes and their relationship.

Architecture
The TOSCA Parser takes TOSCA YAML template as an input, with optional input of dictionary of needed parameters with their values, and produces in-memory objects of different TOSCA elements with their relationship to each other. It also creates a graph of TOSCA node templates and their relationship. The support for parsing template within TOSCA CSAR is under development.

The ToscaTemplate class located in the toscaparser/tosca_template.py is an entry class of the parser and various functionality of parser can be used by initiating this class. In order to see an example usage, refer to the heat-translator class TranslateTemplate located in the translator/osc/v1/translate.py module.

The toscaparser/elements sub-directory contains various modules to handle various TOSCA type elements like node type, relationship type etc. The entity_type.py module is a parent of all type elements. The toscaparser directory contains various python module to handle service template including topology template, node templates, relationship templates etc. The entity_template.py is a parent of all template elements.

Repositories
https://github.com/openstack/tosca-parser

Development Meetings
The development team meets every Thursday at 1600UTC on IRC #openstack-heat-translator channel. Since the heat-translator and tosca-parser projects development team works closely, there is no separate IRC channel for TOSCA-Parser.

Launchpad
https://launchpad.net/tosca-parser

IRC Channel
The IRC channel is #openstack-heat-translator

Enhancements made under 0.3.0 release
Support for nested imports – allows use of importing type definition within a type definition.

Full validation of TOSCA template – until now we were throwing error as we hit but with full validation all errors are compiled and displayed together. This will be used in heat-translator to allow user to provide an option to only validate template without actual translation.

A new test shell entry point – a new shell command, tosca-parser, is created for testing and validating TOSCA templates.

Support for .csar file extension – now both .zip and .csar extensions are supported for a CSAR file

Many small fixes –

Remove decompressed temporary directory after processing CSAR file in Jenkin’s environment.

Update trove classifier.

The tosca-parser project is added to OpenStack global requirements to automatically update requirements.

TOSCA definition update for admin and public endpoint, and PortSpec type per the latest spec.

New missing validation and i18n fixes.

Updated error messages for uniform formatting across the project.

Targeted work items for 0..4.0 release
Add support for TOSCA policies, https://blueprints.launchpad.net/tosca-parser/+spec/tosca-policies

Add support for TOSCA group and group types, https://blueprints.launchpad.net/tosca-parser/+spec/tosca-groups

TOSCA-Parser extensions support with initial support for TOSCA NFV profile

Bug Fixes

Enhancements made under 0.4.0 release
Initial support for TOSCA Simple Profile for Network Functions Virtualization (NFV) v1.0

Support for TOSCA Groups and Group Type

Initial support for TOSCA Policy and Policy Types

Support for TOSCA Namespaces

Many bug fixes and minor enhancements including:

-Fix for proper inheritance among types and custom relationships based on it

-Updated min and max length with map

-New get_property function for HOST properties similar to get_attribute function

-Updated datatype_definition

-Support for nested properties

-Fix for incorrect inheritance in properties of capabilities

-High level validation of imported template types

-Six compatibility for urllib

-Test updates

-Documentation updates

Targeted work items for 0.5.0 release
Add support for TOSCA LoadBalacer, https://blueprints.launchpad.net/tosca-parser/+spec/tosca-load-balancer

Add support for TOSCA Containers, https://blueprints.launchpad.net/tosca-parser/+spec/tosca-container-suppot

Add support for range data type

Bug Fixes

Enhancements made under 0.5.0 release
Support for LoadBalancer node parsing

Support of parsing triggers in policies

Implementation of PortSpec datatype

Support for range data type

Support for concat function

Support for SOURCE and TARGET in get_property and get_attribute function

Bug fixes

Doc update

Enhancements made under 0.6.0 release
Python 3.5 support

Support for TOSCA Repository which is an external repository in TOSCA service template containing deployment and implementation artifacts

Implementation of triggers in policies

Support for Credential data type

Support for Token function

get_attribute function support for optional requirement or capability

Refactoring of TOSCA definition file for easy reuse

Added new exception UnsupportedType to handle TOSCA types that are not supported in parser at any given time

New test template for Container node type

NFV definition updates for NFV.CP and NFV.VNFFG

Moved to use urllib2 from urllib to use with input templates specified via URL

Requirements updates

Small bug fixes