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.
38 A VNF's Heat Orchestration Template **MAY** be
39 1.) Base Module Heat Orchestration Template (also referred to as a
41 2.) Incremental Module Heat Orchestration Template (referred to as
42 an Incremental Module), or
43 3.) a Cinder Volume Module Heat Orchestration Template (referred to as
44 Cinder Volume Module).
51 A VNF **MUST** be composed of one Base Module
58 A VNF **MAY** be composed of zero to many Incremental Modules.
65 At orchestration time, the VNF's Base Module **MUST**
66 be deployed first, prior to any incremental modules.
73 A VNF's incremental module **MAY** be used for initial VNF deployment only.
80 A VNF's incremental module **MAY** be used for scale out only.
82 A VNF's Incremental Module that is used for scale out is deployed sometime
83 after initial VNF deployment to add capacity.
91 A VNF's incremental module **MAY** be used for both deployment and
99 A VNF's incremental module **MAY** be deployed more than once,
100 either during initial VNF deployment and/or scale out.
107 A VNF's Heat Orchestration Template's Resource OS::Heat::CinderVolume
108 **MAY** be defined in a Base Module.
115 A VNF's Heat Orchestration Template's Resource OS::Heat::CinderVolume
116 **MAY** be defined in an Incremental Module.
123 A VNF's Heat Orchestration Template's Resource OS::Heat::CinderVolume
124 **MAY** be defined in a Cinder Volume Module.
126 ONAP also supports the concept of an optional, independently deployed Cinder
127 volume via a separate Heat Orchestration Templates, referred to as a Cinder
128 Volume Module. This allows the volume to persist after a Virtual Machine
129 (VM) (i.e., OS::Nova::Server) is deleted, allowing the volume to be reused
130 on another instance (e.g., during a failover activity).
136 :validation_mode: static
138 A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
139 with a Base module or Incremental module.
141 It is strongly recommended that Cinder Volumes be created in a Cinder Volume
148 :validation_mode: static
150 A VNF's Base Module **MUST** have a corresponding Environment File.
156 :validation_mode: static
158 A VNF's Incremental Module **MUST** have a corresponding Environment File
164 :validation_mode: static
166 A VNF's Cinder Volume Module **MUST** have a corresponding environment file
168 These concepts will be described in more detail throughout the document.
169 This overview is provided to set the stage and help clarify the concepts
170 that will be introduced.
172 Nested Heat Orchestration Templates Overview
173 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
175 ONAP supports nested Heat Orchestration Templates per OpenStack
184 A VNF's Base Module **MAY** utilize nested heat.
191 A VNF's Incremental Module **MAY** utilize nested heat.
198 A VNF's Cinder Volume Module **MAY** utilize nested heat.
200 Nested templates may be suitable for larger VNFs that contain many
201 repeated instances of the same VM type(s). A common usage pattern is to
202 create a nested template for each VM type along with its supporting
203 resources. The Heat Orchestration Template may then reference these
204 nested templates either statically (by repeated definition) or
205 dynamically (via OS::Heat::ResourceGroup).
207 See :ref:`Nested Heat Templates` for additional details.
209 ONAP Heat Orchestration Template Filenames
210 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
212 In order to enable ONAP to understand the relationship between Heat
213 files, the following Heat file naming convention must be utilized.
215 In the examples below, <text> represents any alphanumeric string that
216 must not contain any special characters and must not contain the word
224 :validation_mode: static
226 A VNF's Heat Orchestration Template's file extension **MUST**
227 be in the lower case format ``.yaml`` or ``.yml``.
233 :validation_mode: static
235 A VNF's Heat Orchestration Template's Nested YAML file extension **MUST**
236 be in the lower case format ``.yaml`` or ``.yml``.
242 :validation_mode: static
244 A VNF's Heat Orchestration Template's Environment file extension **MUST**
245 be in the lower case format ``.env``.
251 :validation_mode: static
253 A VNF's YAML files (i.e, Heat Orchestration Template files and
254 Nested files) **MUST** have a unique name in the scope of the VNF.
264 :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
302 VNF Heat Orchestration Template's Incremental Module file name
303 **MUST** contain only alphanumeric characters and underscores
304 '_' and **MUST NOT** contain the case insensitive word ``base``.
310 :validation_mode: static
312 A VNF Heat Orchestration Template's Incremental Module's Environment File
313 **MUST** be named identical to the VNF Heat Orchestration Template's
314 Incremental Module with ``.y[a]ml`` replaced with ``.env``.
316 To clearly identify the incremental module, it is recommended to use the
317 following naming options for modules:
319 - ``module_<text>.y[a]ml``
321 - ``<text>_module.y[a]ml``
325 - ``<text>_module_<text>.y[a]ml``
327 Cinder Volume Modules
328 ~~~~~~~~~~~~~~~~~~~~~
335 :validation_mode: static
337 A VNF Heat Orchestration Template's Cinder Volume Module **MUST**
338 be named identical to the base or incremental module it is supporting with
339 ``_volume`` appended.
345 :validation_mode: static
347 VNF Heat Orchestration Template's Cinder Volume Module's Environment File
348 **MUST** be named identical to the VNF Heat Orchestration Template's
349 Cinder Volume Module with ``.y[a]ml`` replaced with ``.env``.
359 :validation_mode: static
361 VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
362 only alphanumeric characters and underscores '_' and
363 **MUST NOT** contain the case insensitive word ``base``.
369 :validation_mode: static
371 A VNF HEAT's Orchestration Nested Template's YAML file name **MUST NOT**
372 be in the format ``{vm-type}.y[a]ml`` where ``{vm-type}`` is defined
373 in the Heat Orchestration Template.
379 - ``nest_<text>.y[a]ml``
381 - ``<text>_nest.y[a]ml``
385 - ``<text>_nest_<text>.y[a]ml``
387 VNF Heat Orchestration Template's Nested YAML file does not have a
388 corresponding environment files, per OpenStack specifications.
390 .. _Output Parameters:
393 ^^^^^^^^^^^^^^^^^^^^^^
395 The output parameters are parameters defined in the output section of a
396 Heat Orchestration Template. The ONAP output parameters are subdivided
397 into three categories:
399 1. ONAP Base Module Output Parameters
401 2. ONAP Volume Module Output Parameters
403 3. ONAP Predefined Output Parameters.
405 ONAP Base Module Output Parameters
406 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
408 ONAP Base Module Output Parameters are declared in the ``outputs:`` section
409 of the VNF's Heat Orchestration Template's Base Module. A Base Module Output
410 Parameter is available as an input parameter (i.e., declared in
411 the ``parameters:`` section) to all Incremental Modules in the VNF.
413 A Base Module Output Parameter may be used as an input parameter in any
414 incremental module in the VNF. Note that the parameter is not available to
422 :validation_mode: static
424 VNF's Heat Orchestration Template's Base Module's output parameter's
425 name and type **MUST** match the VNF's Heat Orchestration Template's
426 incremental Module's name and type unless the output parameter is of
427 type ``comma_delimited_list``, then the corresponding input parameter
428 **MUST** be declared as type ``json``.
430 If the Output parameter has a comma_delimited_list value (e.g., a collection
431 of UUIDs from a Resource Group), then the corresponding input parameter must
432 be declared as type ``json`` and not a ``comma_delimited_list``,
433 which is actually a string value with embedded commas.
440 :validation_mode: static
442 When a VNF's Heat Orchestration Template's Base Module's output
443 parameter is declared as an input parameter in an Incremental Module,
444 the parameter attribute ``constraints:`` **MUST NOT** be declared.
446 Additional details on ONAP Base Module Output Parameters are provided in
447 :ref:`ONAP Output Parameter Names` and ONAP VNF Modularity.
449 ONAP Volume Module Output Parameters
450 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
457 :validation_mode: static
459 A VNF's Heat Orchestration Template's Cinder Volume Module Output
462 UUID(s) of the Cinder Volumes created in template,
463 while others **MAY** be included.
465 A VNF's Heat Orchestration Template's Cinder Volume Module Output Parameter(s)
466 are only available for the module (base or incremental) that the volume
467 template is associated with.
474 :validation_mode: static
476 A VNF's Heat Orchestration Templates' Cinder Volume Module Output
477 Parameter's name and type **MUST** match the input parameter name and type
478 in the corresponding Base Module or Incremental Module unless the Output
479 Parameter is of the type ``comma_delimited_list``, then the corresponding
480 input parameter **MUST** be declared as type ``json``.
482 If the Output parameter has a comma_delimited_list value (e.g., a collection
483 of UUIDs from a Resource Group), then the corresponding input parameter must
484 be declared as type json and not a comma_delimited_list, which is actually
485 a string value with embedded commas.
492 :validation_mode: static
494 When an ONAP Volume Module Output Parameter is declared as an input
495 parameter in a base or an incremental module Heat Orchestration
496 Template, parameter constraints **MUST NOT** be declared.
498 Additional details on ONAP Base Module Output Parameters are provided in
499 :ref:`ONAP Output Parameter Names` and :ref:`ONAP Heat Cinder Volumes`.
501 ONAP Predefined Output Parameters
502 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
504 ONAP will look for a small set of pre-defined Heat output parameters to
505 capture resource attributes for inventory in ONAP. These output parameters
506 are optional and currently only two parameters are supported. These output
507 parameters are optional and are specified in
508 :ref:`OAM Management IP Addresses`.
510 Support of heat stack update
511 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
513 ONAP does not support the use of heat stack-update command for scaling
521 :validation_mode: static
523 A VNF Heat Orchestration Template **MUST NOT** be designed to utilize the
524 OpenStack ``heat stack-update`` command for scaling (growth/de-growth).
530 :validation_mode: static
532 A VNF **MUST** utilize a modular Heat Orchestration Template design to
533 support scaling (growth/de-growth).
535 It is important to note that ONAP only supports heat stack-update for
538 Scope of a Heat Orchestration Template
539 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
546 :validation_mode: static
548 A VNF's Heat Orchestration Template **MUST NOT** be VNF instance
549 specific or cloud site specific.
551 ONAP provides the instance specific parameter values to the Heat
552 Orchestration Template at orchestration time.
559 :validation_mode: static
561 A VNF's Heat Orchestration Template's parameter values that are constant
562 across all deployments **MUST** be declared in a Heat Orchestration
563 Template Environment File.