5.2.5.9. Contrail Resource Parameters

ONAP requires the parameter names of certain Contrail Resources to follow specific naming conventions. This section provides these requirements.

5.2.5.9.1. Contrail Network Parameters

Contrail based resources may require references to a Contrail network using the network FQDN.

5.2.5.9.1.1. External Networks

Requirement: R-02164
updated: casablanca
validation_mode: static
target: VNF
keyword: MUST

When a VNF’s Heat Orchestration Template’s Contrail resource has a property that references an external network that requires the network’s Fully Qualified Domain Name (FQDN), the property parameter

  • MUST follow the format {network-role}_net_fqdn
  • MUST be declared as type string
  • MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File
Requirement: R-92193
validation_mode: static
target: VNF
keyword: MUST NOT

A VNF’s Heat Orchestration Template’s parameter {network-role}_net_fqdn MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

Example: Parameter declaration

parameters:
  {network-role}_net_fqdn:
    type: string
    description: Contrail FQDN for the {network-role} network

Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface Reference to a Network FQDN.

In this example, the {network-role} has been defined as oam to represent an oam network and the {vm-type} has been defined as fw for firewall. The Contrail resource OS::ContrailV2::VirtualMachineInterface property virtual_network_refs references a contrail network FQDN.

fw_0_oam_vmi_0:
  type: OS::ContrailV2::VirtualMachineInterface
  properties:
    name:
      str_replace:
        template: VM_NAME_virtual_machine_interface_1
        params:
          VM_NAME: { get_param: fw_name_0 }
    virtual_machine_interface_properties:
      virtual_machine_interface_properties_service_interface_type: {
      get_param: oam_protected_interface_type }
    virtual_network_refs:
      - get_param: oam_net_fqdn
    security_group_refs:
      - get_param: fw_sec_grp_id

5.2.5.9.2. Interface Route Table Prefixes for Contrail InterfaceRoute Table

Requirement: R-28222
updated: casablanca
validation_mode: static
target: VNF
keyword: MUST

If a VNF’s Heat Orchestration Template OS::ContrailV2::InterfaceRouteTable resource interface_route_table_routes property interface_route_table_routes_route map property parameter name MUST follow the format

  • {vm-type}_{network-role}_route_prefixes
Requirement: R-19756
updated: casablanca
validation_mode: static
target: VNF
keyword: MUST

If a VNF’s Heat Orchestration Template OS::ContrailV2::InterfaceRouteTable resource interface_route_table_routes property interface_route_table_routes_route map property parameter {vm-type}_{network-role}_route_prefixes MUST be defined as type json.

Requirement: R-76682
updated: casablanca
validation_mode: static
target: VNF
keyword: MUST NOT

If a VNF’s Heat Orchestration Template OS::ContrailV2::InterfaceRouteTable resource interface_route_table_routes property interface_route_table_routes_route map property parameter {vm-type}_{network-role}_route_prefixes MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The parameter {vm-type}_{network-role}_route_prefixes supports IP addresses in the format:

  1. Host IP Address (e.g., 10.10.10.10)
  2. CIDR Notation format (e.g., 10.0.0.0/28)

Example Parameter Definition

parameters:
  {vm-type}_{network-role}_route_prefixes:
    type: json
    description: JSON list of Contrail Interface Route Table route prefixes

Example:

parameters:
  vnf_name:
    type: string
    description: Unique name for this VF instance
  fw_oam_route_prefixes:
    type: json
    description: prefix for the ServiceInstance InterfaceRouteTable
  int_fw_dns_trusted_interface_type:
    type: string
    description: service_interface_type for ServiceInstance

resources:
  <resource name>:
    type: OS::ContrailV2::InterfaceRouteTable
    depends_on: [resource name of OS::ContrailV2::ServiceInstance]
    properties:
      name:
        str_replace:
          template: VNF_NAME_interface_route_table
          params:
            VNF_NAME: { get_param: vnf_name }
      interface_route_table_routes:
        interface_route_table_routes_route: { get_param: fw_oam_route_prefixes }
      service_instance_refs:
        - get_resource: <resource name of OS::ContrailV2::ServiceInstance>
      service_instance_refs_data:
        - service_instance_refs_data_interface_type: { get_param: oam_interface_type }

5.2.5.9.3. Resource OS::ContrailV2::InstanceIp

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

<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 }]

5.2.5.9.3.1. 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

<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 that apply to the resource OS::Neutron property fixed_ips map property ip_address parameter.

Requirement: R-100000
validation_mode: static
target: VNF
keyword: MUST
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.

Requirement: R-100010
validation_mode: static
target: VNF
keyword: MUST
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 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
Requirement: R-100020
validation_mode: static
target: VNF
keyword: MUST NOT
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

parameters:

  {vm-type}_{network-role}_ip_{index}:
    type: string
    description: Fixed IPv4 assignment for {vm-type} VM {index} on the {network-role} network
Requirement: R-100030
validation_mode: static
target: VNF
keyword: MUST
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
Requirement: R-100040
validation_mode: static
target: VNF
keyword: MUST NOT
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

parameters:

  {vm-type}_{network-role}_ips:
    type: comma_delimited_list
    description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network
Requirement: R-100050
validation_mode: static
target: VNF
keyword: MUST
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 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
Requirement: R-100060
validation_mode: static
target: VNF
keyword: MUST NOT
introduced: dublin

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

parameters:

  {vm-type}_{network-role}_v6_ip_{index}:
    type: string
    description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network
Requirement: R-100070
validation_mode: static
target: VNF
keyword: MUST
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 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
Requirement: R-100080
validation_mode: static
target: VNF
keyword: MUST NOT
introduced: dublin

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

parameters:

  {vm-type}_{network-role}_v6_ips:
    type: comma_delimited_list
    description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network
Requirement: R-100090
validation_mode: static
target: VNF
keyword: MUST
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 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
Requirement: R-100100
validation_mode: static
target: VNF
keyword: MUST
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

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
Requirement: R-100110
validation_mode: static
target: VNF
keyword: MUST
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
Requirement: R-100120
validation_mode: static
target: VNF
keyword: MUST
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

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
Requirement: R-100130
validation_mode: static
target: VNF
keyword: MUST
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 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
Requirement: R-100140
validation_mode: static
target: VNF
keyword: MUST
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

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
Requirement: R-100150
validation_mode: static
target: VNF
keyword: MUST
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
Requirement: R-100160
validation_mode: static
target: VNF
keyword: MUST
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

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
Requirement: R-100170
validation_mode: static
target: VNF
keyword: MUST NOT
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.

Requirement: R-100180
validation_mode: static
target: VNF
keyword: MUST
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

The property instance_ip_address uses the same parameter naming convention as the property fixed_ips and Map Property ip_address in OS::Neutron::Port. The resource is assigning an ONAP SDN-C 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 fw for firewall.

fw_0_oam_protected_vmi_0_IP_0:
  type: OS::ContrailV2::InstanceIp
  depends_on:
    - fw_0_oam_protected_vmi_0
  properties:
    virtual_machine_interface_refs:
      - get_resource: fw_0_oam_protected_vmi_0
    virtual_network_refs:
      - get_param: oam_protected_net_fqdn
    instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }

5.2.5.9.3.2. Resource OS::ContrailV2::InstanceIp Property subnet_uuid

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 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.

Requirement: R-100190
validation_mode: static
target: VNF
keyword: MUST
introduced: dublin

The VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp property subnet_uuid parameter MUST be declared type string.

Requirement: R-100200
validation_mode: static
target: VNF
keyword: MUST
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.

Requirement: R-100210
validation_mode: static
target: VNF
keyword: MUST NOT
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

parameters:

  {network-role}_subnet_id:
    type: string
    description: Neutron IPv4 subnet UUID for the {network-role} network
Requirement: R-100220
validation_mode: static
target: VNF
keyword: MUST
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.

Requirement: R-100230
validation_mode: static
target: VNF
keyword: MUST NOT
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

parameters:

  {network-role}_v6_subnet_id:
    type: string
    description: Neutron IPv6 subnet UUID for the {network-role} network
Requirement: R-100240
validation_mode: static
target: VNF
keyword: MUST
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.

Requirement: R-100250
validation_mode: static
target: VNF
keyword: MUST NOT
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

parameters:

  int_{network-role}_subnet_id:
    type: string
    description: Neutron IPv4 subnet UUID for the int_{network-role} network
Requirement: R-100260
validation_mode: static
target: VNF
keyword: MUST
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.

Requirement: R-100270
validation_mode: static
target: VNF
keyword: MUST NOT
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

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 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 “fw” for firewall.

fw_0_oam_protected_vmi_0_IP_0:
  type: OS::ContrailV2::InstanceIp
  depends_on:
  - fw_0_oam_protected_vmi_0
  properties:
    virtual_machine_interface_refs:
      - get_resource: fw_0_oam_protected_vmi_0
    virtual_network_refs:
      - get_param: oam_protected_net_fqdn
    subnet_uuid: { get_param: oam_protected_subnet_id }

5.2.5.9.4. 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,

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 follow the same requirements that apply to the resource OS::Neutron::Port property allowed_address_pairs, map property ip_address parameter.

5.2.5.9.4.1. External Networks

Requirement: R-100280
validation_mode: static
target: VNF
keyword: MUST NOT
introduced: dublin

If a VNF’s Heat Orchestration Template’s resource OS::ContrailV2::VirtualMachineInterface is attaching to an external network (per the ONAP definition, see Requirement R-57424), 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 enumerated in the VNF’s Heat Orchestration Template’s Environment File.

Requirement: R-100310
validation_mode: static
target: VNF
keyword: MUST
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) is required to be supported by the ONAP data model, 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 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.

The ONAP data model can only support one IPv4 VIP address.

Example Parameter Definition

parameters:

  {vm-type}_{network-role}_floating_ip:
    type: string
    description: IPv4 VIP for {vm-type} VMs on the {network-role} network
Requirement: R-100330
validation_mode: static
target: VNF
keyword: MUST
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) is required to be supported by the ONAP data model, 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 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.

The ONAP data model can only support one IPv6 VIP address.

Example Parameter Definition

parameters:

  {vm-type}_{network-role}_floating_v6_ip:
    type: string
    description: IPv6 VIP for {vm-type} VMs on the {network-role} network
Requirement: R-100350
validation_mode: static
target: VNF
keyword: MUST NOT
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 the IPv4 VIP address and/or IPv6 VIP address is not supported by the ONAP data model, 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 name MAY use any naming convention. That is, there is no ONAP mandatory parameter naming convention.
  • Parameter MAY be declared as type string or type

comma_delimited_list.

And the OS::ContrailV2::VirtualMachineInterface resource MUST contain resource-level metadata (not property-level).

And the metadata format MUST must contain the key value aap_exempt with a list of all 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

parameters not supported by the ONAP data model.

5.2.5.9.4.2. Internal Networks

Requirement: R-100360
validation_mode: static
target: VNF
keyword: MUST
introduced: dublin

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.

Requirement: R-100370
validation_mode: static
target: VNF
keyword: MUST
introduced: dublin

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.

5.2.5.9.4.3. Example

Example OS::ContrailV2::VirtualMachineInterface

<resource ID>:
  type: OS::ContrailV2::VirtualMachineInterface
  properties:
    name: { get_param: name }
    fq_name: { get_param: fq_name }
    ecmp_hashing_include_fields:
      {
        ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
        ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
        ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
        ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
        ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
        ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
      }
    virtual_machine_interface_host_routes:
      {
        virtual_machine_interface_host_routes_route:
          [{
            virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
            virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
            virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
            virtual_machine_interface_host_routes_route_community_attributes:
              {
                virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
              },
          }],
      }
    virtual_machine_interface_mac_addresses:
      {
        virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
      }
    virtual_machine_interface_dhcp_option_list:
      {
        virtual_machine_interface_dhcp_option_list_dhcp_option:
          [{
            virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
            virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
            virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value_bytes: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value_bytes },
          }],
      }
    virtual_machine_interface_bindings:
      {
        virtual_machine_interface_bindings_key_value_pair:
          [{
            virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
            virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
          }],
      }
    virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
    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: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix },
                virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len },
              },
            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
          }],
      }
    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 },
          }],
      }
    virtual_machine_interface_fat_flow_protocols:
      {
        virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
          [{
            virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
            virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
          }],
      }
    virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
    port_security_enabled: { get_param: port_security_enabled }
    virtual_machine_interface_properties:
      {
        virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
        virtual_machine_interface_properties_interface_mirror:
          {
            virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
            virtual_machine_interface_properties_interface_mirror_mirror_to:
              {
                virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
                virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
                virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
                virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
                virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
                virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
                virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
                virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
                virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
                  {
                    virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_ip_address },
                    virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_mac_address },
                    virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vni: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vni },
                  },
              },
          },
        virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
        virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
      }
    display_name: { get_param: display_name }
    service_health_check_refs: [{ get_param: service_health_check_refs }]
    routing_instance_refs: [{ get_param: routing_instance_refs }]
    routing_instance_refs_data:
      [{
        routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
        routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
        routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
        routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
        routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
        routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
        routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
        routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
      }]
    security_group_refs: [{ get_param: security_group_refs }]
    physical_interface_refs: [{ get_param: physical_interface_refs }]
    port_tuple_refs: [{ get_param: port_tuple_refs }]
    interface_route_table_refs: [{ get_param: interface_route_table_refs }]
    virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
    virtual_network_refs: [{ get_param: virtual_network_refs }]
    virtual_machine_refs: [{ get_param: virtual_machine_refs }]
    qos_config_refs: [{ get_param: qos_config_refs }]
    virtual_machine: { get_param: virtual_machine }
    project: { get_param: project }