summaryrefslogtreecommitdiffstats
path: root/docs/Chapter5.rst
diff options
context:
space:
mode:
authorstark, steven <ss820f@att.com>2018-06-26 13:34:59 -0700
committerstark, steven <ss820f@att.com>2018-06-27 12:18:17 -0700
commit2cbffc5b71c88fd858b654335731ea72fd80220c (patch)
tree695110bcb0d91fa22f607363b9803643dc67d233 /docs/Chapter5.rst
parent8274f893dd8e46a320a3a2b7a5c44430a8d4e765 (diff)
[VNFRQTS] break up larger rst files into toxtree
Broke all chapter files up so they follow the same patter Change-Id: I8a2152b92f0568cf4858615054bb66fabf0ea343 Issue-ID: VNFRQTS-253 Signed-off-by: stark, steven <ss820f@att.com>
Diffstat (limited to 'docs/Chapter5.rst')
-rw-r--r--docs/Chapter5.rst5437
1 files changed, 0 insertions, 5437 deletions
diff --git a/docs/Chapter5.rst b/docs/Chapter5.rst
deleted file mode 100644
index 830dd5e..0000000
--- a/docs/Chapter5.rst
+++ /dev/null
@@ -1,5437 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 AT&T Intellectual Property. All rights reserved.
-
-
-VNF Modeling Requirements
-=========================
-
-TOSCA YAML
-----------
-
-
-Introduction
-^^^^^^^^^^^^^^
-
-This reference document is the VNF TOSCA Template Requirements for
-ONAP, which provides recommendations and standards for building VNF
-TOSCA templates compatible with ONAP initial implementations of
-Network Cloud. It has the following features:
-
-1. VNF TOSCA template designer supports GUI and CLI.
-
-2. VNF TOSCA template is aligned to the newest TOSCA protocol, “Working
- Draft 04-Revision 06”.
-
-3. VNF TOSCA template supports HPA features, such as NUMA, Hyper
- Threading, SRIOV, etc.
-
-Intended Audience
-^^^^^^^^^^^^^^^^^^
-
-This document is intended for persons developing VNF TOSCA templates
-that will be orchestrated by ONAP.
-
-Scope
-^^^^^^^^^^^^^^^^
-
-ONAP implementations of Network Cloud supports TOSCA Templates, also
-referred to as TOSCA in this document.
-
-ONAP requires the TOSCA Templates to follow a specific format. This
-document provides the mandatory, recommended, and optional requirements
-associated with this format.
-
-Overview
-^^^^^^^^^^^^^^^^
-
-The document includes three charters to help the VNF providers to use the
-VNF model design tools and understand the VNF package structure and VNF
-TOSCA templates.
-
-In the ONAP, VNF Package and VNFD template can be designed by manually
-or via model designer tools. VNF model designer tools can provide the
-GUI and CLI tools for the VNF provider to develop the VNF Package and VNFD
-template.
-
-The VNF package structure is align to the NFV TOSCA protocol, and
-supports CSAR
-
-The VNFD and VNF package are all align to the NFV TOSCA protocol, which
-supports multiple TOSCA template yaml files, and also supports
-self-defined node or other extensions.
-
-NFV TOSCA Template
-^^^^^^^^^^^^^^^^^^^^
-
-TOSCA templates supported by ONAP must follow the requirements
-enumerated in this section.
-
-TOSCA Introduction
-^^^^^^^^^^^^^^^^^^^
-
-TOSCA defines a Meta model for defining IT services. This Meta model
-defines both the structure of a service as well as how to manage it. A
-Topology Template (also referred to as the topology model of a service)
-defines the structure of a service. Plans define the process models that
-are used to create and terminate a service as well as to manage a
-service during its whole lifetime.
-
-A Topology Template consists of a set of Node Templates and Relationship
-Templates that together define the topology model of a service as a (not
-necessarily connected) directed graph. A node in this graph is
-represented by a *Node Template*. A Node Template specifies the
-occurrence of a Node Type as a component of a service. A *Node Type*
-defines the properties of such a component (via *Node Type Properties*)
-and the operations (via *Interfaces*) available to manipulate the
-component. Node Types are defined separately for reuse purposes and a
-Node Template references a Node Type and adds usage constraints, such as
-how many times the component can occur.
-
-|image1|
-
-Figure 1: Structural Elements of Service Template and their Relations
-
-TOSCA Modeling Principles & Data Model
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section describing TOSCA modeling principles and data model for
-NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
-V1.0], or new type based on ETSI NFV requirements, etc.
-
-VNF Descriptor Template
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The VNF Descriptor (VNFD) describes the topology of the VNF by means of
-ETSI NFV IFA011 [IFA011] terms such as VDUs, Connection Points, Virtual
-Links, External Connection Points, Scaling Aspects, Instantiation Levels
-and Deployment Flavours.
-
-The VNFD (VNF Descriptor) is read by both the NFVO and the VNFM. It
-represents the contract & interface of a VNF and ensures the
-interoperability across the NFV functional blocks.
-
-The main parts of the VNFD are the following:
-
-- VNF topology: it is modeled in a cloud agnostic way using virtualized
- containers and their connectivity. Virtual Deployment Units (VDU)
- describe the capabilities of the virtualized containers, such as
- virtual CPU, RAM, disks; their connectivity is modeled with VDU
- Connection Point Descriptors (VduCpd), Virtual Link Descriptors (Vld)
- and VNF External Connection Point Descriptors (VnfExternalCpd);
-
-- VNF deployment aspects: they are described in one or more deployment
- flavours, including instantiation levels, supported LCM operations,
- VNF LCM operation configuration parameters, placement constraints
- (affinity / antiaffinity), minimum and maximum VDU instance numbers,
- and scaling aspect for horizontal scaling.
-
-The following table defines the TOSCA Type “derived from” values that
-SHALL be used when using the TOSCA Simple Profile for NFV version 1.0
-specification [TOSCA-Simple-Profile-NFV-v1.0] for NFV VNFD with aggreed
-changes from ETSI SOL001 draft.
-
-+---------------------+------------------------------------+-----------------+
-| **ETSI NFV Element**| **TOSCA VNFD** | **Derived from**|
-| | | |
-| **[IFA011]** | **[TOSCA-Simple-Profile-NFV-v1.0]**| |
-+=====================+====================================+=================+
-| VNF | tosca.nodes.nfv.VNF | tosca.nodes.Root|
-+---------------------+------------------------------------+-----------------+
-| Cpd (Connection | tosca.nodes.nfv.Cp | tosca.nodes.Root|
-| Point) | tosca.nodes.nfv.Cp | tosca.nodes.Root|
-+---------------------+------------------------------------+-----------------+
-| VduCpd (internal | tosca.nodes.nfv.VduCp | tosca.nodes.\ |
-| connection point) | | nfv.Cp |
-+---------------------+------------------------------------+-----------------+
-| VnfVirtualLinkDesc | tosca.nodes.nfv.VnfVirtualLink | tosca.nodes.Root|
-| (Virtual Link) | | |
-+---------------------+------------------------------------+-----------------+
-| VDU Virtual Storage | tosca.nodes.nfv.VDU.VirtualStorage | tosca.nodes.Root|
-+---------------------+------------------------------------+-----------------+
-| VDU Virtual Compute | tosca.nodes.nfv.VDU.Compute | tosca.nodes.Root|
-+---------------------+------------------------------------+-----------------+
-| Software Image | | |
-+---------------------+------------------------------------+-----------------+
-| Deployment Flavour | | |
-+---------------------+------------------------------------+-----------------+
-| Scaling Aspect | | |
-+---------------------+------------------------------------+-----------------+
-| Element Group | | |
-+---------------------+------------------------------------+-----------------+
-| Instantiation | | |
-| Level | | |
-+---------------------+------------------------------------+-----------------+
-
-
-+--------------------------------------------------------------------+
-| +--------------------------------------------------------------+ |
-| | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0 | |
-| | | |
-| | description: VNFD TOSCA file demo | |
-| | | |
-| | imports: | |
-| | | |
-| | - TOSCA\_definition\_nfv\_1\_0.yaml | |
-| | | |
-| | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml | |
-| | | |
-| | | **node\_types: | |
-| | tosca.nodes.nfv.VNF.vOpenNAT: | |
-| | derived\_from:** tosca.nodes.nfv.VNF | |
-| | | **requirements: | |
-| | **- **sriov\_plane: | |
-| | capability:** tosca.capabilities.nfv.VirtualLinkable | |
-| | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc | |
-| | | **relationship:** tosca.relationships.nfv.VirtualLinksTo | |
-| +--------------------------------------------------------------+ |
-+====================================================================+
-+--------------------------------------------------------------------+
-
-HPA Requirements
-^^^^^^^^^^^^^^^^^^
-
-1. SR-IOV Passthrought
-
-Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
-an example.
-
-+------------------------------------------------+
-| node\_templates: |
-| |
-| vdu\_vNat: |
-| |
-| SRIOV\_Port: |
-| |
-| attributes: |
-| |
-| tosca\_name: SRIOV\_Port |
-| |
-| properties: |
-| |
-| virtual\_network\_interface\_requirements: |
-| |
-| - name: sriov |
-| |
-| support\_mandatory: false |
-| |
-| description: sriov |
-| |
-| requirement: |
-| |
-| SRIOV: true |
-| |
-| role: root |
-| |
-| description: sriov port |
-| |
-| layer\_protocol: ipv4 |
-| |
-| requirements: |
-| |
-| - virtual\_binding: |
-| |
-| capability: virtual\_binding |
-| |
-| node: vdu\_vNat |
-| |
-| relationship: |
-| |
-| type: tosca.relationships.nfv.VirtualBindsTo |
-| |
-| - virtual\_link: |
-| |
-| node: tosca.nodes.Root |
-| |
-| type: tosca.nodes.nfv.VduCpd |
-| |
-| substitution\_mappings: |
-| |
-| requirements: |
-| |
-| sriov\_plane: |
-| |
-| - SRIOV\_Port |
-| |
-| - virtual\_link |
-| |
-| node\_type: tosca.nodes.nfv.VNF.vOpenNAT |
-+------------------------------------------------+
-
-2. Hugepages
-
-Definitions of mem\_page\_size as one property shall be added to
-Properties and set the value to large if one VDU node supports
-huagepages. Here is an example.
-
-+----------------------------------+
-| node\_templates: |
-| |
-| vdu\_vNat: |
-| |
-| Hugepages: |
-| |
-| attributes: |
-| |
-| tosca\_name: Huge\_pages\_demo |
-| |
-| properties: |
-| |
-| mem\_page\_size:large |
-+==================================+
-+----------------------------------+
-
-3. NUMA (CPU/Mem)
-
-Likewise, we shall add definitions of numa to
-requested\_additional\_capabilities if we wand VUD nodes to support
-NUMA. Here is an example.
-
-+-------------------------------------------------+
-| topology\_template: |
-| |
-| node\_templates: |
-| |
-| vdu\_vNat: |
-| |
-| capabilities: |
-| |
-| virtual\_compute: |
-| |
-| properties: |
-| |
-| virtual\_memory: |
-| |
-| numa\_enabled: true |
-| |
-| virtual\_mem\_size: 2 GB |
-| |
-| requested\_additional\_capabilities: |
-| |
-| numa: |
-| |
-| support\_mandatory: true |
-| |
-| requested\_additional\_capability\_name: numa |
-| |
-| target\_performance\_parameters: |
-| |
-| hw:numa\_nodes: "2" |
-| |
-| hw:numa\_cpus.0: "0,1" |
-| |
-| hw:numa\_mem.0: "1024" |
-| |
-| hw:numa\_cpus.1: "2,3,4,5" |
-| |
-| hw:numa\_mem.1: "1024" |
-+-------------------------------------------------+
-
-4. Hyper-Theading
-
-Definitions of Hyper-Theading are necessary as one of
-requested\_additional\_capabilities of one VUD node if that node
-supports Hyper-Theading. Here is an example.
-
-+-------------------------------------------------------------+
-| topology\_template: |
-| |
-| node\_templates: |
-| |
-| vdu\_vNat: |
-| |
-| capabilities: |
-| |
-| virtual\_compute: |
-| |
-| properties: |
-| |
-| virtual\_memory: |
-| |
-| numa\_enabled: true |
-| |
-| virtual\_mem\_size: 2 GB |
-| |
-| requested\_additional\_capabilities: |
-| |
-| hyper\_threading: |
-| |
-| support\_mandatory: true |
-| |
-| requested\_additional\_capability\_name: hyper\_threading |
-| |
-| target\_performance\_parameters: |
-| |
-| hw:cpu\_sockets : "2" |
-| |
-| hw:cpu\_threads : "2" |
-| |
-| hw:cpu\_cores : "2" |
-| |
-| hw:cpu\_threads\_policy: "isolate" |
-+-------------------------------------------------------------+
-
-5. OVS+DPDK
-
-Definitions of ovs\_dpdk are necessary as one of
-requested\_additional\_capabilities of one VUD node if that node
-supports dpdk. Here is an example.
-
-+------------------------------------------------------+
-| topology\_template: |
-| |
-| node\_templates: |
-| |
-| vdu\_vNat: |
-| |
-| capabilities: |
-| |
-| virtual\_compute: |
-| |
-| properties: |
-| |
-| virtual\_memory: |
-| |
-| numa\_enabled: true |
-| |
-| virtual\_mem\_size: 2 GB |
-| |
-| requested\_additional\_capabilities: |
-| |
-| ovs\_dpdk: |
-| |
-| support\_mandatory: true |
-| |
-| requested\_additional\_capability\_name: ovs\_dpdk |
-| |
-| target\_performance\_parameters: |
-| |
-| sw:ovs\_dpdk: "true" |
-+------------------------------------------------------+
-
-NFV TOSCA Type Definition
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-tosca.capabilites.nfv.VirtualCompute
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This capability is used with the properties specified in ETSI SOL001 draft.
-
-tosca.nodes.nfv.VDU.Compute
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The NFV Virtualization Deployment Unit (VDU) compute node type
-represents a VDU entity which it describes the deployment and
-operational behavior of a VNF component (VNFC), as defined by **[ETSI
-NFV IFA011].**
-
-+-----------------------+-------------------------------+
-| Shorthand Name | VDU.Compute |
-+=======================+===============================+
-| Type Qualified Name | tosca:VDU.Compute |
-+-----------------------+-------------------------------+
-| Type URI | tosca.nodes.nfv.VDU.Compute |
-+-----------------------+-------------------------------+
-| derived\_from | tosca.nodes.Compute |
-+-----------------------+-------------------------------+
-
-
-
-Attributes
-++++++++++++
-
-None
-
-
-Capabilities
-++++++++++++++
-
-+------------+--------------------+------------+------------------------------+
-| Name | Type | Constraints| Description |
-+============+====================+============+==============================+
-| virtual\ | tosca.\ | | Describes virtual compute |
-| _compute | capabilities.nfv.\ | | resources capabilities. |
-| | VirtualCompute | | |
-+------------+--------------------+------------+------------------------------+
-| monitoring\| tosca.\ | None | Monitoring parameter, which |
-| _parameter | capabilities.nfv.\ | | can be tracked for a VNFC |
-| | Metric | | based on this VDU |
-| | | | |
-| | | | Examples include: |
-| | | | memory-consumption, |
-| | | | CPU-utilisation, |
-| | | | bandwidth-consumption, VNFC |
-| | | | downtime, etc. |
-+------------+--------------------+------------+------------------------------+
-| Virtual\ | tosca.\ | | Defines ability of |
-| _binding | capabilities.nfv.\ | | VirtualBindable |
-| | VirtualBindable | | |
-| | | | |
-| | editor note: need | | |
-| | to create a | | |
-| | capability type | | |
-+------------+--------------------+------------+------------------------------+
-
-Definition
-++++++++++++
-
-+-----------------------------------------------------------------------------+
-| tosca.nodes.nfv.VDU.Compute: |
-| |
-| derived\_from: tosca.nodes.Compute |
-| |
-| properties: |
-| |
-| name: |
-| |
-| type: string |
-| |
-| required: true |
-| |
-| description: |
-| |
-| type: string |
-| |
-| required: true |
-| |
-| boot\_order: |
-| |
-| type: list # explicit index (boot index) not necessary, contrary to IFA011 |
-| |
-| entry\_schema: |
-| |
-| type: string |
-| |
-| required: false |
-| |
-| nfvi\_constraints: |
-| |
-| type: list |
-| |
-| entry\_schema: |
-| |
-| type: string |
-| |
-| required: false |
-| |
-| configurable\_properties: |
-| |
-| type: map |
-| |
-| entry\_schema: |
-| |
-| type: tosca.datatypes.nfv.VnfcConfigurableProperties |
-| |
-| required: true  |
-| |
-| attributes: |
-| |
-| private\_address: |
-| |
-| status: deprecated |
-| |
-| public\_address: |
-| |
-| status: deprecated |
-| |
-| networks: |
-| |
-| status: deprecated |
-| |
-| ports: |
-| |
-| status: deprecated |
-| |
-| capabilities: |
-| |
-| virtual\_compute: |
-| |
-| type: tosca.capabilities.nfv.VirtualCompute |
-| |
-| virtual\_binding: |
-| |
-| type: tosca.capabilities.nfv.VirtualBindable |
-| |
-| #monitoring\_parameter: |
-| |
-| # modeled as ad hoc (named) capabilities in VDU node template |
-| |
-| # for example: |
-| |
-| #capabilities: |
-| |
-| # cpu\_load: tosca.capabilities.nfv.Metric |
-| |
-| # memory\_usage: tosca.capabilities.nfv.Metric |
-| |
-| host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
-| |
-| type: `*tosca.capabilities.Container* <#DEFN_TYPE_CAPABILITIES_CONTAINER>`__|
-| |
-| valid\_source\_types: |
-| [`*tosca.nodes.SoftwareComponent* <#DEFN_TYPE_NODES_SOFTWARE_COMPONENT>`__] |
-| |
-| occurrences: [0,UNBOUNDED] |
-| |
-| endpoint: |
-| |
-| occurrences: [0,0] |
-| |
-| os: |
-| |
-| occurrences: [0,0] |
-| |
-| scalable: |
-| #Editor note: FFS. How this capabilities should be used in NFV Profile |
-| |
-| type: `*tosca.capabilities.Scalable* <#DEFN_TYPE_CAPABILITIES_SCALABLE>`__ |
-| |
-| binding: |
-| |
-| occurrences: [0,UNBOUND] |
-| |
-| requirements: |
-| |
-| - virtual\_storage: |
-| |
-| capability: tosca.capabilities.nfv.VirtualStorage |
-| |
-| relationship: tosca.relationships.nfv.VDU.AttachedTo |
-| |
-| node: tosca.nodes.nfv.VDU.VirtualStorage |
-| |
-| occurences: [ 0, UNBOUNDED ] |
-| |
-| - local\_storage: #For NFV Profile, this requirement is deprecated. |
-| |
-| occurrences: [0,0] |
-| |
-| artifacts: |
-| |
-| - sw\_image: |
-| |
-| file: |
-| |
-| type: tosca.artifacts.nfv.SwImage |
-+-----------------------------------------------------------------------------+
-
-Artifact
-++++++++++
-
-Note: currently not supported.
-
-+--------+---------+----------------+------------+------------------------+
-| Name | Required| Type | Constraints| Description |
-+========+=========+================+============+========================+
-| SwImage| Yes | tosca.\ | | Describes the software |
-| | | artifacts.nfv.\| | image which is directly|
-| | | SwImage | | realizing this virtual |
-| | | | | storage |
-+--------+---------+----------------+------------+------------------------+
-
-
-|image2|
-
-
-
-tosca.nodes.nfv.VDU.VirtualStorage
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The NFV VirtualStorage node type represents a virtual storage entity
-which it describes the deployment and operational behavior of a virtual
-storage resources, as defined by **[ETSI NFV IFA011].**
-
-**[editor note]** open issue: should NFV profile use the current storage
-model as described in YAML 1.1. Pending on Shitao proposal (see
-NFVIFA(17)000110 discussion paper)
-
-**[editor note]** new relationship type as suggested in Matt
-presentation. Slide 8. With specific rules of “valid\_target\_type”
-
-+---------------------------+--------------------------------------+
-| **Shorthand Name** | VirtualStorage |
-+===========================+======================================+
-| **Type Qualified Name** | tosca: VirtualStorage |
-+---------------------------+--------------------------------------+
-| **Type URI** | tosca.nodes.nfv.VDU.VirtualStorage |
-+---------------------------+--------------------------------------+
-| **derived\_from** | tosca.nodes.Root |
-+---------------------------+--------------------------------------+
-
-tosca.artifacts.nfv.SwImage
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-+---------------------------+------------------------------------+
-| **Shorthand Name** | SwImage |
-+===========================+====================================+
-| **Type Qualified Name** | tosca:SwImage |
-+---------------------------+------------------------------------+
-| **Type URI** | tosca.artifacts.nfv.SwImage |
-+---------------------------+------------------------------------+
-| **derived\_from** | tosca.artifacts.Deployment.Image |
-+---------------------------+------------------------------------+
-
-Properties
-++++++++++++
-
-+-----------------+---------+----------+------------+-------------------------+
-| Name | Required| Type | Constraints| Description |
-+=================+=========+==========+============+=========================+
-| name | yes | string | | Name of this software |
-| | | | | image |
-+-----------------+---------+----------+------------+-------------------------+
-| version | yes | string | | Version of this software|
-| | | | | image |
-+-----------------+---------+----------+------------+-------------------------+
-| checksum | yes | string | | Checksum of the software|
-| | | | | image file |
-+-----------------+---------+----------+------------+-------------------------+
-| container\ | yes | string | | The container format |
-| _format | | | | describes the container |
-| | | | | file format in which |
-| | | | | software image is |
-| | | | | provided. |
-+-----------------+---------+----------+------------+-------------------------+
-| disk\_format | yes | string | | The disk format of a |
-| | | | | software image is the |
-| | | | | format of the underlying|
-| | | | | disk image |
-+-----------------+---------+----------+------------+-------------------------+
-| min\_disk | yes | scalar-\ | | The minimal disk size |
-| | | unit.size| | requirement for this |
-| | | | | software image. |
-+-----------------+---------+----------+------------+-------------------------+
-| min\_ram | no | scalar-\ | | The minimal RAM |
-| | | unit.size| | requirement for this |
-| | | | | software image. |
-+-----------------+---------+----------+------------+-------------------------+
-| Size | yes | scalar-\ | | The size of this |
-| | | unit.size| | software image |
-+-----------------+---------+----------+------------+-------------------------+
-| sw\_image | yes | string | | A reference to the |
-| | | | | actual software image |
-| | | | | within VNF Package, or |
-| | | | | url. |
-+-----------------+---------+----------+------------+-------------------------+
-| operating\ | no | string | | Identifies the operating|
-| _system | | | | system used in the |
-| | | | | software image. |
-+-----------------+---------+----------+------------+-------------------------+
-| supported\ | no | list | | Identifies the |
-| _virtualization\| | | | virtualization |
-| _enviroment | | | | environments (e.g. |
-| | | | | hypervisor) compatible |
-| | | | | with this software image|
-+-----------------+---------+----------+------------+-------------------------+
-
-Definition
-+++++++++++
-
-+-----------------------------------------------------+
-| tosca.artifacts.nfv.SwImage: |
-| |
-|   derived\_from: tosca.artifacts.Deployment.Image |
-| |
-|   properties or metadata: |
-| |
-|     #id: |
-| |
-|       # node name |
-| |
-|     name: |
-| |
-|       type: string |
-| |
-| required: true |
-| |
-|     version: |
-| |
-|       type: string |
-| |
-| required: true |
-| |
-|     checksum: |
-| |
-|       type: string |
-| |
-| required: true |
-| |
-|     container\_format: |
-| |
-|       type: string |
-| |
-| required: true |
-| |
-|     disk\_format: |
-| |
-|       type: string |
-| |
-| required: true |
-| |
-|     min\_disk: |
-| |
-|       type: scalar-unit.size # Number |
-| |
-| required: true |
-| |
-|     min\_ram: |
-| |
-|       type: scalar-unit.size # Number |
-| |
-| required: false |
-| |
-|     size: |
-| |
-|       type: scalar-unit.size # Number |
-| |
-| required: true |
-| |
-|     sw\_image: |
-| |
-|       type: string |
-| |
-| required: true |
-| |
-|     operating\_system: |
-| |
-|       type: string |
-| |
-| required: false |
-| |
-|     supported\_virtualisation\_environments: |
-| |
-|       type: list |
-| |
-|       entry\_schema: |
-| |
-|         type: string |
-| |
-| required: false |
-+-----------------------------------------------------+
-
-.. |image1| image:: Image1.png
- :width: 5.76806in
- :height: 4.67161in
-.. |image2| image:: Image2.png
- :width: 5.40486in
- :height: 2.46042in
-
-
-Heat
--------------
-
-General Guidelines
-^^^^^^^^^^^^^^^^^^
-This section contains general Heat Orchestration Template guidelines.
-
-YAML Format
-~~~~~~~~~~~
-
-R-95303 A VNF's Heat Orchestration Template **MUST** be defined
-using valid YAML.
-
-YAML (YAML Ain't
-Markup Language) is a human friendly data serialization standard for all
-programming languages. See http://www.yaml.org/.
-
-Heat Orchestration Template Format
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As stated above, Heat Orchestration templates must be defined in YAML.
-
-YAML rules include:
-
- - Tabs are not allowed, use spaces ONLY
-
- - You must indent your properties and lists with 1 or more spaces
-
- - All Resource IDs and resource property parameters are
- case-sensitive. (e.g., "ThIs", is not the same as "thiS")
-
-Heat Orchestration Template Structure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Heat Orchestration template structure follows the following format,
-as defined by OpenStack at
-https://docs.openstack.org/developer/heat/template_guide/hot_spec.html
-
-.. code-block:: python
-
- heat_template_version: <date>
-
- description:
- # a description of the template
-
- parameter_groups:
- # a declaration of input parameter groups and order
-
- parameters:
- # declaration of input parameters
-
- resources:
- # declaration of template resources
-
- outputs:
- # declaration of output parameters
-
- conditions:
- # declaration of conditions
-
-heat_template_version
-+++++++++++++++++++++
-
-R-27078 A VNF's Heat Orchestration template **MUST** contain
-the section "heat_template_version:".
-
-The section "heat_template_version:" must be set to a date
-that is supported by the OpenStack environment.
-
-description
-+++++++++++
-
-R-39402 A VNF's Heat Orchestration Template **MUST**
-contain the section "description:".
-
-parameter_groups
-++++++++++++++++
-
-A VNF Heat Orchestration template may
-contain the section "parameter_groups:".
-
-parameters
-++++++++++
-
-R-35414 A VNF Heat Orchestration's template **MUST**
-contain the section "parameters:".
-
-
-.. code-block:: python
-
- parameters:
-
- <param name>:
-
- type: <string | number | json | comma_delimited_list | boolean>
-
- label: <human-readable name of the parameter>
-
- description: <description of the parameter>
-
- default: <default value for parameter>
-
- hidden: <true | false>
-
- constraints:
-
- <parameter constraints>
-
- immutable: <true | false>
-
-This section allows for
-specifying input parameters that have to be provided when instantiating
-the template. Each parameter is specified in a separate nested block
-with the name of the parameters defined in the first line and additional
-attributes (e.g., type, label) defined as nested elements.
-
-R-90279 A VNF Heat Orchestration's template's parameter **MUST**
-be used in a resource with the exception of the parameters
-for the OS::Nova::Server resource property availability_zone.
-
-R-91273 A VNF Heat Orchestration’s template’s parameter for
-the OS::Nova::Server resource property availability_zone
-**MAY NOT** be used in any OS::Nova::Resource.
-
-<param name>
-____________
-
-The name of the parameter.
-
-R-25877 A VNF's Heat Orchestration Template's parameter
-name (i.e., <param name>) **MUST** contain only
-alphanumeric characters and underscores ('_').
-
-type
-____
-
-R-36772 A VNF’s Heat Orchestration Template’s parameter
-**MUST** include the attribute “type:”.
-
-R-11441 A VNF’s Heat Orchestration Template’s parameter
-type **MUST** be one of the following values: "string",
-"number", "json", "comma_delimited_list" or "boolean".
-
-label
-_____
-
-R-32094 A VNF's Heat Orchestration Template parameter
-declaration **MAY** contain the attribute "label:"
-
-description
-___________
-
-R-44001 A VNF's Heat Orchestration Template parameter
-declaration **MUST** contain the attribute "description".
-
-Note that the parameter attribute “description:” is an
-OpenStack optional attribute that provides a description
-of the parameter. ONAP implementation requires this attribute.
-
-default
-_______
-
-R-90526 A VNF Heat Orchestration Template parameter
-declaration **MUST** not contain the default attribute.
-
-R-26124 If a VNF Heat Orchestration Template parameter
-requires a default value, it **MUST** be enumerated in the environment file.
-
-Note that the parameter attribute “default:” is an OpenStack
-optional attribute that declares the default value of the
-parameter. ONAP implementation prohibits the use of this attribute.
-
-hidden
-______
-
-R-32557 A VNF's Heat Orchestration Template parameter
-declaration MAY contain the attribute "hidden:".
-
-The parameter attribute "hidden:" is an OpenStack optional
-attribute that defines whether the parameters should be
-hidden when a user requests information about a stack
-created from the template. This attribute can be used
-to hide passwords specified as parameters.
-
-constraints
-___________
-
-The parameter attribute "constraints:" is an OpenStack optional
-attribute that defines a list of constraints to apply to the parameter.
-
-R-88863 A VNF's Heat Orchestration Template's parameter defined as
-type "number" **MUST** have a parameter constraint of "range" or
-"allowed_values" defined.
-
-R-40518 A VNF's Heat Orchestration Template’s parameter defined as
-type "string" **MAY** have a parameter constraint defined.
-
-R-96227 A VNF's Heat Orchestration Template’s parameter defined as
-type "json" **MAY** have a parameter constraint defined.
-
-R-79817 A VNF's Heat Orchestration Template’s parameter defined as
-type "comma_delimited_list" **MAY** have a parameter constraint defined.
-
-R-06613 A VNF's Heat Orchestration Template’s parameter defined as
-type "boolean" **MAY** have a parameter constraint defined.
-
-R-00011 A VNF's Heat Orchestration Template's Nested YAML files
-parameter's **MUST NOT** have a parameter constraint defined.
-
-The constraints block of a parameter definition defines additional
-validation constraints that apply to the value of the parameter.
-The parameter values provided in the VNF Heat Orchestration Template
-are validated against the constraints at instantiation time.
-The stack creation fails if the parameter value doesn’t comply to
-the constraints.
-
-The constraints are defined as a list with the following syntax
-
-.. code-block:: python
-
- constraints:
-
- <constraint type>: <constraint definition>
-
- description: <constraint description>
-
-..
-
-**<constraint type>** Provides the type of constraint to apply.
-The list of OpenStack supported constraints can be found at
-https://docs.openstack.org/heat/latest/template_guide/hot_spec.html .
-
-**<constraint definition>** provides the actual constraint.
-The syntax and constraint is dependent of the <constraint type> used.
-
-**description** is an optional attribute that provides a description of the
-constraint. The text is presented to the user when the value the user
-defines violates the constraint. If omitted, a default validation
-message is presented to the user.
-
-Below is a brief overview of the "range" and "allowed values" constraints.
-For complete details on constraints, see
-https://docs.openstack.org/heat/latest/template_guide/hot_spec.html#parameter-constraints
-
-**range**
-
-range: The range constraint applies to parameters of type: number.
-It defines a lower and upper limit for the numeric value of the
-parameter. The syntax of the range constraint is
-
-.. code-block:: python
-
- range: { min: <lower limit>, max: <upper limit> }
-
-..
-
-It is possible to define a range constraint with only a lower
-limit or an upper limit.
-
-**allowed_values**
-
-allowed_values: The allowed_values constraint applies to parameters of
-type \"string\" or type \"number\". It specifies a set of possible
-values for a parameter. At deployment time, the user-provided value
-for the respective parameter must match one of the elements of the
-list. The syntax of the allowed_values constraint is
-
-.. code-block:: python
-
- allowed_values: [ <value>, <value>, ... ]
-
- Alternatively, the following YAML list notation can be used
-
- allowed_values:
-
- - <value>
-
- - <value>
-
- - ...
-
-. .
-
-immutable
-_________
-
-R-22589 A VNF’s Heat Orchestration Template parameter declaration
-**MAY** contain the attribute "immutable:".
-
-The parameter attribute \"immutable:\" is an OpenStack optional
-attribute that defines whether the parameter is updatable. A Heat
-Orchestration Template stack update fails if immutable is set to
-true and the parameter value is changed. This attribute
-\"immutable:\" defaults to false.
-
-resources
-+++++++++
-
-R-23664 A VNF's Heat Orchestration template **MUST** contain
-the section "resources:".
-
-R-90152 A VNF's Heat Orchestration Template's "resources:"
-section **MUST** contain the declaration of at least one resource.
-
-R-40551 A VNF's Heat Orchestration Template's Nested YAML files
-**MAY** contain the section "resources:".
-
-Each resource is defined as a
-separate block in the resources section with the following syntax.
-
-.. code-block:: python
-
- resources:
-
- <resource ID>:
-
- type: <resource type>
-
- properties:
-
- <property name>: <property value>
-
- metadata:
-
- <resource specific metadata>
-
- depends_on: <resource ID or list of ID>
-
- update_policy: <update policy>
-
- deletion_policy: <deletion policy>
-
- external_id: <external resource ID>
-
- condition: <condition name or expression or boolean>
-
-
-
-resource ID
-___________
-
-R-75141 A VNF's Heat Orchestration Template's resource name
-(i.e., <resource ID>) **MUST** only contain alphanumeric
-characters and underscores ('_').
-
-R-16447 A VNF's <resource ID> **MUST** be unique across all
-Heat Orchestration Templates and all HEAT Orchestration Template
-Nested YAML files that are used to create the VNF.
-
-Note that a VNF can be composed of one or more Heat Orchestration Templates.
-
-Note that OpenStack requires the <resource ID> to be unique to the
-Heat Orchestration Template and not unique across all Heat
-Orchestration Templates the compose the VNF.
-
-type
-____
-
-The resource attribute \"type:\" is an OpenStack required
-attribute that defines the resource type, such as
-OS::Nova::Server or OS::Neutron::Port.
-
-The resource attribute \"type:\" may specify a VNF HEAT
-Orchestration Template Nested YAML file.
-
-R-53952 A VNF’s Heat Orchestration Template’s Resource
-**MUST NOT** reference a HTTP-based resource definitions.
-
-R-71699 A VNF’s Heat Orchestration Template’s Resource
-**MUST NOT** reference a HTTP-based Nested YAML file.
-
-properties
-__________
-
-The resource attribute \"properties:\" is an OpenStack optional
-attribute that provides a list of resource-specific properties.
-The property value can be provided in place, or via a function
-(e.g., `Intrinsic functions <https://docs.openstack.org/developer/heat/template_guide/hot_spec.html#hot-spec-intrinsic-functions>`__).
-
-R-10834 If a VNF Heat Orchestration Template resource attribute
-"property:" uses a nested "get_param", one level of nesting is
-supported and the nested "get_param" **MUST** reference an index
-
-metadata
-________
-
-The resource attribute \"metadata:\" is an OpenStack optional attribute.
-
-R-97199 A VNF's Heat Orchestration Template's OS::Nova::Server
-resource **MUST** contain the attribute "metadata".
-
-Section 5.4 contains the OS::Nova::Server mandatory and optional metadata.
-
-
-depends_on
-__________
-
-The resource attribute \"depends_on:\" is an OpenStack optional
-attribute.
-See `OpenStack documentation <https://docs.openstack.org/developer/heat/template_guide/hot_spec.html#hot-spec-resources-dependencies>`__
-for additional details.
-
-R-46968 VNF’s Heat Orchestration Template’s Resource **MAY**
-declare the attribute “depends_on:”.
-
-update_policy
-_____________
-
-R-63137 VNF’s Heat Orchestration Template’s Resource **MAY**
-declare the attribute “update_policy:”.
-
-deletion_policy
-_______________
-
-R-43740 A VNF’s Heat Orchestration Template’s Resource
-**MAY** declare the attribute “deletion_policy:”.
-
-If specified, the \"deletion_policy:\" attribute for resources
-allows values 'Delete', 'Retain', and 'Snapshot'.
-Starting with heat_template_version 2016-10-14, lowercase
-equivalents are also allowed.
-
-The default policy is to delete the physical resource when
-deleting a resource from the stack.
-
-external_id
-___________
-
-R-78569 A VNF’s Heat Orchestration Template’s Resouce **MAY**
-declare the attribute “external_id:”.
-
-This attribute allows for specifying the resource_id for an
-existing external (to the stack) resource. External resources
-cannot depend on other resources, but we allow other resources to
-depend on external resource. This attribute is optional.
-Note: when this is specified, properties will not be used for
-building the resource and the resource is not managed by Heat.
-This is not possible to update that attribute. Also,
-resource won’t be deleted by heat when stack is deleted.
-
-
-condition
-_________
-
-The resource attribute \"condition:\" is an OpenStack optional attribute.
-
-Support for the resource condition attribute was added
-in the Newton release of OpenStack.
-
-outputs
-+++++++
-
-R-36982 A VNF’s Heat Orchestration template **MAY**
-contain the “outputs:” section.
-
-This section allows for specifying output parameters
-available to users once the template has been instantiated. If the
-section is specified, it will need to adhere to specific requirements.
-See `ONAP Parameter Classifications Overview`_ and
-`ONAP Output Parameter Names`_ for additional details.
-
-Environment File Format
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The environment file is a yaml text file.
-(https://docs.openstack.org/developer/heat/template_guide/environment.html)
-
-R-86285 The VNF Heat Orchestration Template **MUST** have a corresponding
-environment file, even if no parameters are required to be enumerated.
-
-The use of an environment file in OpenStack is optional.
-In ONAP, it is mandatory.
-
-R-03324 The VNF Heat Orchestration Template **MUST** contain the
-"parameters" section in the
-environment file
-
-R-68198 A VNF’s Heat Orchestration template’s Environment File’s
-“parameters:” section **MAY** enumerate parameters.
-
-ONAP implementation requires the parameters section in the
-environmental file to be declared. The parameters section
-contains a list of key/value pairs.
-
-R-59930 A VNF’s Heat Orchestration template’s Environment
-File’s **MAY** contain the “parameter_defaults:” section.
-
-The “parameter_defaults:” section contains default parameters
-that are passed to all template resources.
-
-R-46096 A VNF’s Heat Orchestration template’s Environment File’s
-**MAY** contain the “encrypted_parameters:” section.
-
-The “encrypted_parameters:” section contains a list of encrypted parameters.
-
-R-24893 A VNF’s Heat Orchestration template’s Environment File’s
-**MAY** contain the “event_sinks:” section.
-
-The “event_sinks:” section contains the list of endpoints that would
-receive stack events.
-
-R-42685 A VNF’s Heat Orchestration template’s Environment File’s
-**MAY** contain the “parameter_merge_strategies:” section.
-
-The “parameter_merge_strategies:” section provides the merge strategies
-for merging parameters and parameter defaults from the environment file.
-
-R-67231 A VNF’s Heat Orchestration template’s Environment File’s **MUST NOT**
-contain the “resource_registry:” section.
-
-ONAP implementation does not support the Environment File
-resource_registry section. The resource_registry section
-allows for the definition of custom resources.
-
-
-SDC Treatment of Environment Files
-++++++++++++++++++++++++++++++++++
-
-Parameter values enumerated in the environment file are used by SDC as
-the default value. However, the SDC user may use the SDC GUI to
-overwrite the default values in the environment file.
-
-SDC generates a new environment file for distribution to MSO based on
-the uploaded environment file and the user provided GUI updates. The
-user uploaded environment file is discarded when the new file is
-created.
-
-ONAP has requirements for what parameters must be enumerated in the
-environment file and what parameter must not be enumerated in the
-environment file. See `ONAP Parameter Classifications Overview`_ and
-`ONAP Resource ID and Parameter Naming Convention`_ for more details.
-
-ONAP Heat Orchestration Templates: Overview
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-ONAP supports a modular Heat Orchestration Template design pattern,
-referred to as *VNF Modularity.*
-
-ONAP VNF Modularity Overview
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-R-69663 A VNF **MAY** be composed from one or more Heat Orchestration
-Templates, each of which represents a subset of the overall VNF.
-
-The Heat Orchestration Templates can be thought of a components or
-modules of the VNF and are referred to as “\ *VNF Modules*\ ”.
-During orchestration, these modules are
-deployed incrementally to create the complete VNF.
-
-R-33132 A VNF’s Heat Orchestration Template **MAY** be 1.) Base Module
-Heat Orchestration Template (also referred to as a Base Module), 2.)
-Incremental Module Heat Orchestration Template (referred to as an Incremental
-Module), or 3.) a Cinder Volume Module Heat Orchestration Template
-(referred to as Cinder Volume Module).
-
-R-37028 The VNF **MUST** be composed of one “base” module.
-
-R-13196 A VNF **MAY** be composed of zero to many Incremental Modules
-
-R-20974 The VNF **MUST** deploy the base module first, prior to
-the incremental modules.
-
-R-28980 A VNF’s incremental module **MAY** be used for initial VNF
-deployment only.
-
-R-86926 A VNF’s incremental module **MAY** be used for scale out only.
-
-A VNF’s Incremental Module that is used for scale out is deployed
-sometime after initial VNF deployment to add capacity.
-
-R-91497 A VNF’s incremental module **MAY** be used for both deployment
-and scale out.
-
-R-68122 A VNF’s incremental module **MAY** be deployed more than once,
-either during initial VNF deployment and/or scale out.
-
-R-46119 A VNF’s Heat Orchestration Template’s Resource OS::Heat::CinderVolume
-**MAY** be defined in a Base Module.
-
-R-90748 A VNF’s Heat Orchestration Template’s Resource OS::Cinder::Volume
-**MAY** be defined in an Incremental Module.
-
-R-03251 A VNF’s Heat Orchestration Template’s Resource OS::Cinder::Volume
-**MAY** be defined in a Cinder Volume Module.
-
-ONAP also supports the concept of an optional, independently deployed Cinder
-volume via a separate Heat Orchestration Templates, referred to as a Cinder
-Volume Module. This allows the volume to persist after a Virtual Machine
-(VM) (i.e., OS::Nova::Server) is deleted, allowing the volume to be reused
-on another instance (e.g., during a failover activity).
-
-R-11200 The VNF **MUST** keep the scope of a Cinder volume module, when it
-exists, to be 1:1 with the VNF Base Module or Incremental Module
-
-It is strongly recommended that Cinder Volumes be created in a Cinder Volume
-Module.
-
-R-38474 The VNF **MUST** have a corresponding environment file for a
-Base Module.
-
-R-81725 The VNF **MUST** have a corresponding environment file for an
-Incremental Module.
-
-R-53433 The VNF **MUST** have a corresponding environment file for a
-Cinder Volume Module.
-
-These concepts will be described in more detail throughout the document.
-This overview is provided to set the stage and help clarify the concepts
-that will be introduced.
-
-Nested Heat Orchestration Templates Overview
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-ONAP supports nested Heat Orchestration Templates per OpenStack
-specifications.
-
-R-36582 A VNF’s Base Module **MAY** utilize nested heat.
-
-R-56721 A VNF’s Incremental Module **MAY** utilize nested heat.
-
-R-30395 A VNF’s Cinder Volume Module **MAY** utilize nested heat.
-
-Nested templates may be suitable for larger VNFs that contain many
-repeated instances of the same VM type(s). A common usage pattern is to
-create a nested template for each VM type along with its supporting
-resources. The Heat Orchestration Template may then reference these
-nested templates either statically (by repeated definition) or
-dynamically (via OS::Heat::ResourceGroup).
-
-See `Nested Heat Templates`_ for additional details.
-
-ONAP Heat Orchestration Template Filenames
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In order to enable ONAP to understand the relationship between Heat
-files, the following Heat file naming convention must be utilized.
-
-In the examples below, <text> represents any alphanumeric string that
-must not contain any special characters and must not contain the word
-“base”.
-
-R-87485 A VNF’s Heat Orchestration Template’s file extension **MUST**
-be in the lower case format ‘.yaml’ or ‘.yml’.
-
-R-56438 A VNF’s Heat Orchestration Template’s Nested YAML file extension
-**MUST** be in the lower case format ‘.yaml’ or ‘.yml’.
-
-R-74304 A VNF’s Heat Orchestration Template’s Environment file extension
-**MUST** be in the lower case format ‘.env’.
-
-Base Modules
-++++++++++++
-
-R-81339 A VNF Heat Orchestration Template’s Base Module file name **MUST**
-include ‘base’ in the filename and **MUST** match one of the following four
-formats: 1.) ‘base_<text>.y[a]ml’, 2.) ‘<text>_base.y[a]ml’, 3.)
-‘base.y[a]ml’, or 4.) ‘<text>_base_<text>’.y[a]ml; where ‘base’ is case
-insensitive and where ‘<text>’ **MUST** contain only alphanumeric characters
-and underscores ‘_’ and **MUST NOT** contain the case insensitive word ‘base’.
-
-R-91342 A VNF Heat Orchestration Template’s Base Module’s Environment File
-**MUST** be named identical to the VNF Heat Orchestration Template’s Base
-Module with ‘.y[a]ml’ replaced with ‘.env’.
-
-Incremental Modules
-+++++++++++++++++++
-
-R-87247 A VNF Heat Orchestration Template’s Incremental Module file name
-**MUST** contain only alphanumeric characters and underscores ‘_’ and
-**MUST NOT** contain the case insensitive word ‘base’.
-
-R-94509 A VNF Heat Orchestration Template’s Incremental Module’s Environment
-File **MUST** be named identical to the VNF Heat Orchestration Template’s
-Incremental Module with ‘.y[a]ml’ replaced with ‘.env’.
-
-To clearly identify the incremental module, it is recommended to use the
-following naming options for modules:
-
- - module_<text>.y[a]ml
-
- - <text>_module.y[a]ml
-
- - module.y[a]ml
-
- - <text>_module_<text>.y[a]ml
-
-Cinder Volume Modules
-+++++++++++++++++++++
-
-R-82732 A VNF Heat Orchestration Template’s Cinder Volume Module **MUST** be
-named identical to the base or incremental module it is supporting with
-‘_volume appended’
-
-R-31141 A VNF Heat Orchestration Template’s Cinder Volume Module’s Environment
-File **MUST** be named identical to the VNF Heat Orchestration Template’s
-Cinder Volume Module with .y[a]ml replaced with ‘.env’.
-
-Nested Heat file
-++++++++++++++++
-
-R-76057 A VNF Heat Orchestration Template’s Nested YAML file name **MUST**
-contain only alphanumeric characters and underscores ‘_’ and **MUST NOT**
-contain the case insensitive word ‘base’.
-
-Examples include
-
- - <text>.y[a]ml
-
- - nest_<text>.y[a]ml
-
- - <text>_nest.y[a]ml
-
- - nest.y[a]ml
-
- - <text>_nest_<text>.y[a]ml
-
-VNF Heat Orchestration Template's Nested YAML file does not have a
-corresponding environment files, per OpenStack specifications.
-
-R-18224 The VNF Heat Orchestration Template **MUST** pass in as properties
-all parameter values
-associated with the nested heat file in the resource definition defined
-in the parent heat template.
-
-Output Parameters
-~~~~~~~~~~~~~~~~~
-
-The output parameters are parameters defined in the output section of a
-Heat Orchestration Template. The ONAP output parameters are subdivided
-into three categories:
-
-1. ONAP Base Module Output Parameters
-
-2. ONAP Volume Module Output Parameters
-
-3. ONAP Predefined Output Parameters.
-
-ONAP Base Module Output Parameters
-++++++++++++++++++++++++++++++++++++
-
-ONAP Base Module Output Parameters are declared in the 'outputs:'' section of
-the VNF's Heat Orchestration Template's Base Module. A Base Module Output
-Parameter is available as an input parameter (i.e., declared in the
-'parameters:'' section) to all Incremental Modules in the VNF.
-
-A Base Module Output Parameter may be used as an input parameter in any
-incremental module in the VNF. Note that the parameter is not
-available to other VNFs.
-
-R-52753 VNF’s Heat Orchestration Template’s Base Module’s output parameter’s
-name and type **MUST** match the VNF’s Heat Orchestration Template’s
-incremental Module’s name and type unless the output parameter is of type
-‘comma_delimited_list’, then the corresponding input parameter **MUST**
-be declared as type ‘json’.
-
-If the Output parameter has a comma_delimited_list value (e.g., a collection
-of UUIDs from a Resource Group), then the corresponding input parameter
-must be declared as type json and not a comma_delimited_list, which is
-actually a string value with embedded commas.
-
-R-22608 When a VNF’s Heat Orchestration Template’s Base Module’s output
-parameter is declared as an input parameter in an Incremental Module,
-the parameter attribute ‘constraints:’ **MUST NOT** be declared.
-
-Additional details on ONAP Base Module Output Parameters are provided in
-`ONAP Output Parameter Names`_ and ONAP VNF Modularity.
-
-ONAP Volume Module Output Parameters
-++++++++++++++++++++++++++++++++++++
-
-R-89913 A VNF’s Heat Orchestration Template’s Cinder Volume Module Output
-Parameter(s) **MUST** include the UUID(s) of the Cinder Volumes created in
-template, while other Output Parameters **MAY** be included.
-
-A VNF’s Heat Orchestration Template’s Cinder Volume Module Output Parameter(s)
-are only available for the module (base or incremental) that the volume
-template is associated with.
-
-R-07443 A VNF’s Heat Orchestration Templates’ Cinder Volume Module Output
-Parameter’s name and type **MUST** match the input parameter name and type
-in the corresponding Base Module or Incremental Module unless the Output
-Parameter is of the type ‘comma_delimited_list’, then the corresponding input
-parameter **MUST** be declared as type ‘json’.
-
-If the Output parameter has a comma_delimited_list value (e.g., a collection
-of UUIDs from a Resource Group), then the corresponding input parameter must
-be declared as type json and not a comma_delimited_list, which is actually a
-string value with embedded commas.
-
-R-20547 When an ONAP Volume Module Output Parameter is declared as an input
-parameter in a base or an incremental module Heat Orchestration Template,
-parameter constraints **MUST NOT** be declared.
-
-Additional details on ONAP Base Module Output Parameters are provided in
-`ONAP Output Parameter Names`_ and `Cinder Volume Templates`_.
-
-ONAP Predefined Output Parameters
-+++++++++++++++++++++++++++++++++++
-
-ONAP will look for a small set of pre-defined Heat output parameters to
-capture resource attributes for inventory in ONAP. These output parameters
-are optional and currently only two parameters are supported. These output
-parameters are optional and are specified in `OAM Management IP Addresses`_.
-
-Support of heat stack update
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-ONAP does not support the use of heat stack-update command for scaling
-(growth/de-growth).
-
-R-39349 A VNF Heat Orchestration Template **MUST NOT** be designed to
-utilize the OpenStack ‘heat stack-update’ command for scaling
-(growth/de-growth).
-
-R-43413 A VNF **MUST** utilize a modular Heat Orchestration Template
-design to support scaling (growth/de-growth).
-
-Scope of a Heat Orchestration Template
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-R-59482 A VNF’s Heat Orchestration Template **MUST NOT** be VNF instance
-specific or Cloud site specific
-
-R-56750 A VNF’s Heat Orchestration Template’s parameter values that are
-constant across all deployments **MUST** be declared in a Heat Orchestration
-Template Environment File.
-
-ONAP provides the instance specific parameter values to the Heat
-Orchestration Template at orchestration time.
-
-R-01896 A VNF’s Heat Orchestration Template’s parameter values that are
-constant across all deployments **MUST** be declared in a Heat Orchestration
-Template Environment File.
-
-Networking
-^^^^^^^^^^
-
-ONAP defines two types of networks: External Networks and Internal Networks.
-
-External Networks
-~~~~~~~~~~~~~~~~~
-
-ONAP defines an external network in relation to the VNF and not with regard
-to the Network Cloud site. External networks may also be referred to as
-“inter-VNF” networks. An external network must connect VMs in a VNF to
-VMs in another VNF or an external gateway or external router.
-
-An External Network may be a Neutron Network or a Contrail Network.
-
-R-16968 A VNF’s Heat Orchestration Templates **MUST NOT** include heat
-resources to create external networks.
-
-External networks must be orchestrated separately, independent of the VNF.
-This allows the network to be shared by multiple VNFs and managed
-independently of VNFs.
-
-R-00606 A VNF **MAY** be connected to zero, one or more than one external
-networks.
-
-R-57424 A VNF’s port connected to an external network **MUST** connect the
-port to VMs in another VNF and/or an external gateway and/or external router.
-
-R-29865 A VNF’s port connected to an external network **MUST NOT** connect
-the port to VMs in the same VNF.
-
-R-69014 When a VNF connects to an external network, a network role, referred
-to as the ‘{network-role}’ **MUST** be assigned to the external network
-for use in the VNF’s Heat Orchestration Template.
-
-R-05201 When a VNF connects to two or more external networks, each external
-network **MUST** be assigned a unique ‘{network-role}’ in the context of
-the VNF for use in the VNF’s Heat Orchestration Template.
-
-R-83015 A VNF’s ‘{network-role}’ assigned to an external network **MUST**
-be different than the ‘{network-role}’ assigned to the VNF’s internal
-networks, if internal networks exist.
-
-ONAP enforces a naming convention for parameters associated with
-external networks. `ONAP Resource ID and Parameter Naming Convention`_
-provides additional details.
-
-Internal Networks
-~~~~~~~~~~~~~~~~~
-
-ONAP defines an internal network in relation to the VNF and not with
-regard to the Network Cloud site. Internal networks may also be referred
-to as “intra-VNF” networks or “private” networks. An internal network
-only connects VMs in a single VNF; it must not connect to other VNFs
-or an external gateway or router
-
-R-87096 A VNF **MAY** contain zero, one or more than one internal networks.
-
-R-35666 If a VNF has an internal network, the VNF Heat Orchestration
-Template **MUST** include the heat resources to create the internal network.
-
-R-86972 A VNF **SHOULD** create the internal network in the VNF’s Heat
-Orchestration Template Base Module.
-
-An Internal Network may be created using Neutron Heat Resources and/or
-Contrail Heat Resources.
-
-R-52425 A VNF’s port connected to an internal network **MUST** connect
-the port to VMs in the same VNF.
-
-R-46461 A VNF’s port connected to an internal network **MUST NOT** connect
-the port to VMs in another VNF and/or an external gateway and/or
-external router.
-
-R-68936 When a VNF creates an internal network, a network role, referred to
-as the ‘{network-role}’ **MUST** be assigned to the internal network for
-use in the VNF’s Heat Orchestration Template.
-
-R-32025 When a VNF creates two or more internal networks, each internal
-network **MUST** be assigned a unique ‘{network-role}’ in the context of
-the VNF for use in the VNF’s Heat Orchestration Template.
-
-R-69874 A VNF’s ‘{network-role}’ assigned to an internal network **MUST**
-be different than the ‘{network-role}’ assigned to the VNF’s external
-networks.
-
-R-34726 If a VNF’s port is connected to an internal network and the port
-is created in the same Heat Orchestration Template as the internal network,
-then the port resource **MUST** use a ‘get_resource’ to obtain
-the network UUID.
-
-R-22688 If a VNF’s port is connected to an internal network and the
-port is created in an Incremental Module and the internal network is created
-in the Base Module then the UUID of the internal network **MUST** be exposed
-as a parameter in the ‘outputs:’ section of the Base Module and the port
-resource **MUST** use a ‘get_param’ to obtain the network UUID.
-
-ONAP does not programmatically enforce a naming convention for
-parameters for internal network. However, a naming convention is
-provided that must be followed.
-`ONAP Resource ID and Parameter Naming Convention`_
-provides additional details.
-
-ONAP Resource ID and Parameter Naming Convention
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section provides the ONAP naming requirements for
-
-1. Resource IDs
-
-2. Resource Property Parameters
-
-{vm-type}
-~~~~~~~~~
-
-R-01455 When a VNF's Heat Orchestration Template creates a
-Virtual Machine (i.e., 'OS::Nova::Server'), each 'class' of VMs
-**MUST** be assigned a VNF unique '{vm-type}'; where 'class'
-defines VMs that **MUST** have the following identical characteristics:
-
- 1.) OS::Nova::Server property flavor value
-
- 2.) OS::Nova::Server property image value
-
- 3.) Cinder Volume attachments
- - Each VM in the 'class' **MUST** have the identical Cinder Volume
- configuration
-
- 4.) Network attachments and IP address requirements
- - Each VM in the 'class' **MUST** have the the identical number
- of ports connecting to the identical networks and requiring the
- identical IP address configuration.
-
-R-82481 A VNF's Heat Orchestration Template's Resource property
-parameter that is
-associated with a unique Virtual Machine type **MUST**
-include '{vm-type}' as part of the parameter name with two
-exceptions:
-
- 1.) The Resource OS::Nova::Server property availability_zone parameter
- **MUST NOT** be prefixed with a common '{vm-type} identifier,
-
- 2.) The Resource OS::Nova::Server eight mandatory and optional metadata
- parameters (vnf_name, vnf_id, vf_module_id, vf_module_name, vm_role,
- vf_module_index, environment_context, workload_context) **MUST NOT**
- be prefixed with a common '{vm-type}' identifier.
-
-
-R-66729 A VNF’s Heat Orchestration Template’s Resource that is
-associated with a unique Virtual Machine type **MUST** include
-‘{vm-type}’ as part of the resource ID.
-
-R-98407 A VNF's Heat Orchestration Template's '{vm-type}' **MUST** contain
-only alphanumeric characters and/or underscores '_' and
-**MUST NOT** contain any of the following strings: '_int' or 'int\_'
-or '\_int\_'.
-
-R-48067 A VNF's Heat Orchestration Template's {vm-type} **MUST NOT** be a
-substring of {network-role}.
-
-It may cause the Pre-Amsterdam VNF Validation Program (i.e.,
-ICE Project) process to produce erroneous error messages.
-
-R-32394 A VNF’s Heat Orchestration Template’s use of ‘{vm-type}’
-in all Resource property parameter names **MUST** be the same case.
-
-R-46839 A VNF’s Heat Orchestration Template’s use of
-‘{vm-type}’ in all Resource IDs **MUST** be the same case.
-
-R-36687 A VNF’s Heat Orchestration Template’s ‘{vm-type}’ case in
-Resource property parameter names **SHOULD** match the case of
-‘{vm-type}’ in Resource IDs and vice versa.
-
-{network-role}
-~~~~~~~~~~~~~~
-
-The assignment of a {network-role} is discussed in `Networking`_.
-
-R-21330 A VNF’s Heat Orchestration Template’s Resource property
-parameter that is associated with external network **MUST**
-include the ‘{network-role}’’ as part of the parameter name
-
-R-11168 A VNF's Heat Orchestration Template's Resource ID that is
-associated with an external network **MUST** include the
-'{network-role}' as part of the resource ID.
-
-R-84322 A VNF's Heat Orchestration Template's Resource property
-parameter that is associated with an internal network
-**MUST** include 'int\_{network-role}' as part of the parameter
-name, where 'int\_' is a hard coded string.
-
-R-96983 A VNF's Heat Orchestration Template's Resource ID that is
-associated with an internal network **MUST** include
-'int\_{network-role}' as part of the Resource ID, where
-'int\_' is a hard coded string.
-
-R-26506 A VNF's Heat Orchestration Template's '{network-role}'
-**MUST** contain only alphanumeric characters and/or
-underscores '_' and **MUST NOT** contain any of the following
-strings: '_int' or 'int\_' or '\_int\_'.
-
-R-00977 A VNF’s Heat Orchestration Template’s ‘{network-role}’
-**MUST NOT** be a substring of ‘{vm-type}’.
-
-For example, if a VNF has a ‘{vm-type}’ of ‘oam’ and a
-‘{network-role}’ of ‘oam_protected’ would be a violation of the requirement.
-
-R-58424 A VNF’s Heat Orchestration Template’s use of ‘{network-role}’
-in all Resource property parameter names **MUST** be the same case
-
-R-21511 A VNF’s Heat Orchestration Template’s use of ‘{network-role}’
-in all Resource IDs **MUST** be the same case.
-
-R-86588 A VNF’s Heat Orchestration Template’s ‘{network-role}’ case
-in Resource property parameter names **SHOULD** match the case
-of ‘{network-role}’ in Resource IDs and vice versa.
-
-Resource IDs
-~~~~~~~~~~~~
-
-Requirement R-75141 states a VNF’s Heat Orchestration Template’s
-resource name (i.e., <resource ID>) MUST only contain alphanumeric
-characters and underscores (‘_’).*
-
-Requirement R-16447 states a VNF’s <resource ID> MUST be unique
-across all Heat Orchestration Templates and all HEAT Orchestration
-Template Nested YAML files that are used to create the VNF.
-
-As stated previously, OpenStack requires the <resource ID> to be unique
-to the Heat Orchestration Template and not unique across all Heat
-Orchestration Templates the compose the VNF.
-
-Heat Orchestration Template resources are described in `resources`_
-
-R-54517 When a VNF’s Heat Orchestration Template’s resource is associated
-with a single ‘{vm-type}’, the Resource ID **MUST** contain the ‘{vm-type}’.
-
-R-96482 When a VNF’s Heat Orchestration Template’s resource is associated
-with a single external network, the Resource ID MUST contain the text
-‘{network-role}’.
-
-R-98138 When a VNF’s Heat Orchestration Template’s resource is associated
-with a single internal network, the Resource ID MUST contain the text
-‘int\_{network-role}’.
-
-R-82115 When a VNF's Heat Orchestration Template's resource is associated
-with a single '{vm-type}' and a single external network, the Resource
-ID text **MUST** contain both the '{vm-type}' and the '{network-role}'
-
-- the '{vm-type}' **MUST** appear before the '{network-role}' and **MUST**
- be separated by an underscore '_'
-
- - e.g., '{vm-type}_{network-role}', '{vm-type}_{index}_{network-role}'
-
-- note that an '{index}' value **MAY** separate the '{vm-type}' and the
- '{network-role}' and when this occurs underscores **MUST** separate the
- three values.
-
-R-82551 When a VNF's Heat Orchestration Template's resource is associated
-with a single '{vm-type}' and a single internal network, the Resource ID
-**MUST** contain both the '{vm-type}' and the 'int\_{network-role}' and
-
-- the '{vm-type}' **MUST** appear before the 'int\_{network-role}' and
- **MUST** be separated by an underscore '_'
-
- - (e.g., '{vm-type}\_int\_{network-role}',
- '{vm-type}_{index}\_int\_{network-role}')
-
-- note that an '{index}' value **MAY** separate the '{vm-type}' and the
- 'int\_{network-role}' and when this occurs underscores **MUST** separate
- the three values.
-
-R-67793 When a VNF’s Heat Orchestration Template’s resource is associated
-with more than one ‘{vm-type}’ and/or more than one internal and/or
-external network, the Resource ID **MUST NOT** contain the ‘{vm-type}’
-and/or ‘{network-role}’/’int\_{network-role}’. It also should contain the
-term ‘shared’ and/or contain text that identifies the VNF
-
-R-27970 When a VNF’s Heat Orchestration Template’s resource is associated
-with more than one ‘{vm-type}’ and/or more than one internal and/or
-external network, the Resource ID **MAY** contain the term ‘shared’
-and/or **MAY** contain text that identifies the VNF.
-
-R-11690 When a VNF’s Heat Orchestration Template’s Resource ID contains
-an {index} value (e.g. multiple VMs of same {vm-type}), the ‘{index}’
-**MUST** start at zero and increment by one.
-
-The table below provides example OpenStack Heat resource ID for
-resources only associated with one {vm-type} and/or one network.
-
-The Requirements column states if the Resource ID Format MUST be followed
-or SHOULD be followed. Resource ID formats that are marked MUST must be
-followed, no deviations are permitted. Resource ID formats that are marked
-SHOULD should be followed. However, deviations are permissible to meet
-the needs of the VNF’s Heat Orchestration Template.
-
-+-----------------+-------------------------+-------------+------------------+
-|Resource Type |Resource ID Format | Requirements| Notes |
-| | | | |
-+=================+=========================+=============+==================+
-| OS::Cinder:: | {vm-type}\_volume\ | **SHOULD** | |
-| Volume | _{index} | | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Cinder:: | {vm-type}\ | **SHOULD** | |
-| VolumeAttachment| _volumeattachment\ | | |
-| | _{index} | | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Heat:: | {vm-type}_RCC | **SHOULD** | |
-| CloudConfig | | | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Heat:: | {vm-type}_RMM | **SHOULD** | |
-| MultipartMime | | | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Heat:: | {vm-type}_RRG | **SHOULD** | |
-| ResourceGroup | | | |
-+-----------------+-------------------------+-------------+------------------+
-| | {vm-type}\_{index}\ | **MUST** for| Resource ID for |
-| | _subint\_{network-role}\| subinterface| the OS::Heat:: |
-| | _port\_{index}\ | creation | ResourceGroup |
-| | _subinterfaces | | that creates |
-| | | | subinterfaces |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Heat:: | {vm-type}_RSC | **SHOULD** | |
-| SoftwareConfig | | | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Neutron:: | {vm-type}\ | **MUST** | Resource ID for |
-| Port | _{vm-type-index}\ | | port connecting |
-| | _{network-role}\_port\ | | to an external |
-| | _{port-index} | | network. The |
-| | | | {vm-type-index} |
-| | | | is the instance |
-| | | | of the {vm_type}.|
-| | | | The {port-index} |
-| | | | is the instance |
-| | | | of the “port” on |
-| | | | the {vm-type}. |
-| | | | There is no index|
-| | | | after |
-| | | | {network_role} |
-| | | | since |
-| | | | {network-role} is|
-| | | | unique to the |
-| | | | VNF, there should|
-| | | | only be one |
-| | | | instance. |
-+-----------------+-------------------------+-------------+------------------+
-| | {vm-type}\_{index}\_int\| **MUST** | Resource ID for |
-| | _{network-role}\_port\ | | port connecting |
-| | _{index} | | to an internal |
-| | | | network. The |
-| | | | {index} that |
-| | | | follows {vm-type}|
-| | | | is the instance |
-| | | | of the {vm_type}.|
-| | | | The {index} that |
-| | | | follows “port” is|
-| | | | the instance of |
-| | | | the “port” on the|
-| | | | {vm-type}. There |
-| | | | is no index after|
-| | | | {network_role} |
-| | | | since |
-| | | | {network-role} is|
-| | | | unque to the AIC |
-| | | | LCP; there should|
-| | | | only be one |
-| | | | instance. |
-+-----------------+-------------------------+-------------+------------------+
-| | Reserve_Port\_{vm-type}\| | Resource ID for a|
-| | _{network-role}\ | **MUST** | reserve port that|
-| | _floating_ip\_{index} | | is used for an |
-| | | | allowed_address |
-| | Reserve_Port\_{vm-type}\| | \_pair. See |
-| | _{network-role}\ | | Section 5.6.5.5 |
-| | _floating_v6_ip\ | | for additional |
-| | _{index} | | details. |
-| | | | |
-| | | | There is no |
-| | | | {index} that |
-| | | | follows {vm-type}|
-+-----------------+-------------------------+-------------+------------------+
-| OS::Neutron:: | {vm-type}\_Sec\_Grp | **SHOULD** | Security Group |
-| SecurityGroup | | | applicable to one|
-| | | | {vm-type} and |
-| | | | more than one |
-| | | | network (internal|
-| | | | and/or external) |
-+-----------------+-------------------------+-------------+------------------+
-| | {network-role}\_Sec\_Grp| **SHOULD** | Security Group |
-| | | | applicable to |
-| | | | more than one |
-| | | | {vm-type} and one|
-| | | | external network |
-+-----------------+-------------------------+-------------+------------------+
-| | int\_{network-role}\ | **SHOULD** | Security Group |
-| | _Sec\_Grp | | applicable to |
-| | | | more than one |
-| | | | {vm-type} and one|
-| | | | internal network |
-+-----------------+-------------------------+-------------+------------------+
-| | {vm-type}\ | **SHOULD** | Security Group |
-| | _{network-role}\_Sec\ | | applicable to one|
-| | _Grp | | {vm-type} and one|
-| | | | external network |
-+-----------------+-------------------------+-------------+------------------+
-| | {vm-type}\_int\ | **SHOULD** | Security Group |
-| | _{network-role}\_Sec\ | | applicable to one|
-| | _Grp | | {vm-type} and one|
-| | | | internal network |
-+-----------------+-------------------------+-------------+------------------+
-| | Shared\_Sec\_Grp | **SHOULD** | Security Group |
-| | | | applicable to |
-| | | | more than one |
-| | | | {vm-type} and |
-| | | | more than one |
-| | | | network (internal|
-| | | | and/or external) |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Neutron:: | int\_{network-role}\ | **MUST** | VNF Heat |
-| Subnet | _subnet\_{index} | | Orchestration |
-| | | | Templates can |
-| | | | only create |
-| | | | internal |
-| | | | networks. |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Neutron::Net| int\_{network-role}\ | **MUST** | VNF Heat |
-| | _network | | Orchestration |
-| | | | Templates can |
-| | | | only create |
-| | | | internal |
-| | | | networks. There |
-| | | | is no {index} |
-| | | | because |
-| | | | {nework-role} |
-| | | |should be unique. |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Nova:: | {vm-type}\_keypair\ | **SHOULD** | Key Pair |
-| Keypair | _{index} | | applicable to one|
-| | | | a{vm-type} |
-+-----------------+-------------------------+-------------+------------------+
-| | {vnf-type}_keypair | **SHOULD** | Key Pair |
-| | | | applicable to all|
-| | | | {vm-type} in the |
-| | | | VNF |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Nova::Server| {vm-type}\_server\ | Mandatory | |
-| | _{index} | | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Nova:: | {vm-type}_RSG | **SHOULD** | Both formats are |
-| ServerGroup | | | valid. |
-+-----------------+-------------------------+-------------+------------------+
-| | {vm-type}_Server_Grp | **SHOULD** | |
-+-----------------+-------------------------+-------------+------------------+
-| | {vm-type}_ServerGroup | **SHOULD** | |
-+-----------------+-------------------------+-------------+------------------+
-| OS::Swift:: | {vm-type}\_RSwiftC | **SHOULD** | |
-| Container | | | |
-+-----------------+-------------------------+-------------+------------------+
-
-
- Table 2: Example OpenStack Heat Resource ID
-
-The table below provides Resource ID Formats for Contrail heat resources.
- - The Resource ID formats that are marked mandatory must be followed.
- No deviations are permitted.
- - The Resource ID formats that are marked optional should be followed.
- However, deviations in the Resource ID format that is shown is
- permitted.
-
-+-----------------+---------------------+-----------------+-----------------+
-| Resource | Resource ID | Mandatory / | Notes |
-| Type | Format | Optional | |
-+=================+=====================+=================+=================+
-| OS::ContrailV2: | {vm-type}\_{index}\ | **MUST** – | The {index} |
-| :InstanceIp | _{network-role}\ | IPv4 address on | that follows |
-| | _vmi\_{index}\ | vmi external | {vm-type} is |
-| | _IP\_{index} | network | the instance of |
-| | | | the {vm_type}. |
-| | | | The {index} |
-| | | | that follows |
-| | | | “vmi” is the |
-| | | | instance of the |
-| | | | “vmi” on the |
-| | | | {vm-type}. |
-| | | | There is no |
-| | | | index after |
-| | | | {network_role} |
-| | | | since since |
-| | | | {network-role} |
-| | | | is unque. The |
-| | | | {index} that |
-| | | | follows the |
-| | | | “IP” is the |
-| | | | instance of the |
-| | | | “IP” on the |
-| | | | “vmi” |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** – | |
-| | _{network-role}\ | IPv6 address on | |
-| | _vmi\_{index}\_v6\ | vmi external | |
-| | _IP\_{index} | network | |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** – | |
-| | _int\ | IPv4 address on | |
-| | _{network-role}\ | vmi internal | |
-| | _vmi\_{index}\_IP\ | network | |
-| | _{index} | | |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** – | |
-| | _int\ | IPv6 address on | |
-| | _{network-role}\ | vmi internal | |
-| | _vmi\_{index}\_v6\ | network | |
-| | _IP\_{index} | | |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** – | |
-| | _subint\ | IPv4 address on | |
-| | _{network-role}\ | sub-interface | |
-| | _vmi\_{index}\_IP\ | vmi external | |
-| | _{index} | network | |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** – | |
-| | _subint\ | IPv6 address on | |
-| | _{network-role}\ | sub-interface | |
-| | _vmi\_{index}\_v6\ | vmi external | |
-| | _IP\_{index} | network | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | {network-role}\_RIRT| **MAY** | |
-| :InterfaceRoute | | | |
-| Table | | | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | {network-role}\_RNI | **MAY** | |
-| :NetworkIpam | | | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | {vm-type}\_RPT | **MAY** | |
-| :PortTuple | | | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | {vm-type}\_RSHC\ | **MAY** | |
-| :ServiceHealthC | _{LEFT/RIGHT} | | |
-| heck | | | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | {vm-type}\_RST\ | **MAY** | |
-| :ServiceTemplat | _{index} | | |
-| e | | | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | {vm-type}\_{index}\ | **MUST** - vmi | Resource ID for |
-| :VirtualMachine | _{network-role}\ | attached to an | virtual machine |
-| Interface | _vmi\_{index} | external | interface (vmi) |
-| | | network | connecting to |
-| | | | an external |
-| | | | network. The |
-| | | | {index} that |
-| | | | follows |
-| | | | {vm-type} is |
-| | | | the instance of |
-| | | | the {vm_type}. |
-| | | | The {index} |
-| | | | that follows |
-| | | | “vmi” is the |
-| | | | instance of the |
-| | | | “vmi” on the |
-| | | | {vm-type}. |
-| | | | There is no |
-| | | | index after |
-| | | | {network_role} |
-| | | | since since |
-| | | | {network-role} |
-| | | | is unque to the |
-| | | | AIC LCP; there |
-| | | | should only be |
-| | | | one instance. |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** - vmi | |
-| | _int\ | attached to an | |
-| | _{network-role}\ | internal | |
-| | _vmi\_{index} | network | |
-+-----------------+---------------------+-----------------+-----------------+
-| | {vm-type}\_{index}\ | **MUST** - vmi | |
-| | _subint\ | attached to a | |
-| | _{network-role}\ | sub-interface | |
-| | _vmi\_{index} | network | |
-+-----------------+---------------------+-----------------+-----------------+
-| OS::ContrailV2: | int\_{network-role}\| **MAY** | VNF Heat |
-| :VirtualNetwork | _RVN | | Orchestration |
-| | | | Templates can |
-| | | | only create |
-| | | | internal |
-| | | | networks. There |
-| | | | is no {index} |
-| | | | because |
-| | | | {nework-role} |
-| | | | should be |
-| | | | unique. Both |
-| | | | formats are |
-| | | | valid. |
-+-----------------+---------------------+-----------------+-----------------+
-| | int\_{network-role}\| **MAY** | |
-| | _network | | |
-+-----------------+---------------------+-----------------+-----------------+
-
- Table 3: Example Contrail Heat resource ID
-
-There is a use case where the template filename is used as the type: as
-shown in the example below. There is no suggested Resource ID naming
-convention for this use case.
-
-Example: Template Filename used as the type:
-
-.. code-block:: python
-
- heat_template_version: 2015-04-30
-
- resources:
- <Resource ID>:
- type: file.yaml
- properties:
- ...
-
-Resource: OS::Nova::Server - Parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The resource OS::Nova::Server manages the running virtual machine (VM)
-instance within an OpenStack cloud. (See
-https://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Nova::Server.)
-
-Four properties of this resource must follow the ONAP parameter naming
-convention. The four properties are:
-
-1. image
-
-2. flavor
-
-3. name
-
-4. availability\_zone
-
-Requirement R-01455 defines how the ‘{vm-type]’ is defined.
-
-Requirement R-82481 defines how the ‘{vm-type} is used.’
-
-The table below provides a summary. The sections that follow provides
-the detailed requirements.
-
-.. csv-table:: **Table 4 OS::Nova::Server Resource Property Parameter Naming Convention**
- :header: Property Name,Parameter Type,Parameter Name,Parameter Value Provided to Heat
- :align: center
- :widths: auto
-
- image, string, {vm-type}\_image\_name, Environment File
- flavor, string, {vm-type}\_flavor\_name, Environment File
- name, string, {vm-type}\_name\_{index}, ONAP
- name, CDL, {vm-type}_names, ONAP
- availability_zone, string, availability\_zone\_{index}, ONAP
-
-Property: image
-+++++++++++++++
-
-R-71152 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘image’ parameter **MUST** be declared as
-type: ‘string’.
-
-R-58670 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘image’ parameter name **MUST** follow the
-naming convention ‘{vm-type}_image_name’.
-
-R-91125 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘image’ parameter **MUST** be enumerated in
-the Heat Orchestration Template’s Environment File and a value **MUST** be
-assigned.
-
-R-57282 Each VNF’s Heat Orchestration Template’s ‘{vm-type}’
-**MUST** have a unique parameter name for the ‘OS::Nova::Server’
-property ‘image’ even if more than one {vm-type} shares the same image.
-
-*Example Parameter Definition*
-
-.. code-block:: yaml
-
- parameters:
- {vm-type}_image_name:
- type: string
- description: {vm-type} server image
-
-Property: flavor
-++++++++++++++++
-
-R-50436 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘flavor’ parameter **MUST** be declared as
-type: ‘string’.
-
-R-45188 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘flavor’ parameter name **MUST** follow the
-naming convention ‘{vm-type}_flavor_name’.
-
-R-69431 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘flavor’ parameter **MUST** be enumerated in the
-Heat Orchestration Template’s Environment File and a value **MUST** be
-assigned.
-
-R-40499 Each VNF’s Heat Orchestration Template’s ‘{vm-type}’ **MUST**
-have a unique parameter name for the ‘OS::Nova::Server’ property
-‘flavor’ even if more than one {vm-type} shares the same flavor.
-
-*Example Parameter Definition*
-
-.. code-block:: yaml
-
- parameters:
- {vm-type}_flavor_name:
- type: string
- description: {vm-type} flavor
-
-Property: Name
-++++++++++++++
-
-R-51430 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘name’ parameter **MUST** be declared as
-either type ‘string’ or type ‘comma_delimited_list”.
-
-R-54171 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘name’ parameter is defined as a ‘string’,
-the parameter name **MUST** follow the naming convention
-‘{vm-type}\_name\_{index}’, where {index} is a numeric value that starts
-at zero and increments by one.
-
-R-40899 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘name’ parameter is defined as a ‘string’,
-a parameter **MUST** be declared for each ‘OS::Nova::Server’ resource
-associated with the ‘{vm-type}’.
-
-R-87817 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘name’ parameter is defined as a
-‘comma_delimited_list’, the parameter name **MUST** follow the naming
-convention ‘{vm-type}_names’.
-
-R-85800 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘name’ parameter is defined as a
-‘comma_delimited_list’, a parameter **MUST** be delcared once for all
-‘OS::Nova::Server’ resources associated with the ‘{vm-type}’.
-
-R-22838 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘name’ parameter **MUST NOT** be enumerated
-in the Heat Orchestration Template’s Environment File.
-
-If a VNF’s Heat Orchestration Template’s contains more than three
-OS::Nova::Server resources of a given {vm-type}, the comma_delimited_list
-form of the parameter name (i.e., ‘{vm-type}_names’) should be used to
-minimize the number of unique parameters defined in the template.
-
-
-*Example: Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_names:
- type: comma_delimited_list
- description: VM Names for {vm-type} VMs
-
- {vm-type}_name_{index}:
- type: string
- description: VM Name for {vm-type} VM {index}
-
-*Example: comma_delimited_list*
-
-In this example, the {vm-type} has been defined as “lb” for load balancer.
-
-.. code-block:: python
-
- parameters:
-
- lb_names:
- type: comma_delimited_list
- description: VM Names for lb VMs
-
- resources:
- lb_server_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: [lb_names, 0] }
- ...
-
- lb_server_1:
- type: OS::Nova::Server
- properties:
- name: { get_param: [lb_names, 1] }
- ...
-
-*Example: fixed-index*
-
-In this example, the {vm-type} has been defined as “lb” for load balancer.
-
-.. code-block:: python
-
- parameters:
-
- lb_name_0:
- type: string
- description: VM Name for lb VM 0
-
- lb_name_1:
- type: string
- description: VM Name for lb VM 1
-
- resources:
-
- lb_server_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: lb_name_0 }
- ...
-
- lb_server_1:
- type: OS::Nova::Server
- properties:
- name: { get_param: lb_name_1 }
- ...
-
-Contrail Issue with Values for OS::Nova::Server Property Name
-_____________________________________________________________
-
-R-44271 The VNF's Heat Orchestration Template's Resource
-'OS::Nova::Server' property 'name' parameter value **SHOULD NOT**
-contain special characters since the Contrail GUI has a limitation
-displaying special characters.
-
-However, if special characters must be used, the only special characters
-supported are:
-
---- \" ! $ ' (\ \ ) = ~ ^ | @ ` { } [ ] > , . _
-
-
-Property: availability\_zone
-++++++++++++++++++++++++++++
-
-R-98450 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘availability_zone’ parameter name
-**MUST** follow the naming convention ‘availability\_zone\_{index}’
-where the ‘{index}’ **MUST** start at zero and increment by one.
-
-R-23311 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘availability_zone’ parameter **MUST**
-be declared as type: ‘string’.
-
-The parameter must not be declared as type ‘comma_delimited_list’,
-ONAP does not support it.
-
-R-59568 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Nova::Server’ property ‘availability_zone’ parameter **MUST NOT**
-be enumerated in the Heat Orchestration Template’s Environment File.
-
-Example Parameter Definition
-
-.. code-block:: python
-
- parameters:
- availability_zone_{index}:
- type: string
- description: availability zone {index} name
-
-Requirement R-90279 states that a VNF Heat Orchestration’s template’s
-parameter MUST be used in a resource with the exception of the parameters
-for the OS::Nova::Server resource property availability_zone.
-
-R-01359 A VNF’s Heat Orchstration Template that contains an
-‘OS::Nova:Server’ Resource **MAY** define a parameter for the property
-‘availability_zone’ that is not utilized in any ‘OS::Nova::Server’
-resources in the Heat Orchestration Template.
-
-Example
-+++++++
-
-The example below depicts part of a Heat Orchestration Template that
-uses the four OS::Nova::Server properties discussed in this section.
-
-In the Heat Orchestration Template below, four Virtual
-Machines (OS::Nova::Server) are created: two dns servers with
-{vm-type} set to “dns” and two oam servers with {vm-type} set to “oam”.
-Note that the parameter associated with the property name is a
-comma_delimited_list for dns and a string for oam.
-
-.. code-block:: python
-
- parameters:
-
- dns_image_name:
- type: string
- description: dns server image
-
- dns_flavor_name:
- type: string
- description: dns server flavor
-
- dns_names:
- type: comma_delimited_list
- description: dns server names
-
- oam_image_name:
- type: string
- description: oam server image
-
- oam_flavor_name:
- type: string
- description: oam server flavor
-
- oam_name_0:
- type: string
- description: oam server name 0
-
- oam_name_1:
- type: string
- description: oam server name 1
-
- availability_zone_0:
- type: string
- description: availability zone ID or Name
-
- availability_zone_1:
- type: string
- description: availability zone ID or Name
-
- resources:
-
- dns_server_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: [ dns_names, 0 ] }
- image: { get_param: dns_image_name }
- flavor: { get_param: dns_flavor_name }
- availability_zone: { get_param: availability_zone_0 }
-
- . . .
-
- dns_server_1:
- type: OS::Nova::Server
- properties:
- name: { get_param: [ dns_names, 1 ] }
- image: { get_param: dns_image_name }
- flavor: { get_param: dns_flavor_name }
- availability_zone: { get_param: availability_zone_1 }
-
- . . .
-
- oam_server_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: oam_name_0 }
- image: { get_param: oam_image_name }
- flavor: { get_param: oam_flavor_name }
- availability_zone: { get_param: availability_zone_0 }
-
- . . .
-
- oam_server_1:
- type: OS::Nova::Server
- properties:
- name: { get_param: oam_name_1 }
- image: { get_param: oam_image_name }
- flavor: { get_param: oam_flavor_name }
- availability_zone: { get_param: availability_zone_1 }
-
- . . .
-
-Boot Options
-++++++++++++
-
-R-99798 A VNF’s Heat Orchestration Template’s Virtual Machine
-(i.e., OS::Nova::Server Resource) **MAY** boot from an image or **MAY**
-boot from a Cinder Volume.
-
-R-83706 When a VNF’s Heat Orchestration Template’s Virtual Machine
-(i.e., ‘OS::Nova::Server’ Resource) boots from an image, the
-‘OS::Nova::Server’ resource property ‘image’ **MUST** be used.
-
-The requirements associated with
-the 'image' property are detailed in `Property: image`_
-
-R-69588 When a VNF’s Heat Orchestration Template’s Virtual Machine
-(i.e., ‘OS::Nova::Server’ Resource) boots from Cinder Volume, the
-‘OS::Nova::Server’ resource property ‘block_device_mapping’ or
-‘block_device_mapping_v2’ **MUST** be used.
-
-There are currently no heat guidelines
-associated with these two properties:
-'block_device_mapping' and 'block_device_mapping_v2'.
-
-Resource: OS::Nova::Server – Metadata Parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The OS::Nova::Server Resource property metadata is an optional
-OpenStack property.
-The table below summarizes the mandatory and optional metadata
-supported by ONAP.
-
-The sections that follow provides the requirements associated with each
-metadata parameter.
-
-.. csv-table:: **Table 5 OS::Nova::Server Mandatory and Optional Metadata**
- :header: Metadata Parameter Name, Parameter Type, Required, Parameter Value Provided to Heat
- :align: center
- :widths: auto
-
- vnf_id, string, **MUST**, ONAP
- vf_module_id, string, **MUST**, ONAP
- vnf_name, string, **MUST**, ONAP
- vf_module_name, string, **SHOULD**, ONAP
- vm_role, string, **MAY**, YAML or Environment File
- vf_module_index, string, **MAY**, ONAP
- workload_context, string, **SHOULD**, ONAP
- environment_context, string, **SHOULD**, ONAP
-
-vnf\_id
-+++++++
-
-The OS::Nova::Server Resource metadata map value parameter 'vnf_id'
-is an ONAP generated UUID that identifies the VNF. The value
-is provided by ONAP to the VNF's Heat Orchestration
-Template at orchestration time.
-
-R-37437 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **MUST** contain the metadata map value parameter ‘vnf_id’.
-
-R-07507 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_id’ **MUST** be declared
-as type: ‘string’.
-
-R-55218 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_id’ **MUST NOT** have
-parameter contraints defined.
-
-R-20856 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_id’ **MUST NOT** be
-enumerated in the Heat Orchestration Template’s environment file.
-
-R-44491 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_id’ is passed into a
-Nested YAML file, the parameter name ‘vnf_id’ **MUST NOT** change.
-
-
-*Example 'vnf_id' Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- vnf_id:
- type: string
- description: Unique ID for this VNF instance
-
-vf\_module\_id
-++++++++++++++
-
-The OS::Nova::Server Resource metadata map value parameter 'vf\_module\_id'
-is an ONAP generated UUID that identifies the VF Module (e.g., Heat
-Orchestration Template). The value
-is provided by ONAP to the VNF's Heat Orchestration
-Template at orchestration time.
-
-R-71493 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **MUST** contain the metadata map value parameter
-‘vf\_module\_id’.
-
-R-82134 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_id’ **MUST**
-be declared as type: ‘string’.
-
-R-98374 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_id’ **MUST NOT**
-have parameter contraints defined.
-
-R-72871 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_id’ **MUST NOT**
-be enumerated in the Heat Orchestration Template’s environment file.
-
-R-86237 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf_module_id’ is passed
-into a Nested YAML file, the parameter name ‘vf\_module\_id’
-**MUST NOT** change.
-
-*Example 'vf\_module\_id' Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- vnf_module_id:
- type: string
- description: Unique ID for this VNF module instance
-
-
-vnf\_name
-+++++++++
-
-The OS::Nova::Server Resource metadata map value parameter 'vnf_name'
-is the ONAP generated alphanumeric name of the deployed VNF instance.
-The value
-is provided by ONAP to the VNF's Heat Orchestration
-Template at orchestration time.
-The parameter must be declared as type: string
-
-R-72483 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **MUST** contain the metadata map value parameter
-‘vnf_name’.
-
-R-62428 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_name’ **MUST** be
-declared as type: ‘string’.
-
-R-44318 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_name’ **MUST NOT** have
-parameter contraints defined.
-
-R-36542 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_name’ **MUST NOT** be
-enumerated in the Heat Orchestration Template’s environment file.
-
-R-16576 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_name’ is passed into a
-Nested YAML file, the parameter name ‘vnf_name’ **MUST NOT** change.
-
-*Example 'vnf_name' Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- vnf_name:
- type: string
- description: Unique name for this VNF instance
-
-vf\_module\_name
-++++++++++++++++
-
-The OS::Nova::Server Resource metadata map value parameter 'vf_module_name'
-is the deployment name of the heat stack created (e.g., <STACK_NAME>) from the
-VNF's Heat Orchestration template
-in the command 'Heat stack-create'
-(e.g., 'Heat stack-create [-f <FILE>] [-e <FILE>] <STACK_NAME>').
-The 'vf_module_name' (e.g., <STACK_NAME> is specified as
-part of the orchestration process.
-
-R-68023 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **SHOULD** contain the metadata map value parameter
-‘vf\_module\_name’.
-
-R-39067 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_name’ **MUST**
-be declared as type: ‘string’.
-
-R-15480 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_name’
-**MUST NOT** have parameter contraints defined.
-
-R-80374 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_name’
-**MUST NOT** be enumerated in the Heat Orchestration Template’s
-environment file.
-
-R-49177 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_name’ is passed
-into a Nested YAML file, the parameter name ‘vf\_module\_name’
-**MUST NOT** change.
-
-*Example 'vf_module_name' Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- vf_module_name:
- type: string
- description: Unique name for this VNF Module instance
-
-vm\_role
-++++++++
-
-The OS::Nova::Server Resource metadata map value parameter 'vm-role'
-is a metadata tag that describes the role of the Virtual Machine.
-The 'vm_role' is stored in ONAP's A&AI module and is
-available for use by other ONAP components and/or north bound systems.
-
-R-85328 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **MAY** contain the metadata map value parameter ‘vm_role’.
-
-R-95430 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vm_role’ **MUST** be
-declared as type: ‘string’.
-
-R-67597 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vm_role’ **MUST NOT** have
-parameter contraints defined.
-
-R-46823 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vnf_name’ **MUST** be
-either
-
- - enumerated in the VNF’s Heat Orchestration
- Template’s environment file.
-
- - hard coded in the VNF’s Heat Orchestration
- Template’s OS::Nova::Resource metadata property.
-
-Defining the 'vm_role' as the '{vm-type}' is a recommended convention
-
-R-86476 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vm_role’ value **MUST only**
-contain alphanumeric characters and underscores ‘_’.
-
-R-70757 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vm_role’ is passed into a
-Nested YAML file, the parameter name ‘vm_role’ **MUST NOT** change.
-
-
-*Example 'vm_role' Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- vm_role:
- type: string
- description: Unique role for this VM
-
-*Example: 'vm-role' Definition: Hard Coded in
-OS::Nova::Resource metadata property*
-
-.. code-block:: python
-
- resources:
-
- dns_server_0
- type: OS::Nova::Server
- properties:
- . . . .
- metadata:
- vm_role: dns
-
-*Example 'vm-role' Definition: Defined in Environment file
-and retrieved via 'get_param'*
-
-.. code-block:: python
-
- resources:
-
- dns_server_0:
- type: OS::Nova::Server
- properties:
- . . . .
- metadata:
- vm_role: { get_param: vm_role }
-
-Example vnf_id, vf_module_id, vnf_name, vf_module_name, vm_role
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The example below depicts part of a Heat Orchestration Template
-that uses the five of the OS::Nova::Server metadata parameter
-discussed in this section. The {vm-type} has been defined as lb
-for load balancer.
-
-.. code-block:: python
-
- parameters:
- lb_name_0
- type: string
- description: VM Name for lb VM 0
- vnf_name:
- type: string
- description: Unique name for this VNF instance
- vnf_id:
- type: string
- description: Unique ID for this VNF instance
- vf_module_name:
- type: string
- description: Unique name for this VNF Module instance
- vf_module_id:
- type: string
- description: Unique ID for this VNF Module instance
- vm_role:
- type: string
- description: Unique role for this VM
- resources:
- lb_server_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: lb_name_0 }
- ...
- metadata:
- vnf_name: { get_param: vnf_name }
- vnf_id: { get_param: vnf_id }
- vf_module_name: { get_param: vf_module_name }
- vf_module_id: { get_param: vf_module_id }
- vm_role: lb
-
-vf\_module\_index
-+++++++++++++++++
-
-R-50816 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **MAY** contain the metadata map value parameter
-‘vf\_module\_index’.
-
-R-54340 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_index’ **MUST** be
-declared as type: ‘number’.
-
-R-09811 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_index’ **MUST NOT**
-have parameter contraints defined.
-
-R-37039 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_index’ **MUST NOT**
-be enumerated in the Heat Orchestration Template’s environment file.
-
-R-22441 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_index’ is passed
-into a Nested YAML file, the parameter name ‘vf\_module\_index’
-**MUST NOT** change.
-
-R-55306 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘vf\_module\_index’ **MUST NOT** be
-used in a VNF’s Volume Template; it is not supported.
-
-The vf_module_index parameter indicates which instance of the module is being
-deployed into the VNF.
-This parameter may be used in cases where multiple instances of the same
-incremental module may be instantiated for scaling purposes. The index
-can be used in the Heat Orchestration Template for indexing into a
-pseudo-constant array parameter when unique values are required for each
-module instance, e.g., for fixed private IP addresses on VM types.
-
-The vf_module_index will start at 0 for the first instance of a module
-type. Subsequent instances of the same module type will receive the
-lowest unused index. This means that indexes will be reused if a module
-is deleted and re-added. As an example, if three copies of a module are
-deployed with vf_module_index values of 0, 1, and 2 then subsequently
-the second one is deleted (index 1), and then re-added, index 1 will be
-reused.
-
-*Example*
-
-In this example, the {vm-type} has been defined as oam_vm to represent
-an OAM VM. An incremental heat module is used to deploy the OAM VM. The
-OAM VM attaches to an internal control network which has a
-{network-role} of ctrl. A maximum of four OAM VMs can be deployed. The
-environment file contains the four IP addresses that each successive OAM
-VM will be assigned. The vf_module_index is used as the index to
-determine the IP assignment.
-
-Environment File
-
-.. code-block:: python
-
- parameters:
- oam_vm_int_ctrl_ips: 10.10.10.1,10.10.10.2,10.10.10.3,10.10.10.4
-
-YAML File
-
-.. code-block:: python
-
- parameters:
- vf_module_index:
- type: number
- description: Unique index for this VNF Module instance
- oam_vm_name_0:
- type: string
- description: VM Name for lb VM 0
- int_ctrl_net_id:
- type: string
- description: Neutron UUID for the internal control network
- oam_vm_int_ctrl_ips:
- type: comma_delimited_list
- description: Fixed IP assignments for oam VMs on the internal control
- network
- resources:
- oam_vm_server_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: oam_vm_name_0 }
- networks:
- - port: { get_resource: oam_vm_0_int_ctrl_port_0 }
- . . .
- metadata:
- vf_module_index: { get_param: vf_module_index }
- oam_vm_0_int_ctrl_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: int_ctrl_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [ oam_vm_int_ctrl_ips, { get_param, vf_module_index]}}}]
-
-workload_context
-++++++++++++++++
-
-R-47061 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **SHOULD** contain the metadata map value parameter
-‘workload_context’.
-
-R-74978 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘workload_context’ **MUST** be
-declared as type: ‘string’.
-
-R-34055 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘workload_context’ **MUST NOT**
-have parameter contraints defined.
-
-R-02691 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘workload_context’ **MUST NOT**
-be enumerated in the Heat Orchestration Template’s environment file.
-
-R-75202 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘workload_context’ is passed
-into a Nested YAML file, the parameter name ‘workload_context’
-**MUST NOT** change.
-
-The 'workload_context' parameter value will be chosen by the Service Model
-Distribution context client in VID and will be supplied to the
-Heat Orchestration Template by ONAP at orchestration time.
-
-*Example Parameter Definition*
-
-.. code-block:: python
-
- parameters:
- workload_context:
- type: string
- description: Workload Context for this VNF instance
-
-
-*Example OS::Nova::Server with metadata*
-
-.. code-block:: python
-
- resources:
- . . .
-
- {vm-type}_server_{index}:
- type: OS::Nova::Server
- properties:
- name:
- flavor:
- image:
- ...
- metadata:
- vnf_name: { get_param: vnf_name }
- vnf_id: { get_param: vnf_id }
- vf_module_name: { get_param: vf_module_name }
- vf_module_id: { get_param: vf_module_id }
- workload_context: {get_param: workload_context}
-
-environment_context
-+++++++++++++++++++
-
-R-88536 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource **SHOULD** contain the metadata map value parameter
-‘environment_context’.
-
-R-20308 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘environment_context’ **MUST**
-be declared as type: ‘string’.
-
-R-56183 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘environment_context’ **MUST NOT**
-have parameter contraints defined.
-
-R-13194 A VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘environment_context’ **MUST NOT**
-be enumerated in the Heat Orchestration Template’s environment file.
-
-R-62954 If a VNF’s Heat Orchestration Template’s OS::Nova::Server
-Resource metadata map value parameter ‘environment_context’ is
-passed into a Nested YAML file, the parameter name
-‘environment_context’ **MUST NOT** change.
-
-The 'environment_context' parameter value will be defined by the
-service designer as part of the service model during the SDC
-on-boarding process and will be supplied to the Heat Orchestration
-Template by ONAP at orchestration time.
-
-
-*Example Parameter Definition*
-
-.. code-block:: python
-
- parameters:
- environment_context:
- type: string
- description: Environment Context for this VNF instance
-
-
-*Example OS::Nova::Server with metadata*
-
-.. code-block:: python
-
- resources:
- . . .
-
- {vm-type}_server_{index}:
- type: OS::Nova::Server
- properties:
- name:
- flavor:
- image:
- ...
- metadata:
- vnf_name: { get_param: vnf_name }
- vnf_id: { get_param: vnf_id }
- vf_module_name: { get_param: vf_module_name }
- vf_module_id: { get_param: vf_module_id }
- workload_context: {get_param: workload_context}
- environment_context: {get_param: environment_context }
-
-
-Resource: OS::Neutron::Port - Parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The resource OS::Neutron::Port is for managing Neutron ports (See
-https://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Neutron::Port.)
-
-Introduction
-++++++++++++
-
-Four properties of the resource OS::Neutron::Port that must follow the
-ONAP parameter naming convention. The four properties are:
-
-1. network
-2. fixed_ips, ip_address
-3. fixed_ips, subnet_id or fixed_ips, subnet
-
- * Note that in many examples in this document fixed_ips, subnet_id is used.
-
-4. allowed_address_pairs, ip_address
-
-Below is a generic example. Note that for some parameters
-comma_delimited_list are supported in addition to String.
-
-.. code-block:: python
-
- resources:
-
- ...
-
- <resource ID>:
- type: OS::Neutron::Port
- properties:
- allowed_address_pairs: [{"ip_address": String, "mac_address": String},
- {"ip_address": String, "mac_address": String}, ...]
- fixed_ips: [{"ip_address": String, "subnet_id": String, "subnet":
- String}, {"ip_address": String, "subnet_id": String, "subnet": String},
- ...]
- network: String
-
-The parameters associated with these properties may reference an
-external network or internal network. External networks and internal
-networks are defined in `Networking`_.
-
-When the OS::Neutron::Port is attaching to an external network, all
-property values are parameters that are retrieved via the intrinsic
-function 'get_param'.
-
-When the OS::Neutron::Port is attaching to an internal network, a
-property value maybe retrieved via the intrinsic
-function 'get_param', 'get_resource', or 'get_attr'.
-
-This will be described in the forth coming sections.
-
-Items to Note
-_____________
-
-A network (internal or external) may contain one or or more subnets.
-
-A VNF can have one or more ports connected to the same network.
-
-A port can have one or more IP addresses assigned.
-
-The IP address assignments can be IPv4 addresses and/or IPv6 addresses.
-
-The IP addresses assignments for a unique external network **MUST**
-be all Cloud Assigned addresses OR **MUST** be all ONAP
-SDN-C assigned IP addresses.
-
-If the IP addresses are Cloud Assigned, all the IPv4 Addresses **MUST**
-be from
-the same subnet and all the IPv6 Addresses **MUST** be from the
-same subnet.
-
-If the IP addresses are ONAP SDN-C assigned,
-the IPv4 Addresses **MAY**
-be from
-different subnets and the IPv6 Addresses **MAY** be from different
-subnets.
-
-If a VNF's Port is attached to an external network the IP addresses **MAY**
-either be assigned by
-
- 1. ONAP's SDN-Controller (SDN-C)
- 2. Cloud Assigned by OpenStack’s DHCP Service
-
-If a VNF's Port is attached to an external network and the port's IP addresses
-are assigned by ONAP's SDN-Controller, the 'OS::Neutron::Port' Resource's
-
- * property 'fixed_ips' map property 'ip_address' **MUST** be used
- * property 'fixed_ips' map property 'subnet'/'subnet_id' **MUST NOT** be used
-
-If a VNF's Port is attached to an external network and the port's IP addresses
-are Cloud Assigned by OpenStack’s DHCP Service,
-the 'OS::Neutron::Port' Resource's
-
- * property 'fixed_ips' map property 'ip_address' **MUST NOT** be used
- * property fixed_ips' map property 'subnet'/'subnet_id' **MAY** be used
-
-If a VNF's Port is attached to an internal network and the port's IP addresses
-are assigned by the VNF's Heat Orchestration Template
-(i.e., enumerated in the Heat Orchestration Template's environment file),
-the 'OS::Neutron::Port' Resource's
-
- * property 'fixed_ips' map property 'ip_address' **MUST** be used
- * property 'fixed_ips' map property 'subnet'/'subnet_id'
- **MUST NOT** be used
-
-If a VNF's Port is attached to an internal network and the port's IP addresses
-are Cloud Assigned by OpenStack’s DHCP Service,
-the 'OS::Neutron::Port' Resource's
-
- * property 'fixed_ips' map property 'ip_address' **MUST NOT** be used
- * property 'fixed_ips' map property 'subnet'/'subnet_id' **MAY** be used
-
-If a VNF's Heat Orchestration Template 'OS::Neutron::Port' Resource property
-'fixed_ips' map property 'ip_address' is specified, then the
-'fixed_ips' map property 'subnet'/'subnet_id' **MUST NOT**
-be specified.
-
-If a VNF's Heat Orchestration Template 'OS::Neutron::Port' Resource property
-'fixed_ips' map property 'subnet'/'subnet_id' is specified, then the
-'fixed_ips' map property 'ip_address' **MUST NOT**
-be specified.
-
-.. csv-table:: **Table 4 OS::Nova::Server Resource Property Parameter Naming Convention**
- :header: Resource,Property,Parameter Type,Parameter Name,Parameter Value Provided to Heat
- :align: center
- :widths: auto
-
- OS::Nova::Server, image, string, {vm-type}_image_name, Environment File
-
-Property: network
-+++++++++++++++++
-
-The Resource 'OS::Neutron::Port' property 'network' determines what network
-the port is attached to.
-
-
-R-18008 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-property ‘network’ parameter **MUST** be declared as type: ‘string’.
-
-R-62983 When the VNF’s Heat Orchestration Template’s
-Resource ‘OS::Neutron::Port’ is attaching to an external network,
-the ‘network’ parameter name **MUST**
-
-- follow the naming convention ‘{network-role}_net_id’ if the Neutron
- network UUID value is used to reference the network
-- follow the naming convention ‘{network-role}_net_name’ if the OpenStack
- network name is used to reference the network.
-
-where ‘{network-role}’ is the network-role of the external network and
-a ‘get_param’ **MUST** be used as the intrinsic function.
-
-R-86182 When the VNF’s Heat Orchestration Template’s
-Resource ‘OS::Neutron::Port’ is attaching to an internal network,
-and the internal network is created in a different
-Heat Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’
-parameter name **MUST**
-
-- follow the naming convention ‘int\_{network-role}_net_id’ if the Neutron
- network UUID value is used to reference the network
-- follow the naming convention ‘int\_{network-role}_net_name’ if the
- OpenStack network name in is used to reference the network.
-
-where ‘{network-role}’ is the network-role of the internal network
-and a ‘get_param’ **MUST** be used as the intrinsic function.
-
-In Requirement R-86182, the internal network is created in the VNF's
-Base Module (Heat Orchestration Template) and the parameter name is
-declared in the Base Module's outputs' section.
-The output parameter name will be declared as a parameter in the
-'parameters' section of the incremental module.
-
-R-93177 When the VNF’s Heat Orchestration Template’s
-Resource ‘OS::Neutron::Port’ is attaching to an internal
-network, and the internal network is created in the same Heat
-Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’
-parameter name **MUST** obtain the UUID of the internal network
-by using the intrinsic function ‘get_resource’ or ‘get_attr’
-and referencing the Resource ID of the internal network.
-
-R-29872 The VNF’s Heat Orchestration Template’s Resource ‘OS::Nova::Server’
-property ‘network’ parameter **MUST NOT** be enumerated in the Heat
-Orchestration Template’s Environment File.
-
-The parameter values for external networks are provided by ONAP
-to the VNF's Heat Orchestration Template at orchestration time.
-
-The parameter values for internal networks created in the VNF's Base Module
-Heat Orchestration Template
-are provided to the VNF's Incremental Module Heat Orchestration Template
-at orchestration time.
-
-*Example Parameter Definition of External Networks*
-
-.. code-block:: python
-
- parameters:
-
- {network-role}_net_id:
- type: string
- description: Neutron UUID for the external {network-role} network
-
- {network-role}_net_name:
- type: string
- description: Neutron name for the external {network-role} network
-
-
-*Example Parameter Definition of Internal Networks in an Incremental Module*
-
-.. code-block:: python
-
- parameters:
-
- int_{network-role}_net_id:
- type: string
- description: Neutron UUID for the internal int_{network-role} network
-
- int_{network-role}_net_name:
- type: string
- description: Neutron name for the internal int_{network-role} network
-
-Property: fixed_ips, Map Property: ip_address
-+++++++++++++++++++++++++++++++++++++++++++++
-
-The resource 'OS::Neutron::Port' property 'fixed_ips'
-map property 'ip_address'
-is used to assign one IPv4 or IPv6
-addresses to port.
-
-One 'OS::Neutron::Port' resource may assign one or more
-IPv4 and/or IPv6 addresses.
-
-R-34037 The VNF’s Heat Orchestration Template’s resource ‘OS::Neutron::Port’
-property ‘fixed_ips’ map property ‘ip_address’ parameter **MUST**
-be declared as either type ‘string’ or type ‘comma_delimited_list’.
-
-R-40971 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an external network, and an IPv4 address is
-assigned using the property
-‘fixed_ips’ map property ‘ip_address’ and the parameter type is defined
-as a string, the parameter name **MUST** follow the naming
-convention ‘{vm-type}_{network-role}\_ip\_{index}’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the external network
-- the value for {index} must start at zero (0) and increment by one
-
-R-39841 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-property ‘fixed_ips’ map property ‘ip_address’ parameter
-‘{vm-type}_{network-role}\_ip\_{index}’ **MUST NOT** be enumerated in the
-VNF’s Heat Orchestration Template’s Environment File.
-
-ONAP's SDN-Controller assigns the IP Address and ONAP provides
-the value at orchestration to the Heat Orchestration Template.
-
-*Example External Network IPv4 Address string Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_{network-role}_ip_{index}:
- type: string
- description: Fixed IPv4 assignment for {vm-type} VM {index} on the{network-role} network
-
-R-04697 When the VNF’s Heat Orchestration Template’s
-Resource ‘OS::Neutron::Port’ is attaching to an external
-network, and an IPv4 address is assigned using the property
-‘fixed_ips’ map property ‘ip_address’ and the parameter type
-is defined as a comma_delimited_list, the parameter name **MUST**
-follow the naming convention ‘{vm-type}_{network-role}_ips’,
-where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the external network
-
-R-98905 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-property ‘fixed_ips’ map property ‘ip_address’ parameter
-‘{vm-type}_{network-role}_ips’ **MUST NOT** be enumerated in the VNF’s
-Heat Orchestration Template’s Environment File.
-
-ONAP's SDN-Controller assigns the IP Address and ONAP provides
-the value at orchestration to the Heat Orchestration Template.
-
-*Example External Network IPv4 Address comma_delimited_list
-Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_{network-role}_ips:
- type: comma_delimited_list
- description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network
-
-R-71577 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an external network, and an IPv6 address
-is assigned using the property ‘fixed_ips’ map property ‘ip_address’ and
-the parameter type is defined as a string, the parameter name **MUST** follow
-the naming convention ‘{vm-type}_{network-role}\_v6\_ip\_{index}’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the external network
-- the value for {index} must start at zero (0) and increment by one
-
-
-R-87123 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}_{network-role}\_v6\_ip\_{index}’
-**MUST NOT** be enumerated in the VNF’s Heat Orchestration
-Template’s Environment File.
-
-ONAP's SDN-Controller assigns the IP Address and ONAP provides
-the value at orchestration to the Heat Orchestration Template.
-
-*Example External Network IPv6 Address string Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_{network-role}_v6_ip_{index}:
- type: string
- description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network
-
-R-23503 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an external network, and an IPv6
-address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
-and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention
-‘{vm-type}_{network-role}_v6_ips’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the external network
-
-R-93030 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}_{network-role}_v6_ips’ **MUST NOT** be enumerated in the
-VNF’s Heat Orchestration Template’s Environment File.
-
-ONAP's SDN-Controller assigns the IP Address and ECOMP provides
-the value at orchestration to the Heat Orchestration Template.
-
-*Example External Network IPv6 Address comma_delimited_list Parameter
-Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_{network-role}_v6_ips:
- type: comma_delimited_list
- description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network
-
-R-78380 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an internal network, and an IPv4 address
-is assigned using the property ‘fixed_ips’ map property ‘ip_address’ and
-the parameter type is defined as a string, the parameter name **MUST** follow
-the naming convention ‘{vm-type}\_int\_{network-role}\_ip\_{index}’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the internal network
-- the value for {index} must start at zero (0) and increment by one
-
-R-28795 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}\_int\_{network-role}\_ip\_{index}’ **MUST** be enumerated
-in the VNF’s Heat Orchestration Template’s Environment File.
-
-The IP address is local to the VNF's internal network and is (re)used
-in every VNF spin up, thus the constant value is declared in the VNF's
-Heat Orchestration Template's Environment File.
-
-*Example Internal Network IPv4 Address string Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_int_{network-role}_ip_{index}:
- type: string
- description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network
-
-R-85235 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an internal network, and an IPv4
-address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
-and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention
-‘{vm-type}\_int\_{network-role}_ips’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the internal network
-
-R-90206 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}\_int\_{network-role}_int_ips’ **MUST** be enumerated in
-the VNF’s Heat Orchestration Template’s Environment File.
-
-The IP address is local to the VNF's internal network and is (re)used
-in every VNF spin up, thus the constant value is declared in the VNF's
-Heat Orchestration Template's Environment File.
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_int_{network-role}_ips:
- type: comma_delimited_list
- description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network
-
-R-27818 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an internal network, and an IPv6 address
-is assigned using the property ‘fixed_ips’ map property ‘ip_address’ and
-the parameter type is defined as a string, the parameter name **MUST** follow
-the naming convention ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the internal network
-- the value for {index} must start at zero (0) and increment by one
-
-R-97201 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’
-**MUST** be enumerated in the VNF’s Heat Orchestration
-Template’s Environment File.
-
-The IP address is local to the VNF's internal network and is (re)used
-in every VNF spin up, thus the constant value is declared in the VNF's
-Heat Orchestration Template's Environment File.
-
-*Example Internal Network IPv6 Address string Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_int_{network-role}_v6_ip_{index}:
- type: string
- description: Fixed IPv6 assignment for {vm-type} VM {index} on the int_{network-role} network
-
-R-29765 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an internal network, and an IPv6
-address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
-and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention
-‘{vm-type}\_int\_{network-role}_v6_ips’, where
-
-- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
-- ‘{network-role}’ is the {network-role} of the internal network
-
-*Example Internal Network IPv6 Address comma_delimited_list Parameter
-Definition*
-
-.. code-block:: python
-
- parameters:
-
- {vm-type}_int_{network-role}_v6_ips:
- type: comma_delimited_list
- description: Fixed IPv6 assignments for {vm-type} VMs on the int_{network-role} network
-
-R-98569 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}\_int\_{network-role}_v6_ips’ **MUST** be enumerated in
-the VNF’s Heat Orchestration Template’s Environment File.
-
-The IP address is local to the VNF's internal network and is (re)used
-in every VNF spin up, thus the constant value is declared in the VNF's
-Heat Orchestration Template's Environment File.
-
-R-62590 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter associated with an external network, i.e.,
-
-- {vm-type}_{network-role}\_ip\_{index}
-- {vm-type}_{network-role}\_ip\_v6\_{index}
-- {vm-type}_{network-role}_ips
-- {vm-type}_{network-role}_v6_ips
-
-**MUST NOT** be enumerated in the Heat Orchestration Template’s
-Environment File. ONAP provides the IP address assignments at
-orchestration time.
-
-R-93496 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter associated with an internal network, i.e.,
-
-- {vm-type}\_int\_{network-role}\_ip\_{index}
-- {vm-type}\_int\_{network-role}\_ip\_v6\_{index}
-- {vm-type}\_int\_{network-role}_ips
-- {vm-type}\_int\_{network-role}_v6_ips
-
-**MUST** be enumerated in the Heat Orchestration Template’s Environment
-File and IP addresses **MUST** be assigned.
-
-Summary Table
-_____________
-
-.. csv-table:: **Table # OS::Neutron::Port Property fixed_ips map property ip_address Parameter Naming Convention**
- :header: Resource,Property,Map Property,Network Type,IP Address,Parameter Type,Parameter Name, Environment File
- :align: center
- :widths: auto
-
- OS::Neutron::Port, fixed_ips, ip_address, external, IPv4, string, {vm-type}\_{network-role}\_ip\_{index}, NO
- OS::Neutron::Port, fixed_ips, ip_address, external, IPv4, comma\_delimited\_list, {vm-type}\_{network-role}\_ips, NO
- OS::Neutron::Port, fixed_ips, ip_address, external, IPv6, string, {vm-type}\_{network-role}\_v6\_ip\_{index}, NO
- OS::Neutron::Port, fixed_ips, ip_address, external, IPv6, comma\_delimited\_list, {vm-type}\_{network-role}\_v6\_ips, NO
- OS::Neutron::Port, fixed_ips, ip_address, internal, IPv4, string, {vm-type}\_int\_{network-role}\_ip\_{index}, YES
- OS::Neutron::Port, fixed_ips, ip_address, internal, IPv4, comma\_delimited\_list, {vm-type}\_int\_{network-role}\_ips, YES
- OS::Neutron::Port, fixed_ips, ip_address, internal, IPv6, string, {vm-type}\_int\_{network-role}\_v6\_ip\_{index}, YES
- OS::Neutron::Port, fixed_ips, ip_address, internal, IPv6, comma\_delimited\_list, {vm-type}\_int\_{network-role}\_v6\_ips, YES
-
-
-Examples
-________
-
-*Example: comma_delimited_list parameters for IPv4 and IPv6 Address
-Assignments to an external network*
-
-In this example, the '{network-role}' has been defined as 'oam' to represent
-an oam network and the '{vm-type}' has been defined as 'db' for database.
-
-.. code-block:: python
-
- parameters:
- oam_net_id:
- type: string
- description: Neutron UUID for a oam network
- db_oam_ips:
- type: comma_delimited_list
- description: Fixed IPv4 assignments for db VMs on the oam network
- db_oam_v6_ips:
- type: comma_delimited_list
- description: Fixed IPv6 assignments for db VMs on the oam network
- resources:
- db_0_oam_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [ db_oam_ips, 0 ]}}, {
- “ip_address”: {get_param: [ db_oam_v6_ips, 0 ]}}]
- db_1_oam_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips:
- - “ip_address”: {get_param: [ db_oam_ips, 1 ]}
- - “ip_address”: {get_param: [ db_oam_v6_ips, 1 ]}
-
-*Example: string parameters for IPv4 and IPv6 Address Assignments to an
-external network*
-
-In this example, the '{network-role}' has been defined as 'oam' to
-represent an oam network and the '{vm-type}' has been defined as 'db' for
-database.
-
-.. code-block:: python
-
- parameters:
- oam_net_id:
- type: string
- description: Neutron UUID for an OAM network
- db_oam_ip_0:
- type: string
- description: Fixed IPv4 assignment for db VM 0 on the OAM network
- db_oam_ip_1:
- type: string
- description: Fixed IPv4 assignment for db VM 1 on the OAM network
- db_oam_v6_ip_0:
- type: string
- description: Fixed IPv6 assignment for db VM 0 on the OAM network
- db_oam_v6_ip_1:
- type: string
- description: Fixed IPv6 assignment for db VM 1 on the OAM network
- resources:
- db_0_oam_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: db_oam_ip_0}}, { “ip_address”: {get_param: db_oam_v6_ip_0 ]}}]
- db_1_oam_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips:
- - “ip_address”: {get_param: db_oam_ip_1}}]
- - “ip_address”: {get_param: db_oam_v6_ip_1}}]
-
-
-*Example: comma_delimited_list parameters for IPv4 and IPv6 Address
-Assignments to an internal network*
-
-In this example, the '{network-role}' has been defined as 'ctrl' to
-represent an ctrl network internal to the vnf.
-The '{vm-type}' has been defined as 'db' for
-database.
-
-.. code-block:: python
-
- parameters:
- int_ctrl_net_id:
- type: string
- description: Neutron UUID for the ctrl internal network
- db_int_ctrl_ips:
- type: comma_delimited_list
- description: Fixed IPv4 assignments for db VMs on the ctrl internal
- network
- db_int_ctrl_v6_ips:
- type: comma_delimited_list
- description: Fixed IPv6 assignments for db VMs on the ctrl internal
- network
- resources:
- db_0_int_ctrl_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: int_ctrl_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [ db_int_ctrl_ips, 0 ]}}, {
- “ip_address”: {get_param: [ db_int_ctrl_v6_ips, 0 ]}}]
- db_1_int_ctrl_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: int_ctrl_net_id }
- fixed_ips:
- - “ip_address”: {get_param: [ db_int_ctrl_ips, 1 ]}
- - “ip_address”: {get_param: [ db_int_ctrl_v6_ips, 1 ]}
-
-
-*Example: string parameters for IPv4 and IPv6 Address Assignments to an
-internal network*
-
-In this example, the int\_{network-role} has been defined as
-int_ctrl to represent a control network internal to the vnf.
-The {vm-type} has been defined as db for database.
-
-.. code-block:: python
-
- parameters:
- int_ctrl_net_id:
- type: string
- description: Neutron UUID for an OAM internal network
- db_int_ctrl_ip_0:
- type: string
- description: Fixed IPv4 assignment for db VM on the oam_int network
- db_int_ctrl_ip_1:
- type: string
- description: Fixed IPv4 assignment for db VM 1 on the oam_int network
- db_int_ctrl_v6_ip_0:
- type: string
- description: Fixed IPv6 assignment for db VM 0 on the oam_int network
- db_int_ctrl_v6_ip_1:
- type: string
- description: Fixed IPv6 assignment for db VM 1 on the oam_int network
- resources:
- db_0_int_ctrl_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: int_oam_int_net_id }
- fixed_ips: [ { “ip_address”: {get_param: db_oam_int_ip_0}}, {
- “ip_address”: {get_param: db_oam_int_v6_ip_0 ]}}]
- db_1_int_ctrl_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: int_oam_int_net_id }
- fixed_ips:
- - “ip_address”: {get_param: db_oam_int_ip_1}}]
- - “ip_address”: {get_param: db_oam_int_v6_ip_1}}]
-
-
-Property: fixed\_ips, Map Property: subnet\_id
-++++++++++++++++++++++++++++++++++++++++++++++
-
-The resource 'OS::Neutron::Port' property 'fixed_ips' map
-property 'subnet'/'subnet_id' is used when a
-port is requesting an IP assignment via
-OpenStack’s DHCP Service (i.e., Cloud Assigned).
-
-The IP address assignment will be made from the specified subnet.
-
-Specifying the subnet is not required; it is optional.
-
-If the network (external or internal) that the port is attaching
-to only contains one subnet, specifying the subnet is
-superfluous. The IP address will be assigned from the one existing
-subnet.
-
-If the network (external or internal) that the port is attaching
-to contains two or more subnets, specifying the subnet in the
-'fixed_ips' map property 'subnet'/'subnet_id' determines which
-subnet the IP address will be assigned from.
-
-If the network (external or internal) that the port is attaching
-to contains two or more subnets, and the subnet is not is not
-specified, OpenStack will randomly(?) determine which subnet
-the IP address will be assigned from.
-
-The property fixed_ips is used to assign IPs to a port. The Map Property
-subnet_id specifies the subnet the IP is assigned from.
-
-R-38236 The VNF’s Heat Orchestration Template’s resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property
-‘subnet’/’subnet_id’ parameter **MUST** be declared type ‘string’.
-
-R-62802 When the VNF’s Heat Orchestration Template’s resource
-‘OS::Neutron::Port’ is attaching to an external network, and an IPv4
-address is being Cloud Assigned by OpenStack’s DHCP Service and the
-external network IPv4 subnet is to be specified using the property
-‘fixed_ips’ map property ‘subnet’/’subnet_id’, the parameter **MUST**
-follow the naming convention ‘{network-role}_subnet_id’, where
-‘{network-role}’ is the network role of the network.
-
-R-83677 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property
-subnet’/’subnet_id’ parameter ‘{network-role}_subnet_id’
-**MUST NOT** be enumerated in the VNF’s Heat Orchestration Template’s
-Environment File.
-
-ONAP's SDN-Controller provides the network's subnet's UUID
-value at orchestration to the Heat Orchestration Template.
-
-*Example Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {network-role}_subnet_id:
- type: string
- description: Neutron IPv4 subnet UUID for the {network-role} network
-
-R-15287 When the VNF’s Heat Orchestration Template’s resource
-‘OS::Neutron::Port’ is attaching to an external network, and an IPv6
-address is being Cloud Assigned by OpenStack’s DHCP Service and the
-external network IPv6 subnet is to be specified using the property
-‘fixed_ips’ map property ‘subnet’/’subnet_id’, the parameter **MUST**
-follow the naming convention ‘{network-role}_subnet_v6_id’, where
-‘{network-role}’ is the network role of the network.
-
-R-80829 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property
-subnet’/’subnet_id’ parameter ‘{network-role}_subnet_v6_id’
-**MUST NOT** be enumerated in the VNF’s Heat Orchestration Template’s
-Environment File.
-
-ONAP's SDN-Controller provides the network's subnet's UUID
-value at orchestration to the Heat Orchestration Template.
-
-*Example Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- {network-role}_v6_subnet_id:
- type: string
- description: Neutron IPv6 subnet UUID for the {network-role} network
-
-
-*Example: One Cloud Assigned IPv4 Address (DHCP) assigned to a network
-that has two or more IPv4 subnets*
-
-In this example, the '{network-role}' has been defined as 'oam' to represent
-an oam network and the '{vm-type}' has been defined as 'lb' for load
-balancer. The Cloud Assigned IP Address uses the OpenStack DHCP service
-to assign IP addresses.
-
-.. code-block:: python
-
- parameters:
- oam_net_id:
- type: string
- description: Neutron UUID for the oam network
- oam_subnet_id:
- type: string
- description: Neutron IPv4 subnet UUID for the oam network
- resources:
- lb_0_oam_port_0:
- type: OS::Neutron::Port
- parameters:
- network: { get_param: oam_net_id }
- fixed_ips:
- - subnet_id: { get_param: oam_subnet_id }
-
-*Example: One Cloud Assigned IPv4 address and one Cloud Assigned IPv6
-address assigned to a network that has at least one IPv4 subnet and one
-IPv6 subnet*
-
-In this example, the '{network-role}' has been defined as 'oam' to represent
-an oam network and the '{vm-type}' has been defined as 'lb' for load
-balancer.
-
-.. code-block:: python
-
- parameters:
- oam_net_id:
- type: string
- description: Neutron UUID for the oam network
- oam_subnet_id:
- type: string
- description: Neutron IPv4 subnet UUID for the oam network
- oam_v6_subnet_id:
- type: string
- description: Neutron IPv6 subnet UUID for the oam network
- resources:
- lb_0_oam_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips:
- - subnet_id: { get_param: oam_subnet_id }
- - subnet_id: { get_param: oam_v6_subnet_id }
-
-R-84123 When
-
-- the VNF’s Heat Orchestration Template’s resource ‘OS::Neutron::Port’
- in an Incremental Module is attaching to an internal network
- that is created in the Base Module, AND
-- an IPv4 address is being Cloud Assigned by OpenStack’s DHCP Service AND
-- the internal network IPv4 subnet is to be specified using the
- property ‘fixed_ips’ map property ‘subnet’/’subnet_id’,
-
-the parameter **MUST** follow the naming convention
-‘int\_{network-role}_subnet_id’, where ‘{network-role}’ is the
-network role of the internal network
-
-- Note that the parameter **MUST** be defined as an ‘output’ parameter in
- the base module.
-
-R-69634 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property
-subnet’/’subnet_id’ parameter ‘int\_{network-role}_subnet_id’
-**MUST NOT** be enumerated in the VNF’s Heat Orchestration Template’s
-Environment File.
-
-The assumption is that internal networks are created in the base module.
-The Neutron subnet network ID will be passed as an output parameter
-(e.g., ECOMP Base Module Output Parameter) to the incremental modules.
-In the incremental modules, the output parameter name will be defined as
-input parameter.
-
-*Example Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- int_{network-role}_subnet_id:
- type: string
- description: Neutron IPv4 subnet UUID for the int_{network-role} network
-
-R-76160 When
-
-- the VNF’s Heat Orchestration Template’s resource
- ‘OS::Neutron::Port’ in an Incremental Module is attaching to an
- internal network that is created in the Base Module, AND
-- an IPv6 address is being Cloud Assigned by OpenStack’s DHCP Service AND
-- the internal network IPv6 subnet is to be specified using the property
- ‘fixed_ips’ map property ‘subnet’/’subnet_id’,
-
-the parameter **MUST** follow the naming convention
-‘int\_{network-role}_v6_subnet_id’, where ‘{network-role}’
-is the network role of the internal network
-
-- Note that the parameter **MUST** be defined as an ‘output’ parameter in
- the base module.
-
-R-22288 The VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ property ‘fixed_ips’ map property
-‘subnet’/’subnet_id’ parameter ‘int\_{network-role}_v6_subnet_id’
-**MUST NOT** be enumerated in the VNF’s Heat Orchestration Template’s
-Environment File.
-
-*Example Parameter Definition*
-
-.. code-block:: python
-
- parameters:
-
- int_{network-role}_v6_subnet_id:
- type: string
- description: Neutron subnet UUID for the int_{network-role} network
-
-
-Property: allowed\_address\_pairs, Map Property: ip\_address
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The property allowed\_address\_pairs in the resource OS::Neutron::Port
-allows the user to specify a mac\_address and/or ip\_address that will
-pass through a port regardless of subnet. This enables the use of
-protocols such as VRRP, which floats an IP address between two instances
-to enable fast data plane failover. The map property ip\_address
-specifies the IP address.
-
-The allowed\_address\_pairs is an optional property. It is not required.
-
-An ONAP Heat Orchestration Template allows the assignment of one IPv4
-address allowed\_address\_pairs and/or one IPv6 address to a {vm-type}
-and {network-role}/int\_{network-role} combination.
-
-An ONAP Heat Orchestration Template allows the assignment of one IPv6
-address allowed\_address\_pairs and/or one IPv6 address to a {vm-type}
-and {network-role}/int\_{network-role} combination.
-
-Note that the management of these IP addresses (i.e. transferring
-ownership between active and standby VMs) is the responsibility of the
-application itself.
-
-Note that these parameters are **not** intended to represent Neutron
-“Floating IP” resources, for which OpenStack manages a pool of public IP
-addresses that are mapped to specific VM ports. In that case, the
-individual VMs are not even aware of the public IPs, and all assignment
-of public IPs to VMs is via OpenStack commands. ONAP does not support
-Neutron-style Floating IPs.
-
-External Networks
-_________________
-
-R-61282 The VNF Heat Orchestration Template **MUST**
-adhere to the following naming convention for the property
-allowed\_address\_pairs and Map Property ip\_address parameter,
-when the parameter is referencing an “external” network:
-
-- {vm-type}\_{network-role}\_floating\_ip for an IPv4 address
-
-- {vm-type}\_{network-role}\_floating\_v6\_ip for an IPv6 address
-
-The parameter must be declared as type: string
-
-The parameter must not be enumerated in the Heat environment file.
-
-*Example Parameter Definition*
-
-.. code-block:: yaml
-
- parameters:
-
- {vm-type}_{network-role}_floating_ip:
- type: string
- description: VIP for {vm-type} VMs on the {network-role} network
-
- {vm-type}_{network-role}_floating_v6_ip:
- type: string
- description: VIP for {vm-type} VMs on the {network-role} network
-
-*Example:*
-
-In this example, the {network-role} has been defined as oam to represent
-an oam network and the {vm-type} has been defined as db for database.
-
-.. code-block:: yaml
-
- parameters:
- oam_net_id:
- type: string
- description: Neutron UUID for the oam network
-
- db_oam_ips:
- type: comma_delimited_list
- description: Fixed IPs for db VMs on the oam network
-
- db_oam_floating_ip:
- type: string
- description: VIP IP for db VMs on the oam network
-
- resources:
- db_0_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [db_oam_ips,0] }}]
- allowed_address_pairs: [ { “ip_address”: {get_param: db_oam_floating_ip}}]
-
- db_1_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [db_oam_ips,1] }}]
- allowed_address_pairs: [ { “ip_address”: {get_param: db_oam_floating_ip}}]
-
-Internal Networks
-_________________
-
-R-16805 The VNF Heat Orchestration Template **MUST** adhere to the
-following naming convention for the property allowed\_address\_pairs
-and Map Property ip\_address parameter when the parameter is
-referencing an “internal” network.
-
-- {vm-type}\_int\_{network-role}\_floating\_ip for an IPv4 address
-
-- {vm-type}\_int\_{network-role}\_floating\_v6\_ip for an IPv6 address
-
-The parameter must be declared as type: string
-
-The parameter must be enumerated in the Heat environment file.
-
-*Example Parameter Definition*
-
-.. code-block:: yaml
-
- parameters:
-
- {vm-type}_int_{network-role}_floating_ip:
- type: string
- description: VIP for {vm-type} VMs on the int_{network-role} network
-
- {vm-type}_int_{network-role}_floating_v6_ip:
- type: string
- description: VIP for {vm-type} VMs on the int_{network-role} network
-
-Multiple allowed\_address\_pairs for a {vm-type} / {network-role} combination
-______________________________________________________________________________
-
-The parameter {vm-type}\_{network-role}\_floating\_ip provides only one
-allowed address pair IPv4 address per {vm-type} and {network-role} pair.
-
-The parameter {vm-type}\_{network-role}\_floating\_v6\_ip provides only
-one allowed address pair IPv6 address per {vm-type} and {network-role}
-pair.
-
-If there is a need for multiple allowed address pair IPs for a given
-{vm-type} and {network-role} combination within a VNF, then the
-parameter names defined for the property fixed\_ips and Map Property
-ip\_address should be used with the allowed\_address\_pairs property.
-The examples below illustrate this.
-
-*Example: A VNF has four load balancers. Each pair has a unique VIP.*
-
-In this example, there are two administrative VM pairs. Each pair has
-one VIP. The {network-role} has been defined as oam to represent an oam
-network and the {vm-type} has been defined as admin for an
-administrative VM.
-
-Pair 1: Resources admin\_0\_port\_0 and admin\_1\_port\_0 share a unique
-VIP, [admin\_oam\_ips,2]
-
-Pair 2: Resources admin\_2\_port\_0 and admin\_3\_port\_0 share a unique
-VIP, [admin\_oam\_ips,5]
-
-.. code-block:: yaml
-
- parameters:
- oam_net_id:
- type: string
- description: Neutron UUID for the oam network
- admin_oam_ips:
- type: comma_delimited_list
- description: Fixed IP assignments for admin VMs on the oam network
-
- resources:
-
- admin_0_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [admin_oam_ips,0] }}]
- allowed_address_pairs: [{ “ip_address”: {get_param: [admin_oam_ips,2] }}]
-
- admin_1_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [admin_oam_ips,1] }}]
- allowed_address_pairs: [{ “ip_address”: {get_param: [admin_oam_ips,2] }}]
-
- admin_2_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [admin_oam_ips,3] }}]
- allowed_address_pairs: [{ “ip_address”: {get_param: [admin_oam_ips,5] }}]
-
- admin_3_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [admin_oam_ips,4] }}]
- allowed_address_pairs: [{ “ip_address”: {get_param: [admin_oam_ips,5] }}]
-
-*Example: A VNF has two load balancers. The pair of load balancers share
-two VIPs.*
-
-In this example, there is one load balancer pairs. The pair has two
-VIPs. The {network-role} has been defined as oam to represent an oam
-network and the {vm-type} has been defined as lb for a load balancer VM.
-
-.. code-block:: yaml
-
- resources:
- lb_0_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [lb_oam_ips,0] }}]
- allowed_address_pairs: [{ "ip_address": {get_param: [lb_oam_ips,2]}, {get_param: [lb_oam_ips,3] }}]
-
- lb_1_port_0:
- type: OS::Neutron::Port
- properties:
- network: { get_param: oam_net_id }
- fixed_ips: [ { “ip_address”: {get_param: [lb_oam_ips,1] }}]
- allowed_address_pairs: [{ "ip_address": {get_param: [lb_oam_ips,2]}, {get_param: [lb_oam_ips,3] }}]
-
-As a general rule, provide the fixed IPs for the VMs indexed first in
-the CDL and then the VIPs as shown in the examples above.
-
-ONAP SDN-C Assignment of allowed\_address\_pair IP Addresses
-__________________________________________________________________
-
-The following items must be taken into consideration when designing Heat
-Orchestration Templates that expect ONAP’s SDN-C to assign
-allowed\_address\_pair IP addresses via automation.
-
-The VMs must be of the same {vm-type}.
-
-The VMs must be created in the same module (base or incremental).
-
-Resource Property “name”
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-The parameter naming convention of the property name for the resource
-OS::Nova::Server has been defined in
-`Resource: OS::Nova::Server – Metadata Parameters`_.
-
-This section provides the requirements how the property name for non
-OS::Nova::Server resources must be defined when the property is used.
-Not all resources require the property name (e.g., it is optional) and
-some resources do not support the property.
-
-R-85734 The VNF Heat Orchestration Template **MUST** use the
-intrinsic function str\_replace in conjunction with the ONAP
-supplied metadata parameter vnf\_name to generate a unique
-value, when the property name for a non OS::Nova::Server
-resources is defined in a Heat Orchestration Template.
-
-This prevents the enumeration of a
-unique value for the property name in a per instance environment file.
-
-Note that
-
-- In most cases, only the use of the metadata value vnf\_name is
- required to create a unique property name
-
-- the Heat Orchestration Template pseudo parameter 'OS::stack\_name’
- may also be used in the str\_replace construct to generate a unique
- name when the vnf\_name does not provide uniqueness
-
-*Example: Property* name *for resource* OS::Neutron::SecurityGroup
-
-.. code-block:: yaml
-
- resources:
- DNS_SECURITY_GROUP:
- type: OS::Neutron::SecurityGroup
- properties:
- description: vDNS security group
- name:
- str_replace:
- template: VNF_NAME_sec_grp_DNS
- params:
- VNF_NAME: {get_param: vnf_name}
- rules: [. . . . .
- ]
-
-*Example: Property name for resource* OS::Cinder::Volume
-
-.. code-block:: yaml
-
- resources:
- DNS_Cinder_Volume:
- type: OS::Cinder::Volume
- properties:
- description: Cinder Volume
- name:
- str_replace:
- template: VNF_NAME_STACK_NAME_dns_volume
- params:
- VNF_NAME: {get_param: vnf_name}
- STACK_NAME: { get_param: 'OS::stack_name' }
- . . . .
-
-Contrail Issue with Values for the Property Name
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-The Contrail GUI has a limitation displaying special characters. The
-issue is documented in
-https://bugs.launchpad.net/juniperopenstack/+bug/1590710. It is
-recommended that special characters be avoided. However, if special
-characters must be used, note that for the following resources:
-
-- Virtual Machine
-
-- Virtual Network
-
-- Port
-
-- Security Group
-
-- Policies
-
-- IPAM Creation
-
-the only special characters supported are:
-
-- “ ! $ ‘ ( ) = ~ ^ \| @ \` { } [ ] > , . \_
-
-ONAP Output Parameter Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-ONAP defines three types of Output Parameters as detailed in
-`Output Parameters`_.
-
-ONAP Base Module Output Parameters:
-+++++++++++++++++++++++++++++++++++
-
-ONAP Base Module Output Parameters do not have an explicit naming
-convention. The parameter name must contain {vm-type} and {network-role}
-when appropriate.
-
-ONAP Volume Template Output Parameters:
-+++++++++++++++++++++++++++++++++++++++
-
-ONAP Base Module Output Parameters do not have an explicit naming
-convention. The parameter name must contain {vm-type} when appropriate.
-
-Predefined Output Parameters
-++++++++++++++++++++++++++++
-
-ONAP currently defines one predefined output parameter the OAM
-Management IP Addresses.
-
-OAM Management IP Addresses
-___________________________
-
-A VNF may have a management interface for application controllers to
-interact with and configure the VNF. Typically, this will be via a
-specific VM that performs a VNF administration function. The IP address
-of this interface must be captured and inventoried by ONAP. The IP
-address might be a VIP if the VNF contains an HA pair of management VMs,
-or may be a single IP address assigned to one VM.
-
-The Heat template may define either (or both) of the following Output
-parameters to identify the management IP address.
-
-- oam\_management\_v4\_address
-
-- oam\_management\_v6\_address
-
-*Notes*:
-
-- The use of this output parameters are optional.
-
-- The Management IP Address should be defined only once per VNF, so it
- must only appear in one Module template
-
-- If a fixed IP for the admin VM is passed as an input parameter, it
- may be echoed in the output parameters. In this case, a IPv4 and/or
- IPv6 parameter must be defined in the parameter section of the YAML
- Heat template. The parameter maybe named oam\_management\_v4\_address
- and/or oam\_management\_v6\_address or may be named differently.
-
-- If the IP for the admin VM is obtained via DHCP, it may be obtained
- from the resource attributes. In this case,
- oam\_management\_v4\_address and/or oam\_management\_v6\_address must
- not be defined in the parameter section of the YAML Heat template.
-
-*Example: SDN-C Assigned IP Address echoed as*
-oam\_management\_v4\_address
-
-.. code-block:: yaml
-
- parameters:
- admin_oam_ip_0:
- type: string
- description: Fixed IPv4 assignment for admin VM 0 on the OAM network
- . . .
-
- resources:
- admin_oam_net_0_port:
- type: OS::Neutron::Port
- properties:
- name:
- str_replace:
- template: VNF_NAME_admin_oam_net_0_port
- params:
- VNF_NAME: {get_param: vnf_name}
- network: { get_param: oam_net_id }
- fixed_ips: [{ "ip_address": { get_param: admin_oam_ip_0 }}]
- security_groups: [{ get_param: security_group }]
-
- admin_server:
- type: OS::Nova::Server
- properties:
- name: { get_param: admin_names }
- image: { get_param: admin_image_name }
- flavor: { get_param: admin_flavor_name }
- availability_zone: { get_param: availability_zone_0 }
- networks:
- - port: { get_resource: admin_oam_net_0_port }
- metadata:
- vnf_id: { get_param: vnf_id }
- vf_module_id: { get_param: vf_module_id }
- vnf_name: {get_param: vnf_name }
- Outputs:
- oam_management_v4_address:
- value: {get_param: admin_oam_ip_0 }
-
-*Example: Cloud Assigned IP Address output as*
-oam\_management\_v4\_address
-
-.. code-block:: yaml
-
- parameters:
- . . .
- resources:
- admin_oam_net_0_port:
- type: OS::Neutron::Port
- properties:
- name:
- str_replace:
- template: VNF_NAME_admin_oam_net_0_port
- params:
- VNF_NAME: {get_param: vnf_name}
- network: { get_param: oam_net_id }
- security_groups: [{ get_param: security_group }]
-
- admin_server:
- type: OS::Nova::Server
- properties:
- name: { get_param: admin_names }
- image: { get_param: admin_image_name }
- flavor: { get_param: admin_flavor_name }
- availability_zone: { get_param: availability_zone_0 }
- networks:
- - port: { get_resource: admin_oam_net_0_port }
- metadata:
- vnf_id: { get_param: vnf_id }
- vf_module_id: { get_param: vf_module_id }
- vnf_name: {get_param: vnf_name }
-
- Outputs:
- oam_management_v4_address:
- value: {get_attr: [admin_server, networks, {get_param: oam_net_id}, 0] }
-
-Contrail Resource Parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-ONAP requires the parameter names of certain Contrail Resources to
-follow specific naming conventions. This section provides these
-requirements.
-
-Contrail Network Parameters
-+++++++++++++++++++++++++++
-
-Contrail based resources may require references to a Contrail network
-using the network FQDN.
-
-External Networks
-_________________
-
-When the parameter associated with the Contrail Network is referencing
-an “external” network, the parameter must adhere to the following naming
-convention in the Heat Orchestration Template
-
-- {network-role}\_net\_fqdn
-
-The parameter must be declared as type: string
-
-The parameter must not be enumerated in the Heat environment file.
-
-*Example: Parameter declaration*
-
-.. code-block:: yaml
-
- parameters:
- {network-role}_net_fqdn:
- type: string
- description: Contrail FQDN for the {network-role} network
-
-*Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface
-Reference to a Network FQDN.*
-
-In this example, the {network-role} has been defined as oam to represent
-an oam network and the {vm-type} has been defined as fw for firewall.
-The Contrail resource OS::ContrailV2::VirtualMachineInterface property
-virtual\_network\_refs references a contrail network FQDN.
-
-.. code-block:: yaml
-
- FW_OAM_VMI:
- type: OS::ContrailV2::VirtualMachineInterface
- properties:
- name:
- str_replace:
- template: VM_NAME_virtual_machine_interface_1
- params:
- VM_NAME: { get_param: fw_name_0 }
- virtual_machine_interface_properties:
- virtual_machine_interface_properties_service_interface_type: { get_param: oam_protected_interface_type }
- virtual_network_refs:
- - get_param: oam_net_fqdn
- security_group_refs:
- - get_param: fw_sec_grp_id
-
-Interface Route Table Prefixes for Contrail InterfaceRoute Table
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The parameter associated with the resource
-OS::ContrailV2::InterfaceRouteTable property
-interface\_route\_table\_routes, map property
-interface\_route\_table\_routes\_route\_prefix is an ONAP Orchestration
-Parameter.
-
-The parameters must be named {vm-type}\_{network-role}\_route\_prefixes
-in the Heat Orchestration Template.
-
-The parameter must be declared as type: json
-
-The parameter supports IP addresses in the format:
-
-1. Host IP Address (e.g., 10.10.10.10)
-
-2. CIDR Notation format (e.g., 10.0.0.0/28)
-
-The parameter must not be enumerated in the Heat environment file.
-
-*Example Parameter Definition*
-
-.. code-block:: yaml
-
- parameters:
- {vm-type}_{network-role}_route_prefixes:
- type: json
- description: JSON list of Contrail Interface Route Table route prefixes
-
-*Example:*
-
-.. code-block:: yaml
-
- parameters:
- vnf_name:
- type: string
- description: Unique name for this VF instance
- fw_int_fw_route_prefixes:
- type: json
- description: prefix for the ServiceInstance InterfaceRouteTable
- int_fw_dns_trusted_interface_type:
- type: string
- description: service_interface_type for ServiceInstance
-
- <resource name>:
- type: OS::ContrailV2::InterfaceRouteTable
- depends_on: [*resource name of* *OS::ContrailV2::ServiceInstance*]
- properties:
- name:
- str_replace:
- template: VNF_NAME_interface_route_table
- params:
- VNF_NAME: { get_param: vnf_name }
- interface_route_table_routes:
- interface_route_table_routes_route: { get_param: fw_int_fw_route_prefixes }
- service_instance_refs:
- - get_resource: < *resource name of* *OS::ContrailV2::ServiceInstance* >
- service_instance_refs_data:
- - service_instance_refs_data_interface_type: { get_param: int_fw_interface_type }
-
-Parameter Names in Contrail Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Contrail Heat resource properties will use, when appropriate, the same
-naming convention as OpenStack Heat resources. For example, the resource
-OS::ContrailV2::InstanceIp has two properties that the parameter naming
-convention is identical to properties in OS::Neutron::Port.
-
-*Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
-instance\_ip\_address*
-
-The property instance\_ip\_address uses the same parameter naming
-convention as the property fixed\_ips and Map Property ip\_address in
-OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP
-Address. The {network-role} has been defined as oam\_protected to
-represent an oam protected network and the {vm-type} has been defined as
-fw for firewall.
-
-.. code-block:: yaml
-
- CMD_FW_OAM_PROTECTED_RII:
- type: OS::ContrailV2::InstanceIp
- depends_on:
- - FW_OAM_PROTECTED_RVMI
- properties:
- virtual_machine_interface_refs:
- - get_resource: FW_OAM_PROTECTED_RVMI
- virtual_network_refs:
- - get_param: oam_protected_net_fqdn
- instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }
-
-*Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
-subnet\_uuid*
-
-The property instance\_ip\_address uses the same parameter naming
-convention as the property fixed\_ips and Map Property subnet\_id in
-OS::Neutron::Port. The resource is assigning a Cloud Assigned IP
-Address. The {network-role} has been defined as “oam\_protected” to
-represent an oam protected network and the {vm-type} has been defined as
-“fw” for firewall.
-
-.. code-block:: yaml
-
- CMD_FW_SGI_PROTECTED_RII:
- type: OS::ContrailV2::InstanceIp
- depends_on:
- - FW_OAM_PROTECTED_RVMI
- properties:
- virtual_machine_interface_refs:
- - get_resource: FW_OAM_PROTECTED_RVMI
- virtual_network_refs:
- - get_param: oam_protected_net_fqdn
- subnet_uuid: { get_param: oam_protected_subnet_id }
-
-Cinder Volume Templates
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-ONAP supports the independent deployment of a Cinder volume via separate
-Heat Orchestration Templates, the Cinder Volume module. This allows the
-volume to persist after VNF deletion so that they can be reused on
-another instance (e.g., during a failover activity).
-
-A Base Module or Incremental Module may have a corresponding volume
-module. Use of separate volume modules is optional. A Cinder volume may
-be embedded within the Base Module or Incremental Module if persistence
-is not required.
-
-R-47788 The VNF Heat Orchestration Template **MUST** have a 1:1
-scope of a cinder volume module, when it exists, with the
-Base Module or Incremental Module
-
-A single volume module must create only the volumes
-required by a single Incremental module or Base module.
-
-The following rules apply to independent volume Heat templates:
-
-- Cinder volumes must be created in a separate Heat Orchestration
- Template from the Base Module or Incremental Module.
-
-- A single Cinder volume module must include all Cinder volumes
- needed by the Base/Incremental module.
-
-- R-79531 The VNF Heat Orchestration Template **MUST** define
- “outputs” in the volume template for each Cinder volume
- resource universally unique identifier (UUID) (i.e. ONAP
- Volume Template Output Parameters).
-
-- The VNF Incremental Module or Base Module must define input
- parameters that match each Volume output parameter (i.e., ONAP Volume
- Template Output Parameters).
-
- - ONAP will supply the volume template outputs automatically to the
- bases/incremental template input parameters.
-
-- Volume modules may utilize nested Heat templates.
-
-*Examples: Volume Template*
-
-A VNF has a Cinder volume module, named incremental\_volume.yaml, that
-creates an independent Cinder volume for a VM in the module
-incremental.yaml. The incremental\_volume.yaml defines a parameter in
-the output section, lb\_volume\_id\_0 which is the UUID of the cinder
-volume. lb\_volume\_id\_0 is defined as a parameter in incremental.yaml.
-ONAP captures the UUID value of lb\_volume\_id\_0 from the volume module
-output statement and provides the value to the incremental module.
-
-Note that the example below is not a complete Heat Orchestration
-Template. The {vm-type} has been defined as “lb” for load balancer
-
-incremental\_volume.yaml
-
-.. code-block:: yaml
-
- parameters:
- vnf_name:
- type: string
- lb_volume_size_0:
- type: number
- ...
-
- resources:
- dns_volume_0:
- type: OS::Cinder::Volume
- properties:
- name:
- str_replace:
- template: VNF_NAME_volume_0
- params:
- VNF_NAME: { get_param: vnf_name }
- size: {get_param: dns_volume_size_0}
- ...
-
- outputs:
- lb_volume_id_0:
- value: {get_resource: dns_volume_0}
- ...
-
-
-incremental.yaml
-
-.. code-block:: yaml
-
- parameters:
- lb_name_0:
- type: string
- lb_volume_id_0:
- type: string
- ...
-
- resources:
- lb_0:
- type: OS::Nova::Server
- properties:
- name: {get_param: dns_name_0}
- networks:
- ...
-
- lb_0_volume_attach:
- type: OS::Cinder::VolumeAttachment
- properties:
- instance_uuid: { get_resource: lb_0 }
- volume_id: { get_param: lb_volume_id_0 }
-
-ONAP Support of Environment Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The use of an environment file in OpenStack is optional. In ONAP, it is
-mandatory.
-
-R-86285 The VNF Heat Orchestration Template **MUST** have a
-corresponding environment file, even if no parameters are required to be
-enumerated.
-
-(Note that ONAP, the open source version of ONAP, does not
-programmatically enforce the use of an environment file.)
-
-R-67205 The VNF Heat Orchestration Template **MUST** have a corresponding
-environment file for a Base Module.
-
-R-35727 The VNF Heat Orchestration Template **MUST** have a
-corresponding environment file for an Incremental module.
-
-R-22656 The VNF Heat Orchestration Template **MUST** have a
-corresponding environment file for a Cinder Volume Module.
-
-A nested heat template must not have an environment file; OpenStack does
-not support it.
-
-The environment file must contain parameter values for the ONAP
-Orchestration Constants and VNF Orchestration Constants. These
-parameters are identical across all instances of a VNF type, and
-expected to change infrequently. The ONAP Orchestration Constants are
-associated with OS::Nova::Server image and flavor properties (See
-`Property: image`_ and `Property: flavor`_). Examples of VNF
-Orchestration Constants are the networking parameters associated
-with an internal network (e.g., private IP ranges) and Cinder
-volume sizes.
-
-The environment file must not contain parameter values for parameters
-that are instance specific (ONAP Orchestration Parameters, VNF
-Orchestration Parameters). These parameters are supplied to the Heat by
-ONAP at orchestration time.
-
-SDC Treatment of Environment Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Parameter values enumerated in the environment file are used by SDC as
-the default value. However, the SDC user may use the SDC GUI to
-overwrite the default values in the environment file.
-
-SDC generates a new environment file for distribution to MSO based on
-the uploaded environment file and the user provided GUI updates. The
-user uploaded environment file is discarded when the new file is
-created. Note that if the user did not change any values via GUI
-updates, the SDC generated environment file will contain the same values
-as the uploaded file.
-
-Use of Environment Files when using OpenStack “heat stack-create” CLI
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When ONAP is instantiating the Heat Orchestration Template, certain
-parameter must not be enumerated in the environment file. This document
-provides the details of what parameters should not be enumerated.
-
-If the Heat Orchestration Template is to be instantiated from the
-OpenStack Command Line Interface (CLI) using the command “heat
-stack-create”, all parameters must be enumerated in the environment
-file.
-
-Heat Template Constructs
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Nested Heat Templates
-~~~~~~~~~~~~~~~~~~~~~
-
-ONAP supports nested Heat templates per the OpenStack specifications.
-Nested templates may be suitable for larger VNFs that contain many
-repeated instances of the same VM type(s). A common usage pattern is to
-create a nested template for each {vm-type} along with its supporting
-resources. The VNF module may then reference these component templates
-either statically by repeated definition or dynamically by using the
-resource OS::Heat::ResourceGroup.
-
-Nested Heat Template Requirements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-ONAP supports nested Heat Orchestration Templates. A Base Module,
-Incremental Module, and Cinder Volume Module may use nested heat.
-
-A Heat Orchestration Template may reference the nested heat statically
-by repeated definition.
-
-A Heat Orchestration Template may reference the nested heat dynamically
-using the resource OS::Heat::ResourceGroup.
-
-A Heat Orchestration template must have no more than three levels of
-nesting. ONAP supports a maximum of three levels.
-
-Nested heat templates must be referenced by file name. The use of
-resource\_registry in the environment file is not supported and must not
-be used.
-
-R-89868 The VNF Heat Orchestration Template **MUST** have unique
-file names within the scope of the VNF for a nested heat yaml file.
-
-R-52530 The VNF Heat Orchestration Template **MUST NOT** use a
-directory hierarchy for nested templates. All templates must
-be in a single, flat directory (per VNF).
-
-A nested heat template may be used by any module within a given VNF.
-
-Note that:
-
-- Constrains must not be defined for any parameter enumerated in a
- nested heat template.
-
-- R-11041 The VNF Heat Orchestration Template **MUST** have the
- resource calling the nested yaml file pass in as properties
- all parameters defined in nested yaml file.
-
-- R-61183 The VNF Heat Orchestration Template **MUST NOT**
- change the parameter names, when OS::Nova::Server metadata
- parameters are past into a nested heat template.
-
-- With nested templates, outputs are required to expose any resource
- properties of the child templates to the parent template. Those would
- not explicitly be declared as parameters but simply referenced as
- get\_attribute targets against the “parent” resource.
-
-Nested Heat Template Example: Static
-++++++++++++++++++++++++++++++++++++++
-
-incremental.yaml
-
-.. code-block:: yaml
-
- Resources:
- dns_server_0:
- type: nested.yaml
- properties:
- dns_image_name: { get_param: dns_image_name }
- dns_flavor_name: { get_param: dns_flavor_name }
- availability_zone: { get_param: availability_zone_0 }
- security_group: { get_param: DNS_shared_sec_grp_id }
- oam_net_id: { get_param: oam_protected_net_id }
- dns_oam_ip: { get_param: dns_oam_ip_0 }
- dns_name: { get_param: dns_name_0 }
- vnf_name: { get_param: vnf_name }
- vnf_id: { get_param: vnf_id }
- vf_module_id: {get_param: vf_module_id}
-
- dns_server_1:
- type: nested.yaml
- properties:
- dns_image_name: { get_param: dns_image_name }
- dns_flavor_name: { get_param: dns_flavor_name }
- availability_zone: { get_param: availability_zone_1 }
- security_group: { get_param: DNS_shared_sec_grp_id }
- oam_net_id: { get_param: oam_protected_net_id }
- dns_oam_ip: { get_param: dns_oam_ip_1 }
- dns_name: { get_param: dns_name_1 }
- vnf_name: { get_param: vnf_name }
- vnf_id: { get_param: vnf_id }
- vf_module_id: {get_param: vf_module_id}
-
-nested.yaml
-
-.. code-block:: yaml
-
- dns_oam_0_port:
- type: OS::Neutron::Port
- properties:
- name:
- str_replace:
- template: VNF_NAME_dns_oam_port
- params:
- VNF_NAME: {get_param: vnf_name}
- network: { get_param: oam_net_id }
- fixed_ips: [{ "ip_address": { get_param: dns_oam_ip }}]
- security_groups: [{ get_param: security_group }]
-
- dns_servers:
- type: OS::Nova::Server
- properties:
- name: { get_param: dns_names }
- image: { get_param: dns_image_name }
- flavor: { get_param: dns_flavor_name }
- availability_zone: { get_param: availability_zone }
- networks:
- - port: { get_resource: dns_oam_0_port }
- metadata:
- vnf_id: { get_param: vnf_id }
- vf_module_id: { get_param: vf_module_id }
- vnf_name {get_param: vnf_name }
-
-Use of Heat ResourceGroup
-+++++++++++++++++++++++++
-
-The OS::Heat::ResourceGroup is a useful Heat element for creating
-multiple instances of a given resource or collection of resources.
-Typically, it is used with a nested Heat template, to create, for
-example, a set of identical OS::Nova::Server resources plus their
-related OS::Neutron::Port resources via a single resource in a master
-template.
-
-ResourceGroup may be used in ONAP to simplify the structure of a Heat
-template that creates multiple instances of the same VM type.
-
-However, there are important caveats to be aware of:
-
-ResourceGroup does not deal with structured parameters
-(comma-delimited-list and json) as one might typically expect. In
-particular, when using a list-based parameter, where each list element
-corresponds to one instance of the ResourceGroup, it is not possible to
-use the intrinsic “loop variable” %index% in the ResourceGroup
-definition.
-
-For instance, the following is **not** valid Heat for ResourceGroup:
-
-.. code-block:: yaml
-
- type: OS::Heat::ResourceGroup
- resource_def:
- type: my_nested_vm_template.yaml
- properties:
- name: {get_param: [vm_name_list, %index%]}
-
-Although this appears to use the nth entry of the vm\_name\_list list
-for the nth element of the ResourceGroup, it will in fact result in a
-Heat exception. When parameters are provided as a list (one for each
-element of a ResourceGroup), you must pass the complete parameter to the
-nested template along with the current index as separate parameters.
-
-Below is an example of an **acceptable** Heat Syntax for a
-ResourceGroup:
-
-.. code-block:: yaml
-
- type: OS::Heat::ResourceGroup
- resource_def:
- type: my_nested_vm_template.yaml
- properties:
- names: {get_param: vm_name_list}
- index: %index%
-
-You can then reference within the nested template as:
-
-{ get\_param: [names, {get\_param: index} ] }
-
-ResourceGroup Property count
-____________________________
-
-ONAP requires that the OS::Heat::ResourceGroup property count be defined
-(even if the value is one) and that the value must be enumerated in the
-environment file. This is required for ONAP to build the TOSCA model for
-the VNF.
-
-.. code-block:: yaml
-
- type: OS::Heat::ResourceGroup
- properties:
- count: { get_param: count }
- index_var: index
- resource_def:
- type: my_nested_vm_template.yaml
- properties:
- names: {get_param: vm_name_list}
- index: index
-
-Availability Zone and ResourceGroups
-____________________________________
-
-The resource OS::Heat::ResourceGroup and the property availability\_zone
-has been an “issue” with a few VNFs since ONAP only supports
-availability\_zone as a string parameter and not a
-comma\_delimited\_list. This makes it difficult to use a ResourceGroup
-to create Virtual Machines in more than one availability zone.
-
-There are numerous solutions to this issue. Below are two suggested
-usage patterns.
-
-**Option 1:** create a CDL in the OS::Heat::ResourceGroup. In the
-resource type: OS::Heat::ResourceGroup, create a comma\_delimited\_list
-availability\_zones by using the intrinsic function list\_join.
-
-.. code-block:: yaml
-
- <resource name>:
- type: OS::Heat::ResourceGroup
- properties:
- count: { get_param: node_count }
- index_var: index
- resource_def:
- type: nested.yaml
- properties:
- index: index
- avaialability_zones: { list_join: [',', [ { get_param: availability_zone_0 }, { get_param: availability_zone_1 } ] ] }
-
-In the nested heat
-
-.. code-block:: yaml
-
- parameters:
- avaialability_zones:
- type: comma_delimited_list
- description:
-
- resources:
- servers:
- type: OS::Nova::Server
- properties:
- name: { get_param: [ dns_names, get_param: index ] }
- image: { get_param: dns_image_name }
- flavor: { get_param: dns_flavor_name }
- availability_zone: { get_param: [ avaialability_zones, get_param: index ] }
-
-
-**Option 2:** Create a resource group per availability zone. A separate
-OS::Heat::ResourceGroup is created for each availability zone.
-
-External References
-~~~~~~~~~~~~~~~~~~~
-
-Heat templates *should not* reference any HTTP-based resource
-definitions, any HTTP-based nested configurations, or any HTTP-based
-environment files.
-
-- During orchestration, ONAP *should not* retrieve any such resources
- from external/untrusted/unknown sources.
-
-- VNF images should not contain such references in user-data or other
- configuration/operational scripts that are specified via Heat or
- encoded into the VNF image itself.
-
-*Note:* HTTP-based references are acceptable if the HTTP-based reference
-is accessing information with the VM private/internal network.
-
-Heat Files Support (get\_file)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Heat Templates may contain the inclusion of text files into Heat
-templates via the Heat get\_file directive. This may be used, for
-example, to define a common “user-data” script, or to inject files into
-a VM on startup via the “personality” property.
-
-Support for Heat Files is subject to the following limitations:
-
-R-76718 The VNF Heat Orchestration Template **MUST** reference
-the get\_files targets in Heat templates by file name, and the
-corresponding files should be delivered to ONAP along with the
-Heat templates.
-
-R-41888 The VNE Heat **MUST NOT** use URL-based file retrieval.
-
-R-62177 The VNF Heat Orchestration Template **MUST** have unique
-file names for the included files within the scope of the VNF.
-
-R-87848 The VNF Heat Orchestration Template **MUST** have all
-included files in a single, flat directory per VNF. ONAP does
-not support a directory hierarchy.
-
-- Included files may be used by all Modules within a given VNF.
-
-- get\_file directives may be used in both non-nested and nested
- templates
-
-Key Pairs
-~~~~~~~~~
-
-When Nova Servers are created via Heat templates, they may be passed a
-“keypair” which provides an ssh key to the ‘root’ login on the newly
-created VM. This is often done so that an initial root key/password does
-not need to be hard-coded into the image.
-
-Key pairs are unusual in OpenStack, because they are the one resource
-that is owned by an OpenStack User as opposed to being owned by an
-OpenStack Tenant. As a result, they are usable only by the User that
-created the keypair. This causes a problem when a Heat template attempts
-to reference a keypair by name, because it assumes that the keypair was
-previously created by a specific ONAP user ID.
-
-When a keypair is assigned to a server, the SSH public-key is
-provisioned on the VMs at instantiation time. They keypair itself is not
-referenced further by the VM (i.e. if the keypair is updated with a new
-public key, it would only apply to subsequent VMs created with that
-keypair).
-
-Due to this behavior, the recommended usage of keypairs is in a more
-generic manner which does not require the pre-requisite creation of a
-keypair. The Heat should be structured in such a way as to:
-
-- Pass a public key as a parameter value instead of a keypair name
-
-- Create a new keypair within The VNF Heat Orchestration Template (in the base
- module) for use within that VNF
-
-By following this approach, the end result is the same as pre-creating
-the keypair using the public key – i.e., that public key will be
-provisioned in the new VM. However, this recommended approach also makes
-sure that a known public key is supplied (instead of having OpenStack
-generate a public/private pair to be saved and tracked outside of ONAP).
-It also removes any access/ownership issues over the created keypair.
-
-The public keys may be enumerated as a VNF Orchestration Constant in the
-environment file (since it is public, it is not a secret key), or passed
-at run-time as instance-specific parameters. ONAP will never
-automatically assign a public/private key pair.
-
-*Example (create keypair with an existing ssh public-key for {vm-type}
-of lb (for load balancer)):*
-
-.. code-block:: yaml
-
- parameters:
- vnf_name:
- type: string
- lb_ssh_public_key:
- type: string
-
- resources:
- my_keypair:
- type: OS::Nova::Keypair
- properties:
- name:
- str_replace:
- template: VNF_NAME_key_pair
- params:
- VNF_NAME: { get_param: vnf_name }
- public_key: {get_param: lb_ssh_public_key}
- save_private_key: false
-
-Security Groups
-~~~~~~~~~~~~~~~
-
-OpenStack allows a tenant to create Security groups and define rules
-within the security groups.
-
-Security groups, with their rules, may either be created in the Heat
-Orchestration Template or they can be pre-created in OpenStack and
-referenced within the Heat template via parameter(s). There can be a
-different approach for security groups assigned to ports on internal
-(intra-VNF) networks or external networks (inter-VNF). Furthermore,
-there can be a common security group across all VMs for a specific
-network or it can vary by VM (i.e., {vm-type}) and network type (i.e.,
-{network-role}).
-
-Anti-Affinity and Affinity Rules
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Anti-affinity or affinity rules are supported using normal OpenStack
-OS::Nova::ServerGroup resources. Separate ServerGroups are typically
-created for each VM type to prevent them from residing on the same host,
-but they can be applied to multiple VM types to extend the
-affinity/anti-affinity across related VM types as well.
-
-*Example:*
-
-In this example, the {network-role} has been defined as oam to represent
-an oam network and the {vm-type} have been defined as lb for load
-balancer and db for database.
-
-.. code-block:: yaml
-
- resources:
- db_server_group:
- type: OS::Nova::ServerGroup
- properties:
- name:
- str_replace:
- params:
- $vnf_name: {get_param: vnf_name}
- template: $vnf_name-server_group1
- policies:
- - anti-affinity
-
- lb_server_group:
- type: OS::Nova::ServerGroup
- properties:
- name:
- str_replace:
- params:
- $vnf_name: {get_param: vnf_name}
- template: $vnf_name-server_group2
- policies:
- - affinity
-
- db_0:
- type: OS::Nova::Server
- properties:
- ...
- scheduler_hints:
- group: {get_resource: db_server_group}
-
- db_1:
- type: OS::Nova::Server
- properties:
- ...
- scheduler_hints:
- group: {get_resource: db_server_group}
-
- lb_0:
- type: OS::Nova::Server
- properties:
- ...
- scheduler_hints:
- group: {get_resource: lb_server_group} 
-
-Resource Data Synchronization
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For cases where synchronization is required in the orchestration of Heat
-resources, two approaches are recommended:
-
-- Standard Heat depends\_on property for resources
-
- - Assures that one resource completes before the dependent resource
- is orchestrated.
-
- - Definition of completeness to OpenStack may not be sufficient
- (e.g., a VM is considered complete by OpenStack when it is ready
- to be booted, not when the application is up and running).
-
-- Use of Heat Notifications
-
- - Create OS::Heat::WaitCondition and OS::Heat::WaitConditionHandle
- resources.
-
- - Pre-requisite resources issue *wc\_notify* commands in user\_data.
-
- - Dependent resource define depends\_on in the
- OS::Heat::WaitCondition resource.
-
-*Example: “depends\_on” case*
-
-In this example, the {network-role} has been defined as oam to represent
-an oam network and the {vm-type} has been defined as oam to represent an
-oam server.
-
-.. code-block:: yaml
-
- resources:
- oam_server_01:
- type: OS::Nova::Server
- properties:
- name: {get_param: [oam_ names, 0]}
- image: {get_param: oam_image_name}
- flavor: {get_param: oam_flavor_name}
- availability_zone: {get_param: availability_zone_0}
- networks:
- - port: {get_resource: oam01_port_0}
- - port: {get_resource: oam01_port_1}
- user_data:
- scheduler_hints: {group: {get_resource: oam_servergroup}}
- user_data_format: RAW
-
- oam_01_port_0:
- type: OS::Neutron::Port
- properties:
- network: {get_resource: oam_net_name}
- fixed_ips: [{"ip_address": {get_param: [oam_oam_net_ips, 1]}}]
- security_groups: [{get_resource: oam_security_group}]
-
- oam_01_port_1:
- type: OS::Neutron::Port
- properties:
- network: {get_param: oam_net_name}
- fixed_ips: [{"ip_address": {get_param: [oam_oam_net_ips, 2]}}]
- security_groups: [{get_resource: oam_security_group}]
-
- oam_01_vol_attachment:
- type: OS::Cinder::VolumeAttachment
- depends_on: oam_server_01
- properties:
- volume_id: {get_param: oam_vol_1}
- mountpoint: /dev/vdb
- instance_uuid: {get_resource: oam_server_01}
-
-High Availability
-^^^^^^^^^^^^^^^^^
-
-VNF/VM parameters may include availability zone IDs for VNFs that
-require high availability.
-
-The Heat must comply with the following requirements to specific
-availability zone IDs:
-
-- The Heat template should spread Nova and Cinder resources across the
- availability zones as desired
-
-Post Orchestration & VNF Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Heat templates should contain a minimum amount of post-orchestration
-configuration data. For instance, *do not* embed complex user-data
-scripts in the template with large numbers of configuration parameters
-to the Heat template.
-
-- VNFs may provide configuration APIs for use after VNF creation. Such
- APIs will be invoked via application and/or SDN controllers.
-
-*Note:* It is important to follow this convention to the extent possible
-even in the short-term as of the long-term direction.
-
-VNFM Driver Development Steps
------------------------------------------------------------
-
-Refer to the ONAP documentation for VNF Provider instructions on integrating
-vendor-specific VNFM adaptors with VF-C. The VNF driver development steps are
-highlighted below.
-
-1. Use the VNF SDK tools to design the VNF with TOSCA models to output
-the VNF TOSCA package. Using the VNF SDK tools, the VNF package can be
-validated and tested.
-
-2. The VNF Provider supplies a vendor-specific VNFM driver in ONAP, which
-is a microservice providing a translation interface from VF-C to
-the vendor-specific VNFM. The interface definitions of vendor-specific
-VNFM adaptors are supplied by the VNF Providers themselves.
-
-Creating Vendor-Specific VNFM Adaptor Microservices
-------------------------------------------------------------------------------------------------
-
-VNFs can be managed by vendor-specific VNFMs. To add a vendor-specific
-VNFM to ONAP, a vendor-specific VNFM adaptor is added to ONAP implementing
-the interface of the vendor-specific VNFM.
-
-A vendor-specific VNFM adaptor is a microservice with a unique name and
-an appointed port. When started up, the vendor-specific VNFM adaptor
-microservice is automatically registered to the Microservices Bus (MSB).
-The following RESTful example describes the scenario of registering a
-vendor-specific VNFM adaptor to MSB:
-
-.. code-block:: java
-
- POST /api/microservices/v1/services
- {
- "serviceName": "catalog",
- "version": "v1",
- "url": "/api/catalog/v1",
- "protocol": "REST",
- "visualRange": "1",
- "nodes": [
- {
- "ip": "10.74.56.36",
- "port": "8988",
- "ttl": 0
- }
- ]
- }