1 .. Licensed under a Creative Commons Attribution 4.0 International License.
 
   2 .. http://creativecommons.org/licenses/by/4.0
 
   3 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
 
   5 Contrail Resource Parameters
 
   6 ----------------------------
 
   8 ONAP requires the parameter names of certain Contrail Resources to
 
   9 follow specific naming conventions. This section provides these
 
  12 Contrail Network Parameters
 
  13 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
  15 Contrail based resources may require references to a Contrail network
 
  16 using the network FQDN.
 
  18 ONAP External Networks
 
  19 ~~~~~~~~~~~~~~~~~~~~~~
 
  25     :validation_mode: static
 
  28     When a VNF's Heat Orchestration Template's Contrail resource
 
  30     references an ONAP external network (per the
 
  31     ONAP definition, see Requirement R-57424 and R-16968),
 
  32     that requires the network's
 
  33     Fully Qualified Domain Name (FQDN), the property parameter
 
  35     * **MUST** follow the format ``{network-role}_net_fqdn``
 
  36     * **MUST** be declared as type ``string``
 
  37     * **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
  44     :validation_mode: static
 
  46     A VNF's Heat Orchestration Template's parameter
 
  47     ``{network-role}_net_fqdn``
 
  48     **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
  51 *Example: Parameter declaration*
 
  56     {network-role}_net_fqdn:
 
  58       description: Contrail FQDN for the {network-role} network
 
  60 *Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface
 
  61 Reference to a Network FQDN.*
 
  63 In this example, the ``{network-role}`` has been defined as oam to represent
 
  64 an oam network and the ``{vm-type}`` has been defined as fw for firewall.
 
  65 The Contrail resource ``OS::ContrailV2::VirtualMachineInterface`` property
 
  66 ``virtual_network_refs`` references a contrail network FQDN.
 
  71     type: OS::ContrailV2::VirtualMachineInterface
 
  75           template: VM_NAME_virtual_machine_interface_1
 
  77             VM_NAME: { get_param: fw_name_0 }
 
  78       virtual_machine_interface_properties:
 
  79         virtual_machine_interface_properties_service_interface_type: {
 
  80         get_param: oam_protected_interface_type }
 
  82         - get_param: oam_net_fqdn
 
  84         - get_param: fw_sec_grp_id
 
  86 Interface Route Table Prefixes for Contrail InterfaceRoute Table
 
  87 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
  93     :validation_mode: static
 
  96     If a VNF's Heat Orchestration Template
 
  97     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
  98     ``interface_route_table_routes`` property
 
  99     ``interface_route_table_routes_route`` map property parameter name
 
 100     **MUST** follow the format
 
 102     * ``{vm-type}_{network-role}_route_prefixes``
 
 108     :validation_mode: static
 
 111     If a VNF's Heat Orchestration Template
 
 112     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
 113     ``interface_route_table_routes`` property
 
 114     ``interface_route_table_routes_route`` map property parameter
 
 115     ``{vm-type}_{network-role}_route_prefixes``
 
 116     **MUST** be defined as type ``json``.
 
 122     :validation_mode: static
 
 125     If a VNF's Heat Orchestration Template
 
 126     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
 127     ``interface_route_table_routes`` property
 
 128     ``interface_route_table_routes_route`` map property parameter
 
 129     ``{vm-type}_{network-role}_route_prefixes``
 
 130     **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
 133 The parameter ``{vm-type}_{network-role}_route_prefixes``
 
 134 supports IP addresses in the format:
 
 136 1. Host IP Address (e.g., 10.10.10.10)
 
 138 2. CIDR Notation format (e.g., 10.0.0.0/28)
 
 141 *Example Parameter Definition*
 
 146     {vm-type}_{network-role}_route_prefixes:
 
 148       description: JSON list of Contrail Interface Route Table route prefixes
 
 157       description: Unique name for this VF instance
 
 158     fw_oam_route_prefixes:
 
 160       description: prefix for the ServiceInstance InterfaceRouteTable
 
 161     int_fw_dns_trusted_interface_type:
 
 163       description: service_interface_type for ServiceInstance
 
 167       type: OS::ContrailV2::InterfaceRouteTable
 
 168       depends_on: [resource name of OS::ContrailV2::ServiceInstance]
 
 172             template: VNF_NAME_interface_route_table
 
 174               VNF_NAME: { get_param: vnf_name }
 
 175         interface_route_table_routes:
 
 176           interface_route_table_routes_route: { get_param: fw_oam_route_prefixes }
 
 177         service_instance_refs:
 
 178           - get_resource: <resource name of OS::ContrailV2::ServiceInstance>
 
 179         service_instance_refs_data:
 
 180           - service_instance_refs_data_interface_type: { get_param: oam_interface_type }
 
 183 Resource OS::ContrailV2::InstanceIp
 
 184 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 186 The Contrail resource ``OS::ContrailV2::InstanceIp`` has two properties
 
 187 that parameters **MUST** follow an explicit naming convention.  The
 
 188 properties are ``instance_ip_address`` and ``subnet_uuid``.
 
 190 *Example OS::ContrailV2::InstanceIp Resource*
 
 195     type: OS::ContrailV2::InstanceIp
 
 197       name: { get_param: name }
 
 198       fq_name: { get_param: fq_name }
 
 199       display_name: { get_param: display_name }
 
 200       secondary_ip_tracking_ip:
 
 202           secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix },
 
 203           secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len },
 
 205       instance_ip_address: { get_param: instance_ip_address }
 
 206       instance_ip_mode: { get_param: instance_ip_mode }
 
 207       subnet_uuid: { get_param: subnet_uuid }
 
 208       instance_ip_family: { get_param: instance_ip_family }
 
 211           annotations_key_value_pair:
 
 213               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
 214               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
 217       instance_ip_local_ip: { get_param: instance_ip_local_ip }
 
 218       instance_ip_secondary: { get_param: instance_ip_secondary }
 
 219       physical_router_refs: [{ get_param: physical_router_refs }]
 
 220       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
 221       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
 224 Resource OS::ContrailV2::InstanceIp Property instance_ip_address
 
 225 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 227 A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp``
 
 228 property ``instance_ip_address`` parameter
 
 229 **MUST** follow the same requirements
 
 230 that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map
 
 231 property ``ip_address`` parameter.
 
 237     :validation_mode: static
 
 241     The VNF's Heat Orchestration Template's
 
 242     resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 244     **MUST** be declared as either type ``string`` or type
 
 245     ``comma_delimited_list``.
 
 252     :validation_mode: static
 
 256     When the VNF's Heat Orchestration Template's Resource
 
 257     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 258     to an ONAP external network
 
 259     (per the ONAP definition, see Requirement R-57424 and R-16968),
 
 260     and an IPv4 address is assigned
 
 261     using the property ``instance_ip_address``
 
 262     and the parameter type is defined as a string,
 
 263     the parameter name **MUST** follow the
 
 266     * ``{vm-type}_{network-role}_ip_{index}``
 
 270     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
 271     * ``{network-role}`` is the {network-role} of the ONAP external network
 
 272     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 273       VNF's Heat Orchestration Template and **MUST** increment by one
 
 279     :validation_mode: static
 
 283     The VNF's Heat Orchestration Template's Resource
 
 284     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 286     ``{vm-type}_{network-role}_ip_{index}``
 
 287     **MUST NOT** be enumerated in the
 
 288     VNF's Heat Orchestration Template's Environment File.
 
 290 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 291 the value at orchestration to the Heat Orchestration Template.
 
 293 *Example ONAP External Network IPv4 Address string Parameter Definition*
 
 299     {vm-type}_{network-role}_ip_{index}:
 
 301       description: Fixed IPv4 assignment for {vm-type} VM {index} on the {network-role} network
 
 308     :validation_mode: static
 
 313     When the VNF's Heat Orchestration Template's Resource
 
 314     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 315     to an ONAP external network (per the
 
 316     ONAP definition, see Requirement R-57424 and R-16968),
 
 317     and an IPv4 address is assigned
 
 318     using the property ``instance_ip_address``
 
 319     and the parameter type is defined as a
 
 320     ``comma_delimited_list``,
 
 321     the parameter name **MUST** follow the
 
 324       * ``{vm-type}_{network-role}_ips``
 
 328       * ``{vm-type}`` is the {vm-type} associated with the
 
 330       * ``{network-role}`` is the {network-role} of the ONAP external
 
 338     :validation_mode: static
 
 342     The VNF's Heat Orchestration Template's Resource
 
 343     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 345     ``{vm-type}_{network-role}_ips``
 
 346     **MUST NOT** be enumerated in the
 
 347     VNF's Heat Orchestration Template's Environment File.
 
 349 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 350 the value at orchestration to the Heat Orchestration Template.
 
 352 *Example External Network IPv4 Address comma_delimited_list
 
 353 Parameter Definition*
 
 359     {vm-type}_{network-role}_ips:
 
 360       type: comma_delimited_list
 
 361       description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network
 
 369     :validation_mode: static
 
 373     When the VNF's Heat Orchestration Template's Resource
 
 374     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 375     to an ONAP external network
 
 377     ONAP definition, see Requirement R-57424 and R-16968),
 
 378     and an IPv6 address is assigned
 
 379     using the property ``instance_ip_address``
 
 380     and the parameter type is defined as a string,
 
 381     the parameter name **MUST** follow the
 
 384     * ``{vm-type}_{network-role}_v6_ip_{index}``
 
 388     * ``{vm-type}`` is the {vm-type} associated with the
 
 390     * ``{network-role}`` is the {network-role} of the ONAP external network
 
 391     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 392       VNF's Heat Orchestration Template and **MUST** increment by one
 
 398     :validation_mode: static
 
 402     The VNF's Heat Orchestration Template's Resource
 
 403     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 405     ``{vm-type}_{network-role}_v6_ip_{index}``
 
 406     **MUST NOT** be enumerated in the
 
 407     VNF's Heat Orchestration Template's Environment File.
 
 409 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 410 the value at orchestration to the Heat Orchestration Template.
 
 412 *Example ONAP External Network IPv6 Address string Parameter Definition*
 
 418     {vm-type}_{network-role}_v6_ip_{index}:
 
 420       description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network
 
 427     :validation_mode: static
 
 432     When the VNF's Heat Orchestration Template's Resource
 
 433     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 434     to an ONAP external network (per the
 
 435     ONAP definition, see Requirement R-57424 and R-16968),
 
 436     and an IPv6 address is assigned
 
 437     using the property ``instance_ip_address``
 
 438     and the parameter type is defined as a
 
 439     ``comma_delimited_list``,
 
 440     the parameter name **MUST** follow the
 
 443       * ``{vm-type}_{network-role}_v6_ips``
 
 447       * ``{vm-type}`` is the {vm-type} associated with the
 
 449       * ``{network-role}`` is the {network-role} of the ONAP external
 
 457     :validation_mode: static
 
 461     The VNF's Heat Orchestration Template's Resource
 
 462     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 464     ``{vm-type}_{network-role}_v6_ips``
 
 465     **MUST NOT** be enumerated in the
 
 466     VNF's Heat Orchestration Template's Environment File.
 
 468 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 469 the value at orchestration to the Heat Orchestration Template.
 
 471 *Example ONAP External Network IPv6 Address comma_delimited_list Parameter
 
 478     {vm-type}_{network-role}_v6_ips:
 
 479       type: comma_delimited_list
 
 480       description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network
 
 488     :validation_mode: static
 
 492     When the VNF's Heat Orchestration Template's Resource
 
 493     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 494     to an ONAP internal network (per the
 
 495     ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
 
 496     and an IPv4 address is assigned
 
 497     using the property ``instance_ip_address``
 
 498     and the parameter type is
 
 499     defined as a ``string``,
 
 500     the parameter name **MUST** follow the
 
 503     * ``{vm-type}_int_{network-role}_ip_{index}``
 
 507     * ``{vm-type}`` is the {vm-type} associated with the
 
 509     * ``{network-role}`` is the {network-role} of the ONAP internal network
 
 510     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 511       VNF's Heat Orchestration Template and **MUST** increment by one
 
 518     :validation_mode: static
 
 522     The VNF's Heat Orchestration Template's Resource
 
 523     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 525     ``{vm-type}_int_{network-role}_ip_{index}``
 
 526     **MUST** be enumerated in the
 
 527     VNF's Heat Orchestration Template's Environment File.
 
 529 The IP address is local to the VNF's ONAP internal network and is (re)used
 
 530 in every VNF spin up, thus the constant value is declared in the VNF's
 
 531 Heat Orchestration Template's Environment File.
 
 533 *Example ONAP Internal Network IPv4 Address string Parameter Definition*
 
 539     {vm-type}_int_{network-role}_ip_{index}:
 
 541       description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network
 
 548     :validation_mode: static
 
 553     When the VNF's Heat Orchestration Template's Resource
 
 554     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 555     to an ONAP internal network (per the
 
 556     ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
 
 557     and an IPv4 address is assigned
 
 558     using the property ``instance_ip_address``
 
 559     and the parameter type is defined as a
 
 560     ``comma_delimited_list``,
 
 561     the parameter name **MUST** follow the
 
 564       * ``{vm-type}_int_{network-role}_ips``
 
 568       * ``{vm-type}`` is the {vm-type} associated with the
 
 570       * ``{network-role}`` is the {network-role} of the ONAP internal
 
 577     :validation_mode: static
 
 581     The VNF's Heat Orchestration Template's Resource
 
 582     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 584     ``{vm-type}_int_{network-role}_int_ips``
 
 585     **MUST** be enumerated in the
 
 586     VNF's Heat Orchestration Template's Environment File.
 
 588 The IP address is local to the VNF's ONAP internal network and is (re)used
 
 589 in every VNF spin up, thus the constant value is declared in the VNF's
 
 590 Heat Orchestration Template's Environment File.
 
 592 *Example ONAP Internal Network IPv4 Address comma_delimited_list
 
 593 Parameter Definition*
 
 599     {vm-type}_int_{network-role}_ips:
 
 600       type: comma_delimited_list
 
 601       description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network
 
 609     :validation_mode: static
 
 613     When the VNF's Heat Orchestration Template's Resource
 
 614     ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
 
 615     ONAP internal network (per the
 
 616     ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
 
 617     and an IPv6 address is assigned
 
 618     using the property ``instance_ip_address``
 
 619     and the parameter type is defined as a
 
 621     the parameter name **MUST** follow the
 
 624     * ``{vm-type}_int_{network-role}_v6_ip_{index}``
 
 628     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
 629     * ``{network-role}`` is the {network-role} of the ONAP internal network
 
 630     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 631       VNF's Heat Orchestration Template and **MUST** increment by one
 
 638     :validation_mode: static
 
 642     The VNF's Heat Orchestration Template's Resource
 
 643     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 645     ``{vm-type}_int_{network-role}_v6_ip_{index}``
 
 646     **MUST** be enumerated in the
 
 647     VNF's Heat Orchestration Template's Environment File.
 
 649 The IP address is local to the VNF's ONAP internal network and is (re)used
 
 650 in every VNF spin up, thus the constant value is declared in the VNF's
 
 651 Heat Orchestration Template's Environment File.
 
 653 *Example ONAP Internal Network IPv6 Address string Parameter Definition*
 
 659     {vm-type}_int_{network-role}_v6_ip_{index}:
 
 661       description: Fixed IPv6 assignment for {vm-type} VM {index} on the int_{network-role} network
 
 668     :validation_mode: static
 
 673     When the VNF's Heat Orchestration Template's Resource
 
 674     ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
 
 675     ONAP internal network (per the
 
 676     ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
 
 677     and an IPv6 address is assigned
 
 678     using the property ``instance_ip_address``
 
 679     and the parameter type is defined as a
 
 680     ``comma_delimited_list``,
 
 681     the parameter name **MUST** follow the
 
 684       * ``{vm-type}_int_{network-role}_v6_ips``
 
 688       * ``{vm-type}`` is the {vm-type} associated with the
 
 690       * ``{network-role}`` is the {network-role} of the ONAP internal
 
 697     :validation_mode: static
 
 701     The VNF's Heat Orchestration Template's Resource
 
 702     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 703     map property ``ip_address`` parameter
 
 704     ``{vm-type}_int_{network-role}_v6_ips``
 
 705     **MUST** be enumerated in the
 
 706     VNF's Heat Orchestration Template's Environment File.
 
 708 The IP address is local to the VNF's ONAP internal network and is (re)used
 
 709 in every VNF spin up, thus the constant value is declared in the VNF's
 
 710 Heat Orchestration Template's Environment File.
 
 712 *Example ONAP Internal Network IPv6 Address comma_delimited_list Parameter
 
 720     {vm-type}_int_{network-role}_v6_ips:
 
 721       type: comma_delimited_list
 
 722       description: Fixed IPv6 assignments for {vm-type} VMs on the int_{network-role} network
 
 728     :validation_mode: static
 
 733     The VNF's Heat Orchestration Template's Resource
 
 734     ``OS::ContrailV2::InstanceIp``
 
 735     property ``instance_ip_address``
 
 736     parameter associated with an ONAP external network, i.e.,
 
 738      * ``{vm-type}_{network-role}_ip_{index}``
 
 739      * ``{vm-type}_{network-role}_v6_ip_{index}``
 
 740      * ``{vm-type}_{network-role}_ips``
 
 741      * ``{vm-type}_{network-role}_v6_ips``
 
 744     **MUST NOT** be enumerated in the Heat Orchestration
 
 745     Template's Environment File.  ONAP provides the IP address
 
 746     assignments at orchestration time.
 
 753     :validation_mode: static
 
 758     The VNF's Heat Orchestration Template's Resource
 
 759     ``OS::ContrailV2::InstanceIp``
 
 760     property ``instance_ip_address``
 
 761     parameter associated with an ONAP internal network, i.e.,
 
 763      * ``{vm-type}_int_{network-role}_ip_{index}``
 
 764      * ``{vm-type}_int_{network-role}_v6_ip_{index}``
 
 765      * ``{vm-type}_int_{network-role}_ips``
 
 766      * ``{vm-type}_int_{network-role}_v6_ips``
 
 769     **MUST** be enumerated in the Heat Orchestration
 
 770     Template's Environment File and IP addresses **MUST** be
 
 774 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
 
 777 The property instance_ip_address uses the same parameter naming
 
 778 convention as the property fixed_ips and Map Property ip_address in
 
 779 OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP
 
 780 Address. The {network-role} has been defined as oam_protected to
 
 781 represent an oam protected network and the {vm-type} has been defined as
 
 786   fw_0_oam_protected_vmi_0_IP_0:
 
 787     type: OS::ContrailV2::InstanceIp
 
 789       - fw_0_oam_protected_vmi_0
 
 791       virtual_machine_interface_refs:
 
 792         - get_resource: fw_0_oam_protected_vmi_0
 
 793       virtual_network_refs:
 
 794         - get_param: oam_protected_net_fqdn
 
 795       instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }
 
 798 Resource OS::ContrailV2::InstanceIp Property subnet_uuid
 
 799 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 801 A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp``
 
 802 property ``subnet_uuid`` parameter
 
 803 **MUST** follow the same requirements
 
 804 that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map
 
 805 property ``subnet`` parameter.
 
 807 The resource ``OS::ContrailV2::InstanceIp`` property
 
 808 ``subnet_uuid`` parameter is used when a
 
 809 port is requesting an IP assignment via
 
 810 OpenStack's DHCP Service (i.e., cloud assigned).
 
 812 The IP address assignment will be made from the specified subnet.
 
 814 Specifying the subnet is not required; it is optional.
 
 816 If the network (external or internal) that the port is attaching
 
 817 to only contains one subnet, specifying the subnet is
 
 818 superfluous.  The IP address will be assigned from the one existing
 
 821 If the network (external or internal) that the port is attaching
 
 822 to contains two or more subnets, specifying the subnet in the
 
 823 ``instance_ip_address`` property determines which
 
 824 subnet the IP address will be assigned from.
 
 826 If the network (external or internal) that the port is attaching
 
 827 to contains two or more subnets, and the subnet is not is not
 
 828 specified, OpenStack will randomly determine which subnet
 
 829 the IP address will be assigned from.
 
 831 The property ``instance_ip_address`` is used to assign IPs to a port.
 
 832 The property ``subnet_uuid`` specifies the subnet the IP is assigned from.
 
 838     :validation_mode: static
 
 842     The VNF's Heat Orchestration Template's
 
 843     resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 845     **MUST** be declared type ``string``.
 
 851     :validation_mode: static
 
 856     When the VNF's Heat Orchestration Template's
 
 857     resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 858     to an ONAP external network (per the ONAP definition, see
 
 859     Requirement R-57424 and R-16968),
 
 860     and an IPv4 address is being cloud assigned by OpenStack's DHCP Service
 
 861     and the ONAP external network IPv4 subnet is to be specified
 
 862     using the property ``subnet_uuid``, the parameter
 
 863     **MUST** follow the naming convention
 
 865       * ``{network-role}_subnet_id``
 
 869       * ``{network-role}`` is the network role of the ONAP external network.
 
 871 Note that ONAP only supports cloud assigned IP addresses from one IPv4 subnet
 
 877     :validation_mode: static
 
 881     The VNF's Heat Orchestration Template's Resource
 
 882     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 884     ``{network-role}_subnet_id``
 
 885     **MUST NOT** be enumerated in the
 
 886     VNF's Heat Orchestration Template's Environment File.
 
 888 ONAP's SDN-Controller provides the network's subnet's UUID
 
 889 value at orchestration to the Heat Orchestration Template.
 
 891 *Example Parameter Definition*
 
 897     {network-role}_subnet_id:
 
 899       description: Neutron IPv4 subnet UUID for the {network-role} network
 
 905     :validation_mode: static
 
 910     When the VNF's Heat Orchestration Template's
 
 911     resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 912     to an ONAP external network (per the ONAP definition, see
 
 913     Requirement R-57424 and R-16968),
 
 914     and an IPv6 address is being cloud assigned by OpenStack's DHCP Service
 
 915     and the ONAP external network IPv6 subnet is to be specified
 
 916     using the property ``subnet_uuid``, the parameter
 
 917     **MUST** follow the naming convention
 
 919       * ``{network-role}_v6_subnet_id``
 
 923       * ``{network-role}`` is the network role of the ONAP external network.
 
 926 Note that ONAP only supports cloud assigned IP addresses from one IPv6 subnet
 
 932     :validation_mode: static
 
 936     The VNF's Heat Orchestration Template's Resource
 
 937     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 939     ``{network-role}_v6_subnet_id``
 
 940     **MUST NOT** be enumerated in the
 
 941     VNF's Heat Orchestration Template's Environment File.
 
 943 ONAP's SDN-Controller provides the network's subnet's UUID
 
 944 value at orchestration to the Heat Orchestration Template.
 
 946 *Example Parameter Definition*
 
 952     {network-role}_v6_subnet_id:
 
 954       description: Neutron IPv6 subnet UUID for the {network-role} network
 
 960     :validation_mode: static
 
 967       * the VNF's Heat Orchestration Template's
 
 968         resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
 
 969         assigning an IP address
 
 970         to an ONAP internal network (per the ONAP definition, see
 
 971         Requirements R-52425 and R-46461 and R-35666)
 
 972         that is created in the Base Module, AND
 
 973       * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND
 
 974       * the ONAP internal network IPv4 subnet is to be specified
 
 975         using the property ``subnet_uuid``,
 
 977     the parameter **MUST** follow the naming convention
 
 979       * ``int_{network-role}_subnet_id``
 
 983       * ``{network-role}`` is the network role of the ONAP internal network
 
 985     Note that the parameter **MUST** be defined as an ``output`` parameter in
 
 992     :validation_mode: static
 
 996     The VNF's Heat Orchestration Template's Resource
 
 997     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 999     ``int_{network-role}_subnet_id``
 
1000     **MUST NOT** be enumerated in the
 
1001     VNF's Heat Orchestration Template's Environment File.
 
1004 The assumption is that ONAP internal networks are created in the base module.
 
1005 The subnet network ID will be passed as an output parameter
 
1006 (e.g., ONAP Base Module Output Parameter) to the incremental modules.
 
1007 In the incremental modules, the output parameter name will be defined as
 
1010 *Example Parameter Definition*
 
1012 .. code-block:: yaml
 
1016     int_{network-role}_subnet_id:
 
1018       description: Neutron IPv4 subnet UUID for the int_{network-role} network
 
1025     :validation_mode: static
 
1032       * the VNF's Heat Orchestration Template's
 
1033         resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
 
1035         to an ONAP internal network (per the ONAP definition,
 
1036         see Requirements R-52425 and R-46461 and R-35666)
 
1037         that is created in the Base Module, AND
 
1038       * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND
 
1039       * the ONAP internal network IPv6 subnet is to be specified
 
1040         using the property ``subnet_uuid``,
 
1042     the parameter **MUST** follow the naming convention
 
1044       * ``int_{network-role}_v6_subnet_id``
 
1046     where ``{network-role}`` is the network role of the ONAP internal network.
 
1048     Note that the parameter **MUST** be defined as an ``output`` parameter in
 
1055     :validation_mode: static
 
1059     The VNF's Heat Orchestration Template's Resource
 
1060     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
1062     ``int_{network-role}_v6_subnet_id``
 
1063     **MUST NOT** be enumerated in the
 
1064     VNF's Heat Orchestration Template's Environment File.
 
1067 *Example Parameter Definition*
 
1069 .. code-block:: yaml
 
1073     int_{network-role}_v6_subnet_id:
 
1075       description: Neutron subnet UUID for the int_{network-role} network
 
1077 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
 
1080 The property ``instance_ip_address`` uses the same parameter naming
 
1081 convention as the property ``fixed_ips`` and Map Property ``subnet`` in
 
1082 ``OS::Neutron::Port``. The resource is assigning a cloud assigned IP
 
1083 Address. The ``{network-role}`` has been defined as "oam_protected" to
 
1084 represent an oam protected network and the ``{vm-type}`` has been defined as
 
1087 .. code-block:: yaml
 
1089   fw_0_oam_protected_vmi_0_IP_0:
 
1090     type: OS::ContrailV2::InstanceIp
 
1092     - fw_0_oam_protected_vmi_0
 
1094       virtual_machine_interface_refs:
 
1095         - get_resource: fw_0_oam_protected_vmi_0
 
1096       virtual_network_refs:
 
1097         - get_param: oam_protected_net_fqdn
 
1098       subnet_uuid: { get_param: oam_protected_subnet_id }
 
1101 OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs
 
1102 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
1104 A VNF's Heat Orchestration Templates resource
 
1105 ``OS::ContrailV2::VirtualMachineInterface`` map property,
 
1107 ``virtual_machine_interface_allowed_address_pairs``,
 
1109 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1111 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1113 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1115 parameter **MUST** follow the same requirements that apply to the
 
1116 resource ``OS::Neutron::Port`` property
 
1117 ``allowed_address_pairs``, map property ``ip_address`` parameter.
 
1119 ONAP External Networks
 
1120 ~~~~~~~~~~~~~~~~~~~~~~
 
1125     :validation_mode: static
 
1130     If a VNF's Heat Orchestration Template's resource
 
1131     ``OS::ContrailV2::VirtualMachineInterface``
 
1132     is attaching to an ONAP external network (per the
 
1133     ONAP definition, see Requirement R-57424 and R-16968), the
 
1136     ``virtual_machine_interface_allowed_address_pairs``,
 
1138     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1140     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1142     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1145     **MUST NOT** be enumerated in the
 
1146     VNF's Heat Orchestration Template's Environment File.
 
1152     :validation_mode: static
 
1157     When the VNF's Heat Orchestration Template's resource
 
1158     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP external
 
1160     ONAP definition, see Requirement R-57424 and R-16968),
 
1161     and an IPv4 Virtual IP (VIP)
 
1162     is required to be supported by the ONAP data model,
 
1165     ``virtual_machine_interface_allowed_address_pairs``,
 
1167     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1169     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1171     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1173     parameter name **MUST** follow the naming convention
 
1175     * ``{vm-type}_{network-role}_floating_ip``
 
1179     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
1180     * ``{network-role}`` is the {network-role} of the ONAP external network
 
1182     And the parameter **MUST** be declared as type ``string``.
 
1184     The ONAP data model can only support one IPv4 VIP address.
 
1187 *Example Parameter Definition*
 
1189 .. code-block:: yaml
 
1193     {vm-type}_{network-role}_floating_ip:
 
1195       description: IPv4 VIP for {vm-type} VMs on the {network-role} network
 
1201     :validation_mode: static
 
1206     When the VNF's Heat Orchestration Template's resource
 
1207     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP
 
1210     ONAP definition, see Requirement R-57424 and R-16968),
 
1211     and an IPv6 Virtual IP (VIP)
 
1212     is required to be supported by the ONAP data model,
 
1215     ``virtual_machine_interface_allowed_address_pairs``,
 
1217     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1219     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1221     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1223     parameter name **MUST** follow the naming convention
 
1225     * ``{vm-type}_{network-role}_floating_v6_ip``
 
1229     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
1230     * ``{network-role}`` is the {network-role} of the ONAP external network
 
1232     And the parameter **MUST** be declared as type ``string``.
 
1234     The ONAP data model can only support one IPv6 VIP address.
 
1237 *Example Parameter Definition*
 
1239 .. code-block:: yaml
 
1243     {vm-type}_{network-role}_floating_v6_ip:
 
1245       description: IPv6 VIP for {vm-type} VMs on the {network-role} network
 
1251     :validation_mode: static
 
1255     When the VNF's Heat Orchestration Template's resource
 
1256     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
1257     ONAP external network
 
1258     (per the ONAP definition, see Requirement R-57424 and R-16968),
 
1259     and the IPv4 VIP address and/or IPv6 VIP address
 
1260     is **not** supported by the ONAP data model,
 
1263     ``virtual_machine_interface_allowed_address_pairs``,
 
1265     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1267     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1269     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1271     * Parameter name **MAY** use any naming convention.  That is, there is no
 
1272       ONAP mandatory parameter naming convention.
 
1273     * Parameter **MAY** be declared as type ``string`` or type
 
1274     ``comma_delimited_list``.
 
1276     And the ``OS::ContrailV2::VirtualMachineInterface`` resource
 
1277     **MUST** contain resource-level ``metadata`` (not property-level).
 
1279     And the ``metadata`` format **MUST**  must contain the
 
1280     key value ``aap_exempt`` with a list of all map property
 
1282     ``virtual_machine_interface_allowed_address_pairs``,
 
1284     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1286     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1288     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1290     parameters **not** supported by the ONAP data model.
 
1293 ONAP Internal Networks
 
1294 ~~~~~~~~~~~~~~~~~~~~~~
 
1300     :validation_mode: static
 
1304     When the VNF's Heat Orchestration Template's Resource
 
1305     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
1306     ONAP internal network (per the
 
1307     ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
 
1308     and an IPv4 Virtual IP (VIP)
 
1309     address is assigned using the map property,
 
1310     ``virtual_machine_interface_allowed_address_pairs,
 
1311     virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
 
1312     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
 
1313     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1314     , the parameter name **MUST** follow the
 
1317       * ``{vm-type}_int_{network-role}_floating_ip``
 
1321       * ``{vm-type}`` is the {vm-type} associated with the
 
1323       * ``{network-role}`` is the {network-role} of the ONAP internal
 
1326     And the parameter **MUST** be declared as ``type: string``
 
1327     and **MUST** be enumerated in the environment file.
 
1331     the parameter name **MUST** follow the
 
1334       * ``{vm-type}_int_{network-role}_floating_ips``
 
1338       * ``{vm-type}`` is the {vm-type} associated with the
 
1340       * ``{network-role}`` is the {network-role} of the ONAP internal
 
1343     And the parameter **MUST** be declared as ``type: comma_delimited_list``
 
1344     and **MUST** be enumerated in the environment file.
 
1351     :validation_mode: static
 
1355     When the VNF's Heat Orchestration Template's Resource
 
1356     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
1357     ONAP internal network (per the
 
1358     ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
 
1359     and an IPv6 Virtual IP (VIP)
 
1361     using the map property,
 
1362     ``virtual_machine_interface_allowed_address_pairs,
 
1363     virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
 
1364     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
 
1365     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1366     , the parameter name **MUST** follow the
 
1369       * ``{vm-type}_int_{network-role}_floating_v6_ip``
 
1373       * ``{vm-type}`` is the {vm-type} associated with the
 
1375       * ``{network-role}`` is the {network-role} of the ONAP internal
 
1378     And the parameter **MUST** be declared as ``type: string``
 
1379     and **MUST** be enumerated in the environment file
 
1383     the parameter name **MUST** follow the
 
1386       * ``{vm-type}_int_{network-role}_floating_v6_ips``
 
1390       * ``{vm-type}`` is the {vm-type} associated with the
 
1392       * ``{network-role}`` is the {network-role} of the ONAP internal
 
1395     And the parameter **MUST** be declared as ``type: comma_delimited_list``
 
1396     and **MUST** be enumerated in the environment file.
 
1403 *Example OS::ContrailV2::VirtualMachineInterface*
 
1405 .. code-block:: yaml
 
1408     type: OS::ContrailV2::VirtualMachineInterface
 
1410       name: { get_param: name }
 
1411       fq_name: { get_param: fq_name }
 
1412       ecmp_hashing_include_fields:
 
1414           ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
 
1415           ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
 
1416           ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
 
1417           ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
 
1418           ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
 
1419           ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
 
1421       virtual_machine_interface_host_routes:
 
1423           virtual_machine_interface_host_routes_route:
 
1425               virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
 
1426               virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
 
1427               virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
 
1428               virtual_machine_interface_host_routes_route_community_attributes:
 
1430                   virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
 
1434       virtual_machine_interface_mac_addresses:
 
1436           virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
 
1438       virtual_machine_interface_dhcp_option_list:
 
1440           virtual_machine_interface_dhcp_option_list_dhcp_option:
 
1442               virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
 
1443               virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
 
1444               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 },
 
1447       virtual_machine_interface_bindings:
 
1449           virtual_machine_interface_bindings_key_value_pair:
 
1451               virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
 
1452               virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
 
1455       virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
 
1456       virtual_machine_interface_allowed_address_pairs:
 
1458           virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
 
1460               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
 
1462                   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 },
 
1463                   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 },
 
1465               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
 
1466               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
 
1471           annotations_key_value_pair:
 
1473               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
1474               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
1477       virtual_machine_interface_fat_flow_protocols:
 
1479           virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
 
1481               virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
 
1482               virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
 
1485       virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
 
1486       port_security_enabled: { get_param: port_security_enabled }
 
1487       virtual_machine_interface_properties:
 
1489           virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
 
1490           virtual_machine_interface_properties_interface_mirror:
 
1492               virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
 
1493               virtual_machine_interface_properties_interface_mirror_mirror_to:
 
1495                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
 
1496                   virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
 
1497                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
 
1498                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
 
1499                   virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
 
1500                   virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
 
1501                   virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
 
1502                   virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
 
1503                   virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
 
1505                       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 },
 
1506                       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 },
 
1507                       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 },
 
1511           virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
 
1512           virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
 
1514       display_name: { get_param: display_name }
 
1515       service_health_check_refs: [{ get_param: service_health_check_refs }]
 
1516       routing_instance_refs: [{ get_param: routing_instance_refs }]
 
1517       routing_instance_refs_data:
 
1519           routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
 
1520           routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
 
1521           routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
 
1522           routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
 
1523           routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
 
1524           routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
 
1525           routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
 
1526           routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
 
1528       security_group_refs: [{ get_param: security_group_refs }]
 
1529       physical_interface_refs: [{ get_param: physical_interface_refs }]
 
1530       port_tuple_refs: [{ get_param: port_tuple_refs }]
 
1531       interface_route_table_refs: [{ get_param: interface_route_table_refs }]
 
1532       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
1533       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
1534       virtual_machine_refs: [{ get_param: virtual_machine_refs }]
 
1535       qos_config_refs: [{ get_param: qos_config_refs }]
 
1536       virtual_machine: { get_param: virtual_machine }
 
1537       project: { get_param: project }