From f763149f87564d6dc4e0a605dbe5df720ffe4f9a Mon Sep 17 00:00:00 2001 From: MatthewLi Date: Mon, 25 Jan 2016 02:44:55 -0500 Subject: update parser document JIRA: PARSER-14 document format has been updated, this patch is to improve the document in parser project to satisfy the requirement of sphinx. Change-Id: I629fa84a1b0333e9b59c24cdf7444733f7b35582 Signed-off-by: MatthewLi --- docs/parser_docs/index.rst | 14 + docs/parser_docs/intro/intro.rst | 43 ++ .../tosca2heat/examples/Simple_RNC.yaml | 419 ++++++++++++++ .../tosca2heat/examples/Simple_RNC_definition.yaml | 264 +++++++++ .../examples/TOSCA_nfv_definition_1_0.yaml | 627 +++++++++++++++++++++ .../tosca2heat/image/vRNC_Definition.bmp | Bin 0 -> 165158 bytes .../parser_docs/tosca2heat/image/vRNC_Topology.bmp | Bin 0 -> 483126 bytes .../parser_docs/tosca2heat/parser_new_keywords.rst | 120 ++++ docs/parser_docs/tosca2heat/vRNC_tosca_intro.rst | 44 ++ docs/parser_docs/yang2tosca/clearwater_tosca.yaml | 151 +++++ docs/parser_docs/yang2tosca/yang2tosca.rst | 66 +++ 11 files changed, 1748 insertions(+) create mode 100644 docs/parser_docs/index.rst create mode 100644 docs/parser_docs/intro/intro.rst create mode 100644 docs/parser_docs/tosca2heat/examples/Simple_RNC.yaml create mode 100644 docs/parser_docs/tosca2heat/examples/Simple_RNC_definition.yaml create mode 100644 docs/parser_docs/tosca2heat/examples/TOSCA_nfv_definition_1_0.yaml create mode 100644 docs/parser_docs/tosca2heat/image/vRNC_Definition.bmp create mode 100644 docs/parser_docs/tosca2heat/image/vRNC_Topology.bmp create mode 100644 docs/parser_docs/tosca2heat/parser_new_keywords.rst create mode 100644 docs/parser_docs/tosca2heat/vRNC_tosca_intro.rst create mode 100644 docs/parser_docs/yang2tosca/clearwater_tosca.yaml create mode 100644 docs/parser_docs/yang2tosca/yang2tosca.rst (limited to 'docs/parser_docs') diff --git a/docs/parser_docs/index.rst b/docs/parser_docs/index.rst new file mode 100644 index 0000000..b08f31c --- /dev/null +++ b/docs/parser_docs/index.rst @@ -0,0 +1,14 @@ +******************** +Parser Project +******************** + +Contents: + +.. toctree:: + :numbered: + :maxdepth: 6 + + intro/intro.rst + yang2tosca/yang2tosca.rst + tosca2heat/parser_new_keywords.rst + tosca2heat/vRNC_tosca_intro.rst diff --git a/docs/parser_docs/intro/intro.rst b/docs/parser_docs/intro/intro.rst new file mode 100644 index 0000000..193315b --- /dev/null +++ b/docs/parser_docs/intro/intro.rst @@ -0,0 +1,43 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. +.. + http://creativecommons.org/licenses/by/3.0/legalcode + +============================ +Introduction of Parser Project +============================ + +In NFV, various templates (such as descriptors, records and so on) are utilized +to describe the deployment requirements (such as basic VM requirements – vCPU, +memory, storage, as well as the NFV acceleration management requirement such as +Huge Pages support, SR-IOV, NUMA affinity, DPDK support etc.), +the post-instaniation records (such as storage usage report, CPU performance +report etc.) or other purposes. However in order to make these templates +adaptable and feasible for purpose like deployment orchestration/automation, +certain tooling mechanism that provides template translation is necessary. + +Project Parser will help to provide such tooling mechanism, by parsing Telecom +operators’ descriptors/records into TOSCA/CAMP templates and then further +translate TOSCA/CAMP templates into certain common templates, which could be +used in IaaS orchestration projects like OpenStack Heat. + +For Release B, Parser offers the following capabilities: + +* Integration of Heat-Translator Liberty release code. (both heat in-tree code and standalone package are provided) + +* Yang2Tosca module which offers the capability to translate yang based +scriptors to tosca formate templates. Users could further use Heat-translator +module to translate this tosca template to Heat Orchestration template. +Yang2Tosca module could be installed seperately after user installed +OPNFV B release platform. + +* The "parser_new_keywords" document demonstrate a set of keywords concluded by +Parser team that need to be supported in tosca to heat translation. However +it should be noted that these keywords only serve as a roadmap. We will start +from Release C to indicate which specific set of keywords are supported in +Parser. + +* The "vRNC_tosca_intro" document describes Parser's use case analysis on vRNC scenario. +The "example" folder contains examples of tosca-nfv standard and vRNC scenario. +See also https://wiki.opnfv.org/parser. diff --git a/docs/parser_docs/tosca2heat/examples/Simple_RNC.yaml b/docs/parser_docs/tosca2heat/examples/Simple_RNC.yaml new file mode 100644 index 0000000..9f99c57 --- /dev/null +++ b/docs/parser_docs/tosca2heat/examples/Simple_RNC.yaml @@ -0,0 +1,419 @@ +# Required TOSCA Definitions version string +tosca_definitions_version: tosca_simple_yaml_1_0 + +metadata: + template_name: tosca_simple_profile_for_nfv + template_author: opnfv_parser_project + template_version: tosca_simple_profile_for_nfv_1_0 + +# Optional description of the definitions inside the file. +description: > + TOSCA simple profile for RNC + 1, Compute Node MM, CM, DM, LB... + 1.1 MM: MaintainModule; + 1.2 CM: Control Module; + 1.3 DM: Data Module; + 1.4 LB: LineCard Module + 2, Network Node VL and CP + +imports: + - Simple_RNC_definition.yaml + +# list of YAML alias anchors (or macros) +dsl_definitions: + compute_props_os_DEF: &compute_props_os_DEF + architecture: x86_64 + type: Linux + distribution: Ubuntu + version: 14.10 + + compute_props_host_MM: &compute_props_host_MM + disk_size: 80 GB + iops: 300 + num_cpus: 8 + mem_size: 8192 MB + swap: 512 MB + + compute_props_host_CM: &compute_props_host_CM + disk_size: 0 GB + num_cpus: 8 + mem_size: 8192 MB + + compute_props_host_DM: &compute_props_host_DM + disk_size: 0 GB + num_cpus: 8 + mem_size: 8192 MB + + compute_props_host_LB: &compute_props_host_LB + disk_size: 0 GB + num_cpus: 4 + mem_size: 8192 MB + +# topology template definition of the cloud application or service +topology_template: + # a description of the topology template + description: > + simple RNC template + + inputs: + mm_storage_size: + type: integer + default: 40 GB + description: mm additional block storage size + constraints: + - valid_values: [ 10, 20, 40, 80 ] + + substitution_mappings: + type: rnc.nodes.VNF + properties: + vnfmtype: RADIO + + # definition of the node templates of the topology + node_templates: + MM_Active: + type: rnc.nodes.compute.MM + properties: + activestatus: 1 + requirements: + - host: MM_Active_Host + - high_availability: MM_Passive + artifacts: + #the VM image of MM + vm_image: mm.image + interfaces: + Standard: + create: + implementation: mm_install.sh + configure: + implementation: mm_active_configure.sh + + MM_Passive: + type: rnc.nodes.compute.MM + properties: + activestatus: 0 + requirements: + - host: MM_Passive_Host + - high_availability: MM_Active + artifacts: + #the VM image of MM + vm_image: mm.image + interfaces: + Standard: + create: + implementation: mm_install.sh + configure: + implementation: mm_passvie_configure.sh + + MM_Active_Host: + type: rnc.nodes.compute.MM_Host + capabilities: + os: + properties: *compute_props_os_DEF + host: + properties: *compute_props_host_MM + requirements: + - local_storage: + node: MM_BlockStorage + relationship: Storage_attachesto + attributes: + ip_address: { get_attribute: [ SELF, private_address ] } + + MM_Passive_Host: + type: rnc.nodes.compute.MM_Host + copy: MM_Active_Host + + CM_Active: + type: rnc.nodes.compute.CM + properties: + activestatus: 1 + requirements: + - host: CM_Active_Host + - high_availability: CM_Passive + artifacts: + #the VM image of CM + vm_image: cm.image + interfaces: + Standard: + create: + implementation: cm_install.sh + configure: + implementation: cm_active_configure.sh + + CM_Passive: + type: rnc.nodes.compute.CM + properties: + activestatus: 0 + requirements: + - host: CM_Passive_Host + - high_availability: CM_Active + artifacts: + #the VM image of CM + vm_image: mm.image + interfaces: + Standard: + create: + implementation: cm_install.sh + configure: + implementation: cm_passvie_configure.sh + + CM_Active_Host: + type: rnc.nodes.compute.CM_Host + capabilities: + os: + properties: *compute_props_os_DEF + host: + properties: *compute_props_host_CM + scalable: + properties: + min_instances: 1 + max_instances: 126 + default_instances: 1 + attributes: + ip_address: { get_attribute: [ SELF, private_address ] } + + CM_Passive_Host: + type: rnc.nodes.compute.MM_Host + copy: CM_Active_Host + + DM: + type: rnc.nodes.compute.DM + requirements: + - host: DM_Host + artifacts: + vm_image: dm.image + interfaces: + Standard: + create: + implementation: dm_install.sh + configure: + implementation: dm_configure.sh + + DM_Host: + type: rnc.nodes.compute.DM_Host + capabilities: + os: + properties: *compute_props_os_DEF + host: + properties: *compute_props_host_DM + scalable: + properties: + min_instances: 1 + max_instances: 120 + default_instances: 1 + attributes: + ip_address: { get_attribute: [ SELF, private_address ] } + + LB: + type: rnc.nodes.compute.LB + requirements: + - host: LB_Host + artifacts: + #the VM image of LB + vm_image: lb.image + interfaces: + Standard: + create: + implementation: lb_install.sh + configure: + implementation: lb_configure.sh + + LB_Host: + type: rnc.nodes.compute.LB_Host + capabilities: + os: + properties: *compute_props_os_DEF + host: + properties: *compute_props_host_LB + scalable: + properties: + min_instances: 1 + max_instances: 20 + default_instances: 1 + attributes: + ip_address: { get_attribute: [ SELF, private_address ] } + + MM_BlockStorage: + type: rnc.nodes.BlockStorage + properties: + size: { get_input: mm_storage_size } + interfaces: + Configure: + post_configure_target: + implementation: default_script.sh + + CTRL_NetWork: + type: rnc.nodes.VL + properties: + vendor: "zte" + cidr: "128.0.0.0/8" + network_name: net1 + dhcp_enabled: false + + INTERMEDIA_NetWork: + type: rnc.nodes.VL + properties: + vendor: "zte" + cidr: "10.0.0.0/8" + network_name: net3 + dhcp_enabled: true + + EXTERMEDIA_NetWork: + type: rnc.nodes.VL + properties: + vendor: "zte" + cidr: "172.1.0.0/20" + network_name: net2 + dhcp_enabled: true + + EMS_NetWork: + type: rnc.nodes.VL + properties: + vendor: "zte" + cidr: "129.0.0.0/8" + network_name: net2 + dhcp_enabled: true + + MM_Port_EMS: + type: rnc.nodes.CP + properties: + order: 1 + is_default: true + requirements: + - virtualbinding: MM_Active + - virtualLink: EMS_NetWork + + MM_Port_CTRL: + type: rnc.nodes.CP + properties: + order: 0 + is_default: true + requirements: + - virtualbinding: MM_Active + - virtualLink: CTRL_NetWork + + MM_Port_EXTERMEDIA: + type: rnc.nodes.CP + properties: + order: 2 + is_default: true + requirements: + - virtualbinding: MM_Active + - virtualLink: EXTERMEDIA_NetWork + + CM_Port_CTRL: + type: rnc.nodes.CP + properties: + order: 0 + is_default: true + requirements: + - virtualbinding: CM_Active + - virtualLink: CTRL_NetWork + + CM_Port_INTERMEDIA: + type: rnc.nodes.CP + properties: + order: 1 + is_default: false + requirements: + - virtualbinding: CM_Active + - virtualLink: INTERMEDIA_NetWork + + DM_Port_CTRL: + type: rnc.nodes.CP + properties: + order: 0 + is_default: true + requirements: + - virtualbinding: DM + - virtualLink: CTRL_NetWork + + DM_Port_INTERMEDIA: + type: rnc.nodes.CP + properties: + order: 1 + is_default: false + requirements: + - virtualbinding: DM + - virtualLink: INTERMEDIA_NetWork + + LB_Port_CTRL: + type: rnc.nodes.CP + properties: + order: 0 + is_default: true + requirements: + - virtualbinding: LB + - virtualLink: CTRL_NetWork + + LB_Port_INTERMEDIA: + type: rnc.nodes.CP + properties: + order: 1 + is_default: false + requirements: + - virtualbinding: LB + - virtualLink: INTERMEDIA_NetWork + + LB_Port_EXTERMEDIA: + type: rnc.nodes.CP + properties: + order: 2 + is_default: false + requirements: + - virtualbinding: LB + - virtualLink: EXTERMEDIA_NetWork + + # definition of the relationship templates of the topology + relationship_templates: + Storage_attachesto: + type: tosca.relationships.AttachesTo + properties: + location: /data_location + + # definition of output parameters for the topology template + outputs: + private_ip_of_MM: + description: The private IP address of the MM. + value: { get_attribute: [ MM_Active_Host, ip_address ] } + + private_ip_of_CM: + description: The private IP address of the CM. + value: { get_attribute: [ CM_Active_Host, ip_address ] } + + private_ip_of_DM: + description: The private IP address of the DM. + value: { get_attribute: [ DM_Host, ip_address ] } + + private_ip_of_LB: + description: The private IP address of the LB. + value: { get_attribute: [ LB_Host, ip_address ] } + + # definition of logical groups of node templates within the topology + # To be continue about this section + groups: + ServerGroupAnitAffinity: # + description: Logical component grouping for placement + members: [ MM_Acitve, MM_Passive, CM_Acitve, CM_Passive, LB ] + policies: + type: tosca.policy.placement.Antilocate + + # ServerGroupAffinity: # + # members: [ CM, DM ] + # policies: + # type: tosca.policy.placement.Antilocate + + # ServerGroupScaling_DM: # added future + # members: [ DM, ]# only one, will be error + # policies: + # - name: MyScaleUpPolicy + # - type: tosca.policy.scale.up | tosca.policy.scale.down + # - rule: fn.utilizaton [ DM ], greater_than: 80 + # - trigger: script_dm + + # ServerGroupScaling_LB: # added future + # members: [ LB, ] # only one, will be error + # policies: + # - name: MyScaleUpPolicy + # - type: tosca.policy.scale.up | tosca.policy.scale.down + # - rule: fn.utilizaton [ LB ], greater_than: 80 + # - trigger: script_lb diff --git a/docs/parser_docs/tosca2heat/examples/Simple_RNC_definition.yaml b/docs/parser_docs/tosca2heat/examples/Simple_RNC_definition.yaml new file mode 100644 index 0000000..921da0d --- /dev/null +++ b/docs/parser_docs/tosca2heat/examples/Simple_RNC_definition.yaml @@ -0,0 +1,264 @@ +# Required TOSCA Definitions version string +tosca_definitions_version: tosca_simple_yaml_1_0 + +metadata: + template_name: tosca_simple_profile_for_nfv + template_author: opnfv_parser_project + template_version: tosca_simple_profile_for_nfv_1_0 + +# Optional description of the definitions inside the file. +description: > + NFV TOSCA simple profile for RNC types + 1, Compute Node MM, CM, DM, LB... + 1.1 MM: MaintainModule; + 1.2 CM: Control Module; + 1.3 DM: Data Module; + 1.4 LB: LineCard Module + 2, Network Node VL and CP + +imports: + - TOSCA_nfv_definition_1_0.yaml + +# list of node type definitions +node_types: + rnc.nodes.VNF: + derived_from: tosca.nodes.nfv.VNF + properties: + vnftype: + type: string + description: type of the vnf + default: UMTS + required: false + constraints: + - valid_values: [ TD, UMTS ] + requirements: + - virtualLink_VNFM: + capability: tosca.capabilities.nfv.VirtualLinkable + - virtualLink_EMS: + capability: tosca.capabilities.nfv.VirtualLinkable + - virtualLink_TRAFFIC: + capability: tosca.capabilities.nfv.VirtualLinkable + + rnc.nodes.compute.MM: + derived_from: tosca.nodes.nfv.VDU + properties: + activestatus: + type: integer + description: active or passive + constraints: + # 1 active, 0 passive + - valid_values: [ 0, 1 ] + id: + type: string + defaule: MM + description: > + A identifier of this VDU within the scope of the VNFD, + including version functional description and other + identification information. + requirements: + - host: + capability: tosca.capabilities.Container + node: rnc.nodes.compute.MM_Host + relationship: tosca.relationships.HostedOn + + rnc.nodes.compute.MM_Host: + derived_from: tosca.nodes.Compute + capabilities: + binding: + type: tosca.capabilities.network.Bindable + os: + type: tosca.capabilities.OperatingSystem + scalable: + type: tosca.capabilities.Scalable + host: + type: rnc.capabilities.Container + valid_source_types: [ tosca.nodes.SoftwareComponent ] + storage: + type: tosca.capabilities.nfv.Storage + valid_source_types: [ tosca.nodes.SoftwareComponent ] + attributes: + ip_address: + type: string + + rnc.nodes.compute.CM: + derived_from: tosca.nodes.nfv.VDU + properties: + activestatus: + type: integer + description: 1 for active or 0 for passive + constraints: + # 1 active, 0 passive + - valid_values: [ 0, 1 ] + requirements: + - host: + capability: tosca.capabilities.Container + node: rnc.nodes.compute.CM_Host + relationship: tosca.relationships.HostedOn + + rnc.nodes.compute.CM_Host: + derived_from: tosca.nodes.Compute + capabilities: + binding: + type: tosca.capabilities.network.Bindable + os: + type: tosca.capabilities.OperatingSystem + scalable: + type: tosca.capabilities.Scalable + host: + type: rnc.capabilities.Container + valid_source_types: [ tosca.nodes.SoftwareComponent ] + cpu_extension: + type: tosca.capabilities.nfv.CPU_extension + valid_source_types: [ tosca.nodes.SoftwareComponent ] + memory_extension: + type: tosca.capabilities.nfv.Memory_extension + valid_source_types: [ tosca.nodes.SoftwareComponent ] + hypervisors: + type: tosca.capabilities.nfv.Hypervisors + valid_source_types: [ tosca.nodes.SoftwareComponent ] + PCIe: + type: tosca.capabilities.nfv.PCIe + valid_source_types: [ tosca.nodes.SoftwareComponent ] + interfaces: + type: tosca.capabilities.nfv.network.Interfaces + valid_source_types: [ tosca.nodes.SoftwareComponent ] + virtual_switches: + type: tosca.capabilities.nfv.network.Virtual_switches + valid_source_types: [ tosca.nodes.SoftwareComponent ] + attributes: + ip_address: + type: string + + rnc.nodes.compute.DM: + derived_from: tosca.nodes.nfv.VDU + requirements: + - host: + capability: tosca.capabilities.Container + node: rnc.nodes.compute.DM_Host + relationship: tosca.relationships.HostedOn + + rnc.nodes.compute.DM_Host: + derived_from: tosca.nodes.Compute + capabilities: + binding: + type: tosca.capabilities.network.Bindable + os: + type: tosca.capabilities.OperatingSystem + scalable: + type: tosca.capabilities.Scalable + host: + type: rnc.capabilities.Container + valid_source_types: [ tosca.nodes.SoftwareComponent ] + cpu_extension: + type: tosca.capabilities.nfv.CPU_extension + valid_source_types: [ tosca.nodes.SoftwareComponent ] + memory_extension: + type: tosca.capabilities.nfv.Memory_extension + valid_source_types: [ tosca.nodes.SoftwareComponent ] + hypervisors: + type: tosca.capabilities.nfv.Hypervisors + valid_source_types: [ tosca.nodes.SoftwareComponent ] + PCIe: + type: tosca.capabilities.nfv.PCIe + valid_source_types: [ tosca.nodes.SoftwareComponent ] + interfaces: + type: tosca.capabilities.nfv.network.Interfaces + valid_source_types: [ tosca.nodes.SoftwareComponent ] + virtual_switches: + type: tosca.capabilities.nfv.network.Virtual_switches + valid_source_types: [ tosca.nodes.SoftwareComponent ] + attributes: + ip_address: + type: string + + rnc.nodes.compute.LB: + derived_from: tosca.nodes.nfv.VDU + requirements: + - host: + capability: tosca.capabilities.Container + node: rnc.nodes.compute.LB_Host + relationship: tosca.relationships.HostedOn + + rnc.nodes.compute.LB_Host: + derived_from: tosca.nodes.Compute + capabilities: + binding: + type: tosca.capabilities.network.Bindable + os: + type: tosca.capabilities.OperatingSystem + scalable: + type: tosca.capabilities.Scalable + host: + type: rnc.capabilities.Container + valid_source_types: [ tosca.nodes.SoftwareComponent ] + interfaces: + type: tosca.capabilities.nfv.network.Interfaces + valid_source_types: [ tosca.nodes.SoftwareComponent ] + virtual_switches: + type: tosca.capabilities.nfv.network.Virtual_switches + valid_source_types: [ tosca.nodes.SoftwareComponent ] + attributes: + ip_address: + type: string + + rnc.nodes.BlockStorage: + derived_from: tosca.nodes.BlockStorage + + rnc.nodes.VL: + derived_from: tosca.nodes.nfv.VL.ELAN + properties: + ip_version: + type: integer + required: false + default: 4 + constraints: + - valid_values: [ 4, 6 ] + cidr: + type: string + required: false + network_name: + type: string + required: false + dhcp_enabled: + type: boolean + required: false + default: true + description: > + Indicates should DHCP service be enabled on the network or not. + + rnc.nodes.CP: + derived_from: tosca.nodes.nfv.CP + properties: + ip_address: + type: string + required: false + order: + type: integer + required: true + default: 0 + constraints: + - greater_or_equal: 0 + is_default: + type: boolean + required: false + default: false + +# list of capability type definitions +capability_types: + rnc.capabilities.Container: + derived_from: tosca.capabilities.Container + properties: + swap: + type: scalar-unit.size + description: swap info + required: false + default: 0 + constraints: + - greater_or_equal: 0 MB + iops: + type: integer + description: IOPS for disk + required: false + default: 0 + constraints: + - greater_than: 0 diff --git a/docs/parser_docs/tosca2heat/examples/TOSCA_nfv_definition_1_0.yaml b/docs/parser_docs/tosca2heat/examples/TOSCA_nfv_definition_1_0.yaml new file mode 100644 index 0000000..432cee5 --- /dev/null +++ b/docs/parser_docs/tosca2heat/examples/TOSCA_nfv_definition_1_0.yaml @@ -0,0 +1,627 @@ +# Licensed :under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +########################################################################### +# The content of this file reflects TOSCA nfv Profile in YAML version +# 1.0.0, which is derived from TOSCA Simple Profile. It describes the +# definition for nfv TOSCA types including Node Type, +# Relationship Type, Capability Type and Interfaces. +########################################################################### +tosca_definitions_version: tosca_simple_yaml_1_0 + +metadata: + template_name: tosca_simple_profile_for_nfv + template_author: opnfv_parser_project + template_version: tosca_simple_profile_for_nfv_1_0 + +########################################################################### +# Node Type. +# A Node Type is a reusable entity that defines the type of one or more +# Node Templates. +########################################################################### +node_types: + tosca.nodes.nfv.VNF: + derived_from: tosca.nodes.Root + properties: + id: + type: string + description: ID of this VNF + vendor: + type: string + description: name of the vendor which provides this VNF + version: + type: version + description: version of the software for this VNF + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + + tosca.nodes.nfv.VDU: + derived_from: tosca.nodes.SoftwareComponent + properties: + id: + type: string + required: true + description: > + A unique identifier of this VDU within the scope + of the VNFD, including version functional + description and other identification information. + This will be used to refer to VDU when defining + relationships between them. + capabilities: + high_availability: + type: tosca.capabilities.nfv.HA + virtualbinding: + type: tosca.capabilities.nfv.VirtualBindable + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + requirements: + - high_availability: + capability: tosca.capabilities.nfv.HA + relationship: tosca.relationships.nfv.HA + occurrences: [ 0, 1 ] + - host: + capability: tosca.capabilities.Container + node: tosca.nodes.Compute + relationship: tosca.relationships.HostedOn + + tosca.nodes.nfv.CP: + derived_from: tosca.nodes.Root + properties: + type: + type: string + required: false + attributes: + IP_address: + type: string + required: false + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + - virtualbinding: + capability: tosca.capabilities.nfv.Virtualbindable + + tosca.nodes.nfv.VL: + derived_from: tosca.nodes.Root + properties: + vendor: + type: string + required: true + description: name of the vendor who generate this VL + capabilities: + virtual_linkable: + type: tosca.capabilities.nfv.VirtualLinkable + + tosca.nodes.nfv.VL.ELine: + derived_from: tosca.nodes.nfv.VL + capabilities: + virtual_linkable: + occurrences: 2 + + tosca.nodes.nfv.VL.ELAN: + derived_from: tosca.nodes.nfv.VL + + tosca.nodes.nfv.VL.ETree: + derived_from: tosca.nodes.nfv.VL + + tosca.nodes.nfv.FP: + derived_from: tosca.nodes.Root + properties: + policy: + type: string + required: false + description: name of the vendor who generate this VL + requirements: + - forwarder: + capability: tosca.capabilities.nfv.Forwarder + +########################################################################## +# Capability Type. +# A Capability Type is a reusable entity that describes a kind of +# capability that a Node Type can declare to expose. +########################################################################## +capability_types: + tosca.capabilities.nfv.VirtualBindable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.HA: + derived_from: tosca.capabilities.Root + valid_source_types: [ tosca.nodes.nfv.VDU ] + + tosca.capabilities.nfv.HA.ActiveActive: + derived_from: tosca.capabilities.nfv.HA + + tosca.capabilities.nfv.HA.ActivePassive: + derived_from: tosca.capabilities.nfv.HA + + tosca.capabilities.nfv.Metric: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.Forwarder: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.VirtualLinkable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.CPU_extension: + derived_from: tosca.capabilities.Root + properties: + cpu_instruction_set_extension: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + Instruction sets are often enhanced with + instruction set extensions. This element + represents instruction set extensions that the + VDU has been developed, optimized or tested with + cpu_model: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The CPU model for which the VDU has been + developed, compiled with CPU model specific + optimisations, optimized or validated on. + cpu_model_specification_binding: + type: string + required: false + description: > + VDUs may be developed, compiled, optimized + or validated on particular CPU models. Some + deployments may wish to permit the VDU to + be deployed on a platform with the specified + CPU only, or with an alternative CPU with the + same architecture, instruction set, and if + specified, instruction set extensions, or with a + CPU of equivalent or greater capability. + cpu_min_clock_speed: + type: string + required: false + description: > + The minimum CPU clock speed may be one of + the elements that the development and + validation of the VDU has been considered + with. This may be in conjunction with some of + the other CPU elements such as CPU Model. + Requiring a minimum clock speed may be part + of a deployment requirement necessary to + help ensure particular performance or timing + related characteristics are met in the + deployment. + cpu_core_reservation: + type: string + required: false + description: > + The number of CPU cores allocated to the + VDU. This may be necessary to help ensure + particular performance or timing related + characteristics are met in the deployment. + cpu_simultaneous_multi_threading_hw_thread_specification: + type: string + required: false + description: > + The use of Simultaneous Multi-Threading HW + is an efficient way to increase the compute + capacity of a platform. SMT HW threads share + some CPU core resources. In some VDU + implementations, it may be necessary to very + explicitly control the HW thread allocation on a + platform. This could be to help ensure locality + in data caches or as a mechanism to enhance + determinism. + cpu_core_oversubscription_policy: + type: string + required: false + description: > + The VDU may co-exist on a platform with + multiple VDUs or VMs and as such will be + sharing CPU core resources available in the + platform. It may be necessary to specify the + CPU core oversubscription policy in terms of + virtual cores to physical cores/threads on the + platform. This policy could be based on + required VDU deployment characteristics such + as high performance, low latency, and /or + deterministic behaviour. + cpu_core_and_hw_thread_allocation_topology_policy: + type: string + required: false + description: > + The VDU may be designed to use a specific + mapping of virtual CPUs to HW threads or + cores with a specific allocation topology in + order to ensure locality in data caches and + maximize performance. The VDU will not + specify which physical resources to use, but + may specify if virtual CPUs shall be coupled + together as HW threads belonging to the same + core, or as belonging to the same processor. + cpu_last_level_cache_size: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 KB + description: > + The size of the last level cache may impact the + performance of the VDU, particularly for cache + intensive workloads. + cpu_direct_io_access_to_cache: + type: string + required: false + description: > + The ability of an I/O device to have direct + access to the CPU cache enables + considerable memory access savings and for + I/O intensive workloads can offer significant + performance benefits. + cpu_translation_look_aside_buffer_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The Translation Look-aside Buffer (TLB) is a + cache for address translation typically used by + a hardware based memory management units. + The Input/Output TLB (IOTLB) is a cache for + address translation related to remapping + hardware. The availability of a TLB and an + IOTLB can significantly improve the + performance of a virtual machine. + A number of parameters of the TLBs impact + the performance potential. These include: + 1 TLB Size. + 2 TLB Large Page Support. + 3 IOTLB Size. + 4 IOTLB Large Page Support. + cpu_hot_add: + type: boolean + required: false + description: > + Hot add CPU is the ability to dynamically add + CPUs to a running system. The new CPU can + immediately replace a failing CPU via + migration or be brought on-line later. + cpu_support_accelerator: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + This capability refers to support by the CPU + and associated chipsets of a data processing + accelerator framework, together with its + libraries and drivers. + + tosca.capabilities.nfv.Memory_extension: + derived_from: tosca.capabilities.Root + properties: + memory_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of memory related parameters that can have a + significant impact on the performance and/or reliability of the VDU. + These include: + • Memory Type. + • Memory Speed + • Number of memory channels. + • Size of available memory. + • Reliability characteristics such as Memory Error Correction + codes. + • Memory oversubscription policy. + • Memory bandwidth required per VDU. + • Number of large pages required per VDU + • Non-Uniform Memory Architecture (NUMA) Allocation Policy, + i.e. in NUMA architecture how you specify memory allocation + that is cognisant of the relevant process/core allocation. This + applies also to allocation of huge pages. + memory_hot_add: + type: boolean + required: false + description: > + Hot add memory is the ability to add physical memory while the system + is running. Added memory can immediately replace failing memory via + migration or be brought on-line later. + + tosca.capabilities.nfv.Hypervisors: + derived_from: tosca.capabilities.Root + properties: + hypervisors: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of hypervisor related parameters that can have a + significant impact on the deployment and performance of the VDU. + These include: + • Hypervisor type + • Hypervisor version as a VDU may be validated with a particular + version. + • Hypervisor Address Translation support parameters including: + o Second Level Address Translation. + o Second Level Address Translation with Large page + support. + o Second Level Address Translation for I/O. + o Second Level Address Translation for I/O with Large page. + support. Where "Large" is considered to be 1 GB or + greater. + o Support for interrupt remapping, i.e. supporting the IOMMU + in the hypervisor. + o Support of data processing acceleration libraries in the + hypervisor, i.e. for acceleration libraries which require + hypervisor support for high performance. + + tosca.capabilities.nfv.PCIe: + derived_from: tosca.capabilities.Root + properties: + platform_pcie_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of PCIe related parameters that can + have a significant impact on the deployment and + performance of the VDU. These include: + • PCIe generational capabilities. + • PCIe bandwidth. + • PCIe Device Pass-through. + • PCIe SR-IOV as the VDU may require that an SR- + IOV virtual vunction from the specified PCIe + device can be allocated to the VM. + • PCIe Device Assignment Affinity. The VDU may + require for performance reasons the ability to + allocate a partitionable PCIe Device capability + such as a NIC port, an entire NIC or a NIC virtual + function to the VDU while also ensuring that the + selected device is locally connected to the same + processor. + platform_pcie_parameter: + type: string + required: false + description: > + Detecting and reporting correctable and un-correctable + (fatal and non-fatal) PCIe errors to software for error + handling and remediation. + platform_acceleration_device: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or + tested with an acceleration device such as a crypto + accelerator that may typically be accessed over a PCIe + bus. + + tosca.capabilities.nfv.network.Interfaces: + derived_from: tosca.capabilities.Root + properties: + network_interface_card_capability: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or + tested with certain NIC capabilities to benefit items + such as performance or scalability. These include: + • TCP Large Segmentation Offload (LSO) for + offload the segmentation of large TCP + messages into MTU sized packets from the + CPU to the NIC. + • Large Receive Offload (LRO), i.e. the + inverse of LSO by coalescing incoming + TCP/IP packets into larger segments for + processing in the CPU. + • Checksum Offload. + • Receive Side Scaling (RSS), for packet + distribution between cores. + • Flow Director, for more fine grained (than + RSS) packet distribution between cores. + • Mirroring of packets between interfaces. + • Availability of Independent Rx/Tx queues for + VM so that queue pairs in the NIC can be + allocated to the VMs. + • Jumbo Frame support. + • VLAN tag stripping. + • RDMA support. + • SR-IOV support. + • Data processing acceleration software + library support, e.g. DPDK ® - see note. + network_interface_bandwidth: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The network speed/bandwidth to be guaranteed + per requested NIC. + data_processing_acceleration_library: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + Name and version of the data processing + acceleration library used. Orchestration can match + any NIC that is known to be compatible with the + specified library + + tosca.capabilities.nfv.network.Virtual_switches: + derived_from: tosca.capabilities.Root + properties: + vswitch_capability: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or tested with a + particular vSwitch and may require specifying the vSwitch type, version + and key features such as overlay tunnel termination support. + + tosca.capabilities.nfv.Storage: + derived_from: tosca.capabilities.Root + properties: + storage_requirement: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB + description: > + Required storage characteristics (e.g. size), including Key Quality + Indicators (KQIs) for performance and reliability/availability. + rdma_support_bandwitdh: + type: integer + required: false + constraints: + - greater_or_equal: 0 + description: > + The VDU may have been developed, optimized or tested with a + storage supporting RDMA over a given bandwidth. + +########################################################################## +# Relationship Type. +# A Relationship Type is a reusable entity that defines the type of one +# or more relationships between Node Types or Node Templates. +########################################################################## +relationship_types: + tosca.relationships.nfv.VirtualBindsTo: + derived_from: tosca.relationships.ConnectsTo + valid_target_types: [ tosca.capabilities.nfv.VirtualBindable ] + + tosca.relationships.nfv.HA: + derived_from: tosca.relationships.Root + valid_target_types: [ tosca.capabilities.nfv.HA ] + + tosca.relationships.nfv.Monitor: + derived_from: tosca.relationships.ConnectsTo #??? + valid_target_types: [ tosca.capabilities.nfv.Metric ] + + tosca.relationships.nfv.ForwardsTo: + derived_from: tosca.relationships.root + valid_target_types: [ tosca.capabilities.nfv.Forwarder ] + + tosca.relationships.nfv.VirtualLinksTo: + derived_from: tosca.relationships.ConnectsTo + valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ] + +########################################################################## + # groups Type. + # as defined within the TOSCA nfv Simple Profile specification. + # BWT:Not supported by tosca-parser currently, and will be added future. +########################################################################## +#group_types: +# tosca.groups.nfv.VNFFG: +# derived_from: tosca.groups.Root +# properties: +# vendor: +# type: string +# required: true +# description: name of the vendor who generate this VNFFG +# version: +# type: string +# required: true +# description: version of this VNFFG +# number_of_endpoints: +# type: integer +# required: true +# description: count of the external endpoints included in this VNFFG +# dependent_virtual_link: +# type: list +# description: Reference to a VLD used in this Forwarding Graph +# required: true +# entry_schema: +# type: string +# connection_point: +# type: list +# description: Reference to Connection Points forming the VNFFG +# required: true +# entry_schema: +# type: string +# constituent_vnfs: +# type: list +# description: Reference to a list of VNFD used in this VNF Forwarding Graph +# required: true +# entry_schema: +# type: string +# targets: +# type: list +# required: false +# description: list of Network Forwarding Path within the VNFFG +# entry_schema: +# type: string +# requirements: +# - forwarder: +# capability: tosca.capabilities.Forwarder + +#datatype_definitions: +########################################################################## + # Data Type. To be continue + # A Datatype is a complex data type declaration which contains other + # complex or simple data types. + # BWT: will be added future. +########################################################################## + +#tosca.datatypes.network.XX: +# properties: +# network_name: +# type: string +# network_id: +# type: string +# addresses: +# type: list +# entry_schema: +# type: string + +#artifact_types: +########################################################################## + # Artifact Type.To be continue + # An Artifact Type is a reusable entity that defines the type of one or more + # files which Node Types or Node Templates can have dependent relationships + # and used during operations such as during installation or deployment. + # BWT: will be added future. +########################################################################## +#tosca.artifacts.File.XXX: +# derived_from: tosca.artifacts.Root diff --git a/docs/parser_docs/tosca2heat/image/vRNC_Definition.bmp b/docs/parser_docs/tosca2heat/image/vRNC_Definition.bmp new file mode 100644 index 0000000..775e4d2 Binary files /dev/null and b/docs/parser_docs/tosca2heat/image/vRNC_Definition.bmp differ diff --git a/docs/parser_docs/tosca2heat/image/vRNC_Topology.bmp b/docs/parser_docs/tosca2heat/image/vRNC_Topology.bmp new file mode 100644 index 0000000..d4eea84 Binary files /dev/null and b/docs/parser_docs/tosca2heat/image/vRNC_Topology.bmp differ diff --git a/docs/parser_docs/tosca2heat/parser_new_keywords.rst b/docs/parser_docs/tosca2heat/parser_new_keywords.rst new file mode 100644 index 0000000..361c74c --- /dev/null +++ b/docs/parser_docs/tosca2heat/parser_new_keywords.rst @@ -0,0 +1,120 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. +.. + http://creativecommons.org/licenses/by/3.0/legalcode + +=================== +New Parser keywords +=================== + +1.NFV-tosca new keywords +------------------------ + +All keywords in nfv tosca are not implemented in code, and will be +implemented by parser. + +1.1 Nodes types +~~~~~~~~~~~~~~~ + +Basic types +^^^^^^^^^^^ + +- tosca.nodes.nfv.VDU +- tosca.nodes.nfv.CP +- tosca.nodes.nfv.VL + +Extend types +^^^^^^^^^^^^ + +- tosca.nodes.nfv.VL.ELine +- tosca.nodes.nfv.VL.ELAN +- tosca.nodes.nfv.VL.ETree +- tosca.nodes.nfv.FP + +1.2 Capability types +~~~~~~~~~~~~~~~~~~~~ + +Basic types +^^^^^^^^^^^ + +- tosca.capabilities.nfv.VirtualBindable +- tosca.capabilities.nfv.VirtualLinkable +- tosca.capabilities.nfv.HA.ActiveActive +- tosca.capabilities.nfv.HA.ActivePassive +- tosca.capabilities.nfv.Metric + +Extend types +^^^^^^^^^^^^ + +- tosca.capabilities.nfv.Forwarder +- tosca.capabilities.nfv.CPU\_extension +- tosca.capabilities.nfv.Memory\_extension +- tosca.capabilities.nfv.Hypervisors +- tosca.capabilities.nfv.PCIe +- tosca.capabilities.nfv.network.Interfaces +- tosca.capabilities.nfv.network.Virtual\_switches +- tosca.capabilities.nfv.Storage + +1.3 Relationship types +~~~~~~~~~~~~~~~~~~~~~~ + +Basic types +^^^^^^^^^^^ + +- tosca.relationships.nfv.VirtualBindsTo +- tosca.relationships.nfv.VirtualLinksTo +- tosca.relationships.nfv.HA +- tosca.relationships.nfv.Monitor + +Extend types +^^^^^^^^^^^^ + +- tosca.relationships.nfv.ForwardsTo + +1.4 Group Types +~~~~~~~~~~~~~~~ + +- tosca.groups.nfv.VNFFG + +2.Simple-tosca new keywords +--------------------------- + +Some keywords are only defined in tosca simple profile,but are not +supported in tosca-paser, and some keywords such as "policy type", are not yet defined +completely so far. + +2.1 topology template keyname +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- "substitution\_mappings" syntax + + An optional declaration that exports the topology template as an + impletmentation of a node type, which is not supported by tosca-parser. + +2.2 Group types +~~~~~~~~~~~~~~~ + +Basic types +^^^^^^^^^^^ + +- tosca.group.root + +2.3 Policy Types +~~~~~~~~~~~~~~~~ + +Basic types +^^^^^^^^^^^ + +- tosca.policies.Root +- tosca.policies.Placement +- tosca.policies.Scaling + +Extend types +^^^^^^^^^^^^ + +- tosca.policies.Update +- tosca.policies.Performance +- tosca.policy.placement.Antilocate +- tosca.policy.placement.Colocate + diff --git a/docs/parser_docs/tosca2heat/vRNC_tosca_intro.rst b/docs/parser_docs/tosca2heat/vRNC_tosca_intro.rst new file mode 100644 index 0000000..7da100d --- /dev/null +++ b/docs/parser_docs/tosca2heat/vRNC_tosca_intro.rst @@ -0,0 +1,44 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. +.. + http://creativecommons.org/licenses/by/3.0/legalcode + +================ +1. vRNC Topology +================ + +The simple vRNC topology is shown below: |vRNC Topology| + +- vRNC includes four networks: EMS\_network, CTRL\_network, + Intermedia\_network and extermedia\_network; +- vRNC includes four node types: MM, LB, CM and DM; +- MM: Stands for Maintain Module, which links to EMS\_network, + CTRL\_network and extermedia\_network. It composes of active vdu and + standby vdu. +- CM: Stands for Control Module, which links to CTRL\_network and + intermedia\_network. All CM nodes form resource pool and each node + composes of active vdu and standby vdu. +- DM: Stands for Data Module, which links to CTRL\_network and + intermedia\_network. All DM nodes form resource pool and each node is + a vdu. +- LB: Stands for LineCard Module, which links to CTRL\_network and + intermedia\_network and extermedia\_network. All LB nodes form + resource pool and each node is a vdu. + +2. vRNC Definition +================== + +The files dependency and correspoding specificaiton of vRNC definition +are shown below: |vRNC Definition| + +- TOSCA\_definition\_1.0.yaml should be the lastest version, which is + updated by tosca-parser community, but some keywords (such as + substitution\_mappings) in the correspoding standard of + "TOSCA-simple-profile-YAML-v1.0" is not supported. +- TOSCA\_nfv\_definition\_1.0.yaml is a new file, and not implemented + in code, and the correspoding standard of + "tosca-nfv-v1.0-wd02-rev02" is not complete now. + +.. |vRNC Topology| image:: image/vRNC_Topology.bmp +.. |vRNC Definition| image:: image/vRNC_Definition.bmp diff --git a/docs/parser_docs/yang2tosca/clearwater_tosca.yaml b/docs/parser_docs/yang2tosca/clearwater_tosca.yaml new file mode 100644 index 0000000..2b4dd52 --- /dev/null +++ b/docs/parser_docs/yang2tosca/clearwater_tosca.yaml @@ -0,0 +1,151 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +description: > + This module defines a VNF Deployment Unit. + +metadata: + template_name: clearwater + template_author: HP + +dsl_definitions: + compute_props_host_ellis: &compute_props_host_ellis + num_cpu: 4 + mem_size: 4096 + compute_props_host_bono: &compute_props_host_bono + num_cpu: 3 + mem_size: 2048 + +node_types: + tosca.nodes.compute.ellis: + derived_from: tosca.nodes.compute + + tosca.nodes.compute.bono: + derived_from: tosca.nodes.compute + +topology_template: + # a description of the topology template + description: > + + + inputs: + storage_size: + type: scalar-unit.size + default: 2048 M + description: The required storage resource + + storage_location: + type: string + description: > + Block storage mount point (filesystem path). + + node_templates: + ellis: + type: tosca.nodes.compute.ellis + capabilities: + host: + properties: *compute_props_host_ellis + scalable: + properties: + min_instances: 1 + default_instances: 1 + requirements: + - local_storage: + node: ellis_BlockStorage + relationship: + type: AttachesTo + properties: + location: { get_input: storage_location } + interfaces: + Standard: + start: + implementation: start.sh + delete: + implementaion: stop.sh + stop: + implementaion: shutdown.sh + + ellis_BlockStorage: + type: tosca.nodes.BlockStorage + properties: + size: { get_input: storage_size } + + bono: + type: tosca.nodes.compute.bono + capabilities: + host: + properties: *compute_props_host_bono + scalable: + properties: + min_instances: 3 + default_instances: 3 + requirements: + - local_storage: + node: bono_BlockStorage + relationship: + type: AttachesTo + properties: + location: { get_input: storage_location } + interfaces: + Standard: + start: + implementation: start.sh + delete: + implementaion: stop.sh + stop: + implementaion: shutdown.sh + + bono_BlockStorage: + type: tosca.nodes.BlockStorage + properties: + size: { get_input: storage_size } + + clearwater_network1: + type: tosca.nodes.network.Network + properties: + ip_version: 4 + + ellis_port1: + type: tosca.nodes.network.Port + requirements: + - binding: + node: ellis + - link: + node: clearwater_network1 + + clearwater_network2: + type: tosca.nodes.network.Network + properties: + ip_version: 4 + + ellis_port2: + type: tosca.nodes.network.Port + requirements: + - binding: + node: ellis + - link: + node: clearwater_network2 + + clearwater_network1: + type: tosca.nodes.network.Network + properties: + ip_version: 4 + + bono_port1: + type: tosca.nodes.network.Port + requirements: + - binding: + node: bono + - link: + node: clearwater_network1 + + clearwater_network2: + type: tosca.nodes.network.Network + properties: + ip_version: 4 + + bono_port2: + type: tosca.nodes.network.Port + requirements: + - binding: + node: bono + - link: + node: clearwater_network2 diff --git a/docs/parser_docs/yang2tosca/yang2tosca.rst b/docs/parser_docs/yang2tosca/yang2tosca.rst new file mode 100644 index 0000000..7235fc3 --- /dev/null +++ b/docs/parser_docs/yang2tosca/yang2tosca.rst @@ -0,0 +1,66 @@ +======================== +Parser YANG2TOSCA +======================== + +Overview +=========================== + +Parser is an open source project and licensed under Apache 2. Parser will help +to provide a tooling mechanism, by parsing Telecom operators’ VNF descriptors +(YANG templates) into TOSCA templates and then further translate TOSCA +templates into certain common templates, which could be used in IaaS orchestration +projects like OpenStack Heat. + +Prerequisites +========================== + +Parser requires the following to be installed. + +1. PYANG +----------------- + +Please follow the below installation steps. + +Step 1: Clone pyang tool or download the zip file from the following link. + git clone https://github.com/mbj4668/pyang.git + or + wget https://github.com/mbj4668/pyang/archive/master.zip + +Step 2: Change directory to the downloaded directory and run the setup file. + cd pyang + python setup.py + +2. python-lxml +-------------------- + +Please follow the below installation link. + http://lxml.de/installation.html + + +Installation +============================ + +Please follow the below installation steps to install parser. + +Step 1: Clone the parser project. + git clone https://gerrit.opnfv.org/gerrit/parser + +Execution +=========================== + +Step 1: Change directory to where the scripts are present. + cd parser/yang2tosca + +Step 2: Copy the YANG file which needs to be converted into TOSCA to + current (parser/yang2tosca) folder. + +Step 3: Run the python script "parser.py" with the YANG file as an input option. + python parser.py -n "YANG filename" + Example: + python parser.py -n example.yaml + +Step 4: Verify the TOSCA YAMl which file has been created with the same name + as the YANG file with a “_tosca” suffix. + cat "YANG filename_tosca.yaml" + Example: + cat example_tosca.yaml -- cgit 1.2.3-korg