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 }