Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

RequirementDescriptionJIRA
R1

In the TOSCA.meta, reuse the same metadata structure defined by TOSCA and ETSI

  • TOSCA-Meta-File-Version:
  • CSAR-Version:
  • Created-By:
  • Entry-Definitions:

R2

In the TOSCA.meta, reuse the same ETSI defined Entry Keywords

  • ETSI-Entry-Manifest:
  • ETSI-Entry-Change-Log:                  // it optional
  • ETSI-Entry-Licenses:                        // it is under discussion to make it optional 
  • ETSI-Entry-Tests:                              // it is optional 
  • ETSI-Entry-Certificate:                     // it is optional

R3

In the main manifest file, reuse the metadata structure defined by ETSI with new keywords (the following proposal is under discussion)

  • oran_id: 2116fd24-83f2-416b-bf3c-ca1964793aca
  • oran_product_name: vCU
  • oran_provider_id: Ericsson
  • oran_package_version: 1.0
  • oran_release_date_time: 2021-10-21T11:30:00+05:00
  • oran_entry_definition_type: [asd, app, app-asd, …]

R4

In the main manifest file, reuse the artifact security as defined by ETSI

  • Source:
  • Signature:                // for security option #1
  • Certificate:               // for security option #1

For Jakarta PoC, ONAP shall support the security option #2. So, the App provider delivers one zip file consisting of the CSAR file, a signature file and a certificate file that includes the App provider public key.

-- AppPackage.zip

    –- AppPackage.csar

    –- AppPackage.csar signature

    –- Signing certificate


R5

In the main manifest file non_mano_artifact_sets, reuse the same structure with the existing keywords defined by ONAP

  • non_mano_artifact_sets:
    • onap_vest_events:
      • source:
    • onap_pm_directory:
      • source:
    • onap_yang_module:
      • source:
    • onap_others:
      • source:
      • source:

...

ETSI-Entry-Manifest: app_main_descripter.mf



  • Definitions
    • ASD_1_0asd_types.yaml                        // TASK #<6>: define ASD data models for node_types, artifact_types, data_types...

   // note: it will be finalized after the ASD data model 

    • main_app_template.yaml.               // descriptor leveraging ASD

e.g., Sample main_app_template.App

...

Code Block
tosca_definitions_version: tosca_simple_yaml_1_3


data_types:
  ExtCpdData:
    version: 1.0
    description: "Describes the datatype for exposed service"
    properties:
      id:
        description: "A symbolic name for this exposed service (extCpd)"
        required: true
        type: string
      virtualLinkRequirement: 
        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: false
        type: string
      interfaceOrder:
        description: >
          Mandatory attribute for a secondary network interface. 
          Defines the order (0-N) in which an the additional/secondary 
          network interface declaration appears in the pod manifest
        required: false        
      networkInterfaceRequirements:
        description: >
          Details container implementation specific requirements on 
          the NetworkAttachmentDefinition
        required: false
        type: ExtCpdData.NetworkInterfaceRequirementsIE
      switchPlane:
        description: >
          Used to indicate resource pool (left or right) to allocate 
          connection resources for sepcific secondary interfaces
        required: false
        type: string
        constraints:
          - valid_values: [left, right]
      inputParamMappings:
        description: >
          Information on what helm chart input parameters that 
          are required to be configured for this extCpd
        required: false
        type: ExtCpdData.ParamMappings
      resourceMapping:
        description: >
          Kubernetes API resource name for the resource manifest for the service
        required: false
        type: ExtCpdData.ParamMappings
    

artifact_types:
  AsdDeploymentItem:
    version: 1.0
    description: "The default type of the ASD artifacts"
    properties:
      artifactType:
        type: string
        constraints:
          - valid_values: ["helm_chart", "helmfile", "crd", "terraform" ]
      itemId:
        type: integer
      deploymentOrder:
        type: integer
      lifecycleParameters:
        type: list
        entry_schema: string

    
node_types:
  ApplicationServiceDescriptor:
    description: "The ASD node type"
    properties:
      id: 
        type: string
      provider:
        type: string
      applicationName:
        type: string
      applicationVersion:
        type: string
      extCpds: 
        type: list
        entry_schema: ExtCpdData
      enhancedClusterCapabilities:
        type: list
        entry_schema: string       
    requirements:
      - virtual_link_1: 
          capability: tosca.capabilities.nfv.VirtualLinkable 
          relationship: tosca.relationships.nfv.VirtualLinksTo 
          occurrences: [ 0, 1 ] 
      - virtual_link_2: 
          capability: tosca.capabilities.nfv.VirtualLinkable 
          relationship: tosca.relationships.nfv.VirtualLinksTo 
          occurrences: [ 0, 1 ]
      - ...
      - virtual_link_8: 
          capability: tosca.capabilities.nfv.VirtualLinkable 
          relationship: tosca.relationships.nfv.VirtualLinksTo 
          occurrences: [ 0, 1 ]    
        


    • main_app_template.yaml.               // descriptor leveraging ASD

e.g., Sample main_app_template.yaml

Code Block
tosca_definitions_version: tosca_simple_yaml_1_3
imports:
  - asd_types.yaml
  - nsd_types.yaml

topology_template:
  substitution_mappings: 
    node_type: tosca.nodes.nfv.ASD_in_NS
    substitution_filter:
      properties:
        - descriptor_id: { equal: 'b1bb0ce7-2222-4fa7-95ed-4840d70a1179' }
    requirements: 
      virtual_link_1: [ applicationServiceDescriptor, virtual_link_1 ]
      virtual_link_2: [ applicationServiceDescriptor, virtual_link_2 ]
      ...
      virtual_link_8: [ applicationServiceDescriptor, virtual_link_8 ]    

  
  node_templates: 
    applicationServiceDescriptor:
      type: ApplicationServiceDescriptor
      version: 1.0
      description: "Sample Application to Illustrate ASD Usage"
      properties: 
        id: fdsa-xdsfg-sdfsd-wqeuy
        provider: MyCompany
        applicationName: SampleApp
        applicationVersion: “2.3”
        applicationInfoName: “Sample Application”
        extCpds:
          - id: webpage-service
            virtualLinkRequirement: endUser  
          - id: transactionAPI
            virtualLinkRequirement: backhaul
            interfaceOrder: 0
            switchPlane: left
        enhancedClusterCapabilities: [ o-ran.o-cloud.hw.gpgpu ]
      artifacts: #these are the deployment items:
        sampleapp-db:
          type: AsdDeploymentItem
          file: "sampleapp-db-operator-helm.tgz" # this can be also a uri
          properties:
            artifactType: "helm_chart" 
            itemId: 1 
            deploymentOrder: 1 
            lifecycleParameters: 
              - ".Values.db.fullBackupInterval"
              - ".Values.db.walConsolidationInterval"
        sampleapp-services:
          type: AsdDeploymentItem
          file: "sampleapp-services-helm.tgz"  # this can be also a uri
          properties:
            artifactType: "helm_chart"
            itemId: 2 
            deploymentOrder: 2 
            lifecycleParameters:
              - ".Values.app.initialWebReplicas"


  • Artifacts (optional; Images, Licenses and Artifacts directories can be located under the root directory)
    • Images
      • <image>          // or image reference
      • <image>           // or image reference
    • Licenses
      • LICENSE.txt

    • Deployment

      • HELM             //TASK #<7>: use the "HELM" directory to contain Helm Charts
        • <Helm Chart A file>                                  // Helm Charts can include values.schema.json along with values.yaml
        • <Helm Chart B file>                                  // It is for imposing a structure on the values.yaml file

...