From be09fadb27034cca498634b4e69ae751f2ac6b2e Mon Sep 17 00:00:00 2001 From: "stark, steven" Date: Wed, 6 Jun 2018 14:29:20 -0700 Subject: [VNFRQTS] update heat section [5.2.5.6 5.2.5.6.5) Change-Id: I675408035669651ea8072bc71901d057abafa7d5 Issue-ID: VNFRQTS-237 Signed-off-by: stark, steven --- docs/Chapter5.rst | 1189 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 688 insertions(+), 501 deletions(-) diff --git a/docs/Chapter5.rst b/docs/Chapter5.rst index 1d1ffe0..8496360 100644 --- a/docs/Chapter5.rst +++ b/docs/Chapter5.rst @@ -3151,671 +3151,858 @@ Four properties of the resource OS::Neutron::Port that must follow the ONAP parameter naming convention. The four properties are: 1. network +2. fixed_ips, ip_address +3. fixed_ips, subnet_id or fixed_ips, subnet + * Note that in many examples in this document fixed_ips, subnet_id is used. +4. allowed_address_pairs, ip_address -2. fixed\_ips, ip\_address +Below is a generic example. Note that for some parameters +comma_delimited_list are supported in addition to String. -3. fixed\_ips, subnet\_id +.. code-block:: python + + resources: -4. allowed\_address\_pairs, ip\_address + ... + + : + type: OS::Neutron::Port + properties: + allowed_address_pairs: [{"ip_address": String, "mac_address": String}, + {"ip_address": String, "mac_address": String}, ...] + fixed_ips: [{"ip_address": String, "subnet_id": String, "subnet": + String}, {"ip_address": String, "subnet_id": String, "subnet": String}, + ...] + network: String The parameters associated with these properties may reference an external network or internal network. External networks and internal networks are defined in `Networking`_. -External Networks -_________________ +When the OS::Neutron::Port is attaching to an external network, all +property values are parameters that are retrieved via the intrinsic +function 'get_param'. -When the parameter references an external network - -- R-72050 The VNF Heat Orchestration Template **MUST** contain {network-role} in the parameter name - -- the parameter must not be enumerated in the Heat environment file - -- the parameter is classified as an ONAP Orchestration Parameter - -+----------------------+---------------------------+--------------------------+ -| Property Name | ONAP Parameter Name | Parameter Type | -+======================+===========================+==========================+ -| network | {network-role}\_net\_id | string | -| +---------------------------+--------------------------+ -| | {network-role}\_net\_name | string | -+----------------------+---------------------------+--------------------------+ -| fixed\_ips, | {vm-type}\_{network-role}\| string | -| ip\_address | _ip\_{index} | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| comma\_delimited\_list | -| | _ips | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| string | -| | _v6\_ip\_{index} | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| comma\_delimited\_list | -| | _v6\_ips | | -+----------------------+---------------------------+--------------------------+ -| fixed\_ips, subnet | {network-role}\ | string | -| | _subnet\_id | | -| +---------------------------+--------------------------+ -| | {network-role}\ | string | -| | _v6\_subnet\_id | | -+----------------------+---------------------------+--------------------------+ -| allowed\_address | {vm-type}\_{network-role}\| string | -| \_pairs, ip\_address | _floating\_ip | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| string | -| | _floating\_v6\_ip | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| string | -| | _ip\_{index} | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| comma\_delimited\_list | -| | _ips | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| string | -| | _v6\_ip\_{index} | | -| +---------------------------+--------------------------+ -| | {vm-type}\_{network-role}\| comma\_delimited\_list | -| | _v6\_ips | | -+----------------------+---------------------------+--------------------------+ - -Table 5: OS::Neutron::Port Resource Property Parameters (External -Networks) +When the OS::Neutron::Port is attaching to an internal network, a +property value maybe retrieved via the intrinsic +function 'get_param', 'get_resource', or 'get_attr'. -Internal Networks -_________________ +This will be described in the forth coming sections. -When the parameter references an internal network - -- R-57576 The VNF Heat Orchestration Template **MUST** contain int\_{network-role} - in the parameter name. - -- the parameter may be enumerated in the environment file. - -+-------------------------+--------------------------------+-----------------+ -| Property | Parameter Name for | Parameter Type | -| | Internal Networks | | -+=========================+================================+=================+ -| network | int\_{network-role}\ | string | -| | _net\_id | | -| +--------------------------------+-----------------+ -| | int\_{network-role}\ | string | -| | _net\_name | | -+-------------------------+--------------------------------+-----------------+ -| fixed\_ips, ip\_address | {vm-type}\_int\_{network-role}\| string | -| | _ip\_{index} | | -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| comma\ | -| | _ips | _delimited\_list| -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| string | -| | _v6\_ip\_{index} | | -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| comma\ | -| | _v6\_ips | _delimited\_list| -+-------------------------+--------------------------------+-----------------+ -| fixed\_ips, subnet | int\_{network-role}\ | string | -| | _subnet\_id | | -| +--------------------------------+-----------------+ -| | int\_{network-role}\ | string | -| | _v6\_subnet\_id | | -+-------------------------+--------------------------------+-----------------+ -| allowed\_address\_pairs,| {vm-type}\_int\_{network-role}\| string | -| ip\_address | _floating\_ip | | -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| string | -| | _floating\_v6\_ip | | -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| string | -| | _ip\_{index} | | -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| comma\ | -| | _ips | _delimited\_list| -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| string | -| | _v6\_ip\_{index} | | -| +--------------------------------+-----------------+ -| | {vm-type}\_int\_{network-role}\| comma\ | -| | _v6\_ips | _delimited\_list| -+-------------------------+--------------------------------+-----------------+ - -Table 6: Port Resource Property Parameters (Internal Networks) +Items to Note +_____________ + +A network (internal or external) may contain one or or more subnets. + +A VNF can have one or more ports connected to the same network. + +A port can have one or more IP addresses assigned. + +The IP address assignments can be IPv4 addresses and/or IPv6 addresses. + +The IP addresses assignments for a unique external network **MUST** +be all Cloud Assigned addresses OR **MUST** be all ONAP +SDN-C assigned IP addresses. + +If the IP addresses are Cloud Assigned, all the IPv4 Addresses **MUST** +be from +the same subnet and all the IPv6 Addresses **MUST** be from the +same subnet. + +If the IP addresses are ONAP SDN-C assigned, +the IPv4 Addresses **MAY** +be from +different subnets and the IPv6 Addresses **MAY** be from different +subnets. + +If a VNF's Port is attached to an external network the IP addresses **MAY** +either be assigned by + 1. ONAP's SDN-Controller (SDN-C) + 2. Cloud Assigned by OpenStack’s DHCP Service + +If a VNF's Port is attached to an external network and the port's IP addresses +are assigned by ONAP's SDN-Controller, the 'OS::Neutron::Port' Resource's + * property 'fixed_ips' map property 'ip_address' **MUST** be used + * property 'fixed_ips' map property 'subnet'/'subnet_id' + **MUST NOT** be used + +If a VNF's Port is attached to an external network and the port's IP addresses +are Cloud Assigned by OpenStack’s DHCP Service, +the 'OS::Neutron::Port' Resource's + * property 'fixed_ips' map property 'ip_address' **MUST NOT** be used + * property fixed_ips' map property 'subnet'/'subnet_id' **MAY** be used + +If a VNF's Port is attached to an internal network and the port's IP addresses +are assigned by the VNF's Heat Orchestration Template +(i.e., enumerated in the Heat Orchestration Template's environment file), +the 'OS::Neutron::Port' Resource's + * property 'fixed_ips' map property 'ip_address' **MUST** be used + * property 'fixed_ips' map property 'subnet'/'subnet_id' + **MUST NOT** be used + +If a VNF's Port is attached to an internal network and the port's IP addresses +are Cloud Assigned by OpenStack’s DHCP Service, +the 'OS::Neutron::Port' Resource's + * property 'fixed_ips' map property 'ip_address' **MUST NOT** be used + * property 'fixed_ips' map property 'subnet'/'subnet_id' + **MAY** be used + +If a VNF's Heat Orchestration Template 'OS::Neutron::Port' Resource property +'fixed_ips' map property 'ip_address' is specified, then the +'fixed_ips' map property 'subnet'/'subnet_id' **MUST NOT** +be specified. + +If a VNF's Heat Orchestration Template 'OS::Neutron::Port' Resource property +'fixed_ips' map property 'subnet'/'subnet_id' is specified, then the +'fixed_ips' map property 'ip_address' **MUST NOT** +be specified. + +.. csv-table:: **Table 4 OS::Nova::Server Resource Property Parameter Naming Convention** + :header: Resource,Property,Parameter Type,Parameter Name,Parameter Value Provided to Heat + :align: center + :widths: auto + + OS::Nova::Server, image, string, {vm-type}_image_name, Environment File Property: network +++++++++++++++++ -The property networks in the resource OS::Neutron::Port must be -referenced by Neutron Network ID, a UUID value, or by the network name -defined in OpenStack. +The Resource 'OS::Neutron::Port' property 'network' determines what network +the port is attached to. -External Networks -_________________ -R-93272 The VNF Heat Orchestration Template **MUST** adhere to the following parameter naming -convention in the Heat Orchestration Template, when the parameter -associated with the property network is referencing an “external” network: +R-18008 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +property ‘network’ parameter **MUST** be declared as type: ‘string’. -- {network-role}\_net\_id for the Neutron network ID +R-62983 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +is attaching to an external network, the ‘network’ parameter name **MUST** -- {network-role}\_net\_name for the network name in OpenStack +- follow the naming convention ‘{network-role}_net_id’ if the Neutron + network UUID value is used to reference the network +- follow the naming convention ‘{network-role}_net_name’ if the OpenStack + network name is used to reference the network. -The parameter must be declared as type: string +where ‘{network-role}’ is the network-role of the external network and +a ‘get_param’ **MUST** be used as the intrinsic function. -The parameter must not be enumerated in the Heat environment file. +R-86182 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +is attaching to an internal network, and the internal network is created in a different +Heat Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’ +parameter name **MUST** -*Example Parameter Definition* +- follow the naming convention ‘int\_{network-role}_net_id’ if the Neutron + network UUID value is used to reference the network +- follow the naming convention ‘int\_{network-role}_net_name’ if the + OpenStack network name in is used to reference the network. -.. code-block:: yaml +where ‘{network-role}’ is the network-role of the internal network and a ‘get_param’ **MUST** be used as the intrinsic function. - parameters: - {network-role}_net_id: - type: string - description: Neutron UUID for the {network-role} network - {network-role}_net_name: - type: string - description: Neutron name for the {network-role} network +In Requirement R-86182, the internal network is created in the VNF's +Base Module (Heat Orchestration Template) and the parameter name is +declared in the Base Module's outputs' section. +The output parameter name will be declared as a parameter in the +'parameters' section of the incremental module. -*Example: One Cloud Assigned IP Address (DHCP) assigned to a network -that has only one subnet* +R-93177 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +is attaching to an internal network, and the internal network is created in the same Heat +Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’ +parameter name **MUST** obtain the UUID of the internal network by using +the intrinsic function ‘get_resource’ or ‘get_attr’ and referencing the +Resource ID of the internal network. -In this example, the {network-role} has been defined as oam to represent -an oam network and the {vm-type} has been defined as lb for load -balancer. The Cloud Assigned IP Address uses the OpenStack DHCP service -to assign IP addresses. +R-29872 The VNF’s Heat Orchestration Template’s Resource ‘OS::Nova::Server’ +property ‘network’ parameter **MUST NOT** be enumerated in the Heat +Orchestration Template’s Environment File. -.. code-block:: yaml +The parameter values for external networks are provided by ONAP +to the VNF's Heat Orchestration Template at orchestration time. - parameters: - oam_net_id: - type: string - description: Neutron UUID for the oam network +The parameter values for internal networks created in the VNF's Base Module +Heat Orchestration Template +are provided to the VNF's Incremental Module Heat Orchestration Template +at orchestration time. - resources: - lb_port_1: - type: OS::Neutron::Port - network: { get_param: oam_net_id } +*Example Parameter Definition of External Networks* -Internal Networks -_________________ +.. code-block:: python -R-65373 The VNF Heat Orchestration Template **MUST** adhere to the following parameter naming -convention, when the parameter associated with the property network is -referencing an “internal” network: + parameters: -- int\_{network-role}\_net\_id for the Neutron network ID + {network-role}_net_id: + type: string + description: Neutron UUID for the external {network-role} network -- int\_{network-role}\_net\_name for the network name in OpenStack + {network-role}_net_name: + type: string + description: Neutron name for the external {network-role} network -The parameter must be declared as type: string -The assumption is that internal networks are created in the base module. -The Neutron Network ID will be passed as an output parameter (e.g., ONAP -Base Module Output Parameter) to the incremental modules. In the -incremental modules, it will be defined as input parameter. +*Example Parameter Definition of Internal Networks in an Incremental Module* -*Example Parameter Definition* +.. code-block:: python -.. code-block:: yaml + parameters: - parameters: - int_{network-role}_net_id: - type: string - description: Neutron UUID for the {network-role} network - int_{network-role}_net_name: - type: string - description: Neutron name for the {network-role} network + int_{network-role}_net_id: + type: string + description: Neutron UUID for the internal int_{network-role} network -Property: fixed\_ips, Map Property: subnet\_id -++++++++++++++++++++++++++++++++++++++++++++++ + int_{network-role}_net_name: + type: string + description: Neutron name for the internal int_{network-role} network -The property fixed\_ips is used to assign IPs to a port. The Map -Property subnet\_id specifies the subnet the IP is assigned from. +Property: fixed_ips, Map Property: ip_address ++++++++++++++++++++++++++++++++++++++++++++++ -The property fixed\_ips and Map Property subnet\_id must be used if a -Cloud (i.e., DHCP) IP address assignment is being requested and the -Cloud IP address assignment is targeted at a specific subnet when two or -more subnets exist. +The resource 'OS::Neutron::Port' property 'fixed_ips' +map property 'ip_address' +is used to assign one IPv4 or IPv6 +addresses to port. -The property fixed\_ips and Map Property subnet\_id should not be used -if all IP assignments are fixed, or if the Cloud IP address assignment -does not target a specific subnet or there is only one subnet. +One 'OS::Neutron::Port' resource may assign one or more +IPv4 and/or IPv6 addresses. -Note that DHCP assignment of IP addresses is also referred to as cloud -assigned IP addresses. +R-34037 The VNF’s Heat Orchestration Template’s resource ‘OS::Neutron::Port’ +property ‘fixed_ips’ map property ‘ip_address’ parameter **MUST** be declared as +either type ‘string’ or type ‘comma_delimited_list’. -Subnet of an External Networks -______________________________ +R-40971 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an external network, and an IPv4 address is +assigned using the property +‘fixed_ips’ map property ‘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 -R-47716 The VNF Heat Orchestration Template **MUST** adhere to the following parameter naming -convention for the property fixed\_ips and Map Property subnet\_id -parameter, when the parameter is referencing a subnet of an -“external” network. +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the external network +- the value for {index} must start at zero (0) and increment by one -- {network-role}\_subnet\_id if the subnet is an IPv4 subnet +R-39841 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +property ‘fixed_ips’ map property ‘ip_address’ parameter +‘{vm-type}_{network-role}\_ip\_{index}’ **MUST NOT** be enumerated in the +VNF’s Heat Orchestration Template’s Environment File. -- {network-role}\_v6\_subnet\_id if the subnet is an IPv6 subnet +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. -The parameter must be declared as type: string +*Example External Network IPv4 Address string Parameter Definition* -The parameter must not be enumerated in the Heat environment file. +.. code-block:: python -*Example Parameter Definition* + parameters: -.. code-block:: yaml + {vm-type}_{network-role}_ip_{index}: + type: string + description: Fixed IPv4 assignment for {vm-type} VM {index} on the{network-role} network - parameters: - {network-role}_subnet_id: - type: string - description: Neutron subnet UUID for the {network-role} network +R-04697 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +is attaching to an external network, and an IPv4 address is assigned using +the property ‘fixed_ips’ map property ‘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 - {network-role}_v6_subnet_id: - type: string - description: Neutron subnet UUID for the {network-role} network +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the external network -*Example: One Cloud Assigned IPv4 Address (DHCP) assigned to a network -that has two or more subnets subnet:* +R-98905 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’ +property ‘fixed_ips’ map property ‘ip_address’ parameter +‘{vm-type}_{network-role}_ips’ **MUST NOT** be enumerated in the VNF’s +Heat Orchestration Template’s Environment File. -In this example, the {network-role} has been defined as oam to represent -an oam network and the {vm-type} has been defined as lb for load -balancer. The Cloud Assigned IP Address uses the OpenStack DHCP service -to assign IP addresses. +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. -.. code-block:: yaml +*Example External Network IPv4 Address comma_delimited_list +Parameter Definition* - parameters: - oam_net_id: - type: string - description: Neutron UUID for the oam network +.. code-block:: python - oam_subnet_id: - type: string - description: Neutron subnet UUID for the oam network + parameters: - resources: - lb_port_1: - type: OS::Neutron::Port - network: { get_param: oam_net_id } - fixed_ips: - - subnet_id: { get_param: oam_subnet_id } + {vm-type}_{network-role}_ips: + type: comma_delimited_list + description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network -*Example: One Cloud Assigned IPv4 address and one Cloud Assigned IPv6 -address assigned to a network that has at least one IPv4 subnet and one -IPv6 subnet* +R-71577 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an external network, and an IPv6 address +is assigned using the property ‘fixed_ips’ map property ‘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 -In this example, the {network-role} has been defined as oam to represent -an oam network and the {vm-type} has been defined as lb for load -balancer. +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the external network +- the value for {index} must start at zero (0) and increment by one -.. code-block:: yaml - parameters: - oam_net_id: - type: string - description: Neutron UUID for the oam network +R-87123 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter ‘{vm-type}_{network-role}\_v6\_ip\_{index}’ **MUST NOT** be enumerated +in the VNF’s Heat Orchestration Template’s Environment File. - oam_subnet_id: - type: string - description: Neutron subnet UUID for the oam network +ONAP's SDN-Controller assigns the IP Address and ONAP provides +the value at orchestration to the Heat Orchestration Template. - oam_v6_subnet_id: - type: string - description: Neutron subnet UUID for the oam network +*Example External Network IPv6 Address string Parameter Definition* - resources: - lb_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: oam_net_id } - fixed_ips: - - subnet_id: { get_param: oam_subnet_id } - - subnet_id: { get_param: oam_v6_subnet_id } +.. code-block:: python -Internal Networks -_________________ + parameters: -R-20106 The VNF Heat Orchestration Template **MUST** adhere to the following naming convention for -the property fixed\_ips and Map Property subnet\_id parameter, -when the parameter is referencing the subnet of an “internal” network: + {vm-type}_{network-role}_v6_ip_{index}: + type: string + description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network -- int\_{network-role}\_subnet\_id if the subnet is an IPv4 subnet +R-23503 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an external network, and an IPv6 +address is assigned using the property ‘fixed_ips’ map property ‘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 -- int\_{network-role}\_v6\_subnet\_id if the subnet is an IPv6 subnet +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the external network -The parameter must be declared as type: string +R-93030 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter ‘{vm-type}_{network-role}_v6_ips’ **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 Neutron 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, it will be defined as input parameter. +ONAP's SDN-Controller assigns the IP Address and ECOMP provides +the value at orchestration to the Heat Orchestration Template. -*Example Parameter Definition* +*Example External Network IPv6 Address comma_delimited_list Parameter +Definition* -.. code-block:: yaml +.. code-block:: python - parameters: - int_{network-role}_subnet_id: - type: string - description: Neutron subnet UUID for the {network-role} network + parameters: - int_{network-role}_v6_subnet_id: - type: string - description: Neutron subnet UUID for the {network-role} network + {vm-type}_{network-role}_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network -Property: fixed\_ips, Map Property: ip\_address -+++++++++++++++++++++++++++++++++++++++++++++++ +R-78380 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an internal network, and an IPv4 address +is assigned using the property ‘fixed_ips’ map property ‘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 -The property fixed\_ips is used to assign IPs to a port. The Map -Property ip\_address specifies the IP address to be assigned to the -port. +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the internal network +- the value for {index} must start at zero (0) and increment by one -The property fixed\_ips and Map Property ip\_address must be used when -statically assigning one or more IP addresses to a port. This is also -referred to as ONAP SDN-C IP address assignment. ONAP’s SDN-C provides -the IP address assignment. +R-28795 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter ‘{vm-type}\_int\_{network-role}\_ip\_{index}’ **MUST** be enumerated +in the VNF’s Heat Orchestration Template’s Environment File. -An IP address is assigned to a port on a VM (referenced by {vm-type}) -that is connected to an external network (referenced by {network-role}) -or internal network (referenced by int\_{network-role}). +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. -R-41177 The VNF Heat Orchestration Template **MUST** include {vm-type} and {network-role} -in the parameter name, when a SDN-C IP assignment is made to a -port connected to an external network. +*Example Internal Network IPv4 Address string Parameter Definition* -When a SDN-C IP assignment is made to a port connected to an internal -network, the parameter name must contain {vm-type} and -int\_{network-role}. +.. code-block:: python -IP Address Assignments on External Networks -___________________________________________ + parameters: -When the property fixed\_ips and Map Property ip\_address is used to -assign IP addresses to an external network, the parameter name is -dependent on the parameter type (comma\_delimited\_list or string) and -IP address type (IPv4 or IPv6). + {vm-type}_int_{network-role}_ip_{index}: + type: string + description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network -R-84898 The VNF Heat Orchestration Template **MUST** adhere to the following naming convention, -when the parameter for property fixed\_ips and Map Property ip\_address -is declared type: comma\_delimited\_list: +R-85235 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an internal network, and an IPv4 +address is assigned using the property ‘fixed_ips’ map property ‘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}\_{network-role}\_ips for IPv4 address +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the internal network -- {vm-type}\_{network-role}\_v6\_ips for IPv6 address +R-90206 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter ‘{vm-type}\_int\_{network-role}_int_ips’ **MUST** be enumerated in +the VNF’s Heat Orchestration Template’s Environment File. -Each element in the IP list should be assigned to successive instances -of {vm-type} on {network-role}. +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. -The parameter must not be enumerated in the Heat environment file. +.. code-block:: python -*Example Parameter Definition* + parameters: -.. code-block:: yaml + {vm-type}_int_{network-role}_ips: + type: comma_delimited_list + description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network - parameters: +R-27818 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an internal network, and an IPv6 address +is assigned using the property ‘fixed_ips’ map property ‘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}_{network-role}_ips: - type: comma_delimited_list - description: Fixed IPv4 assignments for {vm-type} VMs on the {Network-role} network +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the internal network +- the value for {index} must start at zero (0) and increment by one - {vm-type}_{network-role}_v6_ips: - type: comma_delimited_list - description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network +R-97201 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’ **MUST** be enumerated +in the VNF’s Heat Orchestration Template’s Environment File. -*Example: comma\_delimited\_list parameters for IPv4 and IPv6 Address -Assignments to an external network* +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. -In this example, the {network-role} has been defined as oam to represent -an oam network and the {vm-type} has been defined as db for database. +*Example Internal Network IPv6 Address string Parameter Definition* -.. code-block:: yaml +.. code-block:: python - parameters: - oam_net_id: - type: string - description: Neutron UUID for a oam network + parameters: - db_oam_ips: - type: comma_delimited_list - description: Fixed IPv4 assignments for db VMs on the oam network + {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 - db_oam_v6_ips: - type: comma_delimited_list - description: Fixed IPv6 assignments for db VMs on the oam network +R-29765 When the VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ is attaching to an internal network, and an IPv6 +address is assigned using the property ‘fixed_ips’ map property ‘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 - resources: - db_0_port_1: - type: OS::Neutron::Port - network: { get_param: oam_net_id } - fixed_ips: [ { “ip_address”: {get_param: [ db_oam_ips, 0 ]}}, {“ip_address”: {get_param: [ db_oam_v6_ips, 0 ]}}] +- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server +- ‘{network-role}’ is the {network-role} of the internal network - db_1_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: oam_net_id } - fixed_ips: - - “ip_address”: {get_param: [ db_oam_ips, 1 ]} - - “ip_address”: {get_param: [ db_oam_v6_ips, 1 ]} +*Example Internal Network IPv6 Address comma_delimited_list Parameter +Definition* -R-34960 The VNF Heat Orchestration Template **MUST** adhere to the following -naming convention, -when the parameter for property fixed\_ips and Map Property ip\_address -is declared type: string: +.. code-block:: python -- {vm-type}\_{network-role}\_ip\_{index} for an IPv4 address + parameters: -- {vm-type}\_{network-role}\_v6\_ip\_{index} for an IPv6 address + {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 -The value for {index} must start at zero (0) and increment by one. +R-98569 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ 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 parameter must not be enumerated in the Heat 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 Parameter Definition* +R-62590 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter associated with an external network, i.e., -.. code-block:: yaml +- {vm-type}_{network-role}\_ip\_{index} +- {vm-type}_{network-role}\_ip\_v6\_{index} +- {vm-type}_{network-role}_ips +- {vm-type}_{network-role}_v6_ips - parameters: - {vm-type}_{network-role}_ip_{index}: - type: string - description: Fixed IPv4 assignment for {vm-type} VM {index} on the{network-role} network +**MUST NOT** be enumerated in the Heat Orchestration Template’s Environment File. +ONAP provides the IP address assignments at orchestration time. - {vm-type}_{network-role}_v6_ip_{index}: - type: string - description: Fixed IPv6 assignment for {vm-type} VM {index} on the{network-role} network +R-93496 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’ +parameter associated with an internal network, i.e., + +- {vm-type}\_int\_{network-role}\_ip\_{index} +- {vm-type}\_int\_{network-role}\_ip\_v6\_{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. + +Summary Table +_____________ + +.. csv-table:: **Table # OS::Neutron::Port Property fixed_ips map property ip_address Parameter Naming Convention** + :header: Resource,Property,Map Property,Network Type,IP Address,Parameter Type,Parameter Name, Environment File + :align: center + :widths: auto + + OS::Neutron::Port, fixed_ips, ip_address, external, IPv4, string, {vm-type}\_{network-role}\_ip\_{index}, NO + OS::Neutron::Port, fixed_ips, ip_address, external, IPv4, comma\_delimited\_list, {vm-type}\_{network-role}\_ips, NO + OS::Neutron::Port, fixed_ips, ip_address, external, IPv6, string, {vm-type}\_{network-role}\_v6\_ip\_{index}, NO + OS::Neutron::Port, fixed_ips, ip_address, external, IPv6, comma\_delimited\_list, {vm-type}\_{network-role}\_v6\_ips, NO + OS::Neutron::Port, fixed_ips, ip_address, internal, IPv4, string, {vm-type}\_int\_{network-role}\_ip\_{index}, YES + OS::Neutron::Port, fixed_ips, ip_address, internal, IPv4, comma\_delimited\_list, {vm-type}\_int\_{network-role}\_ips, YES + OS::Neutron::Port, fixed_ips, ip_address, internal, IPv6, string, {vm-type}\_int\_{network-role}\_v6\_ip\_{index}, YES + OS::Neutron::Port, fixed_ips, ip_address, internal, IPv6, comma\_delimited\_list, {vm-type}\_int\_{network-role}\_v6\_ips, YES + + +Examples +________ -*Example: string parameters for IPv4 and IPv6 Address Assignments -to an external network* +*Example: comma_delimited_list parameters for IPv4 and IPv6 Address +Assignments to an external network* + +In this example, the '{network-role}' has been defined as 'oam' to represent +an oam network and the '{vm-type}' has been defined as 'db' for database. + +.. code-block:: python -In this example, the {network-role} has been defined as “oam” to -represent an oam network and the {vm-type} has been defined as “db” for + parameters: + oam_net_id: + type: string + description: Neutron UUID for a oam network + db_oam_ips: + type: comma_delimited_list + description: Fixed IPv4 assignments for db VMs on the oam network + db_oam_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 assignments for db VMs on the oam network + resources: + db_0_oam_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: oam_net_id } + fixed_ips: [ { “ip_address”: {get_param: [ db_oam_ips, 0 ]}}, { + “ip_address”: {get_param: [ db_oam_v6_ips, 0 ]}}] + db_1_oam_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: oam_net_id } + fixed_ips: + - “ip_address”: {get_param: [ db_oam_ips, 1 ]} + - “ip_address”: {get_param: [ db_oam_v6_ips, 1 ]} + +*Example: string parameters for IPv4 and IPv6 Address Assignments to an +external network* + +In this example, the '{network-role}' has been defined as 'oam' to +represent an oam network and the '{vm-type}' has been defined as 'db' for database. -.. code-block:: yaml +.. code-block:: python - parameters: + parameters: oam_net_id: - type: string - description: Neutron UUID for an OAM network + type: string + description: Neutron UUID for an OAM network + db_oam_ip_0: + type: string + description: Fixed IPv4 assignment for db VM 0 on the OAM network + db_oam_ip_1: + type: string + description: Fixed IPv4 assignment for db VM 1 on the OAM network + db_oam_v6_ip_0: + type: string + description: Fixed IPv6 assignment for db VM 0 on the OAM network + db_oam_v6_ip_1: + type: string + description: Fixed IPv6 assignment for db VM 1 on the OAM network + resources: + db_0_oam_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: oam_net_id } + fixed_ips: [ { “ip_address”: {get_param: db_oam_ip_0}}, { “ip_address”: {get_param: db_oam_v6_ip_0 ]}}] + db_1_oam_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: oam_net_id } + fixed_ips: + - “ip_address”: {get_param: db_oam_ip_1}}] + - “ip_address”: {get_param: db_oam_v6_ip_1}}] - db_oam_ip_0: - type: string - description: Fixed IPv4 assignment for db VM 0 on the OAM network - db_oam_ip_1: - type: string - description: Fixed IPv4 assignment for db VM 1 on the OAM network +*Example: comma_delimited_list parameters for IPv4 and IPv6 Address +Assignments to an internal network* - db_oam_v6_ip_0: - type: string - description: Fixed IPv6 assignment for db VM 0 on the OAM network +In this example, the '{network-role}' has been defined as 'ctrl' to +represent an ctrl network internal to the vnf. +The '{vm-type}' has been defined as 'db' for +database. - db_oam_v6_ip_1: - type: string - description: Fixed IPv6 assignment for db VM 1 on the OAM network +.. code-block:: python - resources: - db_0_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: oam_net_id } - fixed_ips: [ { “ip_address”: {get_param: db_oam_ip_0}}, {“ip_address”: {get_param: db_oam_v6_ip_0 ]}}] + parameters: + int_ctrl_net_id: + type: string + description: Neutron UUID for the ctrl internal network + db_int_ctrl_ips: + type: comma_delimited_list + description: Fixed IPv4 assignments for db VMs on the ctrl internal + network + db_int_ctrl_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 assignments for db VMs on the ctrl internal + network + resources: + db_0_int_ctrl_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: int_ctrl_net_id } + fixed_ips: [ { “ip_address”: {get_param: [ db_int_ctrl_ips, 0 ]}}, { + “ip_address”: {get_param: [ db_int_ctrl_v6_ips, 0 ]}}] + db_1_int_ctrl_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: int_ctrl_net_id } + fixed_ips: + - “ip_address”: {get_param: [ db_int_ctrl_ips, 1 ]} + - “ip_address”: {get_param: [ db_int_ctrl_v6_ips, 1 ]} - db_1_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: oam_net_id } - fixed_ips: - - “ip_address”: {get_param: db_oam_ip_1}}] - - “ip_address”: {get_param: db_oam_v6_ip_1}}] -IP Address Assignment on Internal Networks -__________________________________________ +*Example: string parameters for IPv4 and IPv6 Address Assignments to an +internal network* -When the property fixed\_ips and Map Property ip\_address is used to -assign IP addresses to an internal network, the parameter name is -dependent on the parameter type (comma\_delimited\_list or string) and -IP address type (IPv4 or IPv6). +In this example, the int\_{network-role} has been defined as +int_ctrl to represent a control network internal to the vnf. +The {vm-type} has been defined as db for database. -R-62584 The VNF Heat Orchestration Template **MUST** adhere to -the following naming convention, -when the parameter for property fixed\_ips and Map Property ip\_address -is declared type: comma\_delimited\_list: +.. code-block:: python -- {vm-type}\_int\_{network-role}\_ips for IPv4 address + parameters: + int_ctrl_net_id: + type: string + description: Neutron UUID for an OAM internal network + db_int_ctrl_ip_0: + type: string + description: Fixed IPv4 assignment for db VM on the oam_int network + db_int_ctrl_ip_1: + type: string + description: Fixed IPv4 assignment for db VM 1 on the oam_int network + db_int_ctrl_v6_ip_0: + type: string + description: Fixed IPv6 assignment for db VM 0 on the oam_int network + db_int_ctrl_v6_ip_1: + type: string + description: Fixed IPv6 assignment for db VM 1 on the oam_int network + resources: + db_0_int_ctrl_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: int_oam_int_net_id } + fixed_ips: [ { “ip_address”: {get_param: db_oam_int_ip_0}}, { + “ip_address”: {get_param: db_oam_int_v6_ip_0 ]}}] + db_1_int_ctrl_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: int_oam_int_net_id } + fixed_ips: + - “ip_address”: {get_param: db_oam_int_ip_1}}] + - “ip_address”: {get_param: db_oam_int_v6_ip_1}}] + + +Property: fixed\_ips, Map Property: subnet\_id +++++++++++++++++++++++++++++++++++++++++++++++ + +The resource 'OS::Neutron::Port' property 'fixed_ips' map +property 'subnet'/'subnet_id' 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 +'fixed_ips' map property 'subnet'/'subnet_id' determines which +subnet the IP address will be assigned from. -- {vm-type}\_int\_{network-role}\_v6\_ips for IPv6 address +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. -Each element in the IP list should be assigned to successive instances -of {vm-type} on {network-role}. +The property fixed_ips is used to assign IPs to a port. The Map Property +subnet_id specifies the subnet the IP is assigned from. -The parameter must be enumerated in the Heat environment file. Since an -internal network is local to the VNF, IP addresses can be re-used at -every VNF instance. +R-38236 The VNF’s Heat Orchestration Template’s resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property +‘subnet’/’subnet_id’ parameter **MUST** be declared type ‘string’. + +R-62802 When the VNF’s Heat Orchestration Template’s resource +‘OS::Neutron::Port’ is attaching to an external network, 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 +‘fixed_ips’ map property ‘subnet’/’subnet_id’, the parameter **MUST** +follow the naming convention ‘{network-role}_subnet_id’, where +‘{network-role}’ is the network role of the network. + +R-83677 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property +subnet’/’subnet_id’ 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 +.. code-block:: python - parameters: + 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 + {network-role}_subnet_id: + type: string + description: Neutron IPv4 subnet UUID for the {network-role} network - {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 +R-15287 When the VNF’s Heat Orchestration Template’s resource +‘OS::Neutron::Port’ is attaching to an external network, 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 +‘fixed_ips’ map property ‘subnet’/’subnet_id’, the parameter **MUST** +follow the naming convention ‘{network-role}_subnet_v6_id’, where +‘{network-role}’ is the network role of the network. -*Example: comma\_delimited\_list parameters for IPv4 and IPv6 Address -Assignments to an internal network* +R-80829 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property +subnet’/’subnet_id’ parameter ‘{network-role}_subnet_v6_id’ +**MUST NOT** be enumerated in the VNF’s Heat Orchestration Template’s +Environment File. -In this example, the {network-role} has been defined as oam\_int to -represent an oam network internal to the vnf. The role oam\_int was -picked to differentiate from an external oam network with a -{network-role} of oam. The {vm-type} has been defined as db for -database. +ONAP's SDN-Controller provides the network's subnet's UUID +value at orchestration to the Heat Orchestration Template. -.. code-block:: yaml +*Example Parameter Definition* - parameters: - int_oam_int_net_id: - type: string - description: Neutron UUID for the oam internal network +.. code-block:: python - db_int_oam_int_ips: - type: comma_delimited_list - description: Fixed IPv4 assignments for db VMs on the oam internal network + parameters: - db_int_oam_int_v6_ips: - type: comma_delimited_list - description: Fixed IPv6 assignments for db VMs on the oam internal network + {network-role}_v6_subnet_id: + type: string + description: Neutron IPv6 subnet UUID for the {network-role} network - resources: - db_0_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: int_oam_int_net_id } - fixed_ips: [ { “ip_address”: {get_param: [ db_int_oam_int_ips, 0]}}, { “ip_address”: {get_param: [ db_int_oam_int_v6_ips, 0 ]}}] - db_1_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: int_oam_int_net_id } - fixed_ips: - - “ip_address”: {get_param: [ db_int_oam_int_ips, 1 ]} - - “ip_address”: {get_param: [ db_int_oam_int_v6_ips, 1 ]} +*Example: One Cloud Assigned IPv4 Address (DHCP) assigned to a network +that has two or more IPv4 subnets* -R-29256 The VNF Heat Orchestration Template **MUST** must adhere to the following -naming convention, -when the parameter for property fixed\_ips and Map Property ip\_address -is declared type: string: +In this example, the '{network-role}' has been defined as 'oam' to represent +an oam network and the '{vm-type}' has been defined as 'lb' for load +balancer. The Cloud Assigned IP Address uses the OpenStack DHCP service +to assign IP addresses. -- {vm-type}\_int\_{network-role}\_ip\_{index} for an IPv4 address +.. code-block:: python -- {vm-type}\_int\_{network-role}\_v6\_ip\_{index} for an IPv6 address + parameters: + oam_net_id: + type: string + description: Neutron UUID for the oam network + oam_subnet_id: + type: string + description: Neutron IPv4 subnet UUID for the oam network + resources: + lb_0_oam_port_0: + type: OS::Neutron::Port + parameters: + network: { get_param: oam_net_id } + fixed_ips: + - subnet_id: { get_param: oam_subnet_id } -The value for {index} must start at zero (0) and increment by one. +*Example: One Cloud Assigned IPv4 address and one Cloud Assigned IPv6 +address assigned to a network that has at least one IPv4 subnet and one +IPv6 subnet* -The parameter must be enumerated in the Heat environment file. Since an -internal network is local to the VNF, IP addresses can be re-used at -every VNF instance. +In this example, the '{network-role}' has been defined as 'oam' to represent +an oam network and the '{vm-type}' has been defined as 'lb' for load +balancer. -*Example Parameter Definition* +.. code-block:: python -.. code-block:: yaml + parameters: + oam_net_id: + type: string + description: Neutron UUID for the oam network + oam_subnet_id: + type: string + description: Neutron IPv4 subnet UUID for the oam network + oam_v6_subnet_id: + type: string + description: Neutron IPv6 subnet UUID for the oam network + resources: + lb_0_oam_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: oam_net_id } + fixed_ips: + - subnet_id: { get_param: oam_subnet_id } + - subnet_id: { get_param: oam_v6_subnet_id } - parameters: +R-84123 When - {vm-type}_int_{network-role}_ip_{index}: - type: string - description: Fixed IPv4 assignment for {vm-type} VM {index} on the{network-role} network +- the VNF’s Heat Orchestration Template’s resource ‘OS::Neutron::Port’ + in an Incremental Module is attaching to an internal network + 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 ‘fixed_ips’ map property ‘subnet’/’subnet_id’, - {vm-type}_int_{network-role}_v6_ip_{index}: - type: string - description: Fixed IPv6 assignment for {vm-type} VM {index} on the{network-role} network +the parameter **MUST** follow the naming convention +‘int\_{network-role}_subnet_id’, where ‘{network-role}’ is the +network role of the internal network -*Example: string parameters for IPv4 and IPv6 Address Assignments -to an internal network* +- Note that the parameter **MUST** be defined as an ‘output’ parameter in + the base module. -In this example, the {network-role} has been defined as oam\_int to -represent an oam network internal to the vnf. The role oam\_int was -picked to differentiate from an external oam network with a -{network-role} of oam. The {vm-type} has been defined as db for -database. +R-69634 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property +subnet’/’subnet_id’ parameter ‘int\_{network-role}_subnet_id’ +**MUST NOT** be enumerated in the VNF’s Heat Orchestration Template’s +Environment File. -.. code-block:: yaml +The assumption is that internal networks are created in the base module. +The Neutron subnet network ID will be passed as an output parameter +(e.g., ECOMP Base Module Output Parameter) to the incremental modules. +In the incremental modules, the output parameter name will be defined as +input parameter. - parameters: - int_oam_int_net_id: - type: string - description: Neutron UUID for an OAM internal network +*Example Parameter Definition* - db_oam_int_ip_0: - type: string - description: Fixed IPv4 assignment for db VM on the oam_int network +.. code-block:: python - db_oam_int_ip_1: - type: string - description: Fixed IPv4 assignment for db VM 1 on the oam_int network + parameters: - db_oam_int_v6_ip_0: - type: string - description: Fixed IPv6 assignment for db VM 0 on the oam_int network + int_{network-role}_subnet_id: + type: string + description: Neutron IPv4 subnet UUID for the int_{network-role} network - db_oam_int_v6_ip_1: - type: string - description: Fixed IPv6 assignment for db VM 1 on the oam_int network +R-76160 When - resources: - db_0_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: int_oam_int_net_id } - fixed_ips: [ { “ip_address”: {get_param: db_oam_int_ip_0}}, {“ip_address”: {get_param: db_oam_int_v6_ip_0 ]}}] +- the VNF’s Heat Orchestration Template’s resource + ‘OS::Neutron::Port’ in an Incremental Module is attaching to an + internal network 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 + ‘fixed_ips’ map property ‘subnet’/’subnet_id’, + +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. + +R-22288 The VNF’s Heat Orchestration Template’s Resource +‘OS::Neutron::Port’ property ‘fixed_ips’ map property +‘subnet’/’subnet_id’ 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:: python + + parameters: + + int_{network-role}_v6_subnet_id: + type: string + description: Neutron subnet UUID for the int_{network-role} network - db_1_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: int_oam_int_net_id } - fixed_ips: - - “ip_address”: {get_param: db_oam_int_ip_1}}] - - “ip_address”: {get_param: db_oam_int_v6_ip_1}}] Property: allowed\_address\_pairs, Map Property: ip\_address +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- cgit 1.2.3-korg