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
29 ``OS::ContrailV2::InstanceIp`` and/or
30 ``OS::ContrailV2::VirtualMachineInterface``
31 contains the property ``virtual_network_refs``
32 that references an ONAP external network (per the
33 ONAP definition, see Requirement R-57424 and R-16968),
34 the property value **MUST** be obtained by a ``get_param`` and the
37 * **MUST** follow the format ``{network-role}_net_fqdn``
38 * **MUST** be declared as type ``string``
45 :validation_mode: static
48 A VNF's Heat Orchestration Template's Contrail resource
49 ``OS::ContrailV2::InstanceIp`` and/or
50 ``OS::ContrailV2::VirtualMachineInterface`` property
51 ``virtual_network_refs`` parameter ``{network-role}_net_fqdn``
52 **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
55 *Example: Parameter declaration*
60 {network-role}_net_fqdn:
62 description: Contrail FQDN for the {network-role} network
64 *Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface
65 Reference to a Network FQDN.*
67 In this example, the ``{network-role}`` has been defined as oam to represent
68 an oam network and the ``{vm-type}`` has been defined as fw for firewall.
69 The Contrail resource ``OS::ContrailV2::VirtualMachineInterface`` property
70 ``virtual_network_refs`` references a contrail network FQDN.
75 type: OS::ContrailV2::VirtualMachineInterface
79 template: VM_NAME_virtual_machine_interface_1
81 VM_NAME: { get_param: fw_name_0 }
82 virtual_machine_interface_properties:
83 virtual_machine_interface_properties_service_interface_type: {
84 get_param: oam_protected_interface_type }
86 - get_param: oam_net_fqdn
88 - get_param: fw_sec_grp_id
90 Interface Route Table Prefixes for Contrail InterfaceRoute Table
91 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
97 :validation_mode: static
100 If a VNF's Heat Orchestration Template
101 ``OS::ContrailV2::InterfaceRouteTable`` resource
102 ``interface_route_table_routes`` property
103 ``interface_route_table_routes_route`` map property parameter name
104 **MUST** follow the format
106 * ``{vm-type}_{network-role}_route_prefixes``
112 :validation_mode: static
115 If a VNF's Heat Orchestration Template
116 ``OS::ContrailV2::InterfaceRouteTable`` resource
117 ``interface_route_table_routes`` property
118 ``interface_route_table_routes_route`` map property parameter
119 ``{vm-type}_{network-role}_route_prefixes``
120 **MUST** be defined as type ``json``.
126 :validation_mode: static
129 If a VNF's Heat Orchestration Template
130 ``OS::ContrailV2::InterfaceRouteTable`` resource
131 ``interface_route_table_routes`` property
132 ``interface_route_table_routes_route`` map property parameter
133 ``{vm-type}_{network-role}_route_prefixes``
134 **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
137 The parameter ``{vm-type}_{network-role}_route_prefixes``
138 supports IP addresses in the format:
140 1. Host IP Address (e.g., 10.10.10.10)
142 2. CIDR Notation format (e.g., 10.0.0.0/28)
145 *Example Parameter Definition*
150 {vm-type}_{network-role}_route_prefixes:
152 description: JSON list of Contrail Interface Route Table route prefixes
161 description: Unique name for this VF instance
162 fw_oam_route_prefixes:
164 description: prefix for the ServiceInstance InterfaceRouteTable
165 int_fw_dns_trusted_interface_type:
167 description: service_interface_type for ServiceInstance
171 type: OS::ContrailV2::InterfaceRouteTable
172 depends_on: [resource name of OS::ContrailV2::ServiceInstance]
176 template: VNF_NAME_interface_route_table
178 VNF_NAME: { get_param: vnf_name }
179 interface_route_table_routes:
180 interface_route_table_routes_route: { get_param: fw_oam_route_prefixes }
181 service_instance_refs:
182 - get_resource: <resource name of OS::ContrailV2::ServiceInstance>
183 service_instance_refs_data:
184 - service_instance_refs_data_interface_type: { get_param: oam_interface_type }
187 Resource OS::ContrailV2::InstanceIp
188 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
190 The Contrail resource ``OS::ContrailV2::InstanceIp`` has two properties
191 that parameters **MUST** follow an explicit naming convention. The
192 properties are ``instance_ip_address`` and ``subnet_uuid``.
194 *Example OS::ContrailV2::InstanceIp Resource*
199 type: OS::ContrailV2::InstanceIp
201 name: { get_param: name }
202 fq_name: { get_param: fq_name }
203 display_name: { get_param: display_name }
204 secondary_ip_tracking_ip:
206 secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix },
207 secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len },
209 instance_ip_address: { get_param: instance_ip_address }
210 instance_ip_mode: { get_param: instance_ip_mode }
211 subnet_uuid: { get_param: subnet_uuid }
212 instance_ip_family: { get_param: instance_ip_family }
215 annotations_key_value_pair:
217 annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
218 annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
221 instance_ip_local_ip: { get_param: instance_ip_local_ip }
222 instance_ip_secondary: { get_param: instance_ip_secondary }
223 physical_router_refs: [{ get_param: physical_router_refs }]
224 virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
225 virtual_network_refs: [{ get_param: virtual_network_refs }]
228 Resource OS::ContrailV2::InstanceIp Property instance_ip_address
229 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
231 A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp``
232 property ``instance_ip_address`` parameter
233 **MUST** follow the same requirements
234 that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map
235 property ``ip_address`` parameter.
241 :validation_mode: static
245 The VNF's Heat Orchestration Template's
246 resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
248 **MUST** be declared as either type ``string`` or type
249 ``comma_delimited_list``.
256 :validation_mode: static
260 When the VNF's Heat Orchestration Template's Resource
261 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
262 to an ONAP external network
263 (per the ONAP definition, see Requirement R-57424 and R-16968),
264 and an IPv4 address is assigned
265 using the property ``instance_ip_address``
266 and the parameter type is defined as a string,
267 the parameter name **MUST** follow the
270 * ``{vm-type}_{network-role}_ip_{index}``
274 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
275 * ``{network-role}`` is the {network-role} of the ONAP external network
276 * ``{index}`` is a numeric value that **MUST** start at zero in a
277 VNF's Heat Orchestration Template and **MUST** increment by one
283 :validation_mode: static
287 The VNF's Heat Orchestration Template's Resource
288 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
290 ``{vm-type}_{network-role}_ip_{index}``
291 **MUST NOT** be enumerated in the
292 VNF's Heat Orchestration Template's Environment File.
294 ONAP's SDN-Controller assigns the IP Address and ONAP provides
295 the value at orchestration to the Heat Orchestration Template.
297 *Example ONAP External Network IPv4 Address string Parameter Definition*
303 {vm-type}_{network-role}_ip_{index}:
305 description: Fixed IPv4 assignment for {vm-type} VM {index} on the {network-role} network
312 :validation_mode: static
317 When the VNF's Heat Orchestration Template's Resource
318 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
319 to an ONAP external network (per the
320 ONAP definition, see Requirement R-57424 and R-16968),
321 and an IPv4 address is assigned
322 using the property ``instance_ip_address``
323 and the parameter type is defined as a
324 ``comma_delimited_list``,
325 the parameter name **MUST** follow the
328 * ``{vm-type}_{network-role}_ips``
332 * ``{vm-type}`` is the {vm-type} associated with the
334 * ``{network-role}`` is the {network-role} of the ONAP external
342 :validation_mode: static
346 The VNF's Heat Orchestration Template's Resource
347 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
349 ``{vm-type}_{network-role}_ips``
350 **MUST NOT** be enumerated in the
351 VNF's Heat Orchestration Template's Environment File.
353 ONAP's SDN-Controller assigns the IP Address and ONAP provides
354 the value at orchestration to the Heat Orchestration Template.
356 *Example External Network IPv4 Address comma_delimited_list
357 Parameter Definition*
363 {vm-type}_{network-role}_ips:
364 type: comma_delimited_list
365 description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network
373 :validation_mode: static
377 When the VNF's Heat Orchestration Template's Resource
378 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
379 to an ONAP external network
381 ONAP definition, see Requirement R-57424 and R-16968),
382 and an IPv6 address is assigned
383 using the property ``instance_ip_address``
384 and the parameter type is defined as a string,
385 the parameter name **MUST** follow the
388 * ``{vm-type}_{network-role}_v6_ip_{index}``
392 * ``{vm-type}`` is the {vm-type} associated with the
394 * ``{network-role}`` is the {network-role} of the ONAP external network
395 * ``{index}`` is a numeric value that **MUST** start at zero in a
396 VNF's Heat Orchestration Template and **MUST** increment by one
402 :validation_mode: static
406 The VNF's Heat Orchestration Template's Resource
407 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
409 ``{vm-type}_{network-role}_v6_ip_{index}``
410 **MUST NOT** be enumerated in the
411 VNF's Heat Orchestration Template's Environment File.
413 ONAP's SDN-Controller assigns the IP Address and ONAP provides
414 the value at orchestration to the Heat Orchestration Template.
416 *Example ONAP External Network IPv6 Address string Parameter Definition*
422 {vm-type}_{network-role}_v6_ip_{index}:
424 description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network
431 :validation_mode: static
436 When the VNF's Heat Orchestration Template's Resource
437 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
438 to an ONAP external network (per the
439 ONAP definition, see Requirement R-57424 and R-16968),
440 and an IPv6 address is assigned
441 using the property ``instance_ip_address``
442 and the parameter type is defined as a
443 ``comma_delimited_list``,
444 the parameter name **MUST** follow the
447 * ``{vm-type}_{network-role}_v6_ips``
451 * ``{vm-type}`` is the {vm-type} associated with the
453 * ``{network-role}`` is the {network-role} of the ONAP external
461 :validation_mode: static
465 The VNF's Heat Orchestration Template's Resource
466 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
468 ``{vm-type}_{network-role}_v6_ips``
469 **MUST NOT** be enumerated in the
470 VNF's Heat Orchestration Template's Environment File.
472 ONAP's SDN-Controller assigns the IP Address and ONAP provides
473 the value at orchestration to the Heat Orchestration Template.
475 *Example ONAP External Network IPv6 Address comma_delimited_list Parameter
482 {vm-type}_{network-role}_v6_ips:
483 type: comma_delimited_list
484 description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network
492 :validation_mode: static
496 When the VNF's Heat Orchestration Template's Resource
497 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
498 to an ONAP internal network (per the
499 ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
500 and an IPv4 address is assigned
501 using the property ``instance_ip_address``
502 and the parameter type is
503 defined as a ``string``,
504 the parameter name **MUST** follow the
507 * ``{vm-type}_int_{network-role}_ip_{index}``
511 * ``{vm-type}`` is the {vm-type} associated with the
513 * ``{network-role}`` is the {network-role} of the ONAP internal network
514 * ``{index}`` is a numeric value that **MUST** start at zero in a
515 VNF's Heat Orchestration Template and **MUST** increment by one
522 :validation_mode: static
526 The VNF's Heat Orchestration Template's Resource
527 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
529 ``{vm-type}_int_{network-role}_ip_{index}``
530 **MUST** be enumerated in the
531 VNF's Heat Orchestration Template's Environment File.
533 The IP address is local to the VNF's ONAP internal network and is (re)used
534 in every VNF spin up, thus the constant value is declared in the VNF's
535 Heat Orchestration Template's Environment File.
537 *Example ONAP Internal Network IPv4 Address string Parameter Definition*
543 {vm-type}_int_{network-role}_ip_{index}:
545 description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network
552 :validation_mode: static
557 When the VNF's Heat Orchestration Template's Resource
558 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
559 to an ONAP internal network (per the
560 ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
561 and an IPv4 address is assigned
562 using the property ``instance_ip_address``
563 and the parameter type is defined as a
564 ``comma_delimited_list``,
565 the parameter name **MUST** follow the
568 * ``{vm-type}_int_{network-role}_ips``
572 * ``{vm-type}`` is the {vm-type} associated with the
574 * ``{network-role}`` is the {network-role} of the ONAP internal
581 :validation_mode: static
585 The VNF's Heat Orchestration Template's Resource
586 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
588 ``{vm-type}_int_{network-role}_int_ips``
589 **MUST** be enumerated in the
590 VNF's Heat Orchestration Template's Environment File.
592 The IP address is local to the VNF's ONAP internal network and is (re)used
593 in every VNF spin up, thus the constant value is declared in the VNF's
594 Heat Orchestration Template's Environment File.
596 *Example ONAP Internal Network IPv4 Address comma_delimited_list
597 Parameter Definition*
603 {vm-type}_int_{network-role}_ips:
604 type: comma_delimited_list
605 description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network
613 :validation_mode: static
617 When the VNF's Heat Orchestration Template's Resource
618 ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
619 ONAP internal network (per the
620 ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
621 and an IPv6 address is assigned
622 using the property ``instance_ip_address``
623 and the parameter type is defined as a
625 the parameter name **MUST** follow the
628 * ``{vm-type}_int_{network-role}_v6_ip_{index}``
632 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
633 * ``{network-role}`` is the {network-role} of the ONAP internal network
634 * ``{index}`` is a numeric value that **MUST** start at zero in a
635 VNF's Heat Orchestration Template and **MUST** increment by one
642 :validation_mode: static
646 The VNF's Heat Orchestration Template's Resource
647 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
649 ``{vm-type}_int_{network-role}_v6_ip_{index}``
650 **MUST** be enumerated in the
651 VNF's Heat Orchestration Template's Environment File.
653 The IP address is local to the VNF's ONAP internal network and is (re)used
654 in every VNF spin up, thus the constant value is declared in the VNF's
655 Heat Orchestration Template's Environment File.
657 *Example ONAP Internal Network IPv6 Address string Parameter Definition*
663 {vm-type}_int_{network-role}_v6_ip_{index}:
665 description: Fixed IPv6 assignment for {vm-type} VM {index} on the int_{network-role} network
672 :validation_mode: static
677 When the VNF's Heat Orchestration Template's Resource
678 ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
679 ONAP internal network (per the
680 ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
681 and an IPv6 address is assigned
682 using the property ``instance_ip_address``
683 and the parameter type is defined as a
684 ``comma_delimited_list``,
685 the parameter name **MUST** follow the
688 * ``{vm-type}_int_{network-role}_v6_ips``
692 * ``{vm-type}`` is the {vm-type} associated with the
694 * ``{network-role}`` is the {network-role} of the ONAP internal
701 :validation_mode: static
705 The VNF's Heat Orchestration Template's Resource
706 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
707 map property ``ip_address`` parameter
708 ``{vm-type}_int_{network-role}_v6_ips``
709 **MUST** be enumerated in the
710 VNF's Heat Orchestration Template's Environment File.
712 The IP address is local to the VNF's ONAP internal network and is (re)used
713 in every VNF spin up, thus the constant value is declared in the VNF's
714 Heat Orchestration Template's Environment File.
716 *Example ONAP Internal Network IPv6 Address comma_delimited_list Parameter
724 {vm-type}_int_{network-role}_v6_ips:
725 type: comma_delimited_list
726 description: Fixed IPv6 assignments for {vm-type} VMs on the int_{network-role} network
732 :validation_mode: static
737 The VNF's Heat Orchestration Template's Resource
738 ``OS::ContrailV2::InstanceIp``
739 property ``instance_ip_address``
740 parameter associated with an ONAP external network, i.e.,
742 * ``{vm-type}_{network-role}_ip_{index}``
743 * ``{vm-type}_{network-role}_v6_ip_{index}``
744 * ``{vm-type}_{network-role}_ips``
745 * ``{vm-type}_{network-role}_v6_ips``
748 **MUST NOT** be enumerated in the Heat Orchestration
749 Template's Environment File. ONAP provides the IP address
750 assignments at orchestration time.
757 :validation_mode: static
762 The VNF's Heat Orchestration Template's Resource
763 ``OS::ContrailV2::InstanceIp``
764 property ``instance_ip_address``
765 parameter associated with an ONAP internal network, i.e.,
767 * ``{vm-type}_int_{network-role}_ip_{index}``
768 * ``{vm-type}_int_{network-role}_v6_ip_{index}``
769 * ``{vm-type}_int_{network-role}_ips``
770 * ``{vm-type}_int_{network-role}_v6_ips``
773 **MUST** be enumerated in the Heat Orchestration
774 Template's Environment File and IP addresses **MUST** be
778 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
781 The property instance_ip_address uses the same parameter naming
782 convention as the property fixed_ips and Map Property ip_address in
783 OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP
784 Address. The {network-role} has been defined as oam_protected to
785 represent an oam protected network and the {vm-type} has been defined as
790 fw_0_oam_protected_vmi_0_IP_0:
791 type: OS::ContrailV2::InstanceIp
793 - fw_0_oam_protected_vmi_0
795 virtual_machine_interface_refs:
796 - get_resource: fw_0_oam_protected_vmi_0
797 virtual_network_refs:
798 - get_param: oam_protected_net_fqdn
799 instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }
802 Resource OS::ContrailV2::InstanceIp Property subnet_uuid
803 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
805 A VNF's Heat Orchestration Templates resource ``OS::ContrailV2::InstanceIp``
806 property ``subnet_uuid`` parameter
807 **MUST** follow the same requirements
808 that apply to the resource ``OS::Neutron`` property ``fixed_ips`` map
809 property ``subnet`` parameter.
811 The resource ``OS::ContrailV2::InstanceIp`` property
812 ``subnet_uuid`` parameter is used when a
813 port is requesting an IP assignment via
814 OpenStack's DHCP Service (i.e., cloud assigned).
816 The IP address assignment will be made from the specified subnet.
818 Specifying the subnet is not required; it is optional.
820 If the network (external or internal) that the port is attaching
821 to only contains one subnet, specifying the subnet is
822 superfluous. The IP address will be assigned from the one existing
825 If the network (external or internal) that the port is attaching
826 to contains two or more subnets, specifying the subnet in the
827 ``instance_ip_address`` property determines which
828 subnet the IP address will be assigned from.
830 If the network (external or internal) that the port is attaching
831 to contains two or more subnets, and the subnet is not is not
832 specified, OpenStack will randomly determine which subnet
833 the IP address will be assigned from.
835 The property ``instance_ip_address`` is used to assign IPs to a port.
836 The property ``subnet_uuid`` specifies the subnet the IP is assigned from.
842 :validation_mode: static
846 The VNF's Heat Orchestration Template's
847 resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
849 **MUST** be declared type ``string``.
855 :validation_mode: static
860 When the VNF's Heat Orchestration Template's
861 resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
862 to an ONAP external network (per the ONAP definition, see
863 Requirement R-57424 and R-16968),
864 and an IPv4 address is being cloud assigned by OpenStack's DHCP Service
865 and the ONAP external network IPv4 subnet is to be specified
866 using the property ``subnet_uuid``, the parameter
867 **MUST** follow the naming convention
869 * ``{network-role}_subnet_id``
873 * ``{network-role}`` is the network role of the ONAP external network.
875 Note that ONAP only supports cloud assigned IP addresses from one IPv4 subnet
881 :validation_mode: static
885 The VNF's Heat Orchestration Template's Resource
886 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
888 ``{network-role}_subnet_id``
889 **MUST NOT** be enumerated in the
890 VNF's Heat Orchestration Template's Environment File.
892 ONAP's SDN-Controller provides the network's subnet's UUID
893 value at orchestration to the Heat Orchestration Template.
895 *Example Parameter Definition*
901 {network-role}_subnet_id:
903 description: Neutron IPv4 subnet UUID for the {network-role} network
909 :validation_mode: static
914 When the VNF's Heat Orchestration Template's
915 resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
916 to an ONAP external network (per the ONAP definition, see
917 Requirement R-57424 and R-16968),
918 and an IPv6 address is being cloud assigned by OpenStack's DHCP Service
919 and the ONAP external network IPv6 subnet is to be specified
920 using the property ``subnet_uuid``, the parameter
921 **MUST** follow the naming convention
923 * ``{network-role}_v6_subnet_id``
927 * ``{network-role}`` is the network role of the ONAP external network.
930 Note that ONAP only supports cloud assigned IP addresses from one IPv6 subnet
936 :validation_mode: static
940 The VNF's Heat Orchestration Template's Resource
941 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
943 ``{network-role}_v6_subnet_id``
944 **MUST NOT** be enumerated in the
945 VNF's Heat Orchestration Template's Environment File.
947 ONAP's SDN-Controller provides the network's subnet's UUID
948 value at orchestration to the Heat Orchestration Template.
950 *Example Parameter Definition*
956 {network-role}_v6_subnet_id:
958 description: Neutron IPv6 subnet UUID for the {network-role} network
964 :validation_mode: static
971 * the VNF's Heat Orchestration Template's
972 resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
973 assigning an IP address
974 to an ONAP internal network (per the ONAP definition, see
975 Requirements R-52425 and R-46461 and R-35666)
976 that is created in the Base Module, AND
977 * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND
978 * the ONAP internal network IPv4 subnet is to be specified
979 using the property ``subnet_uuid``,
981 the parameter **MUST** follow the naming convention
983 * ``int_{network-role}_subnet_id``
987 * ``{network-role}`` is the network role of the ONAP internal network
989 Note that the parameter **MUST** be defined as an ``output`` parameter in
996 :validation_mode: static
1000 The VNF's Heat Orchestration Template's Resource
1001 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
1003 ``int_{network-role}_subnet_id``
1004 **MUST NOT** be enumerated in the
1005 VNF's Heat Orchestration Template's Environment File.
1008 The assumption is that ONAP internal networks are created in the base module.
1009 The subnet network ID will be passed as an output parameter
1010 (e.g., ONAP Base Module Output Parameter) to the incremental modules.
1011 In the incremental modules, the output parameter name will be defined as
1014 *Example Parameter Definition*
1016 .. code-block:: yaml
1020 int_{network-role}_subnet_id:
1022 description: Neutron IPv4 subnet UUID for the int_{network-role} network
1029 :validation_mode: static
1036 * the VNF's Heat Orchestration Template's
1037 resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
1039 to an ONAP internal network (per the ONAP definition,
1040 see Requirements R-52425 and R-46461 and R-35666)
1041 that is created in the Base Module, AND
1042 * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND
1043 * the ONAP internal network IPv6 subnet is to be specified
1044 using the property ``subnet_uuid``,
1046 the parameter **MUST** follow the naming convention
1048 * ``int_{network-role}_v6_subnet_id``
1050 where ``{network-role}`` is the network role of the ONAP internal network.
1052 Note that the parameter **MUST** be defined as an ``output`` parameter in
1059 :validation_mode: static
1063 The VNF's Heat Orchestration Template's Resource
1064 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
1066 ``int_{network-role}_v6_subnet_id``
1067 **MUST NOT** be enumerated in the
1068 VNF's Heat Orchestration Template's Environment File.
1071 *Example Parameter Definition*
1073 .. code-block:: yaml
1077 int_{network-role}_v6_subnet_id:
1079 description: Neutron subnet UUID for the int_{network-role} network
1081 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
1084 The property ``instance_ip_address`` uses the same parameter naming
1085 convention as the property ``fixed_ips`` and Map Property ``subnet`` in
1086 ``OS::Neutron::Port``. The resource is assigning a cloud assigned IP
1087 Address. The ``{network-role}`` has been defined as "oam_protected" to
1088 represent an oam protected network and the ``{vm-type}`` has been defined as
1091 .. code-block:: yaml
1093 fw_0_oam_protected_vmi_0_IP_0:
1094 type: OS::ContrailV2::InstanceIp
1096 - fw_0_oam_protected_vmi_0
1098 virtual_machine_interface_refs:
1099 - get_resource: fw_0_oam_protected_vmi_0
1100 virtual_network_refs:
1101 - get_param: oam_protected_net_fqdn
1102 subnet_uuid: { get_param: oam_protected_subnet_id }
1105 OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs
1106 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1108 A VNF's Heat Orchestration Templates resource
1109 ``OS::ContrailV2::VirtualMachineInterface`` map property,
1111 ``virtual_machine_interface_allowed_address_pairs``,
1113 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1115 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1117 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1119 parameter **MUST** follow the same requirements that apply to the
1120 resource ``OS::Neutron::Port`` property
1121 ``allowed_address_pairs``, map property ``ip_address`` parameter.
1123 ONAP External Networks
1124 ~~~~~~~~~~~~~~~~~~~~~~
1129 :validation_mode: static
1134 If a VNF's Heat Orchestration Template's resource
1135 ``OS::ContrailV2::VirtualMachineInterface``
1136 is attaching to an ONAP external network (per the
1137 ONAP definition, see Requirement R-57424 and R-16968), the
1140 ``virtual_machine_interface_allowed_address_pairs``,
1142 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1144 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1146 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1149 **MUST NOT** be enumerated in the
1150 VNF's Heat Orchestration Template's Environment File.
1156 :validation_mode: static
1161 When the VNF's Heat Orchestration Template's resource
1162 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP external
1164 ONAP definition, see Requirement R-57424 and R-16968),
1165 and an IPv4 Virtual IP (VIP)
1166 is required to be supported by the ONAP data model,
1169 ``virtual_machine_interface_allowed_address_pairs``,
1171 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1173 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1175 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1177 parameter name **MUST** follow the naming convention
1179 * ``{vm-type}_{network-role}_floating_ip``
1183 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
1184 * ``{network-role}`` is the {network-role} of the ONAP external network
1186 And the parameter **MUST** be declared as type ``string``.
1188 The ONAP data model can only support one IPv4 VIP address.
1191 *Example Parameter Definition*
1193 .. code-block:: yaml
1197 {vm-type}_{network-role}_floating_ip:
1199 description: IPv4 VIP for {vm-type} VMs on the {network-role} network
1205 :validation_mode: static
1210 When the VNF's Heat Orchestration Template's resource
1211 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP
1214 ONAP definition, see Requirement R-57424 and R-16968),
1215 and an IPv6 Virtual IP (VIP)
1216 is required to be supported by the ONAP data model,
1219 ``virtual_machine_interface_allowed_address_pairs``,
1221 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1223 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1225 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1227 parameter name **MUST** follow the naming convention
1229 * ``{vm-type}_{network-role}_floating_v6_ip``
1233 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
1234 * ``{network-role}`` is the {network-role} of the ONAP external network
1236 And the parameter **MUST** be declared as type ``string``.
1238 The ONAP data model can only support one IPv6 VIP address.
1241 *Example Parameter Definition*
1243 .. code-block:: yaml
1247 {vm-type}_{network-role}_floating_v6_ip:
1249 description: IPv6 VIP for {vm-type} VMs on the {network-role} network
1255 :validation_mode: static
1259 When the VNF's Heat Orchestration Template's resource
1260 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1261 ONAP external network
1262 (per the ONAP definition, see Requirement R-57424 and R-16968),
1263 and the IPv4 VIP address and/or IPv6 VIP address
1264 is **not** supported by the ONAP data model,
1267 ``virtual_machine_interface_allowed_address_pairs``,
1269 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1271 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1273 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1275 * Parameter name **MAY** use any naming convention. That is, there is no
1276 ONAP mandatory parameter naming convention.
1277 * Parameter **MAY** be declared as type ``string`` or type
1278 ``comma_delimited_list``.
1280 And the ``OS::ContrailV2::VirtualMachineInterface`` resource
1281 **MUST** contain resource-level ``metadata`` (not property-level).
1283 And the ``metadata`` format **MUST** must contain the
1284 key value ``aap_exempt`` with a list of all map property
1286 ``virtual_machine_interface_allowed_address_pairs``,
1288 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1290 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1292 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1294 parameters **not** supported by the ONAP data model.
1297 ONAP Internal Networks
1298 ~~~~~~~~~~~~~~~~~~~~~~
1304 :validation_mode: static
1308 When the VNF's Heat Orchestration Template's Resource
1309 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1310 ONAP internal network (per the
1311 ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
1312 and an IPv4 Virtual IP (VIP)
1313 address is assigned using the map property,
1314 ``virtual_machine_interface_allowed_address_pairs,
1315 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1316 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1317 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1318 , the parameter name **MUST** follow the
1321 * ``{vm-type}_int_{network-role}_floating_ip``
1325 * ``{vm-type}`` is the {vm-type} associated with the
1327 * ``{network-role}`` is the {network-role} of the ONAP internal
1330 And the parameter **MUST** be declared as ``type: string``
1331 and **MUST** be enumerated in the environment file.
1335 the parameter name **MUST** follow the
1338 * ``{vm-type}_int_{network-role}_floating_ips``
1342 * ``{vm-type}`` is the {vm-type} associated with the
1344 * ``{network-role}`` is the {network-role} of the ONAP internal
1347 And the parameter **MUST** be declared as ``type: comma_delimited_list``
1348 and **MUST** be enumerated in the environment file.
1355 :validation_mode: static
1359 When the VNF's Heat Orchestration Template's Resource
1360 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1361 ONAP internal network (per the
1362 ONAP definition, see Requirements R-52425 and R-46461 and R-35666),
1363 and an IPv6 Virtual IP (VIP)
1365 using the map property,
1366 ``virtual_machine_interface_allowed_address_pairs,
1367 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1368 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1369 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1370 , the parameter name **MUST** follow the
1373 * ``{vm-type}_int_{network-role}_floating_v6_ip``
1377 * ``{vm-type}`` is the {vm-type} associated with the
1379 * ``{network-role}`` is the {network-role} of the ONAP internal
1382 And the parameter **MUST** be declared as ``type: string``
1383 and **MUST** be enumerated in the environment file
1387 the parameter name **MUST** follow the
1390 * ``{vm-type}_int_{network-role}_floating_v6_ips``
1394 * ``{vm-type}`` is the {vm-type} associated with the
1396 * ``{network-role}`` is the {network-role} of the ONAP internal
1399 And the parameter **MUST** be declared as ``type: comma_delimited_list``
1400 and **MUST** be enumerated in the environment file.
1407 *Example OS::ContrailV2::VirtualMachineInterface*
1409 .. code-block:: yaml
1412 type: OS::ContrailV2::VirtualMachineInterface
1414 name: { get_param: name }
1415 fq_name: { get_param: fq_name }
1416 ecmp_hashing_include_fields:
1418 ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
1419 ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
1420 ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
1421 ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
1422 ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
1423 ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
1425 virtual_machine_interface_host_routes:
1427 virtual_machine_interface_host_routes_route:
1429 virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
1430 virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
1431 virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
1432 virtual_machine_interface_host_routes_route_community_attributes:
1434 virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
1438 virtual_machine_interface_mac_addresses:
1440 virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
1442 virtual_machine_interface_dhcp_option_list:
1444 virtual_machine_interface_dhcp_option_list_dhcp_option:
1446 virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
1447 virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
1448 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 },
1451 virtual_machine_interface_bindings:
1453 virtual_machine_interface_bindings_key_value_pair:
1455 virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
1456 virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
1459 virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
1460 virtual_machine_interface_allowed_address_pairs:
1462 virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
1464 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
1466 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 },
1467 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 },
1469 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
1470 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
1475 annotations_key_value_pair:
1477 annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
1478 annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
1481 virtual_machine_interface_fat_flow_protocols:
1483 virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
1485 virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
1486 virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
1489 virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
1490 port_security_enabled: { get_param: port_security_enabled }
1491 virtual_machine_interface_properties:
1493 virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
1494 virtual_machine_interface_properties_interface_mirror:
1496 virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
1497 virtual_machine_interface_properties_interface_mirror_mirror_to:
1499 virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
1500 virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
1501 virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
1502 virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
1503 virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
1504 virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
1505 virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
1506 virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
1507 virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
1509 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 },
1510 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 },
1511 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 },
1515 virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
1516 virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
1518 display_name: { get_param: display_name }
1519 service_health_check_refs: [{ get_param: service_health_check_refs }]
1520 routing_instance_refs: [{ get_param: routing_instance_refs }]
1521 routing_instance_refs_data:
1523 routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
1524 routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
1525 routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
1526 routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
1527 routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
1528 routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
1529 routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
1530 routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
1532 security_group_refs: [{ get_param: security_group_refs }]
1533 physical_interface_refs: [{ get_param: physical_interface_refs }]
1534 port_tuple_refs: [{ get_param: port_tuple_refs }]
1535 interface_route_table_refs: [{ get_param: interface_route_table_refs }]
1536 virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
1537 virtual_network_refs: [{ get_param: virtual_network_refs }]
1538 virtual_machine_refs: [{ get_param: virtual_machine_refs }]
1539 qos_config_refs: [{ get_param: qos_config_refs }]
1540 virtual_machine: { get_param: virtual_machine }
1541 project: { get_param: project }