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