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.

asdVersionM1StringIdentifies 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

AttributeQualifierCardinalityContentDescription
idM1StringThe identifier of this extCpdData
descriptionM1StringDescribes the service exposed.
virtualLinkRequirementM1..NStringRefers 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.
networkInterfaceRealizationRequirementsM0..1datatype.networkInterfaceRealizationRequirementsDetails container implementation specific requirements on the NetworkAttachmentDefinition to . See NOTE 2 & 3.
inputParamMappingsM0..1datatype.extCpd.ParamMappingsInformation on what parameters that are required to be provided to the deployment tools for the asdExtCpd instance.
resourceMappingM0..1StringKubernetes 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

AttributeQualifierCardinalityContentDescription
trunkModeM0..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).
ipamM0..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​M0..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”.​ 
interfaceOptionsM0..N

"virtio",
"memif"

Alternative vNIC configurations the network interface is verified to work with.

interfaceRedundancyM0..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.
"activeActiveBond": The bonded left/right links must be part of a multi-chassis LAG in active-active mode
"activePassiveBond": Interfaces bonded in active-passive mode in the application with move of bond MAC address. No specific requirements on DC fabric.
"activePassiveL3":  Move of application IP address
"activeActiveL3": Anycast/ECMP
”bondCni” ; the mated pair network interfaces are used via a 3rd bond cni based network interface.

nicOptionsM0..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

AttributeQualifierCardinalityContentDescription
loadbalancerIPM0..1String

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

externalIPsM0..NString

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

nadNamesM0..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.
It is expected that the NADs themselves have been created prior to the deployment of the deployment artifacts.

Note 1,2,3

nadNamespaceM0..1String

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.
Attribute may be omitted if the namespace is same as the application namespace. 

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

AttributeQualifierCardinalityContentDescription
minKernelVersionM1StringDescribes the minimal required Kernel version, e.g. 4.15.0. Coded as displayed by linux command uname –r
requiredKernelModulesM0..NStringRequired kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc.
conflictingKernelModulesM0..NStringKernel 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


M0..NStructure (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:
requiredCustomResources: 
-{kind: "Redis", apiVersion: "kubedb.com/v1alpha1"}


>kind

M0..1String

Kind of the custom resource

>apiVersion

M0..1String

apiVersion of the custom resource

clusterLabels M0..NString

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
- feature.node.kubernetes.io/cpu-cpuid.AESNI: true

requiredPluginM0..NStructure (inlined)A list of the names and versions of the required K8s plugin (e.g. multus v3.8)
>requiredPluginNameM0..1StringThe names of the required K8s plugin (e.g. multus)
>requiredPluginVersionM0..1StringThe version of the required plugin (e.g. 3.8)

References: 


  • No labels

29 Comments

  1. For future, consider changes if other OS than Linux is used, e.g. Microsoft. 

  2. Issues that I see with the ASD IM:

    1. Missing resource (CPU, Memory, Storage, ...) requirement information
    2. Missing L2/L3 Protocol and Address information
    3. Missing Software Image information
    4. Missing  Security Rules information
    5. Missing Affinity/Anti-Affinity information
    6. Missing Scaling Information
    7. Missing Healing information
    8. Missing Service/VIP mapping information
    9. Missing configuration information
    10. Missing monitoring information
    11. Missing upgrade/downgrade information
  3. Fernando Oliveira : 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.

    1. 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)

  4. 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.

    1. 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 ?

  5. Additional reflection on the comment from Fernando Oliveira : 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/


    1. 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.

      1. Fernando Oliveira 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

        1. 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

          1. Thanks Fernando Oliveira 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

  6. 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

    1. Fernando Oliveira 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

      1. 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:

        1. Missing resource (CPU, Memory, Storage, ...) requirement information
        2. Missing L2/L3 Protocol and Address information
        3. Missing Software Image information
        4. Missing  Security Rules information
        5. Missing Affinity/Anti-Affinity information
        6. Missing Scaling Information
        7. Missing Healing information
        8. Missing Service/VIP mapping information
        9. Missing configuration information
        10. Missing monitoring information
        11. Missing upgrade/downgrade information

        Best Regards,

        Fred

        1. 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

          1. 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

            1. Fernando Oliveira 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 


              1. 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:

                1. Missing resource (CPU, Memory, Storage, ...) requirement information
                2. Missing L2/L3 Protocol and Address information
                3. Missing Software Image information
                4. Missing  Security Rules information
                5. Missing Affinity/Anti-Affinity information
                6. Missing Scaling Information
                7. Missing Healing information
                8. Missing Service/VIP mapping information
                9. Missing configuration information
                10. Missing monitoring information
                11. Missing upgrade/downgrade information

                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)

                BR,

                Fred

  7. 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 Fernando Oliveira 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.

    1. 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.

      1. Hello, Fernando Oliveira 

           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 

        1. 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


          1. 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

            1. 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

              1. 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

                1. 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

  8. Hello Fernando Oliveira , 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. 

    1. 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