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.
 
  25     :validation_mode: static
 
  28     When a VNF's Heat Orchestration Template's Contrail resource
 
  30     references an external network that requires the network's
 
  31     Fully Qualified Domain Name (FQDN), the property parameter
 
  33     * **MUST** follow the format ``{network-role}_net_fqdn``
 
  34     * **MUST** be declared as type ``string``
 
  35     * **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
  42     :validation_mode: static
 
  44     A VNF's Heat Orchestration Template's parameter
 
  45     ``{network-role}_net_fqdn``
 
  46     **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
  49 *Example: Parameter declaration*
 
  54     {network-role}_net_fqdn:
 
  56       description: Contrail FQDN for the {network-role} network
 
  58 *Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface
 
  59 Reference to a Network FQDN.*
 
  61 In this example, the {network-role} has been defined as oam to represent
 
  62 an oam network and the {vm-type} has been defined as fw for firewall.
 
  63 The Contrail resource OS::ContrailV2::VirtualMachineInterface property
 
  64 virtual_network_refs references a contrail network FQDN.
 
  69     type: OS::ContrailV2::VirtualMachineInterface
 
  73           template: VM_NAME_virtual_machine_interface_1
 
  75             VM_NAME: { get_param: fw_name_0 }
 
  76       virtual_machine_interface_properties:
 
  77         virtual_machine_interface_properties_service_interface_type: {
 
  78         get_param: oam_protected_interface_type }
 
  80         - get_param: oam_net_fqdn
 
  82         - get_param: fw_sec_grp_id
 
  84 Interface Route Table Prefixes for Contrail InterfaceRoute Table
 
  85 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
  91     :validation_mode: static
 
  94     If a VNF's Heat Orchestration Template
 
  95     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
  96     ``interface_route_table_routes`` property
 
  97     ``interface_route_table_routes_route`` map property parameter name
 
  98     **MUST** follow the format
 
 100     * ``{vm-type}_{network-role}_route_prefixes``
 
 106     :validation_mode: static
 
 109     If a VNF's Heat Orchestration Template
 
 110     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
 111     ``interface_route_table_routes`` property
 
 112     ``interface_route_table_routes_route`` map property parameter
 
 113     ``{vm-type}_{network-role}_route_prefixes``
 
 114     **MUST** be defined as type ``json``.
 
 120     :validation_mode: static
 
 123     If a VNF's Heat Orchestration Template
 
 124     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
 125     ``interface_route_table_routes`` property
 
 126     ``interface_route_table_routes_route`` map property parameter
 
 127     ``{vm-type}_{network-role}_route_prefixes``
 
 128     **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
 131 The parameter ``{vm-type}_{network-role}_route_prefixes``
 
 132 supports IP addresses in the format:
 
 134 1. Host IP Address (e.g., 10.10.10.10)
 
 136 2. CIDR Notation format (e.g., 10.0.0.0/28)
 
 139 *Example Parameter Definition*
 
 144     {vm-type}_{network-role}_route_prefixes:
 
 146       description: JSON list of Contrail Interface Route Table route prefixes
 
 155       description: Unique name for this VF instance
 
 156     fw_oam_route_prefixes:
 
 158       description: prefix for the ServiceInstance InterfaceRouteTable
 
 159     int_fw_dns_trusted_interface_type:
 
 161       description: service_interface_type for ServiceInstance
 
 165       type: OS::ContrailV2::InterfaceRouteTable
 
 166       depends_on: [resource name of OS::ContrailV2::ServiceInstance]
 
 170             template: VNF_NAME_interface_route_table
 
 172               VNF_NAME: { get_param: vnf_name }
 
 173         interface_route_table_routes:
 
 174           interface_route_table_routes_route: { get_param: fw_oam_route_prefixes }
 
 175         service_instance_refs:
 
 176           - get_resource: <resource name of OS::ContrailV2::ServiceInstance>
 
 177         service_instance_refs_data:
 
 178           - service_instance_refs_data_interface_type: { get_param: oam_interface_type }
 
 181 Resource OS::ContrailV2::InstanceIp
 
 182 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 184 The Contrail resource ``OS::ContrailV2::InstanceIp`` has two properties
 
 185 that parameters **MUST** follow an explicit naming convention.  The
 
 186 properties are ``instance_ip_address`` and ``subnet_uuid``.
 
 188 *Example OS::ContrailV2::InstanceIp Resource*
 
 193     type: OS::ContrailV2::InstanceIp
 
 195       name: { get_param: name }
 
 196       fq_name: { get_param: fq_name }
 
 197       display_name: { get_param: display_name }
 
 198       secondary_ip_tracking_ip:
 
 200           secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix },
 
 201           secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len },
 
 203       instance_ip_address: { get_param: instance_ip_address }
 
 204       instance_ip_mode: { get_param: instance_ip_mode }
 
 205       subnet_uuid: { get_param: subnet_uuid }
 
 206       instance_ip_family: { get_param: instance_ip_family }
 
 209           annotations_key_value_pair:
 
 211               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
 212               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
 215       instance_ip_local_ip: { get_param: instance_ip_local_ip }
 
 216       instance_ip_secondary: { get_param: instance_ip_secondary }
 
 217       physical_router_refs: [{ get_param: physical_router_refs }]
 
 218       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
 219       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
 222 Resource OS::ContrailV2::InstanceIp Property instance_ip_address
 
 223 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 226 The Contrail resource ``OS::ContrailV2::InstanceIp`` has two properties
 
 227 that parameters **MUST** follow an explicit naming convention.  The
 
 228 properties are ``instance_ip_address`` and ``subnet_uuid``.
 
 230 *Example OS::ContrailV2::InstanceIp Resource*
 
 235     type: OS::ContrailV2::InstanceIp
 
 237       name: { get_param: name }
 
 238       fq_name: { get_param: fq_name }
 
 239       display_name: { get_param: display_name }
 
 240       secondary_ip_tracking_ip:
 
 242           secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix },
 
 243           secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len },
 
 245       instance_ip_address: { get_param: instance_ip_address }
 
 246       instance_ip_mode: { get_param: instance_ip_mode }
 
 247       subnet_uuid: { get_param: subnet_uuid }
 
 248       instance_ip_family: { get_param: instance_ip_family }
 
 251           annotations_key_value_pair:
 
 253               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
 254               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
 257       instance_ip_local_ip: { get_param: instance_ip_local_ip }
 
 258       instance_ip_secondary: { get_param: instance_ip_secondary }
 
 259       physical_router_refs: [{ get_param: physical_router_refs }]
 
 260       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
 261       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
 265 A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp``
 
 266 property ``instance_ip_address`` parameter
 
 267 **MUST** follow the same requirements
 
 268 that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map
 
 269 property ``ip_address`` parameter.
 
 275     :validation_mode: static
 
 279     The VNF's Heat Orchestration Template's
 
 280     resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 282     **MUST** be declared as either type ``string`` or type
 
 283     ``comma_delimited_list``.
 
 290     :validation_mode: static
 
 293     When the VNF's Heat Orchestration Template's Resource
 
 294     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 295     to an external network (per the ONAP definition, see Requirement R-57424),
 
 296     and an IPv4 address is assigned
 
 297     using the property ``instance_ip_address``
 
 298     and the parameter type is defined as a string,
 
 299     the parameter name **MUST** follow the
 
 302     * ``{vm-type}_{network-role}_ip_{index}``
 
 306     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
 307     * ``{network-role}`` is the {network-role} of the external network
 
 308     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 309       VNF's Heat Orchestration Template and **MUST** increment by one
 
 315     :validation_mode: static
 
 319     The VNF's Heat Orchestration Template's Resource
 
 320     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 322     ``{vm-type}_{network-role}_ip_{index}``
 
 323     **MUST NOT** be enumerated in the
 
 324     VNF's Heat Orchestration Template's Environment File.
 
 326 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 327 the value at orchestration to the Heat Orchestration Template.
 
 329 *Example External Network IPv4 Address string Parameter Definition*
 
 335     {vm-type}_{network-role}_ip_{index}:
 
 337       description: Fixed IPv4 assignment for {vm-type} VM {index} on the {network-role} network
 
 344     :validation_mode: static
 
 348     When the VNF's Heat Orchestration Template's Resource
 
 349     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 350     to an external network (per the
 
 351     ONAP definition, see Requirement R-57424),
 
 352     and an IPv4 address is assigned
 
 353     using the property ``instance_ip_address``
 
 354     and the parameter type is defined as a
 
 355     ``comma_delimited_list``,
 
 356     the parameter name **MUST** follow the
 
 359       * ``{vm-type}_{network-role}_ips``
 
 363       * ``{vm-type}`` is the {vm-type} associated with the
 
 365       * ``{network-role}`` is the {network-role} of the external
 
 373     :validation_mode: static
 
 377     The VNF's Heat Orchestration Template's Resource
 
 378     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 380     ``{vm-type}_{network-role}_ips``
 
 381     **MUST NOT** be enumerated in the
 
 382     VNF's Heat Orchestration Template's Environment File.
 
 384 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 385 the value at orchestration to the Heat Orchestration Template.
 
 387 *Example External Network IPv4 Address comma_delimited_list
 
 388 Parameter Definition*
 
 394     {vm-type}_{network-role}_ips:
 
 395       type: comma_delimited_list
 
 396       description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network
 
 404     :validation_mode: static
 
 407     When the VNF's Heat Orchestration Template's Resource
 
 408     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 409     to an external network
 
 411     ONAP definition, see Requirement R-57424),
 
 412     and an IPv6 address is assigned
 
 413     using the property ``instance_ip_address``
 
 414     and the parameter type is defined as a string,
 
 415     the parameter name **MUST** follow the
 
 418     * ``{vm-type}_{network-role}_v6_ip_{index}``
 
 422     * ``{vm-type}`` is the {vm-type} associated with the
 
 424     * ``{network-role}`` is the {network-role} of the external network
 
 425     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 426       VNF's Heat Orchestration Template and **MUST** increment by one
 
 432     :validation_mode: static
 
 436     The VNF's Heat Orchestration Template's Resource
 
 437     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 439     ``{vm-type}_{network-role}_v6_ip_{index}``
 
 440     **MUST NOT** be enumerated in the
 
 441     VNF's Heat Orchestration Template's Environment File.
 
 443 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 444 the value at orchestration to the Heat Orchestration Template.
 
 446 *Example External Network IPv6 Address string Parameter Definition*
 
 452     {vm-type}_{network-role}_v6_ip_{index}:
 
 454       description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network
 
 461     :validation_mode: static
 
 465     When the VNF's Heat Orchestration Template's Resource
 
 466     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 467     to an external network (per the
 
 468     ONAP definition, see Requirement R-57424),
 
 469     and an IPv6 address is assigned
 
 470     using the property ``instance_ip_address``
 
 471     and the parameter type is defined as a
 
 472     ``comma_delimited_list``,
 
 473     the parameter name **MUST** follow the
 
 476       * ``{vm-type}_{network-role}_v6_ips``
 
 480       * ``{vm-type}`` is the {vm-type} associated with the
 
 482       * ``{network-role}`` is the {network-role} of the external
 
 490     :validation_mode: static
 
 494     The VNF's Heat Orchestration Template's Resource
 
 495     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 497     ``{vm-type}_{network-role}_v6_ips``
 
 498     **MUST NOT** be enumerated in the
 
 499     VNF's Heat Orchestration Template's Environment File.
 
 501 ONAP's SDN-Controller assigns the IP Address and ONAP provides
 
 502 the value at orchestration to the Heat Orchestration Template.
 
 504 *Example External Network IPv6 Address comma_delimited_list Parameter
 
 511     {vm-type}_{network-role}_v6_ips:
 
 512       type: comma_delimited_list
 
 513       description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network
 
 521     :validation_mode: static
 
 524     When the VNF's Heat Orchestration Template's Resource
 
 525     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 526     to an internal network (per the
 
 527     ONAP definition, see Requirements R-52425 and R-46461),
 
 528     and an IPv4 address is assigned
 
 529     using the property ``instance_ip_address``
 
 530     and the parameter type is
 
 531     defined as a ``string``,
 
 532     the parameter name **MUST** follow the
 
 535     * ``{vm-type}_int_{network-role}_ip_{index}``
 
 539     * ``{vm-type}`` is the {vm-type} associated with the
 
 541     * ``{network-role}`` is the {network-role} of the internal network
 
 542     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 543       VNF's Heat Orchestration Template and **MUST** increment by one
 
 550     :validation_mode: static
 
 554     The VNF's Heat Orchestration Template's Resource
 
 555     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 557     ``{vm-type}_int_{network-role}_ip_{index}``
 
 558     **MUST** be enumerated in the
 
 559     VNF's Heat Orchestration Template's Environment File.
 
 561 The IP address is local to the VNF's internal network and is (re)used
 
 562 in every VNF spin up, thus the constant value is declared in the VNF's
 
 563 Heat Orchestration Template's Environment File.
 
 565 *Example Internal Network IPv4 Address string Parameter Definition*
 
 571     {vm-type}_int_{network-role}_ip_{index}:
 
 573       description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network
 
 580     :validation_mode: static
 
 584     When the VNF's Heat Orchestration Template's Resource
 
 585     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 586     to an internal network (per the
 
 587     ONAP definition, see Requirements R-52425 and R-46461),
 
 588     and an IPv4 address is assigned
 
 589     using the property ``instance_ip_address``
 
 590     and the parameter type is defined as a
 
 591     ``comma_delimited_list``,
 
 592     the parameter name **MUST** follow the
 
 595       * ``{vm-type}_int_{network-role}_ips``
 
 599       * ``{vm-type}`` is the {vm-type} associated with the
 
 601       * ``{network-role}`` is the {network-role} of the internal
 
 608     :validation_mode: static
 
 612     The VNF's Heat Orchestration Template's Resource
 
 613     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 615     ``{vm-type}_int_{network-role}_int_ips``
 
 616     **MUST** be enumerated in the
 
 617     VNF's Heat Orchestration Template's Environment File.
 
 619 The IP address is local to the VNF's internal network and is (re)used
 
 620 in every VNF spin up, thus the constant value is declared in the VNF's
 
 621 Heat Orchestration Template's Environment File.
 
 623 *Example Internal Network IPv4 Address comma_delimited_list
 
 624 Parameter Definition*
 
 630     {vm-type}_int_{network-role}_ips:
 
 631       type: comma_delimited_list
 
 632       description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network
 
 640     :validation_mode: static
 
 643     When the VNF's Heat Orchestration Template's Resource
 
 644     ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
 
 645     internal network (per the
 
 646     ONAP definition, see Requirements R-52425 and R-46461),
 
 647     and an IPv6 address is assigned
 
 648     using the property ``instance_ip_address``
 
 649     and the parameter type is defined as a
 
 651     the parameter name **MUST** follow the
 
 654     * ``{vm-type}_int_{network-role}_v6_ip_{index}``
 
 658     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
 659     * ``{network-role}`` is the {network-role} of the internal network
 
 660     * ``{index}`` is a numeric value that **MUST** start at zero in a
 
 661       VNF's Heat Orchestration Template and **MUST** increment by one
 
 668     :validation_mode: static
 
 672     The VNF's Heat Orchestration Template's Resource
 
 673     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 675     ``{vm-type}_int_{network-role}_v6_ip_{index}``
 
 676     **MUST** be enumerated in the
 
 677     VNF's Heat Orchestration Template's Environment File.
 
 679 The IP address is local to the VNF's internal network and is (re)used
 
 680 in every VNF spin up, thus the constant value is declared in the VNF's
 
 681 Heat Orchestration Template's Environment File.
 
 683 *Example Internal Network IPv6 Address string Parameter Definition*
 
 689     {vm-type}_int_{network-role}_v6_ip_{index}:
 
 691       description: Fixed IPv6 assignment for {vm-type} VM {index} on the int_{network-role} network
 
 698     :validation_mode: static
 
 702     When the VNF's Heat Orchestration Template's Resource
 
 703     ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
 
 704     internal network (per the
 
 705     ONAP definition, see Requirements R-52425 and R-46461),
 
 706     and an IPv6 address is assigned
 
 707     using the property ``instance_ip_address``
 
 708     and the parameter type is defined as a
 
 709     ``comma_delimited_list``,
 
 710     the parameter name **MUST** follow the
 
 713       * ``{vm-type}_int_{network-role}_v6_ips``
 
 717       * ``{vm-type}`` is the {vm-type} associated with the
 
 719       * ``{network-role}`` is the {network-role} of the internal
 
 726     :validation_mode: static
 
 730     The VNF's Heat Orchestration Template's Resource
 
 731     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 732     map property ``ip_address`` parameter
 
 733     ``{vm-type}_int_{network-role}_v6_ips``
 
 734     **MUST** be enumerated in the
 
 735     VNF's Heat Orchestration Template's Environment File.
 
 737 The IP address is local to the VNF's internal network and is (re)used
 
 738 in every VNF spin up, thus the constant value is declared in the VNF's
 
 739 Heat Orchestration Template's Environment File.
 
 741 *Example Internal Network IPv6 Address comma_delimited_list Parameter
 
 749     {vm-type}_int_{network-role}_v6_ips:
 
 750       type: comma_delimited_list
 
 751       description: Fixed IPv6 assignments for {vm-type} VMs on the int_{network-role} network
 
 757     :validation_mode: static
 
 761     The VNF's Heat Orchestration Template's Resource
 
 762     ``OS::ContrailV2::InstanceIp``
 
 763     property ``instance_ip_address``
 
 764     parameter associated with an external network, i.e.,
 
 766      * ``{vm-type}_{network-role}_ip_{index}``
 
 767      * ``{vm-type}_{network-role}_v6_ip_{index}``
 
 768      * ``{vm-type}_{network-role}_ips``
 
 769      * ``{vm-type}_{network-role}_v6_ips``
 
 772     **MUST NOT** be enumerated in the Heat Orchestration
 
 773     Template's Environment File.  ONAP provides the IP address
 
 774     assignments at orchestration time.
 
 781     :validation_mode: static
 
 785     The VNF's Heat Orchestration Template's Resource
 
 786     ``OS::ContrailV2::InstanceIp``
 
 787     property ``instance_ip_address``
 
 788     parameter associated with an internal network, i.e.,
 
 790      * ``{vm-type}_int_{network-role}_ip_{index}``
 
 791      * ``{vm-type}_int_{network-role}_v6_ip_{index}``
 
 792      * ``{vm-type}_int_{network-role}_ips``
 
 793      * ``{vm-type}_int_{network-role}_v6_ips``
 
 796     **MUST** be enumerated in the Heat Orchestration
 
 797     Template's Environment File and IP addresses **MUST** be
 
 801 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
 
 804 The property instance_ip_address uses the same parameter naming
 
 805 convention as the property fixed_ips and Map Property ip_address in
 
 806 OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP
 
 807 Address. The {network-role} has been defined as oam_protected to
 
 808 represent an oam protected network and the {vm-type} has been defined as
 
 813   fw_0_oam_protected_vmi_0_IP_0:
 
 814     type: OS::ContrailV2::InstanceIp
 
 816       - fw_0_oam_protected_vmi_0
 
 818       virtual_machine_interface_refs:
 
 819         - get_resource: fw_0_oam_protected_vmi_0
 
 820       virtual_network_refs:
 
 821         - get_param: oam_protected_net_fqdn
 
 822       instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }
 
 825 Resource OS::ContrailV2::InstanceIp Property subnet_uuid
 
 826 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 828 A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp``
 
 829 property ``subnet_uuid`` parameter
 
 830 **MUST** follow the same requirements
 
 831 that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map
 
 832 property ``subnet`` parameter.
 
 834 The resource ``OS::ContrailV2::InstanceIp`` property
 
 835 ``subnet_uuid`` parameter is used when a
 
 836 port is requesting an IP assignment via
 
 837 OpenStack's DHCP Service (i.e., cloud assigned).
 
 839 The IP address assignment will be made from the specified subnet.
 
 841 Specifying the subnet is not required; it is optional.
 
 843 If the network (external or internal) that the port is attaching
 
 844 to only contains one subnet, specifying the subnet is
 
 845 superfluous.  The IP address will be assigned from the one existing
 
 848 If the network (external or internal) that the port is attaching
 
 849 to contains two or more subnets, specifying the subnet in the
 
 850 ``instance_ip_address`` property determines which
 
 851 subnet the IP address will be assigned from.
 
 853 If the network (external or internal) that the port is attaching
 
 854 to contains two or more subnets, and the subnet is not is not
 
 855 specified, OpenStack will randomly determine which subnet
 
 856 the IP address will be assigned from.
 
 858 The property ``instance_ip_address`` is used to assign IPs to a port.
 
 859 The property ``subnet_uuid`` specifies the subnet the IP is assigned from.
 
 865     :validation_mode: static
 
 869     The VNF's Heat Orchestration Template's
 
 870     resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 872     **MUST** be declared type ``string``.
 
 878     :validation_mode: static
 
 882     When the VNF's Heat Orchestration Template's
 
 883     resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 884     to an external network (per the ONAP definition, see
 
 885     Requirement R-57424),
 
 886     and an IPv4 address is being cloud assigned by OpenStack's DHCP Service
 
 887     and the external network IPv4 subnet is to be specified
 
 888     using the property ``subnet_uuid``, the parameter
 
 889     **MUST** follow the naming convention
 
 891       * ``{network-role}_subnet_id``
 
 895       * ``{network-role}`` is the network role of the network.
 
 897 Note that ONAP only supports cloud assigned IP addresses from one IPv4 subnet
 
 903     :validation_mode: static
 
 907     The VNF's Heat Orchestration Template's Resource
 
 908     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 910     ``{network-role}_subnet_id``
 
 911     **MUST NOT** be enumerated in the
 
 912     VNF's Heat Orchestration Template's Environment File.
 
 914 ONAP's SDN-Controller provides the network's subnet's UUID
 
 915 value at orchestration to the Heat Orchestration Template.
 
 917 *Example Parameter Definition*
 
 923     {network-role}_subnet_id:
 
 925       description: Neutron IPv4 subnet UUID for the {network-role} network
 
 931     :validation_mode: static
 
 935     When the VNF's Heat Orchestration Template's
 
 936     resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 937     to an external network (per the ONAP definition, see
 
 938     Requirement R-57424),
 
 939     and an IPv6 address is being cloud assigned by OpenStack's DHCP Service
 
 940     and the external network IPv6 subnet is to be specified
 
 941     using the property ``subnet_uuid``, the parameter
 
 942     **MUST** follow the naming convention
 
 944       * ``{network-role}_v6_subnet_id``
 
 948       * ``{network-role}`` is the network role of the network.
 
 951 Note that ONAP only supports cloud assigned IP addresses from one IPv6 subnet
 
 957     :validation_mode: static
 
 961     The VNF's Heat Orchestration Template's Resource
 
 962     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 964     ``{network-role}_v6_subnet_id``
 
 965     **MUST NOT** be enumerated in the
 
 966     VNF's Heat Orchestration Template's Environment File.
 
 968 ONAP's SDN-Controller provides the network's subnet's UUID
 
 969 value at orchestration to the Heat Orchestration Template.
 
 971 *Example Parameter Definition*
 
 977     {network-role}_v6_subnet_id:
 
 979       description: Neutron IPv6 subnet UUID for the {network-role} network
 
 985     :validation_mode: static
 
 991       * the VNF's Heat Orchestration Template's
 
 992         resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
 
 993         assigning an IP address
 
 994         to an internal network (per the ONAP definition, see
 
 995         Requirements R-52425 and R-46461)
 
 996         that is created in the Base Module, AND
 
 997       * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND
 
 998       * the internal network IPv4 subnet is to be specified
 
 999         using the property ``subnet_uuid``,
 
1001     the parameter **MUST** follow the naming convention
 
1003       * ``int_{network-role}_subnet_id``
 
1007       * ``{network-role}`` is the network role of the internal network
 
1009     Note that the parameter **MUST** be defined as an ``output`` parameter in
 
1016     :validation_mode: static
 
1020     The VNF's Heat Orchestration Template's Resource
 
1021     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
1023     ``int_{network-role}_subnet_id``
 
1024     **MUST NOT** be enumerated in the
 
1025     VNF's Heat Orchestration Template's Environment File.
 
1028 The assumption is that internal networks are created in the base module.
 
1029 The subnet network ID will be passed as an output parameter
 
1030 (e.g., ONAP Base Module Output Parameter) to the incremental modules.
 
1031 In the incremental modules, the output parameter name will be defined as
 
1034 *Example Parameter Definition*
 
1036 .. code-block:: yaml
 
1040     int_{network-role}_subnet_id:
 
1042       description: Neutron IPv4 subnet UUID for the int_{network-role} network
 
1049     :validation_mode: static
 
1055       * the VNF's Heat Orchestration Template's
 
1056         resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
 
1058         to an internal network (per the ONAP definition,
 
1059         see Requirements R-52425 and R-46461)
 
1060         that is created in the Base Module, AND
 
1061       * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND
 
1062       * the internal network IPv6 subnet is to be specified
 
1063         using the property ``subnet_uuid``,
 
1065     the parameter **MUST** follow the naming convention
 
1066     ``int_{network-role}_v6_subnet_id``,
 
1067     where ``{network-role}`` is the network role of the internal network.
 
1069     Note that the parameter **MUST** be defined as an ``output`` parameter in
 
1076     :validation_mode: static
 
1080     The VNF's Heat Orchestration Template's Resource
 
1081     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
1083     ``int_{network-role}_v6_subnet_id``
 
1084     **MUST NOT** be enumerated in the
 
1085     VNF's Heat Orchestration Template's Environment File.
 
1088 *Example Parameter Definition*
 
1090 .. code-block:: yaml
 
1094     int_{network-role}_v6_subnet_id:
 
1096       description: Neutron subnet UUID for the int_{network-role} network
 
1098 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
 
1101 The property ``instance_ip_address`` uses the same parameter naming
 
1102 convention as the property ``fixed_ips`` and Map Property ``subnet`` in
 
1103 OS::Neutron::Port. The resource is assigning a cloud assigned IP
 
1104 Address. The ``{network-role}`` has been defined as "oam_protected" to
 
1105 represent an oam protected network and the ``{vm-type}`` has been defined as
 
1108 .. code-block:: yaml
 
1110   fw_0_oam_protected_vmi_0_IP_0:
 
1111     type: OS::ContrailV2::InstanceIp
 
1113     - fw_0_oam_protected_vmi_0
 
1115       virtual_machine_interface_refs:
 
1116         - get_resource: fw_0_oam_protected_vmi_0
 
1117       virtual_network_refs:
 
1118         - get_param: oam_protected_net_fqdn
 
1119       subnet_uuid: { get_param: oam_protected_subnet_id }
 
1122 OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs
 
1123 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
1125 A VNF's Heat Orchestration Templates resource
 
1126 ``OS::ContrailV2::VirtualMachineInterface`` map property,
 
1128 ``virtual_machine_interface_allowed_address_pairs``,
 
1130 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1132 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1134 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1136 parameter **MUST** follow the same requirements that apply to the
 
1137 resource ``OS::Neutron::Port`` property
 
1138 ``allowed_address_pairs``, map property ``ip_address`` parameter.
 
1146     :validation_mode: static
 
1150     If a VNF's Heat Orchestration Template's resource
 
1151     ``OS::ContrailV2::VirtualMachineInterface``
 
1152     is attaching to an external network (per the
 
1153     ONAP definition, see Requirement R-57424), the
 
1156     ``virtual_machine_interface_allowed_address_pairs``,
 
1158     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1160     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1162     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1165     **MUST NOT** be enumerated in the
 
1166     VNF's Heat Orchestration Template's Environment File.
 
1172     :validation_mode: static
 
1176     When the VNF's Heat Orchestration Template's resource
 
1177     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
 
1179     ONAP definition, see Requirement R-57424),
 
1180     and an IPv4 Virtual IP (VIP)
 
1181     is required to be supported by the ONAP data model,
 
1184     ``virtual_machine_interface_allowed_address_pairs``,
 
1186     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1188     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1190     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1192     parameter name **MUST** follow the naming convention
 
1194     * ``{vm-type}_{network-role}_floating_ip``
 
1198     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
1199     * ``{network-role}`` is the {network-role} of the external network
 
1201     And the parameter **MUST** be declared as type ``string``.
 
1203     The ONAP data model can only support one IPv4 VIP address.
 
1206 *Example Parameter Definition*
 
1208 .. code-block:: yaml
 
1212     {vm-type}_{network-role}_floating_ip:
 
1214       description: IPv4 VIP for {vm-type} VMs on the {network-role} network
 
1220     :validation_mode: static
 
1224     When the VNF's Heat Orchestration Template's resource
 
1225     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
 
1227     ONAP definition, see Requirement R-57424),
 
1228     and an IPv6 Virtual IP (VIP)
 
1229     is required to be supported by the ONAP data model,
 
1232     ``virtual_machine_interface_allowed_address_pairs``,
 
1234     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1236     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1238     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1240     parameter name **MUST** follow the naming convention
 
1242     * ``{vm-type}_{network-role}_floating_v6_ip``
 
1246     * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
 
1247     * ``{network-role}`` is the {network-role} of the external network
 
1249     And the parameter **MUST** be declared as type ``string``.
 
1251     The ONAP data model can only support one IPv6 VIP address.
 
1254 *Example Parameter Definition*
 
1256 .. code-block:: yaml
 
1260     {vm-type}_{network-role}_floating_v6_ip:
 
1262       description: IPv6 VIP for {vm-type} VMs on the {network-role} network
 
1268     :validation_mode: static
 
1271     When the VNF's Heat Orchestration Template's resource
 
1272     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
1274     (per the ONAP definition, see Requirement R-57424),
 
1275     and the IPv4 VIP address and/or IPv6 VIP address
 
1276     is **not** supported by the ONAP data model,
 
1279     ``virtual_machine_interface_allowed_address_pairs``,
 
1281     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1283     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1285     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1287     * Parameter name **MAY** use any naming convention.  That is, there is no
 
1288       ONAP mandatory parameter naming convention.
 
1289     * Parameter **MAY** be declared as type ``string`` or type
 
1290     ``comma_delimited_list``.
 
1292     And the ``OS::ContrailV2::VirtualMachineInterface`` resource
 
1293     **MUST** contain resource-level ``metadata`` (not property-level).
 
1295     And the ``metadata`` format **MUST**  must contain the
 
1296     key value ``aap_exempt`` with a list of all map property
 
1298     ``virtual_machine_interface_allowed_address_pairs``,
 
1300     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
 
1302     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
1304     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1306     parameters **not** supported by the ONAP data model.
 
1316     :validation_mode: static
 
1319     When the VNF's Heat Orchestration Template's Resource
 
1320     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
1321     internal network (per the
 
1322     ONAP definition, see Requirements R-52425 and R-46461),
 
1323     and an IPv4 Virtual IP (VIP)
 
1324     address is assigned using the map property,
 
1325     ``virtual_machine_interface_allowed_address_pairs,
 
1326     virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
 
1327     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
 
1328     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1329     , the parameter name **MUST** follow the
 
1332       * ``{vm-type}_int_{network-role}_floating_ip``
 
1336       * ``{vm-type}`` is the {vm-type} associated with the
 
1338       * ``{network-role}`` is the {network-role} of the external
 
1341     And the parameter **MUST** be declared as ``type: string``
 
1342     and **MUST** be enumerated in the environment file.
 
1346     the parameter name **MUST** follow the
 
1349       * ``{vm-type}_int_{network-role}_floating_ips``
 
1353       * ``{vm-type}`` is the {vm-type} associated with the
 
1355       * ``{network-role}`` is the {network-role} of the external
 
1358     And the parameter **MUST** be declared as ``type: comma_delimited_list``
 
1359     and **MUST** be enumerated in the environment file.
 
1366     :validation_mode: static
 
1369     When the VNF's Heat Orchestration Template's Resource
 
1370     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
1371     internal network (per the
 
1372     ONAP definition, see Requirements R-52425 and R-46461),
 
1373     and an IPv6 Virtual IP (VIP)
 
1375     using the map property,
 
1376     ``virtual_machine_interface_allowed_address_pairs,
 
1377     virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
 
1378     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
 
1379     virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
 
1380     , the parameter name **MUST** follow the
 
1383       * ``{vm-type}_int_{network-role}_floating_v6_ip``
 
1387       * ``{vm-type}`` is the {vm-type} associated with the
 
1389       * ``{network-role}`` is the {network-role} of the external
 
1392     And the parameter **MUST** be declared as ``type: string``
 
1393     and **MUST** be enumerated in the environment file
 
1397     the parameter name **MUST** follow the
 
1400       * ``{vm-type}_int_{network-role}_floating_v6_ips``
 
1404       * ``{vm-type}`` is the {vm-type} associated with the
 
1406       * ``{network-role}`` is the {network-role} of the external
 
1409     And the parameter **MUST** be declared as ``type: comma_delimited_list``
 
1410     and **MUST** be enumerated in the environment file.
 
1417 *Example OS::ContrailV2::VirtualMachineInterface*
 
1419 .. code-block:: yaml
 
1422     type: OS::ContrailV2::VirtualMachineInterface
 
1424       name: { get_param: name }
 
1425       fq_name: { get_param: fq_name }
 
1426       ecmp_hashing_include_fields:
 
1428           ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
 
1429           ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
 
1430           ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
 
1431           ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
 
1432           ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
 
1433           ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
 
1435       virtual_machine_interface_host_routes:
 
1437           virtual_machine_interface_host_routes_route:
 
1439               virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
 
1440               virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
 
1441               virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
 
1442               virtual_machine_interface_host_routes_route_community_attributes:
 
1444                   virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
 
1448       virtual_machine_interface_mac_addresses:
 
1450           virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
 
1452       virtual_machine_interface_dhcp_option_list:
 
1454           virtual_machine_interface_dhcp_option_list_dhcp_option:
 
1456               virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
 
1457               virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
 
1458               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 },
 
1461       virtual_machine_interface_bindings:
 
1463           virtual_machine_interface_bindings_key_value_pair:
 
1465               virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
 
1466               virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
 
1469       virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
 
1470       virtual_machine_interface_allowed_address_pairs:
 
1472           virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
 
1474               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
 
1476                   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 },
 
1477                   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 },
 
1479               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
 
1480               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
 
1485           annotations_key_value_pair:
 
1487               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
1488               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
1491       virtual_machine_interface_fat_flow_protocols:
 
1493           virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
 
1495               virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
 
1496               virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
 
1499       virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
 
1500       port_security_enabled: { get_param: port_security_enabled }
 
1501       virtual_machine_interface_properties:
 
1503           virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
 
1504           virtual_machine_interface_properties_interface_mirror:
 
1506               virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
 
1507               virtual_machine_interface_properties_interface_mirror_mirror_to:
 
1509                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
 
1510                   virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
 
1511                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
 
1512                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
 
1513                   virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
 
1514                   virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
 
1515                   virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
 
1516                   virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
 
1517                   virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
 
1519                       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 },
 
1520                       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 },
 
1521                       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 },
 
1525           virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
 
1526           virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
 
1528       display_name: { get_param: display_name }
 
1529       service_health_check_refs: [{ get_param: service_health_check_refs }]
 
1530       routing_instance_refs: [{ get_param: routing_instance_refs }]
 
1531       routing_instance_refs_data:
 
1533           routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
 
1534           routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
 
1535           routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
 
1536           routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
 
1537           routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
 
1538           routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
 
1539           routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
 
1540           routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
 
1542       security_group_refs: [{ get_param: security_group_refs }]
 
1543       physical_interface_refs: [{ get_param: physical_interface_refs }]
 
1544       port_tuple_refs: [{ get_param: port_tuple_refs }]
 
1545       interface_route_table_refs: [{ get_param: interface_route_table_refs }]
 
1546       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
1547       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
1548       virtual_machine_refs: [{ get_param: virtual_machine_refs }]
 
1549       qos_config_refs: [{ get_param: qos_config_refs }]
 
1550       virtual_machine: { get_param: virtual_machine }
 
1551       project: { get_param: project }