3 TOSCA Parsers


There are three TOSCA parsers submited into modeling project, their API are listed below:


1.  NFV Tosca Parser API: (Python Lib + CLI + REST API)      

         Implementation of nfv-toscaparser derived from openstack tosca parser is based on the following OASIS specification:

             TOSCA Simple Profile YAML 1.2 Referecne  http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/TOSCA-Simple-Profile-YAML-v1.2.html

             TOSCA Simple Profile YAML NFV 1.0 Referecne  http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/tosca-nfv-v1.0.html

                      Firstly, uninstall the previous verson of toscaparser  

                           pip uninstall -y tosca-parser

                      Then install nfv-toscaparser :

                           pip install --pre -U nfv-toscaparser 

        tosca-parser --template-file=<path to the YAML template>  [--nrpv]  [--debug]

        tosca-parser --template-file=<path to the CSAR zip file> [--nrpv]  [--debug]

        tosca-parser --template-file=<URL to the template or CSAR>  [--nrpv]  [--debug]

    options:

      --nrpv Ignore input parameter validation when parse template.

     --debug debug mode for print more details other than raise exceptions when errors happen

  tosca=ToscaTemplate(path=None, parsed_params=None, a_file=True, yaml_dict_tpl=None, 

                                          sub_mapped_node_template=None,

                                          no_required_paras_valid=False, debug=False )



2. Apache ARIA-TOSCA(Python + CLI + REST API):


Complete reference: http://ariatosca.incubator.apache.org/docs/html/index.html#


TOSCA Simple Profile 1.0 Referecne  http://ariatosca.incubator.apache.org/docs/html/aria_extension_tosca.simple_v1_0.html

TOSCA Simple Profile 1.0 NFV Referecne  http://ariatosca.incubator.apache.org/docs/html/aria_extension_tosca.simple_nfv_v1_0.html


Install ARIA from pypi

[root@localhost] # pip install apache-ariatosca


[root@488GTB ariatosca]$ aria --help
Usage: aria [OPTIONS] COMMAND [ARGS]...
ARIA's Command Line Interface.
To activate bash-completion run::
eval "$(_ARIA_COMPLETE=source aria)"
ARIA's working directory resides by default in "~/.aria". To change it,
set the environment variable ARIA_WORKDIR to something else (e.g.
"/tmp/").
Options:
-v, --verbose Show verbose output; you can supply this up to three times
(i.e. -vvv)
--version Display the version and exit
-h, --help Show this message and exit.
Commands:
executions Manage executions
logs Manage logs of workflow executions
node-templates Manages stored service templates' node...
nodes Manage services' nodes
plugins Manage plugins
reset Reset ARIA working directory
service-templates Manage service templates
services Manage services
workflows Manage service workflows




3. Java based Tosca Parser API: (Java)


    1. Java API
      The Java API is described in detail in the javadoc. The main classes are part of the package org.onap.tosca.checker. The entry point is the Checker class, the TOSCA service templates are represented by the Target class an the results of the processing are represented by Report (contains errors associated with a Target) and Catalog (if successful, i.e. empty report, contains an index of TOSCA constructs).
      Common usage:

      try {
        Catalog cat = Checker.check(uri_or_path_of_service_template);

        for (Target t: cat.targets()) {
          System.err.println(t.getLocation() + "\n" + t.getReport());
        }

      }

      catch (Exception x) {
        /* error handling */
      }


       The API offers options for custom TOSCA dialects (extended grammars), pluggable validation and consistency checking, different post-processing approaches.

    2. CLI tool
      The Maven based build assembles a 'all-in-one' jar (in the checker sub-project) with a convenient entry point for cli based validation:

          java -jar Checker-0.0.1-SNAPSHOT-jar-with-dependencies.jar path_to_service_template_file


    3. REST service
      The same functionality is offered as a REST-based service. The service sub-project assembles a spring framework based REST interface with a built in default configuration. The package is found in the  service sub-project. To start the service:

          java -jar Service-0.0.1-SNAPSHOT.jar

      Sample client usage (windows power shell):

          PS C:\Users\serban> Invoke-WebRequest -Uri http://localhost:8080/check_template/ -Method Post -ContentType application/json -InFile C:\src\asc-tosca\DCAE\v3\Database\Postgres-generic\schema.yaml

      or with stateful 'namespaces':

          PS C:\Users\serban> Invoke-WebRequest -Uri http://localhost:8080/check_template/database/schema.yaml -Method Post -ContentType application/json -InFile C:\src\asc-tosca\DCAE\v3\Database\Postgres-generic\schema.yaml

          PS C:\Users\serban> Invoke-WebRequest -Uri http://localhost:8080/check_template/database -Method Post -ContentType application/json -InFile C:\src\asc-tosca\DCAE\v3\Database\Postgres-generic\template_postgres.yaml

      The first call creates the 'database' namespace and registers the submitted template as 'schema.yaml'. The second call submits a template as part of the same namespace containing an import of schema.yaml (from the first call); this mechanism allows for validation of multiple service templates with the same schema/type system.

      For more details on the different REST API usages see the service sub-project documentation.