From c4e85b64d93f7bb4cdcf13cbc65f2256e5bb7a33 Mon Sep 17 00:00:00 2001 From: "Bozawglanian, Hagop (hb755d)" Date: Tue, 4 Sep 2018 21:44:28 +0000 Subject: VNFRQTS - Breaking up Chapter 5 - Heat Breaking up the Heat section to make it more granular. Issue-ID: VNFRQTS-275 Change-Id: I020469d7aea199cd71c4d7c67664ad4dbc4071c9 Signed-off-by: Bozawglanian, Hagop (hb755d) --- .../Contrail Resource Parameters.rst | 449 +++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst (limited to 'docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst') diff --git a/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst new file mode 100644 index 0000000..3d06902 --- /dev/null +++ b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters.rst @@ -0,0 +1,449 @@ +.. Licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2017 AT&T Intellectual Property. All rights reserved. + +Contrail Resource Parameters +---------------------------------------------------------------------- + +ONAP requires the parameter names of certain Contrail Resources to +follow specific naming conventions. This section provides these +requirements. + +Contrail Network Parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Contrail based resources may require references to a Contrail network +using the network FQDN. + +External Networks +~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. req:: + :id: R-02164 + :target: VNF + :keyword: MUST + :test: no test found + :test_case: no test found + :test_file: no test found + + When a VNF's Heat Orchestration Template's Contrail resource + has a property that + references an external network that requires the network's + Fully Qualified Domain Name (FQDN), the property parameter + + * **MUST** follow the format '{network-role}_net_fqdn' + * **MUST** be declared as type 'string' + * **MUST NOT** be enumerated in the NF's Heat Orchestration Template's + Environment File + +.. req:: + :id: R-73228 + :target: VNF + :keyword: MUST + :test: no test found + :test_case: no test found + :test_file: no test found + + A VNF's Heat Orchestration Template's parameter + '{network-role}_net_fqdn' + **MUST** be declared as type 'string'. + +.. req:: + :id: R-92193 + :target: VNF + :keyword: MUST NOT + :test: no test found + :test_case: no test found + :test_file: no test found + + A VNF's Heat Orchestration Template's parameter + '{network-role}_net_fqdn' + **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's + Environment File. + +*Example: Parameter declaration* + +.. code-block:: yaml + + parameters: + {network-role}_net_fqdn: + type: string + description: Contrail FQDN for the {network-role} network + +*Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface +Reference to a Network FQDN.* + +In this example, the {network-role} has been defined as oam to represent +an oam network and the {vm-type} has been defined as fw for firewall. +The Contrail resource OS::ContrailV2::VirtualMachineInterface property +virtual_network_refs references a contrail network FQDN. + +.. code-block:: yaml + + fw_0_oam_vmi_0: + type: OS::ContrailV2::VirtualMachineInterface + properties: + name: + str_replace: + template: VM_NAME_virtual_machine_interface_1 + params: + VM_NAME: { get_param: fw_name_0 } + virtual_machine_interface_properties: + virtual_machine_interface_properties_service_interface_type: { + get_param: oam_protected_interface_type } + virtual_network_refs: + - get_param: oam_net_fqdn + security_group_refs: + - get_param: fw_sec_grp_id + + +Interface Route Table Prefixes for Contrail InterfaceRoute Table +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. req:: + :id: R-28222 + :target: VNF + :keyword: MUST + :test: no test found + :test_case: no test found + :test_file: no test found + + If a VNF's Heat Orchestration Template + 'OS::ContrailV2::InterfaceRouteTable' resource + 'interface_route_table_routes' property + 'interface_route_table_routes_route' map property parameter name + **MUST** follow the format + + * {vm-type}_{network-role}_route_prefixes + +.. req:: + :id: R-19756 + :target: VNF + :keyword: MUST + :test: no test found + :test_case: no test found + :test_file: no test found + + If a VNF's Heat Orchestration Template + 'OS::ContrailV2::InterfaceRouteTable' resource + 'interface_route_table_routes' property + 'interface_route_table_routes_route' map property parameter + '{vm-type}_{network-role}_route_prefixes' + **MUST** be defined as type 'json'. + +.. req:: + :id: R-76682 + :target: VNF + :keyword: MUST NOT + :test: no test found + :test_case: no test found + :test_file: no test found + + If a VNF's Heat Orchestration Template + 'OS::ContrailV2::InterfaceRouteTable' resource + 'interface_route_table_routes' property + 'interface_route_table_routes_route' map property parameter + '{vm-type}_{network-role}_route_prefixes' + **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's + Environment File. + +The parameter '{vm-type}_{network-role}_route_prefixes' +supports IP addresses in the format: + +1. Host IP Address (e.g., 10.10.10.10) + +2. CIDR Notation format (e.g., 10.0.0.0/28) + +*Example Parameter Definition* + +.. code-block:: yaml + + parameters: + {vm-type}_{network-role}_route_prefixes: + type: json + description: JSON list of Contrail Interface Route Table route prefixes + +*Example:* + +.. code-block:: yaml + + parameters: + vnf_name: + type: string + description: Unique name for this VF instance + fw_oam_route_prefixes: + type: json + description: prefix for the ServiceInstance InterfaceRouteTable + int_fw_dns_trusted_interface_type: + type: string + description: service_interface_type for ServiceInstance + + resources: + : + type: OS::ContrailV2::InterfaceRouteTable + depends_on: [resource name of OS::ContrailV2::ServiceInstance] + properties: + name: + str_replace: + template: VNF_NAME_interface_route_table + params: + VNF_NAME: { get_param: vnf_name } + interface_route_table_routes: + interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } + service_instance_refs: + - get_resource: + service_instance_refs_data: + - service_instance_refs_data_interface_type: { get_param: oam_interface_type } + +Resource OS::ContrailV2::InstanceIp +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The Contrail resource OS::ContrailV2::InstanceIp has two properties +that parameters **MUST** follow an explicit naming convention. The +properties are 'instance_ip_address' and 'subnet_uuid'. + +*Example OS::ContrailV2::InstanceIp Resource* + +.. code-block:: yaml + + : + type: OS::ContrailV2::InstanceIp + properties: + name: { get_param: name } + fq_name: { get_param: fq_name } + display_name: { get_param: display_name } + secondary_ip_tracking_ip: + { + secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix }, + secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len }, + } + instance_ip_address: { get_param: instance_ip_address } + instance_ip_mode: { get_param: instance_ip_mode } + subnet_uuid: { get_param: subnet_uuid } + instance_ip_family: { get_param: instance_ip_family } + annotations: + { + annotations_key_value_pair: + [{ + annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key }, + annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value }, + }], + } + instance_ip_local_ip: { get_param: instance_ip_local_ip } + instance_ip_secondary: { get_param: instance_ip_secondary } + physical_router_refs: [{ get_param: physical_router_refs }] + virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }] + virtual_network_refs: [{ get_param: virtual_network_refs }] + +Resource OS::ContrailV2::InstanceIp Property instance_ip_address +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A VNF's Heat Orchestration Templates resource 'OS::ContrailV2::InstanceIp' +property 'instance_ip_address' parameter +**MUST** follow the same requirements +that apply to the resource 'OS::Neutron' property 'fixed_ips' map +property 'ip_address' parameter. + +*Example: Contrail Resource OS::ContrailV2::InstanceIp, Property +instance_ip_address* + +The property instance_ip_address uses the same parameter naming +convention as the property fixed_ips and Map Property ip_address in +OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP +Address. The {network-role} has been defined as oam_protected to +represent an oam protected network and the {vm-type} has been defined as +fw for firewall. + +.. code-block:: yaml + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + depends_on: + - fw_0_oam_protected_vmi_0 + properties: + virtual_machine_interface_refs: + - get_resource: fw_0_oam_protected_vmi_0 + virtual_network_refs: + - get_param: oam_protected_net_fqdn + instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] } + +Resource OS::ContrailV2::InstanceIp Property subnet_uuid +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A VNF's Heat Orchestration Templates resource 'OS::ContrailV2::InstanceIp' +property 'subnet_uuid' parameter +**MUST** follow the same requirements +that apply to the resource 'OS::Neutron' property 'fixed_ips' map +property 'subnet'/'subnet_id' parameter. + +*Example: Contrail Resource OS::ContrailV2::InstanceIp, Property +subnet_uuid* + +The property instance_ip_address uses the same parameter naming +convention as the property fixed_ips and Map Property subnet_id in +OS::Neutron::Port. The resource is assigning a Cloud Assigned IP +Address. The {network-role} has been defined as "oam_protected" to +represent an oam protected network and the {vm-type} has been defined as +"fw" for firewall. + +.. code-block:: yaml + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + depends_on: + - fw_0_oam_protected_vmi_0 + properties: + virtual_machine_interface_refs: + - get_resource: fw_0_oam_protected_vmi_0 + virtual_network_refs: + - get_param: oam_protected_net_fqdn + subnet_uuid: { get_param: oam_protected_subnet_id } + +OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A VNF's Heat Orchestration Templates resource +'OS::ContrailV2::VirtualMachineInterface' map property, +virtual_machine_interface_allowed_address_pairs, +virtual_machine_interface_allowed_address_pairs_allowed_address_pair, +virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, +virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix +parameter **MUST** follow the same requirements that apply to the +resource 'OS::Neutron::Port' property +'allowed_address_pairs', map property 'ip_address' parameter. + +*Example OS::ContrailV2::VirtualMachineInterface* + +.. code-block:: yaml + + : + type: OS::ContrailV2::VirtualMachineInterface + properties: + name: { get_param: name } + fq_name: { get_param: fq_name } + ecmp_hashing_include_fields: + { + ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured }, + ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip }, + ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip }, + ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol }, + ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port }, + ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port }, + } + virtual_machine_interface_host_routes: + { + virtual_machine_interface_host_routes_route: + [{ + virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix }, + virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop }, + virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type }, + virtual_machine_interface_host_routes_route_community_attributes: + { + virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }], + }, + }], + } + virtual_machine_interface_mac_addresses: + { + virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }], + } + virtual_machine_interface_dhcp_option_list: + { + virtual_machine_interface_dhcp_option_list_dhcp_option: + [{ + virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name }, + virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value }, + 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 }, + }], + } + virtual_machine_interface_bindings: + { + virtual_machine_interface_bindings_key_value_pair: + [{ + virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key }, + virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value }, + }], + } + virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy } + virtual_machine_interface_allowed_address_pairs: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: + [{ + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + 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 }, + 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 }, + }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode }, + }], + } + annotations: + { + annotations_key_value_pair: + [{ + annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key }, + annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value }, + }], + } + virtual_machine_interface_fat_flow_protocols: + { + virtual_machine_interface_fat_flow_protocols_fat_flow_protocol: + [{ + virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol }, + virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port }, + }], + } + virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner } + port_security_enabled: { get_param: port_security_enabled } + virtual_machine_interface_properties: + { + virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type }, + virtual_machine_interface_properties_interface_mirror: + { + virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction }, + virtual_machine_interface_properties_interface_mirror_mirror_to: + { + virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name }, + virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation }, + virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address }, + virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address }, + virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance }, + virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port }, + virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header }, + virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode }, + virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header: + { + 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 }, + 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 }, + 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 }, + }, + }, + }, + virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference }, + virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag }, + } + display_name: { get_param: display_name } + service_health_check_refs: [{ get_param: service_health_check_refs }] + routing_instance_refs: [{ get_param: routing_instance_refs }] + routing_instance_refs_data: + [{ + routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction }, + routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag }, + routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac }, + routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac }, + routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label }, + routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address }, + routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address }, + routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol }, + }] + security_group_refs: [{ get_param: security_group_refs }] + physical_interface_refs: [{ get_param: physical_interface_refs }] + port_tuple_refs: [{ get_param: port_tuple_refs }] + interface_route_table_refs: [{ get_param: interface_route_table_refs }] + virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }] + virtual_network_refs: [{ get_param: virtual_network_refs }] + virtual_machine_refs: [{ get_param: virtual_machine_refs }] + qos_config_refs: [{ get_param: qos_config_refs }] + virtual_machine: { get_param: virtual_machine } + project: { get_param: project } -- cgit 1.2.3-korg