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.
6 Resource: OS::Nova::Server - Parameters
7 -----------------------------------------------------------------------
9 The OS::Nova::Server resource manages the running virtual machine (VM)
10 instance within an OpenStack cloud. (See
11 https://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Nova::Server.)
13 The following four properties of the ``OS::Nova::Server``
14 resource must follow an
15 ONAP specified naming convention.
23 4. ``availability_zone``
25 Requirement R-01455 defines how the ``{vm-type]`` is defined.
27 Requirement R-82481 defines how the ``{vm-type}`` is used.
33 :validation_mode: static
34 :introduced: casablanca
36 A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource's
39 * property ``image`` parameter name
40 * property ``flavor`` parameter name
41 * property ``name`` parameter name
44 **MUST** contain the identical ``{vm-type}``
45 and **MUST** follow the naming conventions defined
46 in R-58670, R-45188, R-54171, R-87817, and R-29751.
48 The table below provides a summary. The sections that follow provides
49 the detailed requirements.
51 .. csv-table:: **Table 1 OS::Nova::Server Resource Property Parameter Naming Convention**
52 :header: Resource,Property,Parameter Type,Parameter Name,Parameter Value Provided to Heat
56 OS::Nova::Server, image, string, {vm-type}_image_name, Environment File
57 OS::Nova::Server, flavor, string, {vm-type}_flavor_name, Environment File
58 OS::Nova::Server, name, string, {vm-type}_name_{index}, ONAP
59 OS::Nova::Server, name, CDL, {vm-type}_names, ONAP
60 OS::Nova::Server, availability_zone, string, availability_zone_{index}, ONAP
72 :validation_mode: static
73 :introduced: casablanca
75 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
76 property ``image`` value **MUST** be be obtained via a ``get_param``.
82 :validation_mode: static
85 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
87 ``image`` parameter **MUST** be declared as type: ``string``.
93 :validation_mode: static
96 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
98 ``image`` parameter name **MUST** follow the naming convention
99 ``{vm-type}_image_name``.
105 :validation_mode: static
108 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
110 ``image`` parameter **MUST** be enumerated in the Heat Orchestration
111 Template's Environment File and a value **MUST** be assigned.
117 :validation_mode: static
120 Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST**
121 have a unique parameter name for the ``OS::Nova::Server`` property
122 ``image`` even if more than one ``{vm-type}`` shares the same image.
124 *Example Parameter Definition*
129 {vm-type}_image_name:
131 description: {vm-type} server image
143 :validation_mode: static
144 :introduced: casablanca
146 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
147 property ``flavor`` value **MUST** be be obtained via a ``get_param``.
153 :validation_mode: static
156 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
158 ``flavor`` parameter **MUST** be declared as type: ``string``.
164 :validation_mode: static
167 The VNF's Heat Orchestration Template's Resource 'OS::Nova::Server' property
168 ``flavor`` parameter name **MUST** follow the naming convention
169 ``{vm-type}_flavor_name``.
175 :validation_mode: static
178 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
180 ``flavor`` parameter **MUST** be enumerated in the Heat Orchestration
181 Template's Environment File and a value **MUST** be assigned.
187 :validation_mode: static
190 Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST**
191 have a unique parameter name for the ``OS::Nova::Server`` property
192 ``flavor`` even if more than one ``{vm-type}`` shares the same flavor.
194 *Example Parameter Definition*
199 {vm-type}_flavor_name:
201 description: {vm-type} flavor
211 :validation_mode: static
212 :introduced: casablanca
214 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
215 property ``name`` value **MUST** be be obtained via a ``get_param``.
221 :validation_mode: static
224 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
226 ``name`` parameter **MUST** be declared as either type ``string``
227 or type ``comma_delimited_list``.
233 :validation_mode: static
236 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
237 property ``name`` parameter is defined as a ``string``,
238 the parameter name **MUST** follow the naming convention
239 ``{vm-type}_name_{index}``, where ``{index}`` is a numeric
241 zero and increments by one.
247 :validation_mode: static
250 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
251 property ``name`` parameter is defined as a ``string``, a parameter
252 **MUST** be delcared for
253 each ``OS::Nova::Server`` resource associated with the ``{vm-type}``.
259 :validation_mode: static
262 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
263 property ``name`` parameter is defined as a ``comma_delimited_list``,
264 the parameter name **MUST** follow the naming convention
271 :validation_mode: static
274 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
275 property ``name`` parameter is defined as a ``comma_delimited_list``,
276 a parameter **MUST** be delcared once for all ``OS::Nova::Server`` resources
277 associated with the ``{vm-type}``.
283 :validation_mode: static
286 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
288 ``name`` parameter **MUST NOT** be enumerated in the Heat Orchestration
289 Template's Environment File.
291 If a VNF's Heat Orchestration Template's contains more than three
292 OS::Nova::Server resources of a given ``{vm-type}``, the comma_delimited_list
293 form of the parameter name (i.e., ``{vm-type}_names``) should be used to
294 minimize the number of unique parameters defined in the template.
297 *Example: Parameter Definition*
304 type: comma_delimited_list
305 description: VM Names for {vm-type} VMs
307 {vm-type}_name_{index}:
309 description: VM Name for {vm-type} VM {index}
311 *Example: comma\_delimited\_list*
313 In this example, the {vm-type} has been defined as "lb" for load balancer.
320 type: comma_delimited_list
321 description: VM Names for lb VMs
325 type: OS::Nova::Server
327 name: { get_param: [lb_names, 0] }
331 type: OS::Nova::Server
333 name: { get_param: [lb_names, 1] }
336 *Example: fixed-index*
338 In this example, the {vm-type} has been defined as "lb" for load balancer.
346 description: VM Name for lb VM 0
350 description: VM Name for lb VM 1
355 type: OS::Nova::Server
357 name: { get_param: lb_name_0 }
361 type: OS::Nova::Server
363 name: { get_param: lb_name_1 }
366 Contrail Issue with Values for OS::Nova::Server Property Name
367 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
376 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
378 ``name`` parameter value **SHOULD NOT** contain special characters
379 since the Contrail GUI has a limitation displaying special characters.
381 However, if special characters must be used, the only special characters
382 supported are: --- \" ! $ ' (\ \ ) = ~ ^ | @ ` { } [ ] > , . _
385 Property: availability_zone
386 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
393 :validation_mode: static
396 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
398 ``availability_zone`` parameter name **MUST** follow the naming convention
399 ``availability_zone_{index}`` where the ``{index}``
400 **MUST** start at zero and
407 :validation_mode: static
410 The VNF's Heat Orchestration Template's Resource
411 ``OS::Nova::Server`` property
412 ``availability_zone`` parameter **MUST** be declared as type: ``string``.
414 The parameter must not be declared as type ``comma_delimited_list``, ONAP does
421 :validation_mode: static
424 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
426 ``availability_zone`` parameter **MUST NOT** be enumerated in the Heat
428 Template's Environment File.
430 Example Parameter Definition
435 availability_zone_{index}:
437 description: availability zone {index} name
439 Requirement :need:`R-90279` states that a VNF Heat Orchestration's template's
440 parameter MUST be used in a resource with the exception of the parameters
441 for the OS::Nova::Server resource property availability_zone.
450 A VNF's Heat Orchestration Template that contains an ``OS::Nova:Server``
451 Resource **MAY** define a parameter for the property
452 ``availability_zone`` that is not utilized in any ``OS::Nova::Server``
453 resources in the Heat Orchestration Template.
458 The example below depicts part of a Heat Orchestration Template that
459 uses the four ``OS::Nova::Server`` properties discussed in this section.
461 In the Heat Orchestration Template below, four Virtual Machines
462 (``OS::Nova::Server``) are created: two dns servers with ``{vm-type}`` set to
463 ``dns`` and two oam servers with ``{vm-type}`` set to ``oam``.
464 Note that the parameter
465 associated with the property name is a ``comma_delimited_list`` for ``dns`` and
466 a string for ``oam``.
474 description: dns server image
478 description: dns server flavor
481 type: comma_delimited_list
482 description: dns server names
486 description: oam server image
490 description: oam server flavor
494 description: oam server name 0
498 description: oam server name 1
502 description: availability zone ID or Name
506 description: availability zone ID or Name
511 type: OS::Nova::Server
513 name: { get_param: [ dns_names, 0 ] }
514 image: { get_param: dns_image_name }
515 flavor: { get_param: dns_flavor_name }
516 availability_zone: { get_param: availability_zone_0 }
521 type: OS::Nova::Server
523 name: { get_param: [ dns_names, 1 ] }
524 image: { get_param: dns_image_name }
525 flavor: { get_param: dns_flavor_name }
526 availability_zone: { get_param: availability_zone_1 }
531 type: OS::Nova::Server
533 name: { get_param: oam_name_0 }
534 image: { get_param: oam_image_name }
535 flavor: { get_param: oam_flavor_name }
536 availability_zone: { get_param: availability_zone_0 }
541 type: OS::Nova::Server
543 name: { get_param: oam_name_1 }
544 image: { get_param: oam_image_name }
545 flavor: { get_param: oam_flavor_name }
546 availability_zone: { get_param: availability_zone_1 }
560 A VNF's Heat Orchestration Template's Virtual Machine
561 (i.e., ``OS::Nova::Server`` resource) **MAY** boot from an image or
562 **MAY** boot from a Cinder Volume.
568 :validation_mode: static
571 When a VNF's Heat Orchestration Template's Virtual Machine
572 (i.e., ``OS::Nova::Server`` resource) boots from an image, the
573 ``OS::Nova::Server`` resource property ``image`` **MUST** be used.
575 The requirements associated with
576 the 'image' property are detailed in `Property: image`_
583 :validation_mode: static
586 When a VNF's Heat Orchestration Template's Virtual Machine
587 (i.e., ``OS::Nova::Server`` Resource) boots from Cinder Volume, the
588 ``OS::Nova::Server`` resource property
589 ``block_device_mapping`` or ``block_device_mapping_v2``
592 There are currently no heat guidelines
593 associated with these two properties:
594 'block_device_mapping' and 'block_device_mapping_v2'.