...
Code Block |
---|
language | text |
---|
title | ONAP Data Model Normatives |
---|
linenumbers | true |
---|
collapse | true |
---|
|
##################################
### 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.Storage a 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 |
---|
language | text |
---|
title | Sample VNF |
---|
linenumbers | true |
---|
collapse | true |
---|
|
##################################
### 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 |
---|
language | text |
---|
title | Service using the Vendor VNF |
---|
linenumbers | true |
---|
collapse | true |
---|
|
######################################
### 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
|
...
See also: ECOMP SDC Metadata Overview, Affinity and AntiAffinity, Splitting VDU: VFC + Container, Scaling