Versions Compared

Key

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

...

Code Block
languagetext
titleONAP Data Model Normatives
linenumberstrue
collapsetrue
##################################
### ONAP Data Model Normatives ###
##################################

data_types:

interface_types:
  onap.interfaces.node.lifecycle.Standard:
    derived_from: tosca.interfaces.node.lifecycle.Standard
    description: the ONAP resource lifecycle interface, in case it extends the standard TOSCA's
    # here come the extensions

  onap.interfaces.node.lifecycle.VNF:
    # VNFs may need an extended lifecycle interface
    
  onap.interfaces.node.lifecycle.Service:
    # Services may need an extended lifecycle interface
    
capability_types:
  onap.capabilities.Compute:
    # a derivation of tosca.capabilities.Computea TOSCA normative capability type

  onap.capabilities.Storage:
    # a derivation of tosca.capabilities.Storagea TOSCA normative capability type

policy_types:
  onap.policies.scaling.Fixed:
    # ....

  onap.policies.scaling.Variable:
    # ....

  onap.policies.placement.Affinity:
    # ....

  onap.policies.placement.AntiAffinity:
    # ....

  onap.policies.naming.NumSequence:
    # ....


node_types:
  #TODO: provide a description of the metadata for the node templates
  onap.nodes.Resource:
    description: |
      a base of the ONAP hierarchy of resources
    derived_from: tosca.nodes.Root
    descriptionrequirements: the very base of the ONAP resource hierarchy
      - host:
          interfacesdescription: |
      Standard:   # just a reminderAn thatONAP allresource resourcesmay havebe ahosted standardby lifecyclea interfaceTOSCA container.
       type: onap.interfaces.node.lifecycle.Standard    In requirements:a VDU, this requirement is of the - container:onap.capabilities.Compute type
          capability: tosca.capabilities.Container
          occurrences: [0, UNBOUNDED1]
          relationship: onap.relationship.HostedOn
    
onap.nodes.VNFFunction:
    derived_from: onap.nodes.Resource
 
  description: an|
abstract base for the hierarchya ofvirtual concretefunction (VNF, resourcesVDU, VFC)
   properties:
    # all IM properties
    # ECOMP's
    all ECOMP VNF properties
  requirements:
  # 1. MANY requirements of type onap.capabilities.Compute (a summary of
  # ONAP IM's  the Compute requirements interfaces:of all inner Container and VDU nodes
Standard:  #   just aexposed reminderthrough thatthe substitution mapping)
  # 2. MANY requirements of type: toscaonap.interfaces.node.lifecycle.VNF
	#TODO: check on the HPA use case
capabilities.Linkable (a summary of
  #    the Linkable requirements of all ExtCPs inside the topology
  #    exposed through the substitution mapping)
  # 3. MANY OTHER application-level reqs&caps


  onap.nodes.VDU:
    derived_from: onap.nodes.Resource
    description: |
      represents a virtualization container at the infrastructure level; 
      contains the software image, states requirements for hardware
      declares [required] hardware capabilities 
    capabilities:
      containerhost: 
        type: tosca.capabilities.Container
        occurrences: [0, UNBOUNDED]
    requirements:
      - compute:
 
        type: onap.capabilities.Compute
 
        occurrences: [0, UNBOUNDED]

     - storage:
 
        type: onap.capabilities.Storage 
          occurrences: [0, UNBOUNDED]

Code Block
languagetext
titleSample VNF
linenumberstrue
collapsetrue
##################################
### Sample VNF                 ###
##################################

node_types:
  com.vendorxxx.SampleVNF:
    derived_from: onap.nodes.VNF
    description: a concrete VNF provided by a vendor
    properties:
      num_of_instances_inside:
        type: integer
    requirements:
      - compute_1:
          type: onap.capabilities.Compute
      - storage_1:
          type: onap.capabilities.Storage
    capabilities:
      the_important_capability:
        #...
      
topology_template:
  inputs:
    num_resource_instances:
      description: how many resource instances to create
      type: integer

  node_templates:
    vl_1:

    cp_1:
    
    internal_valuable_resource_1:
      type: com.vendorxxx.ResourceType
      artifacts:
        image: ResourceDockerFile
      capabilities:
        valuable_capability: #....
      requirements:

       - container:
            node: vdu_1
            capability: container
     vdu_1:
      type: onap.nodes.VDU
      artifacts:
        image: myImageFile.ovf
      capabilities:
        container:
      requirements:
        - compute:
            node_filter:
              capabilities:
                - onap.capabilities.Compute:
                    properties:
           
          num_cpus: {in_range: [2,
4]}
                      mem_size: {greater_or_equal: 1GB}

  policies:
    scale_the_value:
      type: onap.policies.scaling.Fixed:
      properties:
        quantity: {get_input: num_resource_instances}
      targets: [internal_valuable_resource_1]

    separate_hosts:
      type: onap.policies.placement.AntiAffinity
      targets: [internal_valuable_resource_1]
      properties:
        distance: PhysicalHost
      
    same_office:
      type: onap.policies.placement.Affinity
      targets: [internal_valuable_resource_1]
      properties:
        scope: DataCenter
      
  substitution_mappings:
    node_type: com.vendorxxx.SampleVNF
    properties:
      num_of_instances_inside:
        mapping: [SELF, num_resource_instances]  # a mapping to an input
    capabilities:
      the_important_capability:
        mapping: [internal_valuable_resource_1, valuable_capability]
    requirements:
      compute_1:
        mapping: [vdu_1, compute]
      storage_1:
        mapping: [vdu_1, storage]            

Code Block
languagetext
titleService using the Vendor VNF
linenumberstrue
collapsetrue
######################################
### A Sample Service using the Sample VNF ###
######################################

topology_template:
  node_templates:
    vnf_1:
      type: com.vendorxxx.SampleVNF
      properties:
        num_of_instances_inside: 13
      requirementscapabilities:  # infrastructure requirements, to be satisfied by the orchestrator
        - compute_1:
            capabilities: onap.capabilities.Compute
        - storage_1:
            capabilities: onap.capabilities.Storage


Points to emphasize:

  1. Scaling expressed through policies
  2. Affinity/anti-affinity expressed through policies
  3. VDU node type to model a virtual container (VM, Docker container):
    1. States quantified requirements for infrastructure: 
      1. Generic requirements: computational power, storage volumes, 
      2. Requirements for specific hardware: Intel’s, AMD, etc.
    2. Includes a software image used to initialize the container - as a TOSCA artifact
    3. In order to specify hardware/infrastructure requirements for a resource, the designer creates a VDU node in the topology template and then creates a relationship between the resource node and the VDU node using the tosca.capabilities.Container capability-requirement pair; multiple resources may share a VDU
    4. The requirements for hardware/infrastructure specified by the VDU nodes across the model will be satisfied on instantiation by the orchestrator.
  4. The VNFD element of the Information Model is modelled through a combination of the following TOSCA constructs:
    1. A TOSCA node type – the “interface” part of the definition: derived from the onap.nodes.VNF node type (and, consequently, from the basic onap.nodes.Resource); exposes the important properties, capabilities, requirements
    2. A TOSCA topology template – the “implementation” part of the definition: the internal topology of component resources and policies
    3. A TOSCA substitution mapping construct that wires the interface to the implementation: interface properties are mapped to the implementation topology inputs, interface capabilities and requirements – to those of the component resource nodes
  5. An occurrence of the VNF in a higher-level topology (a service or a “higher” VNF) is modelled as a TOSCA node template of the VNFD “interface” node type, with its properties populated and requirements and capabilities involved into relationships with the neighbor nodes.


See alsoECOMP SDC Metadata OverviewAffinity and AntiAffinitySplitting VDU: VFC + Container, Scaling