From c4e85b64d93f7bb4cdcf13cbc65f2256e5bb7a33 Mon Sep 17 00:00:00 2001 From: "Bozawglanian, Hagop (hb755d)" Date: Tue, 4 Sep 2018 21:44:28 +0000 Subject: VNFRQTS - Breaking up Chapter 5 - Heat Breaking up the Heat section to make it more granular. Issue-ID: VNFRQTS-275 Change-Id: I020469d7aea199cd71c4d7c67664ad4dbc4071c9 Signed-off-by: Bozawglanian, Hagop (hb755d) --- .../Nova Parameters.rst | 497 +++++++++++++++++++++ 1 file changed, 497 insertions(+) create mode 100644 docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Nova Parameters.rst (limited to 'docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Nova Parameters.rst') diff --git a/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Nova Parameters.rst b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Nova Parameters.rst new file mode 100644 index 0000000..31e66b8 --- /dev/null +++ b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Nova Parameters.rst @@ -0,0 +1,497 @@ +.. Licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2017 AT&T Intellectual Property. All rights reserved. + + +Resource: OS::Nova::Server - Parameters +----------------------------------------------------------------------- + +The resource OS::Nova::Server manages the running virtual machine (VM) +instance within an OpenStack cloud. + +(See https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Nova::Server.) + +The following four properties of the OS::Nova::Server must follow +the ONAP parameter naming convention. The four properties are: + +1. image + +2. flavor + +3. name + +4. availability_zone + +Requirement :need:`R-01455` defines how the '{vm-type}' is defined. + +Requirement :need:`R-82481` defines how the '{vm-type}' is used. + +The table below provides a summary. The sections that follow provides +the detailed requirements. + +.. csv-table:: **Table 4 OS::Nova::Server Resource Property Parameter Naming Convention** + :header: Property Name,Parameter Type,Parameter Name,Parameter Value Provided to Heat + :align: center + :widths: auto + + OS::Nova::Server, image, string, {vm-type}_image_name, Environment File + OS::Nova::Server, flavor, string, {vm-type}_flavor_name, Environment File + OS::Nova::Server, name, string, {vm-type}_name_{index}, ONAP + OS::Nova::Server, name, CDL, {vm-type}_names, ONAP + OS::Nova::Server, availability_zone, string, availability_zone_{index}, ONAP + +.. _Property image: + +Property: image +^^^^^^^^^^^^^^^ + + +.. req:: + :id: R-71152 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'image' parameter **MUST** be declared as + type: 'string'. + +.. req:: + :id: R-58670 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'image' parameter name **MUST** follow the + naming convention '{vm-type}_image_name'. + +.. req:: + :id: R-91125 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'image' parameter **MUST** be enumerated in + the Heat Orchestration Template's Environment File and a value **MUST** be + assigned. + +.. req:: + :id: R-57282 + :target: VNF + :keyword: MUST + + Each VNF's Heat Orchestration Template's '{vm-type}' + **MUST** have a unique parameter name for the 'OS::Nova::Server' + property 'image' even if more than one {vm-type} shares the same image. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + {vm-type}_image_name: + type: string + description: {vm-type} server image + +.. _Property flavor: + +Property: flavor +^^^^^^^^^^^^^^^^^^ + + +.. req:: + :id: R-50436 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'flavor' parameter **MUST** be declared as + type: 'string'. + +.. req:: + :id: R-45188 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'flavor' parameter name **MUST** follow the + naming convention '{vm-type}_flavor_name'. + +.. req:: + :id: R-69431 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'flavor' parameter **MUST** be enumerated in the + Heat Orchestration Template's Environment File and a value **MUST** be + assigned. + +.. req:: + :id: R-40499 + :target: VNF + :keyword: MUST + + Each VNF's Heat Orchestration Template's '{vm-type}' **MUST** + have a unique parameter name for the 'OS::Nova::Server' property + 'flavor' even if more than one {vm-type} shares the same flavor. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + {vm-type}_flavor_name: + type: string + description: {vm-type} flavor + +Property: Name +^^^^^^^^^^^^^^^^^ + + +.. req:: + :id: R-51430 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter **MUST** be declared as + either type 'string' or type 'comma\_delimited\_list". + +.. req:: + :id: R-54171 + :target: VNF + :keyword: MUST + + When the VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter is defined as a 'string', + the parameter name **MUST** follow the naming convention + '{vm-type}\_name\_{index}', where {index} is a numeric value that starts + at zero and increments by one. + +.. req:: + :id: R-40899 + :target: VNF + :keyword: MUST + + When the VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter is defined as a 'string', + a parameter **MUST** be declared for each 'OS::Nova::Server' resource + associated with the '{vm-type}'. + +.. req:: + :id: R-87817 + :target: VNF + :keyword: MUST + + When the VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter is defined as a + 'comma_delimited_list', the parameter name **MUST** follow the naming + convention '{vm-type}_names'. + +.. req:: + :id: R-85800 + :target: VNF + :keyword: MUST + + When the VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter is defined as a + 'comma_delimited_list', a parameter **MUST** be delcared once for all + 'OS::Nova::Server' resources associated with the '{vm-type}'. + +.. req:: + :id: R-22838 + :target: VNF + :keyword: MUST NOT + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter **MUST NOT** be enumerated + in the Heat Orchestration Template's Environment File. + +If a VNF's Heat Orchestration Template's contains more than three +OS::Nova::Server resources of a given {vm-type}, the comma\_delimited\_list +form of the parameter name (i.e., '{vm-type}\_names') should be used to +minimize the number of unique parameters defined in the template. + + +*Example: Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_names: + type: comma_delimited_list + description: VM Names for {vm-type} VMs + + {vm-type}_name_{index}: + type: string + description: VM Name for {vm-type} VM {index} + +*Example: comma\_delimited\_list* + +In this example, the {vm-type} has been defined as "lb" for load balancer. + +.. code-block:: yaml + + parameters: + + lb_names: + type: comma_delimited_list + description: VM Names for lb VMs + + resources: + lb_server_0: + type: OS::Nova::Server + properties: + name: { get_param: [lb_names, 0] } + ... + + lb_server_1: + type: OS::Nova::Server + properties: + name: { get_param: [lb_names, 1] } + ... + +*Example: fixed-index* + +In this example, the {vm-type} has been defined as "lb" for load balancer. + +.. code-block:: yaml + + parameters: + + lb_name_0: + type: string + description: VM Name for lb VM 0 + + lb_name_1: + type: string + description: VM Name for lb VM 1 + + resources: + + lb_server_0: + type: OS::Nova::Server + properties: + name: { get_param: lb_name_0 } + ... + + lb_server_1: + type: OS::Nova::Server + properties: + name: { get_param: lb_name_1 } + ... + +Contrail Issue with Values for OS::Nova::Server Property Name +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +.. req:: + :id: R-44271 + :target: VNF + :keyword: SHOULD NOT + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'name' parameter value **SHOULD NOT** + contain special characters since the Contrail GUI has a limitation + displaying special characters. + +However, if special characters must be used, the only special characters +supported are: + +-- \" ! $ ' (\ \ ) = ~ ^ | @ ` { } [ ] > , . _ + + +Property: availability_zone +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +.. req:: + :id: R-98450 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'availability\_zone' parameter name + **MUST** follow the naming convention 'availability\_zone\_{index}' + where the '{index}' **MUST** start at zero and increment by one. + +.. req:: + :id: R-23311 + :target: VNF + :keyword: MUST + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'availability_zone' parameter **MUST** + be declared as type: 'string'. + +The parameter must not be declared as type 'comma\_delimited\_list', +ONAP does not support it. + + +.. req:: + :id: R-59568 + :target: VNF + :keyword: MUST NOT + + The VNF's Heat Orchestration Template's Resource + 'OS::Nova::Server' property 'availability_zone' parameter **MUST NOT** + be enumerated in the Heat Orchestration Template's Environment File. + +Example Parameter Definition + +.. code-block:: yaml + + parameters: + availability_zone_{index}: + type: string + description: availability zone {index} name + +Requirement :need:`R-90279` states that a VNF Heat Orchestration's template's +parameter MUST be used in a resource with the exception of the parameters +for the OS::Nova::Server resource property availability_zone. + + +.. req:: + :id: R-01359 + :target: VNF + :keyword: MAY + + A VNF's Heat Orchstration Template that contains an + 'OS::Nova:Server' Resource **MAY** define a parameter for the property + 'availability_zone' that is not utilized in any 'OS::Nova::Server' + resources in the Heat Orchestration Template. + +Example +^^^^^^^^^^^ + +The example below depicts part of a Heat Orchestration Template that +uses the four OS::Nova::Server properties discussed in this section. + +In the Heat Orchestration Template below, four Virtual +Machines (OS::Nova::Server) are created: two dns servers with +{vm-type} set to "dns" and two oam servers with {vm-type} set to "oam". +Note that the parameter associated with the property name is a +comma_delimited_list for dns and a string for oam. + +.. code-block:: yaml + + parameters: + + dns_image_name: + type: string + description: dns server image + + dns_flavor_name: + type: string + description: dns server flavor + + dns_names: + type: comma_delimited_list + description: dns server names + + oam_image_name: + type: string + description: oam server image + + oam_flavor_name: + type: string + description: oam server flavor + + oam_name_0: + type: string + description: oam server name 0 + + oam_name_1: + type: string + description: oam server name 1 + + availability_zone_0: + type: string + description: availability zone ID or Name + + availability_zone_1: + type: string + description: availability zone ID or Name + + resources: + + dns_server_0: + type: OS::Nova::Server + properties: + name: { get_param: [ dns_names, 0 ] } + image: { get_param: dns_image_name } + flavor: { get_param: dns_flavor_name } + availability_zone: { get_param: availability_zone_0 } + + . . . + + dns_server_1: + type: OS::Nova::Server + properties: + name: { get_param: [ dns_names, 1 ] } + image: { get_param: dns_image_name } + flavor: { get_param: dns_flavor_name } + availability_zone: { get_param: availability_zone_1 } + + . . . + + oam_server_0: + type: OS::Nova::Server + properties: + name: { get_param: oam_name_0 } + image: { get_param: oam_image_name } + flavor: { get_param: oam_flavor_name } + availability_zone: { get_param: availability_zone_0 } + + . . . + + oam_server_1: + type: OS::Nova::Server + properties: + name: { get_param: oam_name_1 } + image: { get_param: oam_image_name } + flavor: { get_param: oam_flavor_name } + availability_zone: { get_param: availability_zone_1 } + + . . . + +Boot Options +^^^^^^^^^^^^^^^ + + +.. req:: + :id: R-99798 + :target: VNF + :keyword: MAY + + A VNF's Heat Orchestration Template's Virtual Machine + (i.e., OS::Nova::Server Resource) **MAY** boot from an image or **MAY** + boot from a Cinder Volume. + +.. req:: + :id: R-83706 + :target: VNF + :keyword: MUST + + When a VNF's Heat Orchestration Template's Virtual Machine + (i.e., 'OS::Nova::Server' Resource) boots from an image, the + 'OS::Nova::Server' resource property 'image' **MUST** be used. + +The requirements associated with +the 'image' property are detailed in `Property: image`_ + + +.. req:: + :id: R-69588 + :target: VNF + :keyword: MUST + + When a VNF's Heat Orchestration Template's Virtual Machine + (i.e., 'OS::Nova::Server' Resource) boots from Cinder Volume, the + 'OS::Nova::Server' resource property 'block_device_mapping' or + 'block_device_mapping_v2' **MUST** be used. + +There are currently no heat guidelines +associated with these two properties: +'block_device_mapping' and 'block_device_mapping_v2'. -- cgit 1.2.3-korg