diff options
-rw-r--r-- | docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst | 1146 | ||||
-rw-r--r-- | docs/Chapter5/Heat/ONAP Heat Template Constructs.rst | 1 |
2 files changed, 1142 insertions, 5 deletions
diff --git a/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst index 8a31cad..a9929ce 100644 --- a/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst +++ b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst @@ -222,6 +222,46 @@ properties are ``instance_ip_address`` and ``subnet_uuid``. Resource OS::ContrailV2::InstanceIp Property instance_ip_address ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Contrail resource ``OS::ContrailV2::InstanceIp`` has two properties +that parameters **MUST** follow an explicit naming convention. The +properties are ``instance_ip_address`` and ``subnet_uuid``. + +*Example OS::ContrailV2::InstanceIp Resource* + +.. code-block:: yaml + + <resource ID>: + type: OS::ContrailV2::InstanceIp + properties: + name: { get_param: name } + fq_name: { get_param: fq_name } + display_name: { get_param: display_name } + secondary_ip_tracking_ip: + { + secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix }, + secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len }, + } + instance_ip_address: { get_param: instance_ip_address } + instance_ip_mode: { get_param: instance_ip_mode } + subnet_uuid: { get_param: subnet_uuid } + instance_ip_family: { get_param: instance_ip_family } + annotations: + { + annotations_key_value_pair: + [{ + annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key }, + annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value }, + }], + } + instance_ip_local_ip: { get_param: instance_ip_local_ip } + instance_ip_secondary: { get_param: instance_ip_secondary } + physical_router_refs: [{ get_param: physical_router_refs }] + virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }] + virtual_network_refs: [{ get_param: virtual_network_refs }] + + + A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` parameter **MUST** follow the same requirements @@ -229,6 +269,535 @@ that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map property ``ip_address`` parameter. +.. req:: + :id: R-100000 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's + resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + **MUST** be declared as either type ``string`` or type + ``comma_delimited_list``. + + +.. req:: + :id: R-100010 + :keyword: MUST + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an external network (per the ONAP definition, see Requirement R-57424), + and an IPv4 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a string, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_{network-role}_ip_{index}`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the external network + * ``{index}`` is a numeric value that **MUST** start at zero in a + VNF's Heat Orchestration Template and **MUST** increment by one + + +.. req:: + :id: R-100020 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_{network-role}_ip_{index}`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. + +*Example External Network IPv4 Address string Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_{network-role}_ip_{index}: + type: string + description: Fixed IPv4 assignment for {vm-type} VM {index} on the {network-role} network + + + +.. req:: + :id: R-100030 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an external network (per the + ONAP definition, see Requirement R-57424), + and an IPv4 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a + ``comma_delimited_list``, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_{network-role}_ips`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the external + network + + + +.. req:: + :id: R-100040 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_{network-role}_ips`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. + +*Example External Network IPv4 Address comma_delimited_list +Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_{network-role}_ips: + type: comma_delimited_list + description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network + + + +.. req:: + :id: R-100050 + :keyword: MUST + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an external network + (per the + ONAP definition, see Requirement R-57424), + and an IPv6 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a string, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_{network-role}_v6_ip_{index}`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the external network + * ``{index}`` is a numeric value that **MUST** start at zero in a + VNF's Heat Orchestration Template and **MUST** increment by one + + +.. req:: + :id: R-100060 + :keyword: MUST NOT + :validation_mode: static + :introduced: dublin + :target: VNF + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_{network-role}_v6_ip_{index}`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. + +*Example External Network IPv6 Address string Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_{network-role}_v6_ip_{index}: + type: string + description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network + + + +.. req:: + :id: R-100070 + :keyword: MUST + :validation_mode: static + :introduced: dublin + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an external network (per the + ONAP definition, see Requirement R-57424), + and an IPv6 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a + ``comma_delimited_list``, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_{network-role}_v6_ips`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + + +.. req:: + :id: R-100080 + :keyword: MUST NOT + :validation_mode: static + :introduced: dublin + :target: VNF + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_{network-role}_v6_ips`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. + +*Example External Network IPv6 Address comma_delimited_list Parameter +Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_{network-role}_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network + + + +.. req:: + :id: R-100090 + :keyword: MUST + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an internal network (per the + ONAP definition, see Requirements R-52425 and R-46461), + and an IPv4 address is assigned + using the property ``instance_ip_address`` + and the parameter type is + defined as a ``string``, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_ip_{index}`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the internal network + * ``{index}`` is a numeric value that **MUST** start at zero in a + VNF's Heat Orchestration Template and **MUST** increment by one + + + +.. req:: + :id: R-100100 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_int_{network-role}_ip_{index}`` + **MUST** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +The IP address is local to the VNF's internal network and is (re)used +in every VNF spin up, thus the constant value is declared in the VNF's +Heat Orchestration Template's Environment File. + +*Example Internal Network IPv4 Address string Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_int_{network-role}_ip_{index}: + type: string + description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network + + + +.. req:: + :id: R-100110 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an internal network (per the + ONAP definition, see Requirements R-52425 and R-46461), + and an IPv4 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a + ``comma_delimited_list``, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_ips`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the internal + network + + +.. req:: + :id: R-100120 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_int_{network-role}_int_ips`` + **MUST** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +The IP address is local to the VNF's internal network and is (re)used +in every VNF spin up, thus the constant value is declared in the VNF's +Heat Orchestration Template's Environment File. + +*Example Internal Network IPv4 Address comma_delimited_list +Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_int_{network-role}_ips: + type: comma_delimited_list + description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network + + + +.. req:: + :id: R-100130 + :keyword: MUST + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an + internal network (per the + ONAP definition, see Requirements R-52425 and R-46461), + and an IPv6 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a + ``string``, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_v6_ip_{index}`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the internal network + * ``{index}`` is a numeric value that **MUST** start at zero in a + VNF's Heat Orchestration Template and **MUST** increment by one + + + +.. req:: + :id: R-100140 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + parameter + ``{vm-type}_int_{network-role}_v6_ip_{index}`` + **MUST** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +The IP address is local to the VNF's internal network and is (re)used +in every VNF spin up, thus the constant value is declared in the VNF's +Heat Orchestration Template's Environment File. + +*Example Internal Network IPv6 Address string Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_int_{network-role}_v6_ip_{index}: + type: string + description: Fixed IPv6 assignment for {vm-type} VM {index} on the int_{network-role} network + + + +.. req:: + :id: R-100150 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an + internal network (per the + ONAP definition, see Requirements R-52425 and R-46461), + and an IPv6 address is assigned + using the property ``instance_ip_address`` + and the parameter type is defined as a + ``comma_delimited_list``, + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_v6_ips`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + ``OS::Nova::Server`` + * ``{network-role}`` is the {network-role} of the internal + network + + +.. req:: + :id: R-100160 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address`` + map property ``ip_address`` parameter + ``{vm-type}_int_{network-role}_v6_ips`` + **MUST** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +The IP address is local to the VNF's internal network and is (re)used +in every VNF spin up, thus the constant value is declared in the VNF's +Heat Orchestration Template's Environment File. + +*Example Internal Network IPv6 Address comma_delimited_list Parameter +Definition* + + +.. code-block:: yaml + + parameters: + + {vm-type}_int_{network-role}_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 assignments for {vm-type} VMs on the int_{network-role} network + + +.. req:: + :id: R-100170 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` + property ``instance_ip_address`` + parameter associated with an external network, i.e., + + * ``{vm-type}_{network-role}_ip_{index}`` + * ``{vm-type}_{network-role}_v6_ip_{index}`` + * ``{vm-type}_{network-role}_ips`` + * ``{vm-type}_{network-role}_v6_ips`` + + + **MUST NOT** be enumerated in the Heat Orchestration + Template's Environment File. ONAP provides the IP address + assignments at orchestration time. + + + +.. req:: + :id: R-100180 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` + property ``instance_ip_address`` + parameter associated with an internal network, i.e., + + * ``{vm-type}_int_{network-role}_ip_{index}`` + * ``{vm-type}_int_{network-role}_v6_ip_{index}`` + * ``{vm-type}_int_{network-role}_ips`` + * ``{vm-type}_int_{network-role}_v6_ips`` + + + **MUST** be enumerated in the Heat Orchestration + Template's Environment File and IP addresses **MUST** be + assigned. + + *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property instance_ip_address* @@ -252,6 +821,7 @@ fw for firewall. - get_param: oam_protected_net_fqdn instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] } + Resource OS::ContrailV2::InstanceIp Property subnet_uuid ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -259,16 +829,280 @@ A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid`` parameter **MUST** follow the same requirements that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map -property ``subnet``/``subnet_id`` parameter. +property ``subnet`` parameter. + +The resource ``OS::ContrailV2::InstanceIp`` property +``subnet_uuid`` parameter is used when a +port is requesting an IP assignment via +OpenStack's DHCP Service (i.e., cloud assigned). + +The IP address assignment will be made from the specified subnet. + +Specifying the subnet is not required; it is optional. + +If the network (external or internal) that the port is attaching +to only contains one subnet, specifying the subnet is +superfluous. The IP address will be assigned from the one existing +subnet. + +If the network (external or internal) that the port is attaching +to contains two or more subnets, specifying the subnet in the +``instance_ip_address`` property determines which +subnet the IP address will be assigned from. + +If the network (external or internal) that the port is attaching +to contains two or more subnets, and the subnet is not is not +specified, OpenStack will randomly determine which subnet +the IP address will be assigned from. + +The property ``instance_ip_address`` is used to assign IPs to a port. +The property ``subnet_uuid`` specifies the subnet the IP is assigned from. + + +.. req:: + :id: R-100190 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's + resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid`` + parameter + **MUST** be declared type ``string``. + + +.. req:: + :id: R-100200 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's + resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an external network (per the ONAP definition, see + Requirement R-57424), + and an IPv4 address is being cloud assigned by OpenStack's DHCP Service + and the external network IPv4 subnet is to be specified + using the property ``subnet_uuid``, the parameter + **MUST** follow the naming convention + + * ``{network-role}_subnet_id`` + + where + + * ``{network-role}`` is the network role of the network. + +Note that ONAP only supports cloud assigned IP addresses from one IPv4 subnet +of a given network. + +.. req:: + :id: R-100210 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid`` + parameter + ``{network-role}_subnet_id`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +ONAP's SDN-Controller provides the network's subnet's UUID +value at orchestration to the Heat Orchestration Template. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + + {network-role}_subnet_id: + type: string + description: Neutron IPv4 subnet UUID for the {network-role} network + + +.. req:: + :id: R-100220 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's + resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address + to an external network (per the ONAP definition, see + Requirement R-57424), + and an IPv6 address is being cloud assigned by OpenStack's DHCP Service + and the external network IPv6 subnet is to be specified + using the property ``subnet_uuid``, the parameter + **MUST** follow the naming convention + + * ``{network-role}_v6_subnet_id`` + + where + + * ``{network-role}`` is the network role of the network. + + +Note that ONAP only supports cloud assigned IP addresses from one IPv6 subnet +of a given network. + +.. req:: + :id: R-100230 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid`` + parameter + ``{network-role}_v6_subnet_id`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +ONAP's SDN-Controller provides the network's subnet's UUID +value at orchestration to the Heat Orchestration Template. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + + {network-role}_v6_subnet_id: + type: string + description: Neutron IPv6 subnet UUID for the {network-role} network + + +.. req:: + :id: R-100240 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When + + * the VNF's Heat Orchestration Template's + resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is + assigning an IP address + to an internal network (per the ONAP definition, see + Requirements R-52425 and R-46461) + that is created in the Base Module, AND + * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND + * the internal network IPv4 subnet is to be specified + using the property ``subnet_uuid``, + + the parameter **MUST** follow the naming convention + + * ``int_{network-role}_subnet_id`` + + where + + * ``{network-role}`` is the network role of the internal network + + Note that the parameter **MUST** be defined as an ``output`` parameter in + the base module. + + +.. req:: + :id: R-100250 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid`` + parameter + ``int_{network-role}_subnet_id`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + + +The assumption is that internal networks are created in the base module. +The subnet network ID will be passed as an output parameter +(e.g., ONAP Base Module Output Parameter) to the incremental modules. +In the incremental modules, the output parameter name will be defined as +input parameter. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + + int_{network-role}_subnet_id: + type: string + description: Neutron IPv4 subnet UUID for the int_{network-role} network + + + +.. req:: + :id: R-100260 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When + + * the VNF's Heat Orchestration Template's + resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is + attaching + to an internal network (per the ONAP definition, + see Requirements R-52425 and R-46461) + that is created in the Base Module, AND + * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND + * the internal network IPv6 subnet is to be specified + using the property ``subnet_uuid``, + + the parameter **MUST** follow the naming convention + ``int_{network-role}_v6_subnet_id``, + where ``{network-role}`` is the network role of the internal network. + + Note that the parameter **MUST** be defined as an ``output`` parameter in + the base module. + + +.. req:: + :id: R-100270 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid`` + parameter + ``int_{network-role}_v6_subnet_id`` + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + + int_{network-role}_v6_subnet_id: + type: string + description: Neutron subnet UUID for the int_{network-role} network *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property subnet_uuid* -The property instance_ip_address uses the same parameter naming -convention as the property fixed_ips and Map Property subnet_id in +The property ``instance_ip_address`` uses the same parameter naming +convention as the property ``fixed_ips`` and Map Property ``subnet`` in OS::Neutron::Port. The resource is assigning a cloud assigned IP -Address. The {network-role} has been defined as "oam_protected" to -represent an oam protected network and the {vm-type} has been defined as +Address. The ``{network-role}`` has been defined as "oam_protected" to +represent an oam protected network and the ``{vm-type}`` has been defined as "fw" for firewall. .. code-block:: yaml @@ -284,9 +1118,11 @@ represent an oam protected network and the {vm-type} has been defined as - get_param: oam_protected_net_fqdn subnet_uuid: { get_param: oam_protected_subnet_id } + OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::VirtualMachineInterface`` map property, ``virtual_machine_interface_allowed_address_pairs, @@ -297,6 +1133,305 @@ parameter **MUST** follow the same requirements that apply to the resource ``OS::Neutron::Port`` property ``allowed_address_pairs``, map property ``ip_address`` parameter. + +.. req:: + :id: R-100280 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + If a VNF requires ONAP to assign a Virtual IP (VIP) Address to a + ``OS::ContrailV2::VirtualMachineInterface`` + connected an external network, the port + **MUST NOT** have more than one IPv4 VIP address. + + +.. req:: + :id: R-100290 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + If a VNF requires ONAP to assign a Virtual IP (VIP) Address to a + ``OS::ContrailV2::VirtualMachineInterface`` + connected an external network, the port + **MUST NOT** have more than one IPv6 VIP address. + + +.. req:: + :id: R-100300 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + If a VNF has two or more ``OS::ContrailV2::VirtualMachineInterface`` that + attach to an external network that require a Virtual IP Address (VIP), + and the VNF requires ONAP automation to assign the IP address, + all the Virtual Machines using the VIP address **MUST** + be instantiated in the same Base Module Heat Orchestration Template + or in the same Incremental Module Heat Orchestration Template. + + +.. req:: + :id: R-100310 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external + network (per the + ONAP definition, see Requirement R-57424), + and an IPv4 Virtual IP (VIP) + address is assigned via ONAP automation + using the map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + , the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_{network-role}_floating_ip`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + And the parameter **MUST** be declared as type ``string``. + + + +.. req:: + :id: R-100320 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` + map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + parameter + + * ``{vm-type}_{network-role}_floating_ip`` + + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_{network-role}_floating_ip: + type: string + description: IPv4 VIP for {vm-type} VMs on the {network-role} network + + + +.. req:: + :id: R-100330 + :keyword: MUST + :validation_mode: static + :target: VNF + :introduced: dublin + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external + network (per the + ONAP definition, see Requirement R-57424), + and an IPv6 Virtual IP (VIP) + address is assigned via ONAP automation + using the + map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + , the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_{network-role}_floating_v6_ip`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + And the parameter **MUST** be declared as type ``string``. + + +.. req:: + :id: R-100340 + :keyword: MUST NOT + :validation_mode: static + :target: VNF + :introduced: dublin + + The VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` + map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + parameter + + * ``{vm-type}_{network-role}_floating_v6_ip`` + + **MUST NOT** be enumerated in the + VNF's Heat Orchestration Template's Environment File. + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + + {vm-type}_{network-role}_floating_v6_ip: + type: string + description: VIP for {vm-type} VMs on the {network-role} network + +.. req:: + :id: R-100350 + :keyword: MUST NOT + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external + network (per the + ONAP definition, see Requirement R-57424), + and an IPv4 and/or IPv6 Virtual IP (VIP) + address is assigned via ONAP automation + using the + map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + parameter + **MUST NOT** be declared as ``type: comma_deliited_list``. + + +.. req:: + :id: R-100360 + :keyword: MUST + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an + internal network (per the + ONAP definition, see Requirements R-52425 and R-46461), + and an IPv4 Virtual IP (VIP) + address is assigned using the map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + , the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_floating_ip`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + And the parameter **MUST** be declared as ``type: string`` + and **MUST** be enumerated in the environment file. + + OR + + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_floating_ips`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + And the parameter **MUST** be declared as ``type: comma_delimited_list`` + and **MUST** be enumerated in the environment file. + + +.. req:: + :id: R-100370 + :keyword: MUST + :introduced: dublin + :validation_mode: static + :target: VNF + + When the VNF's Heat Orchestration Template's Resource + ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an + internal network (per the + ONAP definition, see Requirements R-52425 and R-46461), + and an IPv6 Virtual IP (VIP) + address is assigned + using the map property, + ``virtual_machine_interface_allowed_address_pairs, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` + , the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_floating_v6_ip`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + And the parameter **MUST** be declared as ``type: string`` + and **MUST** be enumerated in the environment file + + OR + + the parameter name **MUST** follow the + naming convention + + * ``{vm-type}_int_{network-role}_floating_v6_ips`` + + where + + * ``{vm-type}`` is the {vm-type} associated with the + OS::Nova::Server + * ``{network-role}`` is the {network-role} of the external + network + + And the parameter **MUST** be declared as ``type: comma_delimited_list`` + and **MUST** be enumerated in the environment file. + + + *Example OS::ContrailV2::VirtualMachineInterface* .. code-block:: yaml @@ -432,3 +1567,4 @@ resource ``OS::Neutron::Port`` property qos_config_refs: [{ get_param: qos_config_refs }] virtual_machine: { get_param: virtual_machine } project: { get_param: project } + diff --git a/docs/Chapter5/Heat/ONAP Heat Template Constructs.rst b/docs/Chapter5/Heat/ONAP Heat Template Constructs.rst index ab30c81..d4c8c01 100644 --- a/docs/Chapter5/Heat/ONAP Heat Template Constructs.rst +++ b/docs/Chapter5/Heat/ONAP Heat Template Constructs.rst @@ -123,6 +123,7 @@ the second level of nested heat. , ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix`` * ``OS::ContrailV2::InstanceIP`` property ``instance_ip_address`` + * ``OS::ContrailV2::InstanceIP`` property ``subnet_uuid`` Note that the parameters associated with properties not listed in R-708564 |