This page demonstrates a possible implementation of the VSBC VNF using the new ONAP DM.
TODO: Huawei cSBC CSAR herevSBC CSAR (based on an intermediary version of SOL001)
The ONAP DM provides two techniques to model abstractions - through dangling requirements and abstract nodes, and this page shows how to use each of them:
...
Model Using Dangling Requirements
TODO: Diagram here
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
node_types: vendorXXX.nodes.vfc.HRU: derived_from: onap.nodes.NetworkFunctionComponent artifacts: image: description: deployment image type: tosca.artifacts.Deployment.Image file: HRU_Image.iso properties: aaa: type: string required: false requirements: - storage_attachment_1: capability: onap.capabilities.StorageAttachment occurrences: [1, 1] capabilities: bind_intra_1: type: onap.capabilities.Bindable occurrences: [1, 1] bind_intra_2: type: onap.capabilities.Bindable occurrences: [1, 1] bind_ext_1: type: onap.capabilities.Bindable occurrences: [1, 1] bind_ext_2: type: onap.capabilities.Bindable occurrences: [1, 1] vendorXXX.nodes.vfc.CCU: derived_from: onap.nodes.NetworkFunctionComponent artifacts: image: description: deployment image type: tosca.artifacts.Deployment.Image file: CCU_Image.iso properties: bbb: type: integer constraints: - valid_values: [1, 5, 11] required: false capabilities: bind_1: type: onap.capabilities.Bindable occurrences: [1, 1] vendorXXX.nodes.vfc.VPU: derived_from: onap.nodes.NetworkFunctionComponent artifacts: image: description: deployment image type: tosca.artifacts.Deployment.Image file: VPU_Image.iso properties: ccc: type: string required: false requirements: - storage_attachment_1: capability: onap.capabilities.StorageAttachment occurrences: [1, 1] capabilities: bind_intra_1: type: onap.capabilities.Bindable occurrences: [1, 1] bind_intra_2: type: onap.capabilities.Bindable occurrences: [1, 1] topology_template: inputs: node_templates: hru: type: vendorXXX.nodes.vfc.HRU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' aaa: 'lalala' requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - storage_attachment_1: node_filter: capabilities: onap.capabilities.StorageAttachment: properties: - storage_size: {greater_or_equal: 100GB} hru_ext_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_1 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_ext_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_2 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_int_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_1 - link: node: intra1 capability: link hru_int_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_2 - link: node: intra2 capability: link ccu: type: vendorXXX.nodes.vfc.CCU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' bbb: 5 requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} ccu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: ccu capability: bind_1 - link: node: intra1 capability: link vpu: type: vendorXXX.nodes.vfc.VPU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' ccc: 'lalala' requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - storage_attachment_1: node_filter: capabilities: onap.capabilities.StorageAttachment: properties: - storage_size: {greater_or_equal: 100GB} vpu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_1 - link: node: intra1 capability: link vpu_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_2 - link: node: intra2 capability: link intra1: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: TCP bitrate: 10 Kbps intra2: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: Ethernet bitrate: 10 Kbps substitution_mappings: type: vendorXXX.nodes.vnf.vSBC requirements: ext_link_1: [hru_ext_cp1, link] ext_link_2: [hru_ext_cp2, link] hru.host: [hru, host] hru.storage_attachment_1: [hru, storage_attachment_1] ccu.host: [ccu, host] vpu.host: [vpu, host] vpu.storage_attachment_1: [vpu, storage_attachment_1] |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
node_types:
vendorXXX.nodes.vnf.vSBC:
derived_from: onap.nodes.Resource.NetworkFunction
requirements:
- ext_link_1:
node_filter:
capabilities:
onap.capabilities.Linkable:
properties:
- protocol: {equal: Ethernet}
- bitrate: {greater_or_equal: 10 Kbps}
- ext_link_2:
node_filter:
capabilities:
onap.capabilities.Linkable:
properties:
- protocol: {equal: Ethernet}
- bitrate: {greater_or_equal: 10 Kbps}
- hru.host:
node_filter:
capabilities:
onap.capabilities.Compute:
properties:
- num_cpus: {greater_or_equal: 2}
- mem_size: {greater_or_equal: 1GB}
- local_storage_size: {greater_or_equal: 16GB}
- hru.storage_attachment_1:
node_filter:
capabilities:
onap.capabilities.StorageAttachment:
properties:
- storage_size: {greater_or_equal: 100GB}
- ccu.host:
node_filter:
capabilities:
onap.capabilities.Compute:
properties:
- num_cpus: {greater_or_equal: 2}
- mem_size: {greater_or_equal: 1GB}
- local_storage_size: {greater_or_equal: 16GB}
- vpu.host:
node_filter:
capabilities:
onap.capabilities.Compute:
properties:
- num_cpus: {greater_or_equal: 2}
- mem_size: {greater_or_equal: 1GB}
- local_storage_size: {greater_or_equal: 16GB}
- vpu.storage_attachment_1:
node_filter:
capabilities:
onap.capabilities.StorageAttachment:
properties:
- storage_size: {greater_or_equal: 100GB}
|
Model
...
Using Abstract Nodes
Functionally, this model is very similar to the previous solution, with few differences:
- the function components HRU, CCU, and VPU are now "wired" to abstract Compute and Storage nodes, and the substitution mapping is now exposing the requirements of these abstract nodes.
- now the model is able to explicitly express sharing of infrastructure between functional components
- some precautions should have been taken in order to mitigate the risk of "capability-like requirements". The host capability of the AbstractCompute nodes and the attached_storage capability of the AbstractStorage node are not mapped through the substitution mapping, even though not all of their occurrences have been spent in the topology
TODO: Diagram here
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
topology_template: inputs: node_templates: compute_1: type: onap.nodes.AbstractCompute properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: host: requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} compute_2: type: onap.nodes.AbstractCompute properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: host: requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} storage_0: type: onap.nodes.AbstractStorage properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: storage_attachment: requirements: - storage_attachment: node_filter: capabilities: onap.capabilities.AttachedStorage: properties: - storage_size: {greater_or_equal: 16GB} - storage_type: {equal: block} hru: type: vendorXXX.nodes.vfc.HRU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' aaa: 'lalala' requirements: - host: node: compute_1 capability: host - storage_attachment_1: node: storage_0 capability: storage_attachment hru_ext_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_1 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_ext_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_2 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_int_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_1 - link: node: intra1 capability: link hru_int_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_2 - link: node: intra2 capability: link ccu: type: vendorXXX.nodes.vfc.CCU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' bbb: 5 requirements: - host: node: compute_2 capability: host ccu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: ccu capability: bind_1 - link: node: intra1 capability: link vpu: type: vendorXXX.nodes.vfc.VPU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' ccc: 'lalala' requirements: requirements: - host: node: compute_2 capability: host - storage_attachment_1: node: storage_0: capability: storage_attachment vpu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_1 - link: node: intra1 capability: link vpu_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_2 - link: node: intra2 capability: link intra1: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: TCP bitrate: 10 Kbps intra2: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: Ethernet bitrate: 10 Kbps substitution_mappings: type: vendorXXX.nodes.vnf.vSBC requirements: ext_link_1: [hru_ext_cp1, link] ext_link_2: [hru_ext_cp2, link] host_1: [compute_1, host] host_2: [compute_2, host] storage_attachment_1: [storage_0, storage_attachment] |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
node_types:
vendorXXX.nodes.vnf.vSBC:
derived_from: onap.nodes.Resource.NetworkFunction
requirements:
ext_link_1: [hru_ext_cp1, link]
ext_link_2: [hru_ext_cp2, link]
host_1: [compute_1, host]
host_2: [compute_2, host]
storage_attachment_1: [storage_0, storage_attachment]
|
...