NOTE: This is the discussion version of the Application Service Descriptor (ASD) onboarding IM. Please, refer to the released version 1.0 in the "Clean" wiki subfolder.
Introduction:
In today, many complex applications are consisting in a mixed, complex workload, that is described in many Kubernetes resources, e.g. to be run on a certain cluster, etc. In order to deploy the application, the orchestration task would be requiring dealing with different abstract layers of resources, different templates system mapping, and application packaging. Another challenge is to keep up with changes in the cloud infrastructures features enhancement mapping into abstract resource template.
Application metadata:
In order to describe the containerized application to an orchestrator, there is a need for some metadata to accompany the bundled cloud-native deployment artifacts (e.g. Helm files) and images.
A basic decision that will affect this metadata is what exactly the cloud-native deployment artifacts are, and what implications that has for the way the orchestrator communicates with the cluster.
The primary decision is to require that applications are deployed using Helm v3 or later (ref: https://helm.sh/docs/helm/helm/), and therefore the deployment artifacts are one or more Helm Charts. Furthermore, in order not to limit future choices of tooling, or tooling choices creating dependencies between the orchestrator and the underlying Kubernetes cluster, it is assumed that the interface between the orchestrator and the cluster is the Kubernetes API (ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/).
This implies that the orchestrator
- Has an embedded Helm v3 client and is able to use it to deploy the artifacts embedded in the package.
- If it requires any information present in the K8S resource descriptions, it is ably to pre-render the Helm Charts and extract such information.
The most widely used format for describing telco virtualized applications is the ETSI MANO Virtualized Network Function Descriptor (VNFD), ETSI NFV SOL001 specification. This descriptor was created as a vendor neutral way to fully describe a virtualized application, with highly detailed requirements ranging from placement rules, the various virtual components like virtual NICs, CPU and memory requirements, scaling policy, input parameters, and monitoring parameters, etc.
ETSI sought to extend the existing VNFD to cover containerized workloads. It has been pointed out that such efforts have noticeable drawbacks:
- The overall proposed model is essentially duplicating the workload description that K8S (and Helm) provide, but so far with less features.
- The ETSI NFV VNFD (VM and containerized based) definitions could conflict with the Helm Chart definitions, which can cause orchestration confusion and/or failure.
- Non-ETSI-based CNF model and orchestration desire a simplified CNF descriptor
Therefore, this proposal is proposing a new, simple descriptor, the Application Service Descriptor (ASD) with the minimum information for the orchestrator, and pointers to cloud-native artifacts and code (including configuration) required for the LCM implementation. An ASD can describe a complete application / NF, or parts of application / NF.
The ASD allows a clean separation between high-level orchestration, focused on service and resource models, and cloud-native application deployment, implemented via Helm Charts.
Application Service Descriptor model
The tables below summarize the Application Service Descriptor contents.
The overall objective is to keep the items in the descriptor to the bare minimum information, and not duplicate any attributes that might be instead extracted from the Helm Charts. This helps maintain the principle that Helm Charts are the primary deployment artifact for a containerized application and avoids any possible source of error or confusion that such duplication would cause.
Application Service Descriptor (ASD) Information Element (top level)
Attribute | Qualifier | # | Type | Description |
asdId | M | 1 | Identifier | Identifier of this ASD information element. This attribute shall be globally unique. The format will be defined in the data model specification phase. |
asdVersion | M | 1 | String | Identifies the version of the ASD |
asdSchemaVersion | M | 1 | Version | Specifies the version of the ASD’s schema (if we modify an ASD field definition, add/remove field definitions, etc.). |
asdProvider | M | 1 | String | Provider of the AS and of the ASD. |
asdApplicationName | M | 1 | String | Name to identify the Application Service. Invariant for the AS lifetime. |
asdApplicationVersion | M | 1 | Version | Specifies the version of the Application (so, if software, DeploymentArtifacts , ASD values, ... change, this changes). |
asdApplicationInfoName | M | 0..1 | String | Human readable name for the Application service. Can change during the AS lifetime. |
asdInfoDescription | M | 0..1 | String | Human readable description of the AS. Can change during the AS lifetime. |
asdExtCpd | M | 0..N | datatype.ExtCpd | Describes the externally exposed connection points of the application. |
enhancedClusterCapabilities | M | 0..1 | datatype. enhancedClusterCapabilities | A list of expected capabilities of the target Kubernetes cluster to aid placement of the application service on a suitable cluster. |
deploymentItems | M | 1..N | DeploymentItem | Deployment artifacts |
The initial attributes essentially describe the application – a unique identifier, a schema version (that enables versioning the data model of the descriptor itself), and basic metadata, like application name and version and human-readable descriptive fields.
The attribute "asdExtCpd" will be used for exposing endpoints (to enable orchestrators to string together or optimally place linked applications.
The attributes “enhancedClusterCapabilities” provides information which is used to aid placement of the application service on a suitable cluster.
Finally, “deploymentItems” is a list of deployment items, i.e. Helm Charts, that together can deploy an application. The table below shows the information element of these deployment item descriptors.
Deployment Item Information Element
Attribute | Qualifier | # | Content | Description |
deploymentItemId | M | 1 | Identifier | The identifier of this deployment item |
artifactType | M | 1 | String | Specifies the artifact type. One of following values can be chosen: "helm_chart", "helmfile", "crd", "terraform" |
artifactId | M | 1 | String | Reference to a DeploymentArtifact. It can refer to URI or file path. |
deploymentOrder | M | 0..1 | Integer | Specifies the deployment stage that the DeploymentArtifact belongs to. A lower value specifies that the DeploymentArtifact belongs to an earlier deployment stage, i.e. needs to be installed prior to DeploymentArtifact with higher deploymentOrder values. If not specified, the deployment of the DeploymentArtifact can be done in arbitrary order and decided by the orchestrator. |
lifecycleParameters | M | 0..N | String | The list of parameters that can be overridden at deployment time (e.g., the list of parameters in the values.yaml which can be overridden at deployment time) |
Note 1: All cloud native CNF resource IM is specified by particular cloud native specifications. K8s document is an example.
asdExtCpd Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
id | M | 1 | String | The identifier of this extCpdData |
description | M | 1 | String | Describes the service exposed. |
virtualLinkRequirement | M | 1..N | String | Refers in an abstract way to the network or multiple networks that the ExtCpd shall be exposed on (ex: OAM, EndUser, backhaul, LI, etc). The intent is to enable a network operator to take decision on to which actual VPN to connect the extCpd to. NOTE 1. |
networkInterfaceRealizationRequirements | M | 0..1 | datatype.networkInterfaceRealizationRequirements | Details container implementation specific requirements on the NetworkAttachmentDefinition to . See NOTE 2 & 3. |
inputParamMappings | M | 0..1 | datatype.extCpd.ParamMappings | Information on what parameters that are required to be provided to the deployment tools for the asdExtCpd instance. |
resourceMapping | M | 0..1 | String | Kubernetes API resource name for the resource manifest as specified e.g. in helm.chart for the service, ingress or pod resource declaring the network interface. Enables, together with knowledge on namespace, the orchestrator to lookup the runtime data related to the extCpd. |
NOTE 1: Corresponds more or less to a virtual_link requirement in ETSI NFV SOL001.
NOTE 2: Applies only for ExtCpds representing secondary network interfaces in a pod.
NOTE 3: Several ExtCpd may refer to same additional network interface requirements.
networkInterfaceRealizationRequirements Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
trunkMode | M | 0..1 | ”false” | ”true” | If not present or set to”false”, means that this interface shall connect to single network. If set to ”true” then the network interface shall be a trunk interface (connects to multiple VLANS). |
ipam | M | 0..1 | "infraProvided", "orchestrated", "userManaged" | The default value ("infraProvided") means that the CNI specifies how IPAM is done and assigns the IP address to the pod interface. |
interfaceType | M | 0..1 | "kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace | This attribute is applicable for passthrough and memif interfaces. Value default value is ”kernel.netdev”. |
interfaceOptions | M | 0..N | "virtio", | Alternative vNIC configurations the network interface is verified to work with. |
interfaceRedundancy | M | 0..1 | "infraProvided", "activePassiveBond", "activeActiveBond", "activePassiveL3", "activeActiveL3", ”bondCni”, "Left", "Right" | ”infraProvided” means that the application sees one vNIC but that the infrastruture provides redundant access to the network via both switch planes. ”Left” and ”right” indicates a vNIC connected non-redundantly to the network via one specific (left or right) switchplane. All other attributes indicates a mated vNIC pair in the Pod, one connecting to the network via left switchplane and the other connecting to the network via the right switchplane, and with application using them together as a redundant network interface using a particular redundancy method that need to be accomodated in the node infrastructure. |
nicOptions | M | 0..N | "examples": ["i710", "mlx-cx5v"] | nics a direct user space driver the application is verified to work with. Allowed values from ETSI registry. |
datatype.ExtCpd.ParamMappings Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
loadbalancerIP | M | 0..1 | String | 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 ExtCpd represents. Note 2 |
externalIPs | M | 0..N | String | 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 ExtCpd represents. The param name and provided IP address(es) value will be passed to the deployment tool when deploying the DeploymentArtifacts. Note 2 |
nadNames | M | 0..N | String | These attributes specifies, for an ExtCpd 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 ExtCpd represents. Note 1,2,3 |
nadNamespace | M | 0..1 | String | Specifies, for an ExtCpd respesenting a secondary network interface, the name of the deployment artifact input parameter through which the orchestrator can provide the namespace where the NADs are located. Note 2 |
Note 1: When the ExtCpd 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.parameter".
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 ExtCpd.
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 ExtCpd. When three NADs are used in the ExtCpd the NAD implementing the bond attachment interface is provided through the parameter indicated in the third place in the nadNames attribute.
enhancedClusterCapabilities Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
minKernelVersion | M | 1 | String | Describes the minimal required Kernel version, e.g. 4.15.0. Coded as displayed by linux command uname –r |
requiredKernelModules | M | 0..N | String | Required kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. |
conflictingKernelModules | M | 0..N | String | 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 may conflict with use of proprietary user space SCTP stack provided by the application. |
requiredCustomResources | M | 0..N | Structure (inlined) | List the required custom resources types in the target environment, identifying each by the "kind" and "apiVersion" field in the K8S resource manifests and in the application. The list shall include those custom resource types which are not delivered with the application. Example: |
>kind | M | 0..1 | String | Kind of the custom resource |
>apiVersion | M | 0..1 | String | apiVersion of the custom resource |
clusterLabels | M | 0..N | String | 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 standardised meaning e.g. for node features (https://kubernetes-sigs.github.io/node-feature-discovery/v0.9/get-started/features.html#table-of-contents). Example: ClusterLabels |
requiredPlugin | M | 0..N | Structure (inlined) | A list of the names and versions of the required K8s plugin (e.g. multus v3.8) |
>requiredPluginName | M | 0..1 | String | The names of the required K8s plugin (e.g. multus) |
>requiredPluginVersion | M | 0..1 | String | The version of the required plugin (e.g. 3.8) |
References:
- Initial proposal and the background information can be found at: Application Service Descriptor (ASD) and packaging Proposals for CNF - Developer Wiki - Confluence (onap.org)
29 Comments
Marian Darula
For future, consider changes if other OS than Linux is used, e.g. Microsoft.
Marian Darula
Follow example for inline from GS NFV-SOL 003 - V3.5.1 - Network Functions Virtualisation (NFV) Release 3; Protocols and Data Models; RESTful protocols specification for the Or-Vnfm Reference Point (etsi.org)
user-827d7
Issues that I see with the ASD IM:
Marian Darula
user-827d7 : Idea of ASD is that all information which can be relayed via helm charts it's provided there. Not repeated/mapped in the descriptor part. This concerns majority of the items you are listing in your comment. Networking is exception, since it depends on target deployment environment, therefore, in ASD we have descriptors helping to map networking environment to parameters in the helm chart templates.
Let have a short talk in case you need more detailed explanation.
user-827d7
Marian Darula I think that what you are describing is for the Data Model implementation. For the Information Model all that information would still need to be described. Yes, let's talk further, although I suspect that it won't be a "short" talk.![(wink)](/s/z10khv/8804/xgjkrn/_/images/icons/emoticons/wink.svg)
maopeng zhang
A unified CNF modeling of ETSI and ONAP makes sense. Suggest to invite ETSI forks to join and discuss this topic. Hope ONAP and ETSI can reach agreement on this topic.
Zu Qiang (Ericsson)
Not sure if you are proposing an unified CNF ONBOARDING modeling or internal model? and why?
By the way, is there any ONAP requirement of a unified CNF onboarding modeling ?
Marian Darula
Additional reflection on the comment from user-827d7 : Since we rely on cloud native deployment items, like helm charts, the corresponding information model includes the scope of Kubernetes APIs (for reference see e.g. https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/)
user-827d7
Marian Darula In my understanding, APIs and their arguments are an implementation/Data Model NOT an Architecture/Information Model.
In ETSI NFV, IFA011 describes the Architecture/Information Model and SOL001/SOL004/SOL003 describe the implementation.
IMHO, I don't think that you need to define a new Information Model. You should just reuse either the ETSI NFV IFA011 or ONAP/ECOMP Information Model.
Zu Qiang (Ericsson)
user-827d7 I think you and Marian Darula are talking about the same thing from different aspects.
Today, in ONAP run time, only ECOMP IM is used. We did try to introduce IFA011 IM into ONAP in the past a few releases (since Release D). But so far it is not working due to the large impacts. So reusing the ETSI NFV IFA011 IM will not work for CNF LCM. ONAP/ECOMP Information Model only has the supports for PNF and VNF. CNF LCM is missing. For instance, ECOMP does not support development items. Therefore ECOMP is not good enough for CNF LCM. If we limit ourselves to reusing existing ONAP IM instead of introducing a new IM, there is no way to support cloud native CNF LCM in ONAP.
The ASD IM is defined for CNF onboarding only. It is not used to replace the ONAP internal IM. After onboarding, it needs to be transformed into ECOMP VF model with additional enhancement, e.g. artifacts. This will allow the ONAP SO (making use of CNF manager) to talk with K8s on order to 'manage' the CNF. All the "missing information" in your list is described in the Helm Chat at onboarding. If there is a need for SDC to understand all the info, which I don't see the needs, SDC could open the Chat and retrieve it from there. Chat needs to be opened only at run time which CNF manager is doing this job.
I hope this clarify a bit.
Thanks.
BR/Zu
user-827d7
Zu Qiang (Ericsson) Marian Darula My understanding is that ONAP runtime implementation (SDC AID) mostly uses the ECOMP Data Model which is derived from the ONAP ECOMP Information Model. If the ASD Data Model can be onboarded by SDC and converted into the SDC AID Data Model then, by definition, the Information Model is the same, i.e. the ONAP ECOMP Information Model.
In ETSI NFV, both SOL001 (TOSCA) and SOL006 (YANG) Data Models conform to the same IFA011 Information Model.
Hopefully this makes clarifies my comment about ASD reusing one of the existing Information Models. If ECOMP Information model doesn't currently support CNFs, then perhaps that model could be augmented with the missing types/relationships.
Best Regards,
Fred
Zu Qiang (Ericsson)
Thanks user-827d7 for your quick reply.
ASD Information model defines the requirements on how to define a cloud native CNF LCM. Mixing the CNF modelling requirements with VNF / PNF modelling requirements is not a good idea and it doesn't bring us any benefits. Once the CNF model requirements are clear for everyone, we need to work on the implementation which is the CNF data model. For the CNF data model, we could reuse any data structures which are supported in implementation. I do see benefits by reusing current implementation in CNF data model. We can discuss the details when ASD DM discussion is coming.
I agree with you that ECOMP Information model doesn't support CNFs LCM. It needs to be enhanced in order to support CNF LCM within ONAP. I would like to have a discussion if you can bring any proposal on the table.
Only using ECOMP IM to define the CNF onboarding DM is not a good way of working. There is no requirement in ONAP to support only one onboarding Information model. Otherwise the ETSI alignment project shall not be approved by ONAP. Supporting multiple onboarding model provides the benefits that an ONAP can have the capability to manage any type of CNF onboarding.
BR/Zu
user-827d7
Zu Qiang (Ericsson) Thanks for your response. I disagree with your statement that having a common Information Model for CNF/VNF/PNF. I think that the majority of the information will be common among those different types and would bring great benefit to the ONAP community as well as operators and vendors that use and provide those xNFs.
I have already contributed an updated ONAP Information model, based on ETSI NFV IFA011 v4.2.1 (ETSI IFA011 v4.2.1 Changes to ONAP Resource Model. and ETSI IFA011 v3.3.1 & v4.1.1 Changes to ONAP Resource Model.) , that would support CNFs LCM. I think my contribution already matches the Information needed by the ASD Data Model. I would be interested in your review of that Information Model.
You are welcome to use the ETSI NFV based IM if you think that the ECOMP model is insufficient. Please let me know if you find anything missing from the ETSI NFV based Information Model that you would need for ASD onboarding Data Model. Perhaps Jacqueline Beaulac could assist you in doing that analysis.
Best Regards,
Fred
Zu Qiang (Ericsson)
user-827d7 Thanks for your response
I am sorry to repeat my comments that ETSI NFV IFA011 based IM does not work due to large impacts on ONAP. Of cause, if you can contribute the code to improve it, it is really appreciated. The output of ONAP is not documentation, it is coding.
And again, There is no requirement in ONAP to support only one onboarding Information model.
BR/Zu
user-827d7
Zu Qiang (Ericsson) Thanks for your quick reply.
Please provide concrete examples of how using the ETSI NFV IFA011 based IM would impact ONAP. At the moment, IMHO my previous contributions to the ONAP IM are sufficient to manage CNF LCM.
I am suggesting that, If you choose not to improve or use one the existing ONAP Information Models, that ASD oboarding should develop a "complete" Information Model. Repeating what I commented previously:
Issues that I see with the ASD IM:
Best Regards,
Fred
Zu Qiang (Ericsson)
Hello, Fernando Oliveira Thanks for your response
One concrete example is that there is no IFA011 based CNF onboarding being supported in ONAP code today.
Br/Zu
user-827d7
Zu Qiang (Ericsson) By that logic, there must be concrete issues with ASD since there is no ASD based CNF onboarding in ONAP code today.
But seriously, I would very much like to understand the technical issues that you assert make the ETSI IFA011 4.2.1 IM impossible to use for the ASD DM. From my understanding, the mapping from ETSI IFA011 v4.X to the current ASD DM would be mostly straightforward.
Looking forward to a technical response.
BR,
Fred
Zu Qiang (Ericsson)
user-827d7 I am very glad to have a technical discussion only.
From this wiki page, all required attributers are listed for a cloud native CNF model. Comparing to ETSI IFA011, this is a very shorter list. ETSI IFA011 4.2.1 IM has so many attributers which are not applicable to a cloud native CNF model. And most of those IFA011 attributers are defined as mandatory. 'flavour_id' can be a good example. There are more.
There are also many attributers which are defined in HelmChat already. There is no reason to repeat it in the descriptor.
In addition, there are attributers which are required by cloud native CNF model. And it is not defined in ETSI IFA011. 'enhancedClusterCapabilities' is a good example.
By the way, we don't have ASD onboarding yet. It is not because there is any technical issues.
BR/Zu
user-827d7
Zu Qiang (Ericsson) Great.
As I commented above, I think that the current ASD IM is missing many information requirements to describe a CNF LCM:
Issues that I see with the ASD IM:
The helm chart attributes would be an implementation/Data Model. The information model would still need to describe what information is being supplied by the helm charts.
From my understanding, the ASD 'enhancedClusterCapabilities' attribute corresponds to the ETSI NFV IFA011 OsContainerDesc.extendedResourceRequests.
I thought we were only going to discuss technical issues.![(wink)](/s/z10khv/8804/xgjkrn/_/images/icons/emoticons/wink.svg)
BR,
Fred
Marian Darula
Below, there is a presentation positioning ASD in connection to ETSI MANO approach and illustrating how the information content is handled when using ASD. The file also includes answer to the question posted by user-827d7 in previous comment.
More detailed explanation provided by Thinh Nguyenphu:
No
Comment
Response to ONAP wiki page
1
Missing resource (CPU, Memory, Storage, ...) requirement information
Resource information are available in the Helm chart
2
Missing L2/L3 Protocol and Address information
this feature was used to assign which protocols would be used to communicate on the VNF interfaces.
In CNF world this should be dealt by K8S and should not be orchestrator driven.
This can be a used for K8S systems.
3
Missing Software Image information
available in the Helm chart and referenced via deploymentItem
4
Missing Security Rules information
available in the Helm chart and security descriptor (see ORAN IM)
5
Missing Affinity/Anti-Affinity information
available in the Helm chart
6
Missing Scaling Information
available in the Helm chart
7
Missing Healing information
It was a VNF special action . The action is K8S driven restarts. For things outside the scope Operators are the method.
Core has a healthcheck methods and preventive actions for Kubernetes level stuff. This is a CaaS/PaaS level operation rather than a CNF operation.
8
Missing Service/VIP mapping information
available in the Helm chart
9
Missing configuration information
available in the Helm chart and referenced via deploymentItem. For application CM, other type of descriptor, such as CM descriptor, FM, alarms, etc.
10
Missing monitoring information
Depending on specific monitoring information to be capture. Kubernetes provides some of the monitoring capabilites. ASD is not a place to model monitoring requirements
11
Missing upgrade/downgrade information
Helm Follows SemVer [https://semver.org/] pattern.
So similar Optional SemVer based parameter would be good for the LCM Orchestrator to take decisions.
Fernando Oliveira
Thinh Nguyenphu Marian Darula Again, I think what you are describing is a particular Data Model/Implementation. This might be the cause of confusion. RFC3444 has a good explanation of the differences between Information Models and Data Models.
The information Model would have the abstract version of these from which multiple Data Models/Implementations could be derived.
The ONAP Information Model https://github.com/onap/modeling-modelspec includes a CNF Information Model which I think already covers the majority of the items you describe in the ASD Data Model/Implementation. If there are specific elements that you think are missing or don't match the semantics, please list them so that we can update the ONAP IM to match your needs.
Zu Qiang (Ericsson)
Hello, user-827d7
Based on RFC3444 "The main purpose of an IM is to model managed objects at a conceptual level, independent of any specific implementations or protocols used to transport the data. The degree of specificity (or detail) of the abstractions defined in the IM depends on the modeling needs of its designers." Therefore there is no need to specify the CNF LCM information in the format of parameters or class level. The reference to K8S documentation is good enough for conceptual level.
In ASD IM, CNF LCM is managed by K8s, there is no need for SO to know all the CNF LCM parameters. As far as those parameters are available in HelmChat, K8s will take care of the CNF LCM. SO only do the placement. K8s is not part of ONAP. ONAP shall not specify the IM for an external entity.
By the way, the only working data model in ONAP is not based on the ONAP Information Model.
Anyway, if you believe the ONAP IM is good enough for CNF DM, are you ready to approve the ASD DM?
BR/Zu
Fernando Oliveira
Hi Zu Qiang (Ericsson) ,
IMHO a definition of CNF LCM is needed and the current ONAP Information Model already has a definition. It would be great if it didn't need to change in order derive the ASD DM.
If you describe how the ASD Data Model maps to the current ONAP IM, I would be happy to review it.
Do you have the TOSCA class/type definitions for the data types you list?
Have you run them through a TOSCA validator such as Puccini (https://github.com/tliron/puccini)?
BR,
Fred
Zu Qiang (Ericsson)
Hello, Fernando Oliveira
I don't think the ASD Data Model can map to the current ONAP IM. But if you believe ONAP IM is good enough, please show me the mapping. The ASD DM can be find in here: Application Service Descriptor (ASD) Resource Data Model.
BR/Zu
Fernando Oliveira
Hi Zu Qiang (Ericsson) , shitao li already created a first attempt at that mapping in Comments to ASD proposal and I expanded on that in the comments above.
Can you highlight what you don't think maps? We can then try to resolve any of the mismatched items.
BR,
Fred
Zu Qiang (Ericsson)
Hello, Fernando Oliveira
What shitao li did is a mapping between ASD IM and IFA011. And this mapping is only a partially mapping. What is not included in his mapping is those IFA011 mandatary attributes.
If you can show me a mapping between ASD DM and ONAP Information Model https://github.com/onap/modeling-modelspec, it is really appreciated. And please show me how to map all ONAP IM mandatary attributes into ASD DM. Thanks.
BR / Zu
Fernando Oliveira
Hi Zu Qiang (Ericsson)
If there are mandatory elements in the information model, then it would be expected that a derived DM would have mappings for those or explanations of why they are not needed. It isn't my place to do those mappings or provide an explanation of why they aren't needed, that would be up to the implementer that understands the intended implementation
If we can agree that mapping of the ONAP IM shitao li provided covers all of the required elements in the ASD IM then it would seem that we should be able to agree on what changes, if any, might be needed to the ONAP IM.
BR,
Fred
Marian Darula
Hello user-827d7 , in addition what Zu said, we shall not just look at Descriptor part of ASD. As we explained, the descriptor in ASD carries only information which cannot be included in the helm charts. Majority information is carried via helm charts. If we want to really making mapping, we need to take all information as specified per Kubernetes information model (carried via Kubernetes APIs) and map to structures and attributes in ONAP Information Model. I don't think this is easy exercise if we do it down to all details. My comment was that I don't see real benefits to do it. Instead, we suggested to refer to Kubernetes documentation.
Fernando Oliveira
Hi Marian Darula , As I previously tried to highlight, the Information Model should be independent of the Data Model/implementation. An implementation is free to provide the data in whatever format/language is needed for the implementation. The ASD descriptor Data Model/implementation can be written TOSCA, YANG, YAML, Helm, ... or any combination of those.
I think that it is a worthwhile task to do that mapping. I'm not suggesting that it is trivial task, but I think that it will be worth it in the future if an alternative container management environment comes along that ONAP wants to support.
BR,
Fred