...
Code Block | ||||
---|---|---|---|---|
| ||||
capability_types: onap.capabilities.AllottedResourceProvider: derived_from: tosca.capabilities.Root description: Capability to produce allotted resources of the listed source types valid_source_types: [] properties: # TBD if any properties needed attributes: # TBD if any attributes needed relationship_types: onap.relationships.AllottedBy: derived_from: tosca.relationships.DependsOn description: Relates an allotted resource to its providing service (provider) |
Examples
The following is a simple example of an allotted resource and its providing service.
Allotted Resource Node Type
Code Block | ||||
---|---|---|---|---|
| ||||
node_types:
# Node type for an Allotted Resource.
# - Can be used directly in a consuming service (i.e., by name)
# - Defines a provider requirement, which makes this allotted.
# - Defines the LCM interfaces that interact with the factory service controller
provider.resource.MyAllottedResource:
derived_from: onap.nodes.Resource
properties:
# Properties for this allotted resource type
attributes:
# Attributes for this allotted resource type
capabilities:
# Any capabilities that this allotted resource exposes
requirements:
- provider_service
node: provider.service.MyProviderService
capability: onap.capabilities.AllottedResourceProvider
relationship: onap.relationships.AllottedBy
interfaces:
# LCM interfaces, including instantiation.
# Contains the resource’s provider-specific controller API calls. |
Providing Service Node Type
Code Block | ||||
---|---|---|---|---|
| ||||
# Node type for the Providing Service
# - Defined in the providing service TOSCA model (with a substitution mapping)
# - Defines a Provider capability, which identifies it as an allotted producer.
# - Otherwise is a typical ONAP service, with node templates for VNFs, VLs, and
# possibly other Allotted Resources that it uses itself.
provider.service.MyProviderService:
derived_from: onap.nodes.Service
properties:
# left out for brevity
attributes:
# left out for brevity
capabilities:
allotted_resource_provider:
type: onap.capabilities.AllottedResourceProvider
valid_source_types: [provider.resource.MyAllottedResource]
interfaces:
# left out for brevity
|
Consuming Service Node Templates (snippet)
Code Block | ||||
---|---|---|---|---|
| ||||
node_templates:
# Direct usage of a my_allotted resource
allotted_resource:
type: provider.resource.MyAllottedResource: properties:
# Property values for this allotted resource instance
# Other resource nodes (VNFs, VLs, etc.)
other_vnf:
type: provider.resource.my_vnf
...
|
Usage Notes
- The LCM interfaces of the allotted resource type contain the code logic for interacting with the appropriate controller that manages the providing service. Since this is custom to each allotted resource/controller, it cannot simply be derived from the requirements and capabilities in the model.
- The consuming service does not require knowledge of the Provider service. It simply declares a node template of the allotted resource type. The linkages to the Provider (including the Provider requirement) are encapsulated within the allotted resource node type definition.
- When homing an allotted resource, SNIRO/OOF can determine the providing service type from the “AllottedResourceProvider” requirement on the allotted resource node, and search inventory for service nodes of that node type. Alternatively, if capabilities are captured in AAI, SNIRO/OOF can search directly for service-instance nodes with an AllottedResourceProvider capability with the desired allotted resource as a valid source type.
- Infrastructure services (i.e., allotted resource providers) can be composed of PNFs as well as VNFs for producing allotted resources. However, this would also be encapsulated within the model of the allotted resource/provider service pair and is transparent to the consuming service.
# Node type for the Providing Service
# - Defined in the providing service TOSCA model (with a substitution mapping)
# - Defines a Provider capability, which identifies it as an allotted producer.
# - Otherwise is a typical ONAP service, with node templates for VNFs, VLs, and
# possibly other Allotted Resources that it uses itself.
provider.service.MyProviderService:
derived_from: onap.nodes.Service
properties:
# left out for brevity
attributes:
# left out for brevity
capabilities:
allotted_resource_provider:
type: onap.capabilities.AllottedResourceProvider
valid_source_types: [provider.resource.MyAllottedResource]
interfaces:
# left out for brevity