Service Model Principles
See also: Complex Service Example (TOSCA)
The ONAP internal DM (R4+) establishes the following convention for modeling services:
The global TOSCA node type onap.nodes.Service as part of the DM core:
one node type for all types of services
an abstract type, never used directly to type a node, never explicitly mentioned in a substitution_mappings
very few TOSCA properties and attributes, no requirements or capabilities (will be defined as part of derived node types)
TOSCA interfaces related to ONAP service, with default implementations
For each specific service in the catalog, ONAP maintains:
An “ONAP interface type” - a concrete TOSCA node type which is derived from onap.nodes.Service
adds requirements and capabilities specific for this service
extends the set of properties and attributes
overloads the default operations in the interfaces defined for onap.nodes.Services
an implementing topology that includes
inputs
nodes – to represent NFs, resources, VLs; policies, groups, etc.
a substitution_mappings construct
refers to the concrete service node type
maps the “public” capabilities and requirements of the concrete service node type to the “internal” caps&reqs inside the topology
maps the “public” properties of the concrete service node type to the input parameters of the topology
maps the “public” interface operations to their internal implementations
An ONAP service is distributed as a self-contained CSAR file that contains:
Global TOSCA type definitions of the ONAP DM
The interface node type definition of the service
The implementation topology of the service
For all VNFs used by the service – their interface node type definitions and implementation
The “Service A embeds Service B” situation is modeled as following:
Both Service A and Service B have their ONAP interface node types and implementation topologies
Service A’s implementation topology includes a node(s) of the ServiceB’s interface type
The Service A model is distributed as a CSAR that contains the interface-implementation pairs for both Service A and Service B, and all interface-implementation pairs for all VNFs used in these services