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.
31 :validation_mode: static
32 :introduced: casablanca
34 A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource's
36 * Resource ID (defined in R-29751)
37 * property ``image`` parameter name (defined in R-58670)
38 * property ``flavor`` parameter name (defined in R-45188)
39 * property ``name`` parameter name (defined in R-54171 & R-87817)
40 * property port referenced OS::Neutron::Port Resource ID
43 **MUST** contain the identical ``{vm-type}``
44 and **MUST** follow the naming conventions defined
45 in R-58670, R-45188, R-54171, R-87817, and R-29751. And the ``{index}`` in
46 the ``OS::Nova::Server`` Resource ID (defined in R-29751) **MUST** match
47 the ``{vm-type_index}`` defined in
48 the ``OS::Nova::Server`` property ``port``
49 referenced ``OS::Neutron::Port`` Resource ID (defined in R-20453).
52 The table below provides a summary. The sections that follow provides
53 the detailed requirements.
55 .. csv-table:: **Table 1 OS::Nova::Server Resource Property Parameter Naming Convention**
56 :header: Resource,Property,Parameter Type,Parameter Name,Parameter Value Provided to Heat
60 OS::Nova::Server, image, string, {vm-type}_image_name, Environment File
61 OS::Nova::Server, flavor, string, {vm-type}_flavor_name, Environment File
62 OS::Nova::Server, name, string, {vm-type}_name_{index}, ONAP
63 OS::Nova::Server, name, CDL, {vm-type}_names, ONAP
64 OS::Nova::Server, availability_zone, string, availability_zone_{index}, ONAP
76 :validation_mode: static
77 :introduced: casablanca
79 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
80 property ``image`` value **MUST** be be obtained via a ``get_param``.
86 :validation_mode: static
89 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
91 ``image`` parameter **MUST** be declared as type: ``string``.
97 :validation_mode: static
100 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
102 ``image`` parameter name **MUST** follow the naming convention
103 ``{vm-type}_image_name``.
109 :validation_mode: static
112 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
114 ``image`` parameter **MUST** be enumerated in the Heat Orchestration
115 Template's Environment File and a value **MUST** be assigned.
121 :validation_mode: static
124 Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST**
125 have a unique parameter name for the ``OS::Nova::Server`` property
126 ``image`` even if more than one ``{vm-type}`` shares the same image.
128 *Example Parameter Definition*
133 {vm-type}_image_name:
135 description: {vm-type} server image
147 :validation_mode: static
148 :introduced: casablanca
150 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
151 property ``flavor`` value **MUST** be be obtained via a ``get_param``.
157 :validation_mode: static
160 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
162 ``flavor`` parameter **MUST** be declared as type: ``string``.
168 :validation_mode: static
171 The VNF's Heat Orchestration Template's Resource 'OS::Nova::Server' property
172 ``flavor`` parameter name **MUST** follow the naming convention
173 ``{vm-type}_flavor_name``.
179 :validation_mode: static
182 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
184 ``flavor`` parameter **MUST** be enumerated in the Heat Orchestration
185 Template's Environment File and a value **MUST** be assigned.
191 :validation_mode: static
194 Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST**
195 have a unique parameter name for the ``OS::Nova::Server`` property
196 ``flavor`` even if more than one ``{vm-type}`` shares the same flavor.
198 *Example Parameter Definition*
203 {vm-type}_flavor_name:
205 description: {vm-type} flavor
215 :validation_mode: static
216 :introduced: casablanca
218 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
219 property ``name`` value **MUST** be be obtained via a ``get_param``.
225 :validation_mode: static
228 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
230 ``name`` parameter **MUST** be declared as either type ``string``
231 or type ``comma_delimited_list``.
237 :validation_mode: static
240 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
241 property ``name`` parameter is defined as a ``string``,
242 the parameter name **MUST** follow the naming convention
244 * ``{vm-type}_name_{index}``
246 where ``{index}`` is a numeric value that **MUST** start at
247 zero in a VNF's Heat Orchestration Template and **MUST** increment by one.
253 :validation_mode: static
256 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
257 property ``name`` parameter is defined as a ``comma_delimited_list``,
258 the parameter name **MUST** follow the naming convention
265 :validation_mode: static
268 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
270 ``name`` parameter **MUST NOT** be enumerated in the Heat Orchestration
271 Template's Environment File.
273 If a VNF's Heat Orchestration Template's contains more than three
274 OS::Nova::Server resources of a given ``{vm-type}``, the comma_delimited_list
275 form of the parameter name (i.e., ``{vm-type}_names``) should be used to
276 minimize the number of unique parameters defined in the template.
279 *Example: Parameter Definition*
286 type: comma_delimited_list
287 description: VM Names for {vm-type} VMs
289 {vm-type}_name_{index}:
291 description: VM Name for {vm-type} VM {index}
293 *Example: comma\_delimited\_list*
295 In this example, the {vm-type} has been defined as "lb" for load balancer.
302 type: comma_delimited_list
303 description: VM Names for lb VMs
307 type: OS::Nova::Server
309 name: { get_param: [lb_names, 0] }
313 type: OS::Nova::Server
315 name: { get_param: [lb_names, 1] }
318 *Example: fixed-index*
320 In this example, the {vm-type} has been defined as "lb" for load balancer.
328 description: VM Name for lb VM 0
332 description: VM Name for lb VM 1
337 type: OS::Nova::Server
339 name: { get_param: lb_name_0 }
343 type: OS::Nova::Server
345 name: { get_param: lb_name_1 }
348 Contrail Issue with Values for OS::Nova::Server Property Name
349 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
358 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
360 ``name`` parameter value **SHOULD NOT** contain special characters
361 since the Contrail GUI has a limitation displaying special characters.
363 However, if special characters must be used, the only special characters
364 supported are: --- \" ! $ ' (\ \ ) = ~ ^ | @ ` { } [ ] > , . _
367 Property: availability_zone
368 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
375 :validation_mode: static
378 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
379 property ``availability_zone`` parameter name
380 **MUST** follow the naming convention
382 * ``availability_zone_{index}``
384 where ``{index}`` is a numeric value that **MUST** start at zero
385 in a VNF's Heat Orchestration Templates and **MUST**
392 :validation_mode: static
395 The VNF's Heat Orchestration Template's Resource
396 ``OS::Nova::Server`` property
397 ``availability_zone`` parameter **MUST** be declared as type: ``string``.
399 The parameter must not be declared as type ``comma_delimited_list``, ONAP does
406 :validation_mode: static
409 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
411 ``availability_zone`` parameter **MUST NOT** be enumerated in the Heat
413 Template's Environment File.
415 Example Parameter Definition
420 availability_zone_{index}:
422 description: availability zone {index} name
424 Requirement :need:`R-90279` states that a VNF Heat Orchestration's template's
425 parameter MUST be used in a resource with the exception of the parameters
426 for the OS::Nova::Server resource property availability_zone.
435 A VNF's Heat Orchestration Template that contains an ``OS::Nova:Server``
436 Resource **MAY** define a parameter for the property
437 ``availability_zone`` that is not utilized in any ``OS::Nova::Server``
438 resources in the Heat Orchestration Template.
443 The example below depicts part of a Heat Orchestration Template that
444 uses the four ``OS::Nova::Server`` properties discussed in this section.
446 In the Heat Orchestration Template below, four Virtual Machines
447 (``OS::Nova::Server``) are created: two dns servers with ``{vm-type}`` set to
448 ``dns`` and two oam servers with ``{vm-type}`` set to ``oam``.
449 Note that the parameter
450 associated with the property name is a ``comma_delimited_list`` for ``dns`` and
451 a string for ``oam``.
459 description: dns server image
463 description: dns server flavor
466 type: comma_delimited_list
467 description: dns server names
471 description: oam server image
475 description: oam server flavor
479 description: oam server name 0
483 description: oam server name 1
487 description: availability zone ID or Name
491 description: availability zone ID or Name
496 type: OS::Nova::Server
498 name: { get_param: [ dns_names, 0 ] }
499 image: { get_param: dns_image_name }
500 flavor: { get_param: dns_flavor_name }
501 availability_zone: { get_param: availability_zone_0 }
506 type: OS::Nova::Server
508 name: { get_param: [ dns_names, 1 ] }
509 image: { get_param: dns_image_name }
510 flavor: { get_param: dns_flavor_name }
511 availability_zone: { get_param: availability_zone_1 }
516 type: OS::Nova::Server
518 name: { get_param: oam_name_0 }
519 image: { get_param: oam_image_name }
520 flavor: { get_param: oam_flavor_name }
521 availability_zone: { get_param: availability_zone_0 }
526 type: OS::Nova::Server
528 name: { get_param: oam_name_1 }
529 image: { get_param: oam_image_name }
530 flavor: { get_param: oam_flavor_name }
531 availability_zone: { get_param: availability_zone_1 }
545 A VNF's Heat Orchestration Template's Virtual Machine
546 (i.e., ``OS::Nova::Server`` resource) **MAY** boot from an image or
547 **MAY** boot from a Cinder Volume.
553 :validation_mode: none
556 When a VNF's Heat Orchestration Template's Virtual Machine
557 (i.e., ``OS::Nova::Server`` resource) boots from an image, the
558 ``OS::Nova::Server`` resource property ``image`` **MUST** be used.
560 The requirements associated with
561 the 'image' property are detailed in `Property: image`_
568 :validation_mode: none
571 When a VNF's Heat Orchestration Template's Virtual Machine
572 (i.e., ``OS::Nova::Server`` Resource) boots from Cinder Volume, the
573 ``OS::Nova::Server`` resource property
574 ``block_device_mapping`` or ``block_device_mapping_v2``
577 There are currently no heat guidelines
578 associated with these two properties:
579 'block_device_mapping' and 'block_device_mapping_v2'.