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.
19 ~~~~~~~~~~~~~~~~~~~~~~~~~
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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1126 A VNF's Heat Orchestration Templates resource
1127 ``OS::ContrailV2::VirtualMachineInterface`` map property,
1128 ``virtual_machine_interface_allowed_address_pairs,
1129 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1130 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1131 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1132 parameter **MUST** follow the same requirements that apply to the
1133 resource ``OS::Neutron::Port`` property
1134 ``allowed_address_pairs``, map property ``ip_address`` parameter.
1140 :validation_mode: static
1144 If a VNF requires ONAP to assign a Virtual IP (VIP) Address to a
1145 ``OS::ContrailV2::VirtualMachineInterface``
1146 connected an external network, the port
1147 **MUST NOT** have more than one IPv4 VIP address.
1153 :validation_mode: static
1157 If a VNF requires ONAP to assign a Virtual IP (VIP) Address to a
1158 ``OS::ContrailV2::VirtualMachineInterface``
1159 connected an external network, the port
1160 **MUST NOT** have more than one IPv6 VIP address.
1166 :validation_mode: static
1170 If a VNF has two or more ``OS::ContrailV2::VirtualMachineInterface`` that
1171 attach to an external network that require a Virtual IP Address (VIP),
1172 and the VNF requires ONAP automation to assign the IP address,
1173 all the Virtual Machines using the VIP address **MUST**
1174 be instantiated in the same Base Module Heat Orchestration Template
1175 or in the same Incremental Module Heat Orchestration Template.
1181 :validation_mode: static
1185 When the VNF's Heat Orchestration Template's Resource
1186 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
1188 ONAP definition, see Requirement R-57424),
1189 and an IPv4 Virtual IP (VIP)
1190 address is assigned via ONAP automation
1191 using the map property,
1192 ``virtual_machine_interface_allowed_address_pairs,
1193 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1194 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1195 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1196 , the parameter name **MUST** follow the
1199 * ``{vm-type}_{network-role}_floating_ip``
1203 * ``{vm-type}`` is the {vm-type} associated with the
1205 * ``{network-role}`` is the {network-role} of the external
1208 And the parameter **MUST** be declared as type ``string``.
1215 :validation_mode: static
1219 The VNF's Heat Orchestration Template's Resource
1220 ``OS::ContrailV2::VirtualMachineInterface``
1222 ``virtual_machine_interface_allowed_address_pairs,
1223 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1224 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1225 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1228 * ``{vm-type}_{network-role}_floating_ip``
1230 **MUST NOT** be enumerated in the
1231 VNF's Heat Orchestration Template's Environment File.
1233 *Example Parameter Definition*
1235 .. code-block:: yaml
1239 {vm-type}_{network-role}_floating_ip:
1241 description: IPv4 VIP for {vm-type} VMs on the {network-role} network
1248 :validation_mode: static
1252 When the VNF's Heat Orchestration Template's Resource
1253 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
1255 ONAP definition, see Requirement R-57424),
1256 and an IPv6 Virtual IP (VIP)
1257 address is assigned via ONAP automation
1260 ``virtual_machine_interface_allowed_address_pairs,
1261 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1262 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1263 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1264 , the parameter name **MUST** follow the
1267 * ``{vm-type}_{network-role}_floating_v6_ip``
1271 * ``{vm-type}`` is the {vm-type} associated with the
1273 * ``{network-role}`` is the {network-role} of the external
1276 And the parameter **MUST** be declared as type ``string``.
1282 :validation_mode: static
1286 The VNF's Heat Orchestration Template's Resource
1287 ``OS::ContrailV2::VirtualMachineInterface``
1289 ``virtual_machine_interface_allowed_address_pairs,
1290 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1291 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1292 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1295 * ``{vm-type}_{network-role}_floating_v6_ip``
1297 **MUST NOT** be enumerated in the
1298 VNF's Heat Orchestration Template's Environment File.
1300 *Example Parameter Definition*
1302 .. code-block:: yaml
1306 {vm-type}_{network-role}_floating_v6_ip:
1308 description: VIP for {vm-type} VMs on the {network-role} network
1314 :validation_mode: static
1317 When the VNF's Heat Orchestration Template's Resource
1318 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
1320 ONAP definition, see Requirement R-57424),
1321 and an IPv4 and/or IPv6 Virtual IP (VIP)
1322 address is assigned via ONAP automation
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``
1330 **MUST NOT** be declared as ``type: comma_deliited_list``.
1337 :validation_mode: static
1340 When the VNF's Heat Orchestration Template's Resource
1341 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1342 internal network (per the
1343 ONAP definition, see Requirements R-52425 and R-46461),
1344 and an IPv4 Virtual IP (VIP)
1345 address is assigned using the map property,
1346 ``virtual_machine_interface_allowed_address_pairs,
1347 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1348 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1349 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1350 , the parameter name **MUST** follow the
1353 * ``{vm-type}_int_{network-role}_floating_ip``
1357 * ``{vm-type}`` is the {vm-type} associated with the
1359 * ``{network-role}`` is the {network-role} of the external
1362 And the parameter **MUST** be declared as ``type: string``
1363 and **MUST** be enumerated in the environment file.
1367 the parameter name **MUST** follow the
1370 * ``{vm-type}_int_{network-role}_floating_ips``
1374 * ``{vm-type}`` is the {vm-type} associated with the
1376 * ``{network-role}`` is the {network-role} of the external
1379 And the parameter **MUST** be declared as ``type: comma_delimited_list``
1380 and **MUST** be enumerated in the environment file.
1387 :validation_mode: static
1390 When the VNF's Heat Orchestration Template's Resource
1391 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1392 internal network (per the
1393 ONAP definition, see Requirements R-52425 and R-46461),
1394 and an IPv6 Virtual IP (VIP)
1396 using the map property,
1397 ``virtual_machine_interface_allowed_address_pairs,
1398 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1399 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1400 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1401 , the parameter name **MUST** follow the
1404 * ``{vm-type}_int_{network-role}_floating_v6_ip``
1408 * ``{vm-type}`` is the {vm-type} associated with the
1410 * ``{network-role}`` is the {network-role} of the external
1413 And the parameter **MUST** be declared as ``type: string``
1414 and **MUST** be enumerated in the environment file
1418 the parameter name **MUST** follow the
1421 * ``{vm-type}_int_{network-role}_floating_v6_ips``
1425 * ``{vm-type}`` is the {vm-type} associated with the
1427 * ``{network-role}`` is the {network-role} of the external
1430 And the parameter **MUST** be declared as ``type: comma_delimited_list``
1431 and **MUST** be enumerated in the environment file.
1435 *Example OS::ContrailV2::VirtualMachineInterface*
1437 .. code-block:: yaml
1440 type: OS::ContrailV2::VirtualMachineInterface
1442 name: { get_param: name }
1443 fq_name: { get_param: fq_name }
1444 ecmp_hashing_include_fields:
1446 ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
1447 ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
1448 ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
1449 ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
1450 ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
1451 ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
1453 virtual_machine_interface_host_routes:
1455 virtual_machine_interface_host_routes_route:
1457 virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
1458 virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
1459 virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
1460 virtual_machine_interface_host_routes_route_community_attributes:
1462 virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
1466 virtual_machine_interface_mac_addresses:
1468 virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
1470 virtual_machine_interface_dhcp_option_list:
1472 virtual_machine_interface_dhcp_option_list_dhcp_option:
1474 virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
1475 virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
1476 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 },
1479 virtual_machine_interface_bindings:
1481 virtual_machine_interface_bindings_key_value_pair:
1483 virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
1484 virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
1487 virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
1488 virtual_machine_interface_allowed_address_pairs:
1490 virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
1492 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
1494 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 },
1495 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 },
1497 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
1498 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
1503 annotations_key_value_pair:
1505 annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
1506 annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
1509 virtual_machine_interface_fat_flow_protocols:
1511 virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
1513 virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
1514 virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
1517 virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
1518 port_security_enabled: { get_param: port_security_enabled }
1519 virtual_machine_interface_properties:
1521 virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
1522 virtual_machine_interface_properties_interface_mirror:
1524 virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
1525 virtual_machine_interface_properties_interface_mirror_mirror_to:
1527 virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
1528 virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
1529 virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
1530 virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
1531 virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
1532 virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
1533 virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
1534 virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
1535 virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
1537 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 },
1538 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 },
1539 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 },
1543 virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
1544 virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
1546 display_name: { get_param: display_name }
1547 service_health_check_refs: [{ get_param: service_health_check_refs }]
1548 routing_instance_refs: [{ get_param: routing_instance_refs }]
1549 routing_instance_refs_data:
1551 routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
1552 routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
1553 routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
1554 routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
1555 routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
1556 routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
1557 routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
1558 routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
1560 security_group_refs: [{ get_param: security_group_refs }]
1561 physical_interface_refs: [{ get_param: physical_interface_refs }]
1562 port_tuple_refs: [{ get_param: port_tuple_refs }]
1563 interface_route_table_refs: [{ get_param: interface_route_table_refs }]
1564 virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
1565 virtual_network_refs: [{ get_param: virtual_network_refs }]
1566 virtual_machine_refs: [{ get_param: virtual_machine_refs }]
1567 qos_config_refs: [{ get_param: qos_config_refs }]
1568 virtual_machine: { get_param: virtual_machine }
1569 project: { get_param: project }