summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorSteven Wright <sw3588@att.com>2018-05-29 17:12:09 +0000
committerGerrit Code Review <gerrit@onap.org>2018-05-29 17:12:09 +0000
commit8f0721c637b38e0e8c752fd4c0c84aaa2a036824 (patch)
tree98c211900e61f76b5aad0dfd8d6f9c07dd2dd9fc /docs
parent1188caf7e9689896e7fe9248220e30e78fa331dc (diff)
parentbda041d193dc63f5a92588d4b5f8da2b4fc2d3b8 (diff)
Merge "[VNFRQTS] update heat section [5.2.5.1 5.2.5.5)"
Diffstat (limited to 'docs')
-rw-r--r--docs/Chapter5.rst1057
1 files changed, 696 insertions, 361 deletions
diff --git a/docs/Chapter5.rst b/docs/Chapter5.rst
index 4974bb9..5fae0ce 100644
--- a/docs/Chapter5.rst
+++ b/docs/Chapter5.rst
@@ -2380,8 +2380,8 @@ Additional details on ONAP Base Module Output Parameters are provided in
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
+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)
@@ -2559,211 +2559,490 @@ This section provides the ONAP naming requirements for
{vm-type}
~~~~~~~~~
-R-01455 The VNF Heat Orchestration Template **MUST** assign a VNF unique
-{vm-type} for each Virtual Machine type (i.e., OS::Nova::Server)
-instantiated in the VNF. While the {vm-type} must be unique to the VNF,
-it does not have to be globally unique across all VNFs that ONAP
-supports.
+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:
-R-82481 The VNF Heat Orchestration Template **MUST** include {vm-type} as part of the parameter name
-for any parameter that is associated with a unique Virtual Machine type.
+ 1.) OS::Nova::Server property flavor value
-R-66729 The VNF Heat Orchestration Template **MUST** include {vm-type} as part of the resource ID
-for any resource ID that is associated with a unique Virtual Machine type in
-the VNF.
+ 2.) OS::Nova::Server property image value
-Note that {vm-type} must not be a substring of {network-role}. A
-substring of a string is another string that occurs "in". For example,
-"oam" is a substring of "oam\_protected". It will cause the
-Pre-Amsterdam VNF Validation Program (i.e., ICE Project) process to
-produce erroneous error messages.
+ 3.) Cinder Volume attachments
+ - Each VM in the 'class' **MUST** have the identical Cinder Volume
+ configuration
-The {vm-type} should not contain the string “\_int” or “int\_” or
-“\_int\_”. It may cause the Pre-Amsterdam VNF Validation Program (i.e.,
-ICE Project) process to produce erroneous error messages.
+ 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:
-R-32394 The VNF Heat Orchestration Template **MUST** use the same case for {vm-type} for all
-parameter names in the VNF.
+ 1.) The Resource OS::Nova::Server property availability_zone parameter
+ **MUST NOT** be prefixed with a common '{vm-type} identifier,
-R-46839 The VNF Heat Orchestration Template **MUST** use the same case for {vm-type} for all
-Resource IDs in the VNF.
+ 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.
-It is recommended that the {vm-type} case in the parameter names matches
-the {vm-type} case in the Resource IDs.
-There are two exceptions to the above rules:
+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.
-1. R-05008 The VNF Heat Orchestration Template **MUST NOT** be prefixed with a common
- {vm-type} identifier for the six ONAP Metadata parameters.
- They are *vnf\_name*, *vnf\_id*, *vf\_module\_id*, *vf\_module\_name,
- vm\_role*. The ONAP Metadata parameters are described in
- `Resource: OS::Nova::Server – Metadata Parameters`_.
+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\_'.
-2. R-15422 The VNF Heat Orchestration Template **MUST NOT** be prefixed with a common {vm-type}
- identifier the parameter referring to the OS::Nova::Server property
- availability\_zone . availability\_zone is described in `Property: availability_zone`_.
+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 The VNF Heat Orchestration Template **MUST** include the {network-role} as part of the
-parameter name for any parameter that is associated with an external network.
+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 The VNF Heat Orchestration Template **MUST** include the {network-role} as part of the
-resource ID for any resource ID that is associated with an external network
-must.
+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 The VNF Heat Orchestration Template **MUST** include int\_{network-role} as part of the
-parameter name for any parameter that is associated with an internal network.
+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 The VNF Heat Orchestration Template **MUST** include int\_{network-role} as part of the
-resource ID for any resource ID that is associated with an internal network.
+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.
-Note that {network-role} must not be a substring of {vm-type}. A
-substring of a string is another string that occurs "in". For example,
-"oam" is a substring of "oam\_protected". It will cause the
-Pre-Amsterdam VNF Validation Program (i.e., ICE Project) process to
-produce erroneous error messages.
+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\_'.
-The {network-role} should not contain the string “\_int” or “int\_” or
-“\_int\_”. It may cause the Pre-Amsterdam VNF Validation Program (i.e.,
-ICE Project) process to produce erroneous error messages.
+R-00977 A VNF’s Heat Orchestration Template’s ‘{network-role}’
+**MUST NOT** be a substring of ‘{vm-type}’.
-R-58424 The VNF Heat Orchestration Template **MUST** use the same case for {network-role} for
-all parameter names in the VNF.
+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-21511 The VNF Heat Orchestration Template **MUST** use the same case for {network-role} for
-all Resource IDs in the VNF.
+R-58424 A VNF’s Heat Orchestration Template’s use of ‘{network-role}’
+in all Resource property parameter names **MUST** be the same case
-It is recommended that the {network-role} case in the parameter names
-matches the {network-role} case in the Resource IDs.
+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
~~~~~~~~~~~~
-Heat Orchestration Template resources are described in `resources`_
+Requirement R-75141 states a VNF’s Heat Orchestration Template’s
+resource name (i.e., <resource ID>) MUST only contain alphanumeric
+characters and underscores (‘_’).*
-R-59629 The VNF Heat Orchestration Template **MUST** have unique resource IDs within the
-resources section of a Heat Orchestration Template. This is an
-OpenStack Requirement.
+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.
-R-43319 The VNF Heat Orchestration Template **MUST** have unique resource IDs
-across all modules that compose the VNF,
-when a VNF is composed of more than one Heat Orchestration Template
-(i.e., modules).
+Heat Orchestration Template resources are described in `resources`_
-R-54517 The VNF Heat Orchestration Template **MUST** include {vm-type} in the resource ID
-when a resource is associated with a single {vm-type}.
+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 The VNF Heat Orchestration Template **MUST** include {network-role} in the resource ID
-when a resource is associated with a single external network.
+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 The VNF Heat Orchestration Template **MUST** include int\_{network-role} in the resource ID
-when a resource is associated with a single internal network.
+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 The VNF Heat Orchestration Template **MUST** include both the {vm-type} and
-{network-role} in the resource ID,
-when a resource is associated with a single {vm-type} and a single
-external network.
+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 (i.e., {vm-type}\_{network-role}).
+- the '{vm-type}' **MUST** appear before the '{network-role}' and **MUST**
+ be separated by an underscore '_'
-- Note that an {index} value may separate the {vm-type} and the
- {network-role}. An underscore will separate the three values (i.e.,
- {vm-type}\_{index}\_{network-role}).
+ - e.g., '{vm-type}_{network-role}', '{vm-type}_{index}_{network-role}'
-R-82551 The VNF Heat Orchestration Template **MUST** include both the {vm-type} and
-int\_{network-role} in the resource ID,
-when a resource is associated with a single {vm-type} and a single
-internal network.
+- note that an '{index}' value **MAY** separate the '{vm-type}' and the
+ '{network-role}' and when this occurs underscores **MUST** separate the
+ three values.
-- The {vm-type} must appear before the int\_{network-role} and must be
- separated by an underscore (i.e., {vm-type}\_int\_{network-role}).
+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
-- Note that an {index} value may separate the {vm-type} and the
- int\_{network-role}. An underscore will separate the three values
- (i.e., {vm-type}\_{index}\_int\_{network-role}).
+- the '{vm-type}' **MUST** appear before the 'int\_{network-role}' and
+ **MUST** be separated by an underscore '_'
-When a resource is associated with more than one {vm-type} and/or more
-than one network, the resource ID
+ - (e.g., '{vm-type}\_int\_{network-role}', '{vm-type}_{index}\_int\_{network-role}')
-- must not contain the {vm-type} and/or
- {network-role}/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.
-- should contain the term “shared” and/or contain text that identifies
- the VNF.
+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-69287 The VNF Heat Orchestration Template **MUST** use only alphanumeric characters and “\_”
-underscores in the resource ID. Special characters must not be used.
+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.
-All {index} values must be zero based. That is, the {index} must start
-at zero and increment by one.
+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.
-+-----------------------------+--------------------------------------+
-| Resource Type | Resource ID Format |
-+=============================+======================================+
-| OS::Cinder::Volume | {vm\_type}\_volume\_{index} |
-+-----------------------------+--------------------------------------+
-| OS::Cinder::VolumeAttachment| {vm\_type}\_volumeattachment\_{index}|
-+-----------------------------+--------------------------------------+
-| OS::Heat::CloudConfig | {vm\_type}\_RCC |
-+-----------------------------+--------------------------------------+
-| OS::Heat::MultipartMime | {vm\_type}\_RMM |
-+-----------------------------+--------------------------------------+
-| OS::Heat::ResourceGroup | {vm\_type}\_RRG |
-+-----------------------------+--------------------------------------+
-| OS::Heat::SoftwareConfig | {vm\_type}\_RSC |
-+-----------------------------+--------------------------------------+
-| OS::Neutron::Port | {vm\_type}\_{index}\ |
-| | _{network\_role}\_{index}\_port |
-+-----------------------------+--------------------------------------+
-| | {vm\_type}\_{index}\ |
-| | _int\_{network\_role}\_{index}\_port |
-+-----------------------------+--------------------------------------+
-| OS::Neutron::SecurityGroup | {vm\_type}\_RSG |
-+-----------------------------+--------------------------------------+
-| OS::Neutron::Subnet | {network\_role}\_subnet\_{index} |
-+-----------------------------+--------------------------------------+
-| OS::Nova::Server | {vm\_type}\_{index} |
-+-----------------------------+--------------------------------------+
-| OS::Nova::ServerGroup | {vm\_type}\_RSG |
-+-----------------------------+--------------------------------------+
-| OS::Swift::Container | {vm\_type}\_RSwiftC |
-+-----------------------------+--------------------------------------+
-
- Table 1: Example OpenStack Heat Resource ID
-
-The table below provides example Contrail Heat resource ID for resources
-only associated with one {vm-type} and/or one network.
-
-+-------------------------------------------+---------------------------------+
-| Resource Type | Resource ID Format |
-+===========================================+=================================+
-| OS::ContrailV2::InstanceIp | {vm\_type}\_{index}\ |
-| | _{network\_role}\_RII |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::InterfaceRouteTable | {network\_role}\_RIRT |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::NetworkIpam | {network\_role}\_RNI |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::PortTuple | {vm\_type}\_RPT |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::ServiceHealthCheck | {vm\_type}\_RSHC\_{LEFT\|RIGHT} |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::ServiceTemplate | {vm\_type}\_RST\_{index} |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::VirtualMachineInterface | int\_{network\_role}\_RVMI |
-+-------------------------------------------+---------------------------------+
-| OS::ContrailV2::VirtualNetwork | int\_{network\_role}\_RVN |
-+-------------------------------------------+---------------------------------+
-
- Table 2: Example Contrail Heat resource ID
+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::Volume | {vm-type}\_volume\_{index} | **SHOULD** | |
+| | | | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Cinder::VolumeAttachment | {vm-type}\_volumeattachment\_{index} | **SHOULD** | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Heat::CloudConfig | {vm-type}_RCC | **SHOULD** | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Heat::MultipartMime | {vm-type}_RMM | **SHOULD** | |
+| | | | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Heat::ResourceGroup | {vm-type}_RRG | **SHOULD** | |
+| | | | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | | | |
+| | | | |
+| | | | Resource ID for the |
+| | {vm-type}_{index}\_subint\_{network-role}_ | **MUST** for subinterface creation | OS::Heat::ResourceGroup |
+| | port\_{index}_subinterfaces | | that creates |
+| | | | subinterfaces |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Heat::SoftwareConfig | {vm-type}_RSC | **SHOULD** | |
+| | | | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Neutron::Port | {vm-type}_{vm-type-index}_{network-role}\_port\_{port-index} | **MUST** | Resource ID for port |
+| | | | connecting to an |
+| | | | external 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 |
+| | | | since {network-role} |
+| | | | is unque to the VNF, |
+| | | | there should |
+| | | | only be one instance. |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {vm-type}_{index}\_int\_{network-role}\_port\_{index} | | Resource ID for port |
+| | | **MUST** | connecting 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 |
+| | | | since {network-role} |
+| | | | is unque to the AIC |
+| | | | LCP; there should |
+| | | | only be one instance. |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | Reserve_Port\_{vm-type}_{network-role}\_floating_ip\_{index} | | Resource ID for a |
+| | | **MUST** | reserve port that is |
+| | | | used for an |
+| | | | allowed_address_pair. |
+| | Reserve_Port\_{vm-type}_{network-role}\_floating_v6_ip\_{index} | | See Section 5.6.5.5 |
+| | | | for additional |
+| | | | details. |
+| | | | |
+| | | | There is no {index} |
+| | | | that follows |
+| | | | {vm-type} |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Neutron::SecurityGroup | {vm-type}_Sec_Grp | | Security Group |
+| | | **SHOULD** | applicable to one |
+| | | | {vm-type} and more |
+| | | | than one network |
+| | | | (internal and/or |
+| | | | external) |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {network-role}_Sec_Grp | | Security Group |
+| | | **SHOULD** | applicable to more |
+| | | | than one {vm-type} |
+| | | | and one external |
+| | | | network |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | int\_{network-role}_Sec_Grp | | Security Group |
+| | | **SHOULD** | applicable to more |
+| | | | than one {vm-type} |
+| | | | and one internal |
+| | | | network |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {vm-type}_{network-role}_Sec_Grp | | Security Group |
+| | | **SHOULD** | applicable to one |
+| | | | {vm-type} and one |
+| | | | external network |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {vm-type}\_int\_{network-role}_Sec_Grp | | Security Group |
+| | | **SHOULD** | applicable to one |
+| | | | {vm-type} and one |
+| | | | internal network |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | Shared_Sec_Grp | | Security Group |
+| | | **SHOULD** | applicable to more |
+| | | | than one {vm-type} |
+| | | | and more than one |
+| | | | network (internal |
+| | | | and/or external) |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Neutron::Subnet | int\_{network-role}\_subnet\_{index} | | VNF Heat |
+| | | **MUST** | Orchestration |
+| | | | Templates can only |
+| | | | create internal |
+| | | | networks. |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Neutron::Net | int\_{network-role}\_network | | VNF Heat |
+| | | **MUST** | Orchestration |
+| | | | Templates can only |
+| | | | create internal |
+| | | | networks. There is no |
+| | | | {index} because |
+| | | | {nework-role} should |
+| | | | be unique. |
+| | | | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Nova::Keypair | {vm-type}\_keypair\_{index} | **SHOULD** | Key Pair applicable to |
+| | | | one {vm-type} |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {vnf-type}_keypair | **SHOULD** | Key Pair applicable |
+| | | | to all {vm-type} in the |
+| | | | VNF |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Nova::Server | {vm-type}\_server\_{index} | Mandatory | |
+| | | | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Nova::ServerGroup | {vm-type}_RSG | **SHOULD** | Both formats are |
+| | | | valid. |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {vm-type}_Server_Grp | **SHOULD** | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| | {vm-type}_ServerGroup | **SHOULD** | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+| OS::Swift::Container | {vm-type}_RSwiftC | **SHOULD** | |
++------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
+
+
+ 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}_{network-role}\_vmi\_{index}\_IP\_{index} | **MUST** – | The {index} | |
+| :InstanceIp | | IPv4 address on | that follows | |
+| | | vmi external | {vm-type} is | |
+| | | 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}_{network-role}\_vmi\_{index}\_v6\_IP\_{index} | **MUST** – | | |
+| | | IPv6 address on | | |
+| | | vmi external | | |
+| | | network | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| | {vm-type}_{index}\_int\_{network-role}\_vmi\_{index}\_IP\_{index} | **MUST** – | | |
+| | | IPv4 address on | | |
+| | | vmi internal | | |
+| | | network | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| | {vm-type}_{index}\_int\_{network-role}\_vmi\_{index}\_v6\_IP\_{index} | **MUST** – | | |
+| | | IPv6 address on | | |
+| | | vmi internal | | |
+| | | network | | |
+| | | | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| | {vm-type}_{index}\_subint\_{network-role}\_vmi\_{index}\_IP\_{index} | **MUST** – | | |
+| | | IPv4 address on | | |
+| | | sub-interface | | |
+| | | vmi external | | |
+| | | network | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| | {vm-type}_{index}\_subint\_{network-role}\_vmi\_{index}\_v6\_IP\_{index} | **MUST** – | | |
+| | | IPv6 address on | | |
+| | | sub-interface | | |
+| | | vmi external | | |
+| | | 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\_{LEFT/RIGHT} | **MAY** | | |
+| :ServiceHealthC | | | | |
+| heck | | | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| OS::ContrailV2: | {vm-type}\_RST\_{index} | **MAY** | | |
+| :ServiceTemplat | | | | |
+| e | | | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| OS::ContrailV2: | {vm-type}\_{index}\_{network-role}\_vmi\_{index} | **MUST** - vmi | Resource ID for | |
+| :VirtualMachine | | attached to an | virtual machine | |
+| Interface | | 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}\_int\_{network-role}\_vmi\_{index} | **MUST** - vmi | | |
+| | | attached to an | | |
+| | | internal | | |
+| | | network | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| | {vm-type}_{index}\_subint\_{network-role}\_vmi\_{index} | **MUST** - vmi | | |
+| | | attached to a | | |
+| | | sub-interface | | |
+| | | network | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| OS::ContrailV2: | int\_{network-role}\_RVN | **MAY** | VNF Heat | |
+| :VirtualNetwork | | | Orchestration | |
+| | | | Templates can | |
+| | | | only create | |
+| | | | internal | |
+| | | | networks. There | |
+| | | | is no {index} | |
+| | | | because | |
+| | | | {nework-role} | |
+| | | | should be | |
+| | | | unique. Both | |
+| | | | formats are | |
+| | | | valid. | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+| | int\_{network-role}\_network | **MAY** | | |
+| | | | | |
++-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
+
+ 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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -2783,54 +3062,43 @@ convention. The four properties are:
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
-additional details.
+the detailed requirements.
-Note that the {vm\_type} must be identical across all four property
-parameters for a given OS::Nova::Server resource.
-
-+----------------------------------------------------------------------------+
-| Resource OS::Nova::Server |
-+--------------+----------------+----------+----------------+----------------+
-| Property Name| ONAP Parameter | Parameter| Parameter Value| ONAP Parameter |
-| | Name | Type | Generation | Classification |
-+==============+================+==========+================+================+
-| image | {vm-type}\ | string | Environment | ONAP |
-| | _image\_name | string | File | Constant |
-+--------------+----------------+----------+----------------+----------------+
-| flavor | {vm-type}\ | string | Environment | ONAP |
-| | _flavor\_name | | File | Constant |
-+--------------+----------------+----------+----------------+----------------+
-| name | {vm-type}\ | string | ONAP | ONAP |
-| | _name\_{index} | | | Orchestration |
-+--------------+----------------+----------+----------------+----------------+
-| | {vm-type}\ | CDL | ONAP | ONAP |
-| | _names | | | Orchestration |
-+--------------+----------------+----------+----------------+----------------+
-| availability\| availability\ | string | ONAP | ONAP |
-| _zone | _zone\_{index} | | | Orchestration |
-+--------------+----------------+----------+----------------+----------------+
-
-Table 3 Resource Property Parameter Names
+.. 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
+++++++++++++++
-The parameter associated with the property image is an ONAP Constant
-parameter.
-
-The parameters must be named {vm-type}\_image\_name in the Heat
-Orchestration Template.
+R-71152 The VNF’s Heat Orchestration Template’s Resource
+‘OS::Nova::Server’ property ‘image’ parameter **MUST** be declared as
+type: ‘string’.
-R-71152 The VNF Heat Orchestration Template **MUST** declare as type: string the parameter
-for property image.
+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 Heat Orchestration Template **MUST** enumerate the parameter for property
-image in the Heat Orchestration Template environment file.
+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 The VNF Heat Orchestration Template **MUST** have a separate parameter for image for
-Each VM type (i.e., {vm-type}) even if more than one {vm-type} shares
-the same image. This provides maximum clarity and flexibility.
+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*
@@ -2844,21 +3112,22 @@ the same image. This provides maximum clarity and flexibility.
Property: flavor
++++++++++++++++
-The parameter associated with the property flavor is an ONAP Constant
-parameter.
-
-The parameters must be named {vm-type}\_flavor\_name in the Heat
-Orchestration Template.
+R-50436 The VNF’s Heat Orchestration Template’s Resource
+‘OS::Nova::Server’ property ‘flavor’ parameter **MUST** be declared as
+type: ‘string’.
-R-50436 The VNF Heat Orchestration Template **MUST** declare the parameter property for
-flavor 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 Heat Orchestration Template **MUST** enumerate the parameter for property
-flavor in the Heat Orchestration Template environment file.
+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 The VNF Heat Orchestration Template **MUST** have a separate parameter for flavor for each
-VM type (i.e., {vm-type}) even if more than one {vm-type} shares the same
-flavor. This provides maximum clarity and flexibility.
+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*
@@ -2872,210 +3141,276 @@ flavor. This provides maximum clarity and flexibility.
Property: Name
++++++++++++++
-The parameter associated with the property name is an ONAP Orchestration
-parameter.
+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”.
-The parameter value is provided to the Heat template by ONAP.
+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-22838 The VNF Heat Orchestration Template **MUST NOT** enumerate the parameter for property name
-in the environment file.
+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-51430 The VNF Heat Orchestration Template **MUST** declare the parameter for property name as
-type: string or type: comma\_delimited\_list
+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’.
-If the parameter is declared as type:string, the parameter must be named
-{vm-type}\_name\_{index}, where {index} is a numeric value that starts
-at zero and increments by one.
+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}’.
-If the parameter is declared as type:comma\_delimited\_list, the
-parameter must be named as {vm-type}\_names
+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.
-Each element in the VM Name list should be assigned to successive
-instances of that VM type.
+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.
-If a VNF contains more than three instances 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 Heat.
*Example: Parameter Definition*
-.. code-block:: yaml
+.. 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}
+ parameters:
-*Example: comma\_delimited\_list*
+ {vm-type}_names:
+ type: comma_delimited_list
+ description: VM Names for {vm-type} VMs
-In this example, the {vm-type} has been defined as “lb” for load
-balancer.
+ {vm-type}_name_{index}:
+ type: string
+ description: VM Name for {vm-type} VM {index}
-.. code-block:: yaml
+*Example: comma_delimited_list*
- parameters:
- lb_names:
- type: comma_delimited_list
- description: VM Names for lb VMs
+In this example, the {vm-type} has been defined as “lb” for load balancer.
- resources:
- lb_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: [lb_names, 0] }
- ...
+.. code-block:: python
- lb_1:
- type: OS::Nova::Server
- properties:
- name: { get_param: [lb_names, 1] }
- ...
+ 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.
+In this example, the {vm-type} has been defined as “lb” for load balancer.
-.. code-block:: yaml
+.. code-block:: python
- parameters:
- lb_name_0:
- type: string
- description: VM Name for lb VM 0
+ parameters:
- lb_name_1:
- type: string
- description: VM Name for lb VM 1
+ lb_name_0:
+ type: string
+ description: VM Name for lb VM 0
- resources:
- lb_0:
- type: OS::Nova::Server
- properties:
- name: { get_param: lb_name_0 }
- ...
+ lb_name_1:
+ type: string
+ description: VM Name for lb VM 1
- lb_1:
- type: OS::Nova::Server
- properties:
- name: { get_param: lb_name_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
_____________________________________________________________
-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, the only special characters supported are:
+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
++++++++++++++++++++++++++++
-The parameter associated with the property availability\_zone is an ONAP
-Orchestration parameter.
+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.
-The parameter value is provided to the Heat template by ONAP. The
-parameter must not be enumerated in the environment file.
+R-23311 The VNF’s Heat Orchestration Template’s Resource
+‘OS::Nova::Server’ property ‘availability_zone’ parameter **MUST**
+be declared as type: ‘string’.
-R-98450 The VNF Heat Orchestration Template **MUST** name the parameter availability\_zone\_{index}
-in the Heat Orchestration Template.
+The parameter must not be declared as type ‘comma_delimited_list’,
+ONAP does not support it.
-R-13561 The VNF Heat Orchestration Template **MUST** start the {index} at zero.
+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.
-R-60204 The VNF Heat Orchestration Template **MUST** increment the {index} by one.
+Example Parameter Definition
-R-36887 The VNF Heat Orchestration Template **MUST NOT** include the {vm-type} in the parameter name.
+.. code-block:: python
-The parameter must be declared as type: string
+ 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.
-The parameter must not be declared as type: comma\_delimited\_list
+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.
+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:: yaml
+.. 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
+ parameters:
- 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_image_name:
+ type: string
+ description: dns server image
- 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 }
- . . .
+ dns_flavor_name:
+ type: string
+ description: dns server flavor
- 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 }
- . . .
+ dns_names:
+ type: comma_delimited_list
+ description: dns server names
- 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 }
- . . .
+ 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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~