Code Block | ||||
---|---|---|---|---|
| ||||
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 virtualLinkRequirementdescription: description: > Refers in anThis abstractproperty waydescribes tofor thea networkparticular orExtCpd multipleinstance networks that the ExtCpd shallwhat beservice exposed on (ex: OAM, EndUser, backhaul, LI, etc)it exposes. required: true type: string virtual_link_requirement: networkInterfaceRequirements: description: > DetailsRefers containerin implementationan specificabstract requirementsway onto the network or multiple networks that the NetworkAttachmentDefinition the ExtCpd shall required:be false exposed on (ex: OAM, EndUser, backhaul, LI, etc) type: datatype.asd.networkInterfaceRequirements inputParamMappingsrequired: true descriptiontype: > string Information on what helm chart input parameters that network_interface_realization_requirements: description: > Details container implementation are required to be configured for this extCpdspecific requirements on the NetworkAttachmentDefinition required: false type: datatypetosca.datatypes.asd.paramMappingsnetworkInterfaceRequirements resourceMappinginput_param_mappings: description: > KubernetesInformation APIon resourcewhat namehelm forchart theinput resourceparameters manifest for the service, ingress controller or pod that are required to be configured for this extCpd required: false type: string | ||||
Code Block | ||||
title | tosca. | datatypedatatypes.asd. | networkInterfaceRequirements||
collapse | true | networkInterfaceRequirements:paramMappings derived resource_frommapping: tosca.datatypes.Root versiondescription: 0.1> description: "Describes the datatype for network interfaceKubernetes requirements" API resource name for properties: the resource manifest for the service, trunkMode: description: > ingress controller or pod required: false Information about whether type: string |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.networkInterfaceRequirements: derived_from: tosca.datatypes.Root version: 0.1 description: "Describes the datatype for network interface requirements" properties: trunk_mode: description: > 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. Information about Absencewhether ofthe thisCP propertyinstantiated impliesfrom thatthis trunkModeCp is not configured for the Cp i.e. in Trunk mode (802.1Q or other). ItWhen isoperating equivalentin to boolean value "false". required: true type: boolean "trunk mode", the Cp is capable default:of false carrying traffic for several ipam:VLANs. description: > Absence of Identifiesthis whetherproperty applicationimplies expectsthat IPtrunkMode addressis assignmentnot toconfigured be managed by the cluster for the Cp i.e. infrastructureIt (CNIis IPAMequivalent plugin),to orboolean configured by orchestrator via for example helm input parameter, value "false". required: true type: boolean default: false ipam: or if IP assignment is handled by thedescription: application> itself. required: true type:Identifies string whether application expects IP address assignment to be constraints: - valid_values: ["infraProvided", "orchestrated", "userManaged"] default: "infraProvided" interfaceType: managed by the cluster infrastructure (CNI IPAM plugin), or description: > configured by orchestrator via for example helm Indicatesinput whatparameter, type of network interface the application expects. or if IP assignment Kernelis basedhandled virtualby netdevthe basedapplication onitself. CNIs such as “ovs required: |true bridge | macvlan | ipvlan, or type: string constraints: PCIe dev directly visible in application namespace with kernel or userspace driver or- valid_values: ["infraProvided", "orchestrated", "userManaged"] default: "infraProvided" or bonded with the Bond CNI, or userspace-CNI based network interface (requires DPDK-OVS/VPP vSwitch). interface_type: description: > required: false Indicates what type of network interface the application expects. type: string constraints: Kernel based virtual netdev based on CNIs such as ovs - valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"]| bridge | default: "kernel.netdev" interfaceOption: macvlan | ipvlan, or PCIe dev directly visible description:in >application This attribute is applicable fornamespace passthroughwith andkernel memifor interfaces.userspace driver or bonded with the Bond The default value is ”kernel.netdev”. required: false CNI, or userspace-CNI based network interface type: list (requires entry_schema: DPDK-OVS/VPP vSwitch). required: true type: string constraints: - - valid_values: [“virtio", "memif“]valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"] default: "kernel.netdev" interfaceRedundancy interface_option: description: > IdentifiesThis switch-planeattribute redundancydescribes methodverified therealization applicationoptions uses,for andthe that node infrastructure is required to comply with. network interface in question. Currently listed options "infraProvided", “left” and “right”: The container sees a single vNIC that a) the infrastructure bonds over both (virtio and memif) are applicable for the interfaceType “userspace”. required: false switchplanes or b) that is connected to the network via only left or right the switchplane. type: list entry_schema: type: string The other cases are for a mated pair of vnics connecting toconstraints: 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. valid_values: [“virtio", "memif“] interface_redundancy: description: > Identifies switch-plane redundancy method the application uses, "activeActiveBond“: bondedand left/rightthat linksnode mustinfrastructure beis partrequired ofto a multi-chassis LAG comply with. "activePassiveL3infraProvided": application will move application IP address between the vNICs. , “left” and “right”: The container sees a single vNIC "activeActiveL3":that a) the application uses anycast/ECMP. required: true infrastructure bonds over both switchplanes or b) that type:is string connected to the network via only left or constraints: - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] right the switchplane. The default: "infraProvided" nicOptions: description: > Identifies for the direct.userdriver interface type, the physical nics the driver is verified to work with. other cases are for a mated pair of vnics connecting to same network, but where one vNIC connects via left switch plane and Allowedthe valuesother forvia nicright typesswitch mustplane, be handled via a registry or be standardized. required: false and where the application manages the type:redundancy. list entry_schema: "activePassiveBond": the application bonds with move of MAC type: string | ||||
Code Block | ||||
| ||||
paramMappings:address. version: 0.1 derived_from: tosca.datatypes.Root description "activeActiveBond“: "Describes the datatype for parameter mapping" properties:bonded left/right links must be part of a multi-chassis LAG loadbalancerIP: description"activePassiveL3": > application will move application IP address between the vNICs. When present, this attribute specifies the name of"activeActiveL3": the deploymentapplication artifact input parameteruses anycast/ECMP. required: true throughtype: whichstring the orchestrator can configure the loadbalancerIP parameter ofconstraints: the K8s service - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", or ingress controller that the ExtCpd represents. "Left", "Right"] default: "infraProvided" required: false nic_options: typedescription: string> externalIPs: Identifies for the direct.userdriver interface type, the description:physical > When present, this attribute specifies nics the namedriver ofis theverified deploymentto artifact input parameterwork with. Allowed throughvalues whichfor thenic orchestratortypes canmust configurebe thehandled extermalIPsvia parametera ofregistry theor K8sbe service standardized. required: false type: orlist ingress controller, or the pod network interface annotation, that the ExtCpd represents. entry_schema: required: false type: string |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
tosca.datatypes.asd.paramMappings: typeversion: list0.1 entry_schema:derived_from: tosca.datatypes.Root description: "Describes the datatype for parameter mapping" type properties: string nadNameloadbalancer_IP: description: > Specifies, for an ExtCpd respesenting a secondaryWhen network interface, present, this attribute specifies the name of the deployment the name(s) of the NetworkAttachmentDefinitions the orchestrator has created artifact input parameter through which the orchestrator can as base for the network interfaceconfigure the ExtCpdloadbalancerIP represents.parameter of the K8s service required: false type: string nadNamespace: or ingress controller that the description:extCpdData >represents. Specifies, for an asdExtCpd respesenting a secondary network interface,Note: The format of the Content strings is specific for each different theorchestration namespacetemplating wheretechnology theused NetworkAttachmentDefinitions (NADs) are located.Helm, Teraform, etc.). AttributeCurrently mayonly bea omittedformat iffor theuse namespacewith isHelm samecharts asis thesuggested: application namespace. "<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 |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.enhancedClusterCapabilities: version: 0.1 derived_from: tosca.datatypes.Root description: "Describes the datatype for parameter mapping" properties: min_kernel_version: description: > Describes the minimal required Kernel version, e.g. 4.15.0. Coded as displayed by linux command uname –r required: true type: string required_kernel_modules: description: > Required kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. required: false required: false type: list entry_schema: type: string | ||||
Code Block | ||||
| ||||
enhancedClusterCapabilities conflicting_kernel_modules: version: 0.1 derived_fromdescription: tosca.datatypes.Root> description: "Describes the datatypeKernel formodules, parameterwhich mapping" must not be present properties: in the target environment. minKernelVersion: description: "Describes the minimal required KernelThe version, e.g. 4.15.0. Codedkernel modules are coded as displayedlisted by linux lsmod command uname –r" , required: true e.g., ip6_tables, cryptd, nf_nat etc. type: string requiredKernelModulesExample: Linux kernel SCTP module, which would conflict with description:use >of Required kernel modules are coded as listed byproprietary linuxuser lsmodspace command, e.g. ip6_tables, cryptd, nf_nat etcSCTP stack provided by the application. required: false type: list entry_schema: type: string conflictingKernelModules: description: > Kernel modules, which must not be present in the target environment. required_custom_resources: description: > The kernel modules are coded as listed by linuxList lsmodthe command, e.g. ip6_tables, cryptd, nf_nat etc. custom resource kinds required to be supported in the target Example: Linux kernel SCTPenvironment. module,The whichlist would conflictshall withinclude usethose ofcustom proprietaryresource userkinds spacewhich are SCTPnot stackdelivered providedwith by the application. required: false type: list entry_schema: type: string requiredCustomResources:tosca.datatypes.asd.customResourceRequirement cluster_labels: description: > This attribute allows to associate arbitrary labels to clusters. description: > These can indicate special infrastructure capabilities (e.g., NW acceleration, List the custom resource kinds required toGPU be supported in the target environment. compute, etc.). The intent of these labels is to serve as a set of The list shall include those custom resource kinds which arevalues notthat deliveredcan withhelp thein application. placement decisions. required: false clusterLabels follow the Kubernetes label key-value-nomenclature type: list entry_schema: (https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). type: tosca.datatypes.asd.customResourceRequirement clusterLabels: description: > This attribute allows to associate arbitrary labels to clusters It is recommended that labels follow a standardized meaning e.g. for node features (https://kubernetes-sigs.github.io/node-feature-discovery/v0.9/get-started/features.html#table-of-contents). TheseExample: can indicate special infrastructure capabilities (e.g., NW acceleration, GPGPU compute, etc.). ClusterLabels The intent of these labels is to serve as a set of values that can help in application placement decisions. - feature.node.kubernetes.io/cpu-cpuid.AESNI: true required: false type: list This can be specified with the attribute entry_schema: -mtype: Mandatory,string means deployment is not attempted if such support is not available in the target system -p: As preference - it means orchestrator will try to select a system with specific requirements, required_plugin: description: a list of the name of the required K8s plugin required: false type: list entry_schema: type: tosca.datatypes.asd.requiredPlugin |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.customResourceRequirement: but if not found it will attempt deployment in a system not having such HW. required: falseversion: 0.1 derived_from: tosca.datatypes.Root description: > type: list kind: "Redis", apiVersion: "kubedb.com/v1alpha1" properties: entry_schema: kind: type: string requiredPodAnnotations: description: "the name of the description:custom >resource requirement" Annotations required to be supported.type: string Example thatrequired: listtrue requirement for Kubernetes cluster infrastructure support for the Multus network attachment annotationsapi_version: requiredPodAnnotations: {"k8s.v1.cncf.io/networks", ... } required: false type: list entry_schema:description: "the api version of the custom resource requirement" type: string typerequired: stringtrue |
Code Block | ||||
---|---|---|---|---|
| ||||
customResourceRequirementtosca.datatypes.asd.requiredPlugin: version: 0.1 derived_from: tosca.datatypes.Root description: "the required K8s plugin" properties: description: > name: kind: "Redis", apiVersiondescription: "kubedb.com/v1alpha1" properties: the name of the required K8s plugin" type: string kind: required: true type: string version: required: true description: "the version of the required K8s apiVersion: plugin" type: string required: true |
...