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.
103 A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
104 **MAY** be defined in a Base Module.
112 A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
113 **MAY** be defined in an Incremental Module.
121 A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
122 **MAY** be defined in a Cinder Volume Module.
124 ONAP also supports the concept of an optional, independently deployed Cinder
125 volume via a separate Heat Orchestration Templates, referred to as a Cinder
126 Volume Module. This allows the volume to persist after a Virtual Machine
127 (VM) (i.e., OS::Nova::Server) is deleted, allowing the volume to be reused
128 on another instance (e.g., during a fail over activity).
134 :validation_mode: static
137 A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
138 with a Base module or Incremental module.
140 It is strongly recommended that Cinder Volumes be created in a Cinder Volume
147 :validation_mode: static
150 A VNF's Base Module **MUST** have a corresponding Environment File.
156 :validation_mode: static
159 A VNF's Incremental Module **MUST** have a corresponding Environment File
165 :validation_mode: static
168 A VNF's Cinder Volume Module **MUST** have a corresponding environment file
170 These concepts will be described in more detail throughout the document.
171 This overview is provided to set the stage and help clarify the concepts
172 that will be introduced.
174 Nested Heat Orchestration Templates Overview
175 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
177 ONAP supports nested Heat Orchestration Templates per OpenStack
186 A VNF's Base Module **MAY** utilize nested heat.
193 A VNF's Incremental Module **MAY** utilize nested heat.
200 A VNF's Cinder Volume Module **MAY** utilize nested heat.
202 Nested templates may be suitable for larger VNFs that contain many
203 repeated instances of the same VM type(s). A common usage pattern is to
204 create a nested template for each VM type along with its supporting
205 resources. The Heat Orchestration Template may then reference these
206 nested templates either statically (by repeated definition) or
207 dynamically (via OS::Heat::ResourceGroup).
209 See :ref:`Nested Heat Templates` for additional details.
211 ONAP Heat Orchestration Template Filenames
212 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
214 In order to enable ONAP to understand the relationship between Heat
215 files, the following Heat file naming convention must be utilized.
217 In the examples below, <text> represents any alphanumeric string that
218 must not contain any special characters and must not contain the word
226 :validation_mode: static
228 A VNF's Heat Orchestration Template's file extension **MUST**
229 be in the lower case format ``.yaml`` or ``.yml``.
235 :validation_mode: static
237 A VNF's Heat Orchestration Template's Nested YAML file extension **MUST**
238 be in the lower case format ``.yaml`` or ``.yml``.
244 :validation_mode: static
246 A VNF's Heat Orchestration Template's Environment file extension **MUST**
247 be in the lower case format ``.env``.
253 :validation_mode: static
255 A VNF's YAML files (i.e, Heat Orchestration Template files and
256 Nested files) **MUST** have a unique name in the scope of the VNF.
266 :validation_mode: static
269 A VNF Heat Orchestration Template's Base Module file name **MUST** include
270 case insensitive 'base' in the filename and
271 **MUST** match one of the following four
274 1.) ``base_<text>.y[a]ml``
276 2.) ``<text>_base.y[a]ml``
280 4.) ``<text>_base_<text>``.y[a]ml
282 where ``<text>`` **MUST** contain only alphanumeric characters and
283 underscores '_' and **MUST NOT** contain the case insensitive string
284 ``base`` or ``volume``.
290 :validation_mode: static
292 A VNF Heat Orchestration Template's Base Module's Environment File
293 **MUST** be named identical to the VNF Heat Orchestration Template's
294 Base Module with ``.y[a]ml`` replaced with ``.env``.
304 :validation_mode: static
307 VNF Heat Orchestration Template's Incremental Module file name
308 **MUST** contain only alphanumeric characters and underscores
309 '_' and **MUST NOT** contain the case insensitive string ``base``.
315 :validation_mode: static
317 A VNF Heat Orchestration Template's Incremental Module's Environment File
318 **MUST** be named identical to the VNF Heat Orchestration Template's
319 Incremental Module with ``.y[a]ml`` replaced with ``.env``.
321 To clearly identify the incremental module, it is recommended to use the
322 following naming options for modules:
324 - ``module_<text>.y[a]ml``
326 - ``<text>_module.y[a]ml``
330 - ``<text>_module_<text>.y[a]ml``
332 Cinder Volume Modules
333 ~~~~~~~~~~~~~~~~~~~~~
340 :validation_mode: static
343 A VNF Heat Orchestration Template's Cinder Volume Module **MUST**
344 be named identical to the base or incremental module it is supporting with
345 ``_volume`` appended.
351 :validation_mode: static
355 A VNF Heat Orchestration Template's Cinder Volume Module ``resources:``
357 **MUST** only be defined using one of the following:
359 * one of more ``OS::Cinder::Volume`` resources
360 * one or more ``OS::Heat::ResourceGroup`` resources that call a nested YAML
361 file that contains only ``OS::Cinder::Volume`` resources
362 * a resource that calls a nested YAML file (static nesting) that contains
363 only ``OS::Cinder::Volume`` resources
369 :validation_mode: static
372 VNF Heat Orchestration Template's Cinder Volume Module's Environment File
373 **MUST** be named identical to the VNF Heat Orchestration Template's
374 Cinder Volume Module with ``.y[a]ml`` replaced with ``.env``.
384 :validation_mode: static
387 VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
388 only alphanumeric characters and underscores '_' and
389 **MUST NOT** contain the case insensitive string ``base``.
395 :validation_mode: static
397 A VNF HEAT's Orchestration Nested Template's YAML file name **MUST NOT**
398 be in the format ``{vm-type}.y[a]ml`` where ``{vm-type}`` is defined
399 in the Heat Orchestration Template.
405 - ``nest_<text>.y[a]ml``
407 - ``<text>_nest.y[a]ml``
411 - ``<text>_nest_<text>.y[a]ml``
413 VNF Heat Orchestration Template's Nested YAML file does not have a
414 corresponding environment files, per OpenStack specifications.
416 .. _Output Parameters:
419 ^^^^^^^^^^^^^^^^^^^^^^
421 The output parameters are parameters defined in the output section of a
422 Heat Orchestration Template. The ONAP output parameters are subdivided
423 into three categories:
425 1. ONAP Base Module Output Parameters
427 2. ONAP Volume Module Output Parameters
429 3. ONAP Predefined Output Parameters.
431 ONAP Base Module Output Parameters
432 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
434 ONAP Base Module Output Parameters are declared in the ``outputs:`` section
435 of the VNF's Heat Orchestration Template's Base Module. A Base Module Output
436 Parameter is available as an input parameter (i.e., declared in
437 the ``parameters:`` section) to all Incremental Modules in the VNF.
439 A Base Module Output Parameter may be used as an input parameter in any
440 incremental module in the VNF. Note that the parameter is not available to
448 :validation_mode: none
451 VNF's Heat Orchestration Template's Base Module's output parameter's
452 name and type **MUST** match the VNF's Heat Orchestration Template's
453 incremental Module's name and type.
459 :validation_mode: static
462 When a VNF's Heat Orchestration Template's Base Module's output
463 parameter is declared as an input parameter in an Incremental Module,
464 the parameter attribute ``constraints:`` **SHOULD NOT** be declared.
466 Additional details on ONAP Base Module Output Parameters are provided in
467 :ref:`ONAP Output Parameter Names` and ONAP VNF Modularity.
469 ONAP Volume Module Output Parameters
470 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
477 :validation_mode: static
480 A VNF's Heat Orchestration Template's Cinder Volume Module Output
483 UUID(s) of the Cinder Volumes created in template.
485 A VNF's Heat Orchestration Template's Cinder Volume Module Output Parameter(s)
486 are only available for the module (base or incremental) that the volume
487 template is associated with.
494 :validation_mode: static
497 A VNF's Heat Orchestration Templates' Cinder Volume Module Output
498 Parameter's name and type **MUST** match the input parameter name and type
499 in the corresponding Base Module or Incremental Module.
505 :validation_mode: static
508 When an ONAP Volume Module Output Parameter is declared as an input
509 parameter in a base or an incremental module Heat Orchestration
510 Template, parameter constraints **SHOULD NOT** be declared.
512 Additional details on ONAP Base Module Output Parameters are provided in
513 :ref:`ONAP Output Parameter Names` and :ref:`ONAP Heat Cinder Volumes`.
515 ONAP Predefined Output Parameters
516 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
518 ONAP will look for a small set of pre-defined Heat output parameters to
519 capture resource attributes for inventory in ONAP. These output parameters
520 are optional and currently only two parameters are supported. These output
521 parameters are optional and are specified in
522 :ref:`OAM Management IP Addresses`.
524 Support of heat stack update
525 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
527 ONAP does not support the use of heat stack-update command for scaling
535 :validation_mode: none
537 A VNF Heat Orchestration Template **MUST NOT** be designed to utilize the
538 OpenStack ``heat stack-update`` command for scaling (growth/de-growth).
544 :validation_mode: none
546 A VNF **MUST** utilize a modular Heat Orchestration Template design to
547 support scaling (growth/de-growth).
549 It is important to note that ONAP only supports heat stack-update for
552 Scope of a Heat Orchestration Template
553 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
560 :validation_mode: none
562 A VNF's Heat Orchestration Template **MUST NOT** be VNF instance
563 specific or cloud site specific.
565 ONAP provides the instance specific parameter values to the Heat
566 Orchestration Template at orchestration time.
573 :validation_mode: none
575 A VNF's Heat Orchestration Template's parameter values that are constant
576 across all deployments **MUST** be declared in a Heat Orchestration
577 Template Environment File.
586 :validation_mode: static
588 When a VNF's Heat Orchestration Template is ready
589 to be on-boarded to ONAP,
590 all files composing the VNF Heat Orchestration Template
591 **MUST** be placed in a flat (i.e., non-hierarchical) directory and
592 archived using ZIP. The resulting ZIP file is uploaded into ONAP.
594 The VNF's Heat Orchestration Template's ZIP file must include
595 the base module YAML file (R-37028) and corresponding environment file
598 The VNF's Heat Orchestration Template's ZIP file **MAY** include
600 * One or more incremental module YAML files (R-13196) and corresponding
601 environment files (R-81725).
602 * One or more volume module YAML files (R-03251) and corresponding
603 environment files (R-53433).
604 * One or more nested YAML files (R-36582, R-56721, R-30395).
605 * One or more files that are retrieved via the intrinsic function
606 ``get_file``. The ``get_file`` function returns the content of a file
607 into a Heat Orchestration Template. It is generally used as a file
608 inclusion mechanism for files containing scripts or configuration files.
614 :validation_mode: static
617 The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include