tosca.datatypes.asd.extCpdData:
version: 0.1
derived_from: tosca.datatypes.Root
description: "Describes the datatype for external connection point definition data"
properties:
id:
description: "The identifier of this extCpdData"
required: true
type: string
description:
description: >
This property describes for a particular ExtCpd instance
what service it exposes.
required: true
type: string
virtual_link_requirement:
description: >
Refers in an abstract way to the network or multiple networks that
the ExtCpd shall be exposed on (ex: OAM, EndUser, backhaul, LI, etc)
required: true
type: string
network_interface_realization_requirements:
description: >
Details container implementation specific requirements on
the NetworkAttachmentDefinition
required: false
type: tosca.datatypes.asd.networkInterfaceRequirements
input_param_mappings:
description: >
Information on what helm chart input parameters that
are required to be configured for this extCpd
required: false
type: tosca.datatypes.asd.paramMappings
resource_mapping:
description: >
Kubernetes API resource name for the resource manifest for the service,
ingress controller or pod
required: false
type: string
tosca.datatypes.asd.networkInterfaceRequirements
tosca.datatypes.asd.networkInterfaceRequirements:
derived_from: tosca.datatypes.Root
version: 0.1
description: "Describes the datatype for network interface requirements"
properties:
trunk_mode:
description: >
Information about whether the CP instantiated from this Cp is
in Trunk mode (802.1Q or other). When operating in "trunk mode",
the Cp is capable of carrying traffic for several VLANs.
Absence of this property implies that trunkMode is not configured
for the Cp i.e. It is equivalent to boolean value "false".
required: true
type: boolean
default: false
ipam:
description: >
Identifies whether application expects IP address assignment to be
managed by the cluster infrastructure (CNI IPAM plugin), or
configured by orchestrator via for example helm input parameter,
or if IP assignment is handled by the application itself.
required: true
type: string
constraints:
- valid_values: ["infraProvided", "orchestrated", "userManaged"]
default: "infraProvided"
interface_type:
description: >
Indicates what type of network interface the application expects.
Kernel based virtual netdev based on CNIs such as ovs | bridge |
macvlan | ipvlan, or PCIe dev directly visible in application
namespace with kernel or userspace driver or bonded with the Bond
CNI, or userspace-CNI based network interface
(requires DPDK-OVS/VPP vSwitch).
required: true
type: string
constraints:
- valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"]
default: "kernel.netdev"
interface_option:
description: >
This attribute describes verified realization options for the
network interface in question. Currently listed options
(virtio and memif) are applicable for the interfaceType “userspace”.
required: false
type: list
entry_schema:
type: string
constraints:
- valid_values: [“virtio", "memif“]
interface_redundancy:
description: >
Identifies switch-plane redundancy method the application uses,
and that node infrastructure is required to comply with.
"infraProvided", “left” and “right”: The container sees a
single vNIC that a) the infrastructure bonds over both switchplanes
or b) that is connected to the network via only left or
right the switchplane.
The other cases are for a mated pair of vnics connecting to
same network, but where one vNIC connects
via left switch plane and the other via right switch plane,
and where the application manages the redundancy.
"activePassiveBond": the application bonds with move of MAC address.
"activeActiveBond“: bonded left/right links must be part of a multi-chassis LAG
"activePassiveL3": application will move application IP address between the vNICs.
"activeActiveL3": the application uses anycast/ECMP.
required: true
type: string
constraints:
- valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"]
default: "infraProvided"
nic_options:
description: >
Identifies for the direct.userdriver interface type, the physical
nics the driver is verified to work with.
Allowed values for nic types must be handled via a registry or be standardized.
required: false
type: list
entry_schema:
type: string
tosca.datatypes.asd.paramMappings
tosca.datatypes.asd.paramMappings:
version: 0.1
derived_from: tosca.datatypes.Root
description: "Describes the datatype for parameter mapping"
properties:
loadbalancer_IP:
description: >
When present, this attribute specifies the name of the deployment
artifact input parameter through which the orchestrator can
configure the loadbalancerIP parameter of the K8s service
or ingress controller that the extCpdData represents.
Note: The format of the Content strings is specific for each different
orchestration templating technology used (Helm, Teraform, etc.).
Currently only a format for use with Helm charts is suggested:
"<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
Whether the optional parts of the format are present depends on how the
parameter is declared in the helm chart. An example is:
"chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.LBIP".
required: false
type: string
external_IPs:
description: >
When present, this attribute specifies the name of the deployment
artifact input parameter through which the orchestrator can
configure the extermalIPs parameter of the K8s service or ingress
controller, or the pod network interface annotation, that the
extCpdData represents.
Note: The format of the Content strings is specific for each different
orchestration templating technology used (Helm, Teraform, etc.).
Currently only a format for use with Helm charts is suggested:
"<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
Whether the optional parts of the format are present depends on how the
parameter is declared in the helm chart. An example is:
"chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.extIP".
required: false
type: list
entry_schema:
type: string
nad_names:
description: >
Specifies, for an extCpdData respesenting a secondary network interface,
the name(s) of the deployment artifact input parameter(s) through which
the orchestrator can provide the names of the network attachment
definitions (NADs) the orchestrator has created as base for the network
interface the extCpdData represents.
Note 1: When the extCpdData represent a networkRedundant/mated-pair of
sriov interfaces, there are references to 2 or 3 related NADs needed
to be passed, while for other interface types only one NAD reference
is needed to be passed.
Note 2: The format of the Content strings is specific for each different
orchestration templating technology used (Helm, Teraform, etc.).
Currently only a format for use with Helm charts is suggested:
"<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
Whether the optional parts of the format are present depends on how the
parameter is declared in the helm chart. An example is:
chartName:"subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.nadName".
Note 3: A direct attached (passthrough) network interface, such as an sriov
interface, attaches to a network via only one of the two switch planes
in the infrastructure.
When using a direct attached network interface one therefore commonly in a
pod uses a mated pair of sriov network attachments, where each interface
attaches same network but via different switchplane.
The application uses the mated pair of network interfaces as a single
logical “swith-path-redundant” network interface – and this is represented
by a single extCpdData.
Also there is a case where a third “bond” attachment interface is used in
the pod, bonding the two direct interfaces so that the application do not
need to handle the redundancy issues – application just uses the bond interface.
In this case, all three attachments are together making up a logical
“switch-path-redundant” network interface represented by a single extCpdData.
When three NADs are used in the extCpdData the NAD implementing the bond attachment
interface is provided through the parameter indicated in the third place in
the nadNames attribute.
required: false
type: list
entry_schema:
type: string
nad_namespace:
description: >
Specifies, for an extCpdData respesenting a secondary network interface,
the name of the deployment artifact input parameter through which the orchestrator
can provide the namespace where the NetworkAttachmentDefinitions (NADs) are located.
Attribute may be omitted if the namespace is same as the application
namespace.
Note: The format of the Content strings is specific for each different
orchestration templating technology used (Helm, Teraform, etc.).
Currently only a format for use with Helm charts is suggested:
"<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
Whether the optional parts of the format are present depends on how the
parameter is declared in the helm chart. An example is:
"chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.NameSpace".
required: false
type: string