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 ONAP VNF Modularity Overview
14 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
22 A VNF **MAY** be composed from one or more Heat Orchestration
23 Templates, each of which represents a subset of the overall VNF.
25 The Heat Orchestration Templates can be thought of a components or modules of
26 the VNF and are referred to as *VNF Modules*. During orchestration,
28 deployed incrementally to create the complete VNF.
36 A VNF's Heat Orchestration Template **MAY** be
37 1.) Base Module Heat Orchestration Template (also referred to as a
39 2.) Incremental Module Heat Orchestration Template (referred to as
40 an Incremental Module), or
41 3.) a Cinder Volume Module Heat Orchestration Template (referred to as
42 Cinder Volume Module).
49 A VNF **MUST** be composed of one Base Module
56 A VNF **MAY** be composed of zero to many Incremental Modules.
63 At orchestration time, the VNF's Base Module **MUST**
64 be deployed first, prior to any incremental modules.
71 A VNF's incremental module **MAY** be used for initial VNF deployment only.
78 A VNF's incremental module **MAY** be used for scale out only.
80 A VNF's Incremental Module that is used for scale out is deployed sometime
81 after initial VNF deployment to add capacity.
89 A VNF's incremental module **MAY** be used for both deployment and
97 A VNF's incremental module **MAY** be deployed more than once,
98 either during initial VNF deployment and/or scale out.
105 A VNF's Heat Orchestration Template's Resource OS::Heat::CinderVolume
106 **MAY** be defined in a Base Module.
113 A VNF's Heat Orchestration Template's Resource OS::Heat::CinderVolume
114 **MAY** be defined in an Incremental Module.
121 A VNF's Heat Orchestration Template's Resource OS::Heat::CinderVolume
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 failover activity).
134 :validation_mode: static
136 A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
137 with a Base module or Incremental module.
139 It is strongly recommended that Cinder Volumes be created in a Cinder Volume
146 :validation_mode: static
148 The VNF **MUST** have a corresponding environment file for a Base Module.
154 :validation_mode: static
156 A VNF's Incremental Module **MUST** have a corresponding Environment File
162 :validation_mode: static
164 A VNF's Cinder Volume Module **MUST** have a corresponding environment file
166 These concepts will be described in more detail throughout the document.
167 This overview is provided to set the stage and help clarify the concepts
168 that will be introduced.
170 Nested Heat Orchestration Templates Overview
171 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
173 ONAP supports nested Heat Orchestration Templates per OpenStack
182 A VNF's Base Module **MAY** utilize nested heat.
189 A VNF's Incremental Module **MAY** utilize nested heat.
196 A VNF's Cinder Volume Module **MAY** utilize nested heat.
198 Nested templates may be suitable for larger VNFs that contain many
199 repeated instances of the same VM type(s). A common usage pattern is to
200 create a nested template for each VM type along with its supporting
201 resources. The Heat Orchestration Template may then reference these
202 nested templates either statically (by repeated definition) or
203 dynamically (via OS::Heat::ResourceGroup).
205 See :ref:`Nested Heat Templates` for additional details.
207 ONAP Heat Orchestration Template Filenames
208 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
210 In order to enable ONAP to understand the relationship between Heat
211 files, the following Heat file naming convention must be utilized.
213 In the examples below, <text> represents any alphanumeric string that
214 must not contain any special characters and must not contain the word
222 :validation_mode: static
224 A VNF's Heat Orchestration Template's file extension **MUST**
225 be in the lower case format ``.yaml`` or ``.yml``.
231 :validation_mode: static
233 A VNF's Heat Orchestration Template's Nested YAML file extension **MUST**
234 be in the lower case format ``.yaml`` or ``.yml``.
240 :validation_mode: static
242 A VNF's Heat Orchestration Template's Environment file extension **MUST**
243 be in the lower case format ``.env``.
249 :validation_mode: static
251 A VNF's YAML files (i.e, Heat Orchestration Template files and
252 Nested files) **MUST** have a unique name in the scope of the VNF.
262 :validation_mode: static
264 A VNF Heat Orchestration Template's Base Module file name **MUST** include
265 case insensitive 'base' in the filename and
266 **MUST** match one of the following four
269 1.) ``base_<text>.y[a]ml``
271 2.) ``<text>_base.y[a]ml``
275 4.) ``<text>_base_<text>``.y[a]ml
277 where ``<text>`` **MUST** contain only alphanumeric characters and
278 underscores '_' and **MUST NOT** contain the case insensitive word ``base``.
284 :validation_mode: static
286 A VNF Heat Orchestration Template's Base Module's Environment File
287 **MUST** be named identical to the VNF Heat Orchestration Template's
288 Base Module with ``.y[a]ml`` replaced with ``.env``.
298 :validation_mode: static
300 VNF Heat Orchestration Template's Incremental Module file name
301 **MUST** contain only alphanumeric characters and underscores
302 '_' and **MUST NOT** contain the case insensitive word ``base``.
308 :validation_mode: static
310 A VNF Heat Orchestration Template's Incremental Module's Environment File
311 **MUST** be named identical to the VNF Heat Orchestration Template's
312 Incremental Module with ``.y[a]ml`` replaced with ``.env``.
314 To clearly identify the incremental module, it is recommended to use the
315 following naming options for modules:
317 - ``module_<text>.y[a]ml``
319 - ``<text>_module.y[a]ml``
323 - ``<text>_module_<text>.y[a]ml``
325 Cinder Volume Modules
326 ~~~~~~~~~~~~~~~~~~~~~
333 :validation_mode: static
335 A VNF Heat Orchestration Template's Cinder Volume Module **MUST**
336 be named identical to the base or incremental module it is supporting with
337 ``_volume`` appended.
343 :validation_mode: static
345 VNF Heat Orchestration Template's Cinder Volume Module's Environment File
346 **MUST** be named identical to the VNF Heat Orchestration Template's
347 Cinder Volume Module with ``.y[a]ml`` replaced with ``.env``.
357 :validation_mode: static
359 VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
360 only alphanumeric characters and underscores '_' and
361 **MUST NOT** contain the case insensitive word ``base``.
367 :validation_mode: static
369 A VNF HEAT's Orchestration Nested Template's YAML file name **MUST NOT**
370 be in the format ``{vm-type}.y[a]ml`` where ``{vm-type}`` is defined
371 in the Heat Orchestration Template.
377 - ``nest_<text>.y[a]ml``
379 - ``<text>_nest.y[a]ml``
383 - ``<text>_nest_<text>.y[a]ml``
385 VNF Heat Orchestration Template's Nested YAML file does not have a
386 corresponding environment files, per OpenStack specifications.
388 .. _Output Parameters:
391 ^^^^^^^^^^^^^^^^^^^^^^
393 The output parameters are parameters defined in the output section of a
394 Heat Orchestration Template. The ONAP output parameters are subdivided
395 into three categories:
397 1. ONAP Base Module Output Parameters
399 2. ONAP Volume Module Output Parameters
401 3. ONAP Predefined Output Parameters.
403 ONAP Base Module Output Parameters
404 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406 ONAP Base Module Output Parameters are declared in the ``outputs:`` section
407 of the VNF's Heat Orchestration Template's Base Module. A Base Module Output
408 Parameter is available as an input parameter (i.e., declared in
409 the ``parameters:`` section) to all Incremental Modules in the VNF.
411 A Base Module Output Parameter may be used as an input parameter in any
412 incremental module in the VNF. Note that the parameter is not available to
420 :validation_mode: static
422 VNF's Heat Orchestration Template's Base Module's output parameter's
423 name and type **MUST** match the VNF's Heat Orchestration Template's
424 incremental Module's name and type unless the output parameter is of
425 type ``comma_delimited_list``, then the corresponding input parameter
426 **MUST** be declared as type ``json``.
428 If the Output parameter has a comma_delimited_list value (e.g., a collection
429 of UUIDs from a Resource Group), then the corresponding input parameter must
430 be declared as type ``json`` and not a ``comma_delimited_list``,
431 which is actually a string value with embedded commas.
438 :validation_mode: static
440 When a VNF's Heat Orchestration Template's Base Module's output
441 parameter is declared as an input parameter in an Incremental Module,
442 the parameter attribute ``constraints:`` **MUST NOT** be declared.
444 Additional details on ONAP Base Module Output Parameters are provided in
445 :ref:`ONAP Output Parameter Names` and ONAP VNF Modularity.
447 ONAP Volume Module Output Parameters
448 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
455 :validation_mode: static
457 A VNF's Heat Orchestration Template's Cinder Volume Module Output
460 UUID(s) of the Cinder Volumes created in template,
461 while others **MAY** be included.
463 A VNF's Heat Orchestration Template's Cinder Volume Module Output Parameter(s)
464 are only available for the module (base or incremental) that the volume
465 template is associated with.
472 :validation_mode: static
474 A VNF's Heat Orchestration Templates' Cinder Volume Module Output
475 Parameter's name and type **MUST** match the input parameter name and type
476 in the corresponding Base Module or Incremental Module unless the Output
477 Parameter is of the type ``comma_delimited_list``, then the corresponding
478 input parameter **MUST** be declared as type ``json``.
480 If the Output parameter has a comma_delimited_list value (e.g., a collection
481 of UUIDs from a Resource Group), then the corresponding input parameter must
482 be declared as type json and not a comma_delimited_list, which is actually
483 a string value with embedded commas.
490 :validation_mode: static
492 When an ONAP Volume Module Output Parameter is declared as an input
493 parameter in a base or an incremental module Heat Orchestration
494 Template, parameter constraints **MUST NOT** be declared.
496 Additional details on ONAP Base Module Output Parameters are provided in
497 :ref:`ONAP Output Parameter Names` and :ref:`ONAP Heat Cinder Volumes`.
499 ONAP Predefined Output Parameters
500 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 ONAP will look for a small set of pre-defined Heat output parameters to
503 capture resource attributes for inventory in ONAP. These output parameters
504 are optional and currently only two parameters are supported. These output
505 parameters are optional and are specified in
506 :ref:`OAM Management IP Addresses`.
508 Support of heat stack update
509 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
511 ONAP does not support the use of heat stack-update command for scaling
519 :validation_mode: static
521 A VNF Heat Orchestration Template **MUST NOT** be designed to utilize the
522 OpenStack ``heat stack-update`` command for scaling (growth/de-growth).
528 :validation_mode: static
530 A VNF **MUST** utilize a modular Heat Orchestration Template design to
531 support scaling (growth/de-growth).
533 It is important to note that ONAP only supports heat stack-update for
536 Scope of a Heat Orchestration Template
537 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
544 :validation_mode: static
546 A VNF's Heat Orchestration Template **MUST NOT** be VNF instance
547 specific or cloud site specific.
549 ONAP provides the instance specific parameter values to the Heat
550 Orchestration Template at orchestration time.
557 :validation_mode: static
559 A VNF's Heat Orchestration Template's parameter values that are constant
560 across all deployments **MUST** be declared in a Heat Orchestration
561 Template Environment File.