Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.extCpdData: version: 0.1.0 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: Describes the service exposed by the extCpd > This property describes for a particular ExtCpd instance what service it exposes. required: falsetrue type: string virtualLinkRequirementvirtual_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 networkInterfaceRequirementsnetwork_interface_realization_requirements: description: > Details container implementation specific requirements on the NetworkAttachmentDefinition required: false type: datatypetosca.datatypes.asd.networkInterfaceRequirements inputParamMappingsinput_param_mappings: description: > Information on what helm chart input parameters that are required to be configured for this extCpd required: false type: datatypetosca.datatypes.asd.paramMappings resourceMappingresource_mapping: description: > Kubernetes API resource name for the resource manifest for the service, ingress controller or pod required: false type: string |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.networkInterfaceRequirements: derived_from: tosca.datatypes.Root version: 0.1.0 description: "Describes the datatype for network interface requirements" properties: trunkModetrunk_mode: description: > Information about whether the CP instantiated from this Cp is in Trunk mode (802.1Q or other). in Trunk mode (802.1Q or other). When operating in "trunk mode", the Cp 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. 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 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" interfaceTypeinterface_type: description: > Indicates what type of network interface the application expects. Kernel based virtual netdev based on CNIs such as “ovsovs | bridge | macvlan | ipvlan, or macvlan | ipvlan, or PCIe dev directly visible in application namespace with kernel or userspace driver or bonded with the Bond or bonded with the Bond CNI, or userspace-CNI based network interface (requires DPDK-OVS/VPP vSwitch). required: falsetrue type: string constraints: - valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"] default: "kernel.netdev" interfaceOption interface_option: description: > This attribute isdescribes applicableverified forrealization passthroughoptions andfor memifthe interfaces. network interface Thein defaultquestion. valueCurrently is ”kernel.netdev”. listed options (virtio and memif) are applicable for the interfaceType “userspace”. required: false type: list entry_schema: type: string constraints: - valid_values: [“virtio", "memif“] interfaceRedundancyinterface_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 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" nicOptions 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 |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
tosca.datatypes.asd.paramMappings: version: 0.1.0 derived_from: tosca.datatypes.Root description: "Describes the datatype for parameter mapping" properties: loadbalancerIPloadbalancer_IP: description: > When present, this attribute specifies the name of the deployment artifact input parameter artifact input parameter through which the orchestrator can configure the loadbalancerIP parameter of the K8s service or ingress controller that the ExtCpdextCpdData represents. required: false Note: The format of type:the string Content strings is specific for each externalIPs:different description: > orchestration templating technology used (Helm, Teraform, etc.). When present, this attribute specifies the name of the deployment artifact input parameter Currently only a format for use with Helm charts is suggested: through which the orchestrator can configure the extermalIPs parameter of the K8s service "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>". Whether the optional parts of the format are orpresent ingressdepends controller,on orhow the pod network interface annotation, that the ExtCpd represents. parameter required:is false declared in the helm chart. An example typeis: list entry_schema: "chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.LBIP". type: string nadNamerequired: false descriptiontype: >string Specifies, for an ExtCpd respesenting a secondary network interface, external_IPs: description: > When present, this attribute specifies the name(s) of the NetworkAttachmentDefinitions the orchestrator has createddeployment asartifact baseinput forparameter thethrough network interfacewhich the ExtCpdorchestrator represents.can required: false type: string configure nadNamespace:the extermalIPs parameter of the K8s service or ingress description: > Specifies, for an asdExtCpdcontroller, respesentingor athe secondarypod network interface annotation, that the the namespace where the NetworkAttachmentDefinitions (NADs) are locatedextCpdData represents. AttributeNote: mayThe beformat omittedof ifthe theContent namespacestrings is samespecific asfor theeach applicationdifferent namespace. required: false type: string | ||||||
Code Block | ||||||
| ||||||
enhancedClusterCapabilities: orchestration templating version: 1.0 derived_from: tosca.datatypes.Roottechnology used (Helm, Teraform, etc.). description: "Describes the datatype for parameter mapping" properties: Currently only a minKernelVersion: format for use with Helm charts is descriptionsuggested: "Describes the minimal required Kernel version, e.g. 4.15.0. Coded as displayed by linux command uname –r" required: true type: string requiredKernelModules: description: > Required kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. "<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 conflictingKernelModulesnad_names: description: > Kernel modulesSpecifies, whichfor mustan notextCpdData berespesenting presenta insecondary the target environment. network interface, The kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. the name(s) of the deployment artifact input parameter(s) through which the orchestrator can provide Example:the Linuxnames kernelof SCTPthe module,network whichattachment would conflict with use of proprietary user space definitions (NADs) the orchestrator has created as SCTPbase stack providedfor by the application.network required: false type:interface list the extCpdData represents. entry_schema: Note 1: When the extCpdData type: string represent a networkRedundant/mated-pair of requiredCustomResources: description: > sriov interfaces, there are references to 2 or 3 related NADs needed List the custom resource kinds required to be supportedpassed, inwhile thefor targetother environment.interface types only one NAD reference The list shall include those custom resource kindsis whichneeded areto not delivered with the application. required: false be passed. Note type2: list The format of the Content strings is specific for entry_schema: each different type: tosca.datatypes.asd.customResourceRequirement clusterLabels: description: > 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 type: list entry_schema: type: string conflicting_kernel_modules: description: > Kernel modules, which must not be present in the target environment. The kernel modules are coded as listed by linux lsmod command, e.g., ip6_tables, cryptd, nf_nat etc. Example: Linux kernel SCTP module, which would conflict with use of proprietary user space SCTP stack provided by the application. required: false type: list entry_schema: type: string required_custom_resources: description: > List the custom resource kinds required to be supported in the target environment. The list shall include those custom resource kinds which are not delivered with the application. required: false type: list entry_schema: type: tosca.datatypes.asd.customResourceRequirement cluster_labels: description: > This attribute allows to associate arbitrary labels to clusters. These can indicate special infrastructure capabilities (e.g., NW acceleration, GPU compute, etc.). The intent of these labels is to serve as a set of values that can help in application placement decisions. clusterLabels follow the Kubernetes label key-value-nomenclature (https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). 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). This attribute allows to associate arbitrary labels to clusters. Example: These 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 beentry_schema: specified with the attribute type: string -mrequired_plugin: Mandatory, means deployment is not attempted ifdescription: sucha supportlist isof notthe availablename inof the required targetK8s systemplugin required: false -ptype: Aslist preference - it means orchestrator will try toentry_schema: select a system with specific requirements, type: tosca.datatypes.asd.requiredPlugin |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.customResourceRequirement: version: 0.1 but if not found it will attempt deployment in a system not having such HW. derived_from: tosca.datatypes.Root description: > required: false kind: "Redis", type: listapiVersion: "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: requiredPodAnnotationsdescription: {"k8s.v1.cncf.io/networks", ... } required: false type: list entry_schema:"the api version of the custom resource requirement" type: string typerequired: stringtrue |
Code Block | ||||
---|---|---|---|---|
| ||||
customResourceRequirementtosca.datatypes.asd.requiredPlugin: version: 0.1.0 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 |
...