VDU is a special resource that represents an infrastructure-level unit of execution environment, carrying the following functions:
...
onap.nodes.ComputeIn 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
Anchor | ||||
---|---|---|---|---|
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
node_types: # the very base of the hierarchy of VDU types onap.nodes.VDUCompute: derived_from: onap.nodes.Resource artifacts: vducontainer_image: type: tosca.artifacts.Deployment description: an image used to launch the VDUContainer interfaces: Standard: start: implementation: vducontainer_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..UNBOUNDED1] - 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 VDU Container customization, create a sub-type:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# a more concrete VDU type onap.nodes.sample.MyVDUMyCompute: derived_from: onap.nodes.VDUCompute artifacts: vducontainer_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 VDU Container node in a VNF topology:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
node_templates: vducontainer_123: type: onap.nodes.sample.MyVDUMyContainer 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:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
node_templates:
compute_123:
type: onap.nodes.Compute
capabilities:
host:
#....
vfc_1:
type: onap.nodes.Resource
requirements:
- host:
node: compute_123
capability: host
vfc_2:
type: onap.nodes.Resource
requirements:
- host:
node: compute_123
capability: host |
See also: Hardware Platform Requirements
...