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 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
  26     :test_case: no test found
 
  27     :test_file: no test found
 
  29     When a VNF's Heat Orchestration Template's Contrail resource
 
  31     references an external network that requires the network's
 
  32     Fully Qualified Domain Name (FQDN), the property parameter
 
  34        * **MUST** follow the format '{network-role}_net_fqdn'
 
  35        * **MUST** be declared as type 'string'
 
  36        * **MUST NOT** be enumerated in the NF's Heat Orchestration Template's
 
  44     :test_case: no test found
 
  45     :test_file: no test found
 
  47     A VNF's Heat Orchestration Template's parameter
 
  48     '{network-role}_net_fqdn'
 
  49     **MUST** be declared as type 'string'.
 
  56     :test_case: no test found
 
  57     :test_file: no test found
 
  59     A VNF's Heat Orchestration Template's parameter
 
  60     '{network-role}_net_fqdn'
 
  61     **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
  64 *Example: Parameter declaration*
 
  69     {network-role}_net_fqdn:
 
  71       description: Contrail FQDN for the {network-role} network
 
  73 *Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface
 
  74 Reference to a Network FQDN.*
 
  76 In this example, the {network-role} has been defined as oam to represent
 
  77 an oam network and the {vm-type} has been defined as fw for firewall.
 
  78 The Contrail resource OS::ContrailV2::VirtualMachineInterface property
 
  79 virtual_network_refs references a contrail network FQDN.
 
  84     type: OS::ContrailV2::VirtualMachineInterface
 
  88           template: VM_NAME_virtual_machine_interface_1
 
  90             VM_NAME: { get_param: fw_name_0 }
 
  91       virtual_machine_interface_properties:
 
  92         virtual_machine_interface_properties_service_interface_type: {
 
  93         get_param: oam_protected_interface_type }
 
  95         - get_param: oam_net_fqdn
 
  97         - get_param: fw_sec_grp_id
 
 100 Interface Route Table Prefixes for Contrail InterfaceRoute Table
 
 101 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 108     :test_case: no test found
 
 109     :test_file: no test found
 
 111     If a VNF's Heat Orchestration Template
 
 112     'OS::ContrailV2::InterfaceRouteTable' resource
 
 113     'interface_route_table_routes' property
 
 114     'interface_route_table_routes_route' map property parameter name
 
 115     **MUST** follow the format
 
 117        * {vm-type}_{network-role}_route_prefixes
 
 124     :test_case: no test found
 
 125     :test_file: no test found
 
 127     If a VNF's Heat Orchestration Template
 
 128     'OS::ContrailV2::InterfaceRouteTable' resource
 
 129     'interface_route_table_routes' property
 
 130     'interface_route_table_routes_route' map property parameter
 
 131     '{vm-type}_{network-role}_route_prefixes'
 
 132     **MUST** be defined as type 'json'.
 
 139     :test_case: no test found
 
 140     :test_file: no test found
 
 142     If a VNF's Heat Orchestration Template
 
 143     'OS::ContrailV2::InterfaceRouteTable' resource
 
 144     'interface_route_table_routes' property
 
 145     'interface_route_table_routes_route' map property parameter
 
 146     '{vm-type}_{network-role}_route_prefixes'
 
 147     **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's
 
 150 The parameter '{vm-type}_{network-role}_route_prefixes'
 
 151 supports IP addresses in the format:
 
 153 1. Host IP Address (e.g., 10.10.10.10)
 
 155 2. CIDR Notation format (e.g., 10.0.0.0/28)
 
 157 *Example Parameter Definition*
 
 162     {vm-type}_{network-role}_route_prefixes:
 
 164       description: JSON list of Contrail Interface Route Table route prefixes
 
 173       description: Unique name for this VF instance
 
 174     fw_oam_route_prefixes:
 
 176       description: prefix for the ServiceInstance InterfaceRouteTable
 
 177     int_fw_dns_trusted_interface_type:
 
 179       description: service_interface_type for ServiceInstance
 
 183       type: OS::ContrailV2::InterfaceRouteTable
 
 184       depends_on: [resource name of OS::ContrailV2::ServiceInstance]
 
 188             template: VNF_NAME_interface_route_table
 
 190               VNF_NAME: { get_param: vnf_name }
 
 191         interface_route_table_routes:
 
 192           interface_route_table_routes_route: { get_param: fw_oam_route_prefixes }
 
 193         service_instance_refs:
 
 194           - get_resource: <resource name of OS::ContrailV2::ServiceInstance>
 
 195         service_instance_refs_data:
 
 196           - service_instance_refs_data_interface_type: { get_param: oam_interface_type }
 
 198 Resource OS::ContrailV2::InstanceIp
 
 199 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 201 The Contrail resource OS::ContrailV2::InstanceIp has two properties
 
 202 that parameters **MUST** follow an explicit naming convention.  The
 
 203 properties are 'instance_ip_address' and 'subnet_uuid'.
 
 205 *Example OS::ContrailV2::InstanceIp Resource*
 
 210     type: OS::ContrailV2::InstanceIp
 
 212       name: { get_param: name }
 
 213       fq_name: { get_param: fq_name }
 
 214       display_name: { get_param: display_name }
 
 215       secondary_ip_tracking_ip:
 
 217           secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix },
 
 218           secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len },
 
 220       instance_ip_address: { get_param: instance_ip_address }
 
 221       instance_ip_mode: { get_param: instance_ip_mode }
 
 222       subnet_uuid: { get_param: subnet_uuid }
 
 223       instance_ip_family: { get_param: instance_ip_family }
 
 226           annotations_key_value_pair:
 
 228               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
 229               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
 232       instance_ip_local_ip: { get_param: instance_ip_local_ip }
 
 233       instance_ip_secondary: { get_param: instance_ip_secondary }
 
 234       physical_router_refs: [{ get_param: physical_router_refs }]
 
 235       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
 236       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
 238 Resource OS::ContrailV2::InstanceIp Property instance_ip_address
 
 239 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 241 A VNF's Heat Orchestration Templates resource 'OS::ContrailV2::InstanceIp'
 
 242 property 'instance_ip_address' parameter
 
 243 **MUST** follow the same requirements
 
 244 that apply to the resource 'OS::Neutron' property 'fixed_ips' map
 
 245 property 'ip_address' parameter.
 
 247 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
 
 250 The property instance_ip_address uses the same parameter naming
 
 251 convention as the property fixed_ips and Map Property ip_address in
 
 252 OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP
 
 253 Address. The {network-role} has been defined as oam_protected to
 
 254 represent an oam protected network and the {vm-type} has been defined as
 
 259   fw_0_oam_protected_vmi_0_IP_0:
 
 260     type: OS::ContrailV2::InstanceIp
 
 262       - fw_0_oam_protected_vmi_0
 
 264       virtual_machine_interface_refs:
 
 265         - get_resource: fw_0_oam_protected_vmi_0
 
 266       virtual_network_refs:
 
 267         - get_param: oam_protected_net_fqdn
 
 268       instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }
 
 270 Resource OS::ContrailV2::InstanceIp Property subnet_uuid
 
 271 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 273 A VNF's Heat Orchestration Templates resource 'OS::ContrailV2::InstanceIp'
 
 274 property 'subnet_uuid' parameter
 
 275 **MUST** follow the same requirements
 
 276 that apply to the resource 'OS::Neutron' property 'fixed_ips' map
 
 277 property 'subnet'/'subnet_id' parameter.
 
 279 *Example: Contrail Resource OS::ContrailV2::InstanceIp, Property
 
 282 The property instance_ip_address uses the same parameter naming
 
 283 convention as the property fixed_ips and Map Property subnet_id in
 
 284 OS::Neutron::Port. The resource is assigning a Cloud Assigned IP
 
 285 Address. The {network-role} has been defined as "oam_protected" to
 
 286 represent an oam protected network and the {vm-type} has been defined as
 
 291   fw_0_oam_protected_vmi_0_IP_0:
 
 292     type: OS::ContrailV2::InstanceIp
 
 294     - fw_0_oam_protected_vmi_0
 
 296       virtual_machine_interface_refs:
 
 297         - get_resource: fw_0_oam_protected_vmi_0
 
 298       virtual_network_refs:
 
 299         - get_param: oam_protected_net_fqdn
 
 300       subnet_uuid: { get_param: oam_protected_subnet_id }
 
 302 OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs
 
 303 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 305 A VNF's Heat Orchestration Templates resource
 
 306 'OS::ContrailV2::VirtualMachineInterface' map property,
 
 307 virtual_machine_interface_allowed_address_pairs,
 
 308 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
 
 309 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
 
 310 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix
 
 311 parameter **MUST** follow the same requirements that apply to the
 
 312 resource 'OS::Neutron::Port' property
 
 313 'allowed_address_pairs', map property 'ip_address' parameter.
 
 315 *Example OS::ContrailV2::VirtualMachineInterface*
 
 320     type: OS::ContrailV2::VirtualMachineInterface
 
 322       name: { get_param: name }
 
 323       fq_name: { get_param: fq_name }
 
 324       ecmp_hashing_include_fields:
 
 326           ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
 
 327           ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
 
 328           ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
 
 329           ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
 
 330           ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
 
 331           ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
 
 333       virtual_machine_interface_host_routes:
 
 335           virtual_machine_interface_host_routes_route:
 
 337               virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
 
 338               virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
 
 339               virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
 
 340               virtual_machine_interface_host_routes_route_community_attributes:
 
 342                   virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
 
 346       virtual_machine_interface_mac_addresses:
 
 348           virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
 
 350       virtual_machine_interface_dhcp_option_list:
 
 352           virtual_machine_interface_dhcp_option_list_dhcp_option:
 
 354               virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
 
 355               virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
 
 356               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 },
 
 359       virtual_machine_interface_bindings:
 
 361           virtual_machine_interface_bindings_key_value_pair:
 
 363               virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
 
 364               virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
 
 367       virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
 
 368       virtual_machine_interface_allowed_address_pairs:
 
 370           virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
 
 372               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
 
 374                   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 },
 
 375                   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 },
 
 377               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
 
 378               virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
 
 383           annotations_key_value_pair:
 
 385               annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
 
 386               annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
 
 389       virtual_machine_interface_fat_flow_protocols:
 
 391           virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
 
 393               virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
 
 394               virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
 
 397       virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
 
 398       port_security_enabled: { get_param: port_security_enabled }
 
 399       virtual_machine_interface_properties:
 
 401           virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
 
 402           virtual_machine_interface_properties_interface_mirror:
 
 404               virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
 
 405               virtual_machine_interface_properties_interface_mirror_mirror_to:
 
 407                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
 
 408                   virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
 
 409                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
 
 410                   virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
 
 411                   virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
 
 412                   virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
 
 413                   virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
 
 414                   virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
 
 415                   virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
 
 417                       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 },
 
 418                       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 },
 
 419                       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 },
 
 423           virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
 
 424           virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
 
 426       display_name: { get_param: display_name }
 
 427       service_health_check_refs: [{ get_param: service_health_check_refs }]
 
 428       routing_instance_refs: [{ get_param: routing_instance_refs }]
 
 429       routing_instance_refs_data:
 
 431           routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
 
 432           routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
 
 433           routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
 
 434           routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
 
 435           routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
 
 436           routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
 
 437           routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
 
 438           routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
 
 440       security_group_refs: [{ get_param: security_group_refs }]
 
 441       physical_interface_refs: [{ get_param: physical_interface_refs }]
 
 442       port_tuple_refs: [{ get_param: port_tuple_refs }]
 
 443       interface_route_table_refs: [{ get_param: interface_route_table_refs }]
 
 444       virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
 
 445       virtual_network_refs: [{ get_param: virtual_network_refs }]
 
 446       virtual_machine_refs: [{ get_param: virtual_machine_refs }]
 
 447       qos_config_refs: [{ get_param: qos_config_refs }]
 
 448       virtual_machine: { get_param: virtual_machine }
 
 449       project: { get_param: project }