1 .. Licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2017 AT&T Intellectual Property. All rights reserved.
5 .. _ONAP Heat Orchestration Templates Overview:
7 ONAP Heat Orchestration Templates Overview
8 -----------------------------------------------
10 ONAP supports a modular Heat Orchestration Template design pattern,
11 referred to as *VNF Modularity.*
13 .. _heat_onap_vnf_modularity_overview:
15 ONAP VNF Modularity Overview
16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24 A VNF **MAY** be composed from one or more Heat Orchestration
25 Templates, each of which represents a subset of the overall VNF.
27 The Heat Orchestration Templates can be thought of a components or modules of
28 the VNF and are referred to as *VNF Modules*. During orchestration,
30 deployed incrementally to create the complete VNF.
39 A VNF's Heat Orchestration Template **MAY** be
40 1.) Base Module Heat Orchestration Template (also referred to as a
42 2.) Incremental Module Heat Orchestration Template (referred to as
43 an Incremental Module), or
44 3.) a Cinder Volume Module Heat Orchestration Template (referred to as
45 Cinder Volume Module).
52 :validation_mode: static
54 A VNF **MUST** be composed of one Base Module
61 A VNF **MAY** be composed of zero to many Incremental Modules.
68 A VNF's incremental module **MAY** be used for initial VNF deployment only.
75 A VNF's incremental module **MAY** be used for scale out only.
77 A VNF's Incremental Module that is used for scale out is deployed sometime
78 after initial VNF deployment to add capacity.
86 A VNF's incremental module **MAY** be used for both deployment and
94 A VNF's incremental module **MAY** be deployed more than once,
95 either during initial VNF deployment and/or scale out.
102 A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
103 **MAY** be defined in a Base Module.
110 A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
111 **MAY** be defined in an Incremental Module.
118 A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
119 **MAY** be defined in a Cinder Volume Module.
121 ONAP also supports the concept of an optional, independently deployed Cinder
122 volume via a separate Heat Orchestration Templates, referred to as a Cinder
123 Volume Module. This allows the volume to persist after a Virtual Machine
124 (VM) (i.e., OS::Nova::Server) is deleted, allowing the volume to be reused
125 on another instance (e.g., during a fail over activity).
131 :validation_mode: static
134 A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
135 with a Base module or Incremental module.
137 It is strongly recommended that Cinder Volumes be created in a Cinder Volume
144 :validation_mode: static
147 A VNF's Base Module **MUST** have a corresponding Environment File.
153 :validation_mode: static
156 A VNF's Incremental Module **MUST** have a corresponding Environment File
162 :validation_mode: static
165 A VNF's Cinder Volume Module **MUST** have a corresponding environment file
167 These concepts will be described in more detail throughout the document.
168 This overview is provided to set the stage and help clarify the concepts
169 that will be introduced.
171 Nested Heat Orchestration Templates Overview
172 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
174 ONAP supports nested Heat Orchestration Templates per OpenStack
183 A VNF's Base Module **MAY** utilize nested heat.
190 A VNF's Incremental Module **MAY** utilize nested heat.
197 A VNF's Cinder Volume Module **MAY** utilize nested heat.
199 Nested templates may be suitable for larger VNFs that contain many
200 repeated instances of the same VM type(s). A common usage pattern is to
201 create a nested template for each VM type along with its supporting
202 resources. The Heat Orchestration Template may then reference these
203 nested templates either statically (by repeated definition) or
204 dynamically (via OS::Heat::ResourceGroup).
206 See :ref:`Nested Heat Templates` for additional details.
208 ONAP Heat Orchestration Template Filenames
209 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
211 In order to enable ONAP to understand the relationship between Heat
212 files, the following Heat file naming convention must be utilized.
214 In the examples below, <text> represents any alphanumeric string that
215 must not contain any special characters and must not contain the word
223 :validation_mode: static
225 A VNF's Heat Orchestration Template's file extension **MUST**
226 be in the lower case format ``.yaml`` or ``.yml``.
232 :validation_mode: static
234 A VNF's Heat Orchestration Template's Nested YAML file extension **MUST**
235 be in the lower case format ``.yaml`` or ``.yml``.
241 :validation_mode: static
243 A VNF's Heat Orchestration Template's Environment file extension **MUST**
244 be in the lower case format ``.env``.
250 :validation_mode: static
252 A VNF's YAML files (i.e, Heat Orchestration Template files and
253 Nested files) **MUST** have a unique name in the scope of the VNF.
263 :validation_mode: static
266 A VNF Heat Orchestration Template's Base Module file name **MUST** include
267 case insensitive 'base' in the filename and
268 **MUST** match one of the following four
271 1.) ``base_<text>.y[a]ml``
273 2.) ``<text>_base.y[a]ml``
277 4.) ``<text>_base_<text>``.y[a]ml
279 where ``<text>`` **MUST** contain only alphanumeric characters and
280 underscores '_' and **MUST NOT** contain the case insensitive word ``base``.
286 :validation_mode: static
288 A VNF Heat Orchestration Template's Base Module's Environment File
289 **MUST** be named identical to the VNF Heat Orchestration Template's
290 Base Module with ``.y[a]ml`` replaced with ``.env``.
300 :validation_mode: static
303 VNF Heat Orchestration Template's Incremental Module file name
304 **MUST** contain only alphanumeric characters and underscores
305 '_' and **MUST NOT** contain the case insensitive word ``base``.
311 :validation_mode: static
313 A VNF Heat Orchestration Template's Incremental Module's Environment File
314 **MUST** be named identical to the VNF Heat Orchestration Template's
315 Incremental Module with ``.y[a]ml`` replaced with ``.env``.
317 To clearly identify the incremental module, it is recommended to use the
318 following naming options for modules:
320 - ``module_<text>.y[a]ml``
322 - ``<text>_module.y[a]ml``
326 - ``<text>_module_<text>.y[a]ml``
328 Cinder Volume Modules
329 ~~~~~~~~~~~~~~~~~~~~~
336 :validation_mode: static
339 A VNF Heat Orchestration Template's Cinder Volume Module **MUST**
340 be named identical to the base or incremental module it is supporting with
341 ``_volume`` appended.
347 :validation_mode: static
350 A VNF Heat Orchestration Template's Cinder Volume Module resources section
351 **MUST** only be defined using one of the following:
353 * one of more ``OS::Cinder::Volume`` resources
354 * one or more ``OS::Heat::ResourceGroup`` resources that call a nested YAML
355 file that contains only ``OS::Cinder::Volume`` resources
356 * a resource that calls a nested YAML file (static nesting) that contains
357 only ``OS::Cinder::Volume`` resources
363 :validation_mode: static
366 VNF Heat Orchestration Template's Cinder Volume Module's Environment File
367 **MUST** be named identical to the VNF Heat Orchestration Template's
368 Cinder Volume Module with ``.y[a]ml`` replaced with ``.env``.
378 :validation_mode: static
381 VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
382 only alphanumeric characters and underscores '_' and
383 **MUST NOT** contain the case insensitive word ``base``.
389 :validation_mode: static
391 A VNF HEAT's Orchestration Nested Template's YAML file name **MUST NOT**
392 be in the format ``{vm-type}.y[a]ml`` where ``{vm-type}`` is defined
393 in the Heat Orchestration Template.
399 - ``nest_<text>.y[a]ml``
401 - ``<text>_nest.y[a]ml``
405 - ``<text>_nest_<text>.y[a]ml``
407 VNF Heat Orchestration Template's Nested YAML file does not have a
408 corresponding environment files, per OpenStack specifications.
410 .. _Output Parameters:
413 ^^^^^^^^^^^^^^^^^^^^^^
415 The output parameters are parameters defined in the output section of a
416 Heat Orchestration Template. The ONAP output parameters are subdivided
417 into three categories:
419 1. ONAP Base Module Output Parameters
421 2. ONAP Volume Module Output Parameters
423 3. ONAP Predefined Output Parameters.
425 ONAP Base Module Output Parameters
426 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
428 ONAP Base Module Output Parameters are declared in the ``outputs:`` section
429 of the VNF's Heat Orchestration Template's Base Module. A Base Module Output
430 Parameter is available as an input parameter (i.e., declared in
431 the ``parameters:`` section) to all Incremental Modules in the VNF.
433 A Base Module Output Parameter may be used as an input parameter in any
434 incremental module in the VNF. Note that the parameter is not available to
442 :validation_mode: static
444 VNF's Heat Orchestration Template's Base Module's output parameter's
445 name and type **MUST** match the VNF's Heat Orchestration Template's
446 incremental Module's name and type.
452 :validation_mode: static
454 When a VNF's Heat Orchestration Template's Base Module's output
455 parameter is declared as an input parameter in an Incremental Module,
456 the parameter attribute ``constraints:`` **SHOULD NOT** be declared.
458 Additional details on ONAP Base Module Output Parameters are provided in
459 :ref:`ONAP Output Parameter Names` and ONAP VNF Modularity.
461 ONAP Volume Module Output Parameters
462 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
469 :validation_mode: static
472 A VNF's Heat Orchestration Template's Cinder Volume Module Output
475 UUID(s) of the Cinder Volumes created in template.
477 A VNF's Heat Orchestration Template's Cinder Volume Module Output Parameter(s)
478 are only available for the module (base or incremental) that the volume
479 template is associated with.
486 :validation_mode: static
489 A VNF's Heat Orchestration Templates' Cinder Volume Module Output
490 Parameter's name and type **MUST** match the input parameter name and type
491 in the corresponding Base Module or Incremental Module.
497 :validation_mode: static
499 When an ONAP Volume Module Output Parameter is declared as an input
500 parameter in a base or an incremental module Heat Orchestration
501 Template, parameter constraints **SHOULD NOT** be declared.
503 Additional details on ONAP Base Module Output Parameters are provided in
504 :ref:`ONAP Output Parameter Names` and :ref:`ONAP Heat Cinder Volumes`.
506 ONAP Predefined Output Parameters
507 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
509 ONAP will look for a small set of pre-defined Heat output parameters to
510 capture resource attributes for inventory in ONAP. These output parameters
511 are optional and currently only two parameters are supported. These output
512 parameters are optional and are specified in
513 :ref:`OAM Management IP Addresses`.
515 Support of heat stack update
516 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
518 ONAP does not support the use of heat stack-update command for scaling
526 :validation_mode: static
528 A VNF Heat Orchestration Template **MUST NOT** be designed to utilize the
529 OpenStack ``heat stack-update`` command for scaling (growth/de-growth).
535 :validation_mode: none
537 A VNF **MUST** utilize a modular Heat Orchestration Template design to
538 support scaling (growth/de-growth).
540 It is important to note that ONAP only supports heat stack-update for
543 Scope of a Heat Orchestration Template
544 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
551 :validation_mode: none
553 A VNF's Heat Orchestration Template **MUST NOT** be VNF instance
554 specific or cloud site specific.
556 ONAP provides the instance specific parameter values to the Heat
557 Orchestration Template at orchestration time.
564 :validation_mode: static
566 A VNF's Heat Orchestration Template's parameter values that are constant
567 across all deployments **MUST** be declared in a Heat Orchestration
568 Template Environment File.
576 :validation_mode: static
578 When a VNF's Heat Orchestration Template is ready
579 to be on-boarded to ONAP,
580 all files composing the VNF Heat Orchestration Template
581 **MUST** be placed in a flat (i.e., non-hierarchical) directory and
582 archived using ZIP. The resulting ZIP file is uploaded into ONAP.
584 The VNF's Heat Orchestration Template's ZIP file must include
585 the base module YAML file (R-37028) and corresponding environment file
588 The VNF's Heat Orchestration Template's ZIP file **MAY** include
590 * One or more incremental module YAML files (R-13196) and corresponding
591 environment files (R-81725).
592 * One or more volume module YAML files (R-03251) and corresponding
593 environment files (R-53433).
594 * One or more nested YAML files (R-36582, R-56721, R-30395).
595 * One or more files that are retrieved via the intrinsic function
596 ``get_file``. The ``get_file`` function returns the content of a file
597 into a Heat Orchestration Template. It is generally used as a file
598 inclusion mechanism for files containing scripts or configuration files.
604 :validation_mode: static
606 The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include