Versions Compared

Key

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

See also: Hardware Platform Enablement In ONAP


Can we use the TOSCA Specs Normatives with the HPA requirements?


Code Block
titleOverview of the existing TOSCA Specs Normatives
linenumberstrue
collapsetrue
capability_types:
    
  tosca.capabilities.Compute:
    derived_from: tosca.capabilities.Root
    properties:
      name:
        type: string
        required: false
      num_cpus:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 1
      cpu_frequency:
        type: scalar-unit.frequency
        required: false
        constraints:
          - greater_or_equal: 0.1 GHz
      disk_size:
        type: scalar-unit.size
        required: false
        constraints:
          - greater_or_equal: 0 MB
      mem_size:
        type: scalar-unit.size
        required: false
        constraints:
          - greater_or_equal: 0 MB

  tosca.capabilities.Container:
    derived_from: tosca.capabilities.Compute

  tosca.capabilities.Storage:
    derived_from: tosca.capabilities.Root
    properties:
      name:
        type: string
        required: false
    



tosca.relationships.HostedOn:
  derived_from: tosca.relationships.Root
  valid_target_types: [ tosca.capabilities.Container ]
# tosca.relationships.HostedOn:
# - impacts declarative workflow
# - based on tosca.capabilities.Container



Critics of TOSCA Spec Normatives:

  • tosca.capabilities.Container inherits from Compute!!!
  • tosca.capabilities.Compute, property 'name' - we don't actually need it?
  • tosca.capabilities.Storage is not similar to the tasca Compute - it only includes the 'name' property, does nor specify any storage quantifiers like size etc.
  • in TOSCA Specs, Storage is not an infrastructure-level requirement; it is rather a kind of application-level (attachable, with an initial image), required by (attached to) other application nodes
  • Tosca Compute capability is a mix of CPU+Mem. Don't we want to keep them apart for greater flexibility?
  • TOSCA Specs does not have requirements for I/O
  • TOSCA Specs normatives do not provide all information items required by the ETSI and IM

Proposed solution

  1. Model the bassic HPA requirements with TOSCA capability types. VDUs will have requirements of these capability types. These HPA requirements will never be satisfied within the VNF and Service models, the orchestrator will do that in run-time
  2. Abstain from using tosca.capability.Compute as it does not match the requirements
  3. Define special ONAP capability types, separate for each of these categories: CPU, Memory, Storage, I/O, networking. These capability types express the most basic hardware characteristics. They also should be simple, flat bags of strictly named properties, all properties of primitive data types with clear restrictions.
  4. Derive from the basic capability types an additional level of capabilities, with advanced (HPA) details. As detailed as they seem, these capabilities are still generic, with strict definitions of properties that are shared by the major hardware vendors. In addition to the strictly-typed properties, the HPA-level capabilities will also have a json-formatted property in order to allow for even greater customization flexibility.
  5. Allow for further customization of the HPA-level capabilities into vendor-specific capabilities. These vendor-specific customized capabilities may extend their HPA-level generic base by adding new properties and providing new constraints for the existing properties. In addition to the refinement of the strictly defined properties, the vendor-specific capabilities may provide their own validation schema for the json-formatted "flexible" property.




Code Block
titleBasic requirements
linenumberstrue
collapsetrue
####### Basic specifications of hadware capabilities ####
capability_types:
  onap.capabilities.infrastructure.CPU:
    derived_from: tosca.capabilities.Root
    description: basic processor capabilities
    properties:
      num_cpus:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 1
      cpu_frequency:
        type: scalar-unit.frequency
        required: false
        constraints:
          - greater_or_equal: 0.1 GHz
    
  onap.capabilities.infrastructure.Memory:
    derived_from: tosca.capabilities.Root
    description: basic memory capabilities
    properties:
      mem_size: 
        type: scalar-unit.size
        required: false
        constraints:
          - greater_or_equal: 0 MB
    
  onap.capabilities.infrastructure.Storage:
    derived_from: tosca.capabilities.Root
    description: basic storage specifications
    properties:
      storage_size: 
        type: scalar-unit.size
        required: false
        constraints:
          - greater_or_equal: 0 MB
    
  onap.capabilities.infrastructure.IO:
    derived_from: tosca.capabilities.Root
    description: basic IO specifications
    
  onap.capabilities.infrastructure.NIC:
    derived_from: tosca.capabilities.Root
    description: basic networking interface characteristics

...