In the Info Model, the VDU element combines 2 aspects: application logic and expectations of the underlying infrastructure.
The Data Model implements the IM VDU element as a pair of related resources:
- VFC - an ONAP resource that represents a piece of application-level logic and includes:
- a requirement for hosting by a container
- a software image to launch the application logic on the container
- a free set of application-level requirements and capabilities
- Container - an ONAP resource that represents a unit of infrastructure allocation. It expresses the following ideas:
- a "hardware shopping list" - in the terms of TOSCA requirements, which are based on specially designed TOSCA capability types
- a software image that the Orchestrator uses to launch such a unit - by means of a TOSCA artifact
- an ability to host application logic - modeled as a TOSCA capability of a special capability type
node_types:
# the very base of the hierarchy of VDU types
onap.nodes.Container:
derived_from: onap.nodes.Resource
artifacts:
container_image:
type: tosca.artifacts.Deployment
description: an image used to launch the Container
interfaces:
Standard:
start:
implementation: container_image
capabilities:
host:
type: tosca.capabilities.Container # the TOSCA Specs type is good enough
occurrences: [0..UNBOUNDED]
requirements:
- cpu:
capability: onap.capabilities.infrastructure.CPU:
occurrences: [0..1]
- memory:
capability: onap.capabilities.infrastructure.Memory:
occurrences: [0..UNBOUNDED]
- storage:
capability: onap.capabilities.infrastructure.Storage:
occurrences: [0..UNBOUNDED]
- io:
capability: onap.capabilities.infrastructure.IO:
occurrences: [0..UNBOUNDED]
- nic:
capability: onap.capabilities.infrastructure.NIC:
occurrences: [0..UNBOUNDED]
It is possible to model nested hosting, for example a docker container running on a specific VM.
To create a reusable Container customization, create a sub-type:
# a more concrete VDU type
onap.nodes.sample.MyContainer:
derived_from: onap.nodes.Container
artifacts:
container_image:
type: tosca.artifacts.Deployment.Image.VM.ISO
file: http://the.url.of/the.image.iso
interfaces:
Standard:
start:
implementation: image
capabilities:
host:
type: onap.capabilities.Container
requirements:
- cpu:
capability: onap.capabilities.infrastructure.CPU:
occurrences: [0..UNBOUNDED]
- memory:
capability: onap.capabilities.infrastructure.Memory:
occurrences: [0..UNBOUNDED]
- storage:
capability: onap.capabilities.infrastructure.Storage:
occurrences: [0..UNBOUNDED]
- io:
capability: onap.capabilities.infrastructure.IO:
occurrences: [0..UNBOUNDED]
- nic:
capability: onap.capabilities.infrastructure.NIC:
occurrences: [0..UNBOUNDED]
A Container node in a VNF topology:
node_templates:
container_123:
type: onap.nodes.sample.MyContainer
capabilities:
host: # just saying...
requirements:
- memory:
node_filter:
capabilities:
- onap.capabilities.infrastructure.Memory:
properties:
- mem_size: {greater_or_equal: 2MB}
- cpu:
node_filter:
capabilities:
- onap.capabilities.infrastructure.hpa.CPU:
properties:
- schema_selector:
constraints: # fixed value for this vendor
- equal_to: Intel64
- schema_version:
constraints:
- greater_or_equal: 2.0
- custom_features:
constraints:
- schema: http://json.schema.url
VFCs meet Containers:
node_templates:
container_123:
type: onap.nodes.Container
capabilities:
host:
#....
vfc_1:
type: onap.nodes.Resource
requirements:
- host:
node: container_123
capability: host
vfc_2:
type: onap.nodes.Resource
requirements:
- host:
node: container_123
capability: host
See also: Hardware Platform Requirements