VMware Telco Cloud Automation uses modified TOSCA, which is an extension of the standard TOSCA, to determine prerequisites for different VIMs.
The root node tosca.nodes.nfv.VMware.VNF defines the VNF definition like CaaS and NodeConfig related requirements in the TOSCA.
The infra_requirements property at the root node defines these infrastructure requirements for the Network Function.
The following sample shows the definition of a TOSCA file used by VMware Telco Cloud Automation.
tosca.nodes.nfv.VNF
Definition of infra_requirements
tosca.nodes.nfv.VNF:
derived_from: tosca.nodes.Root
description: The generic abstract type from which all VNF specific abstract node types shall be derived to form, together with other node types, the TOSCA service template(s) representing the VNFD
properties:
descriptor_id: # instead of nfd_id
type: string # GUID
description: Globally unique identifier of the VNFD
required: true
provider: # instead of nf_provider
type: string
description: Provider of the VNF and of the VNFD
required: true
product_name: # instead of nf_product_name
type: string
description: Human readable name for the VNF Product
required: true
software_version: # instead of nf_software_version
type: string
description: Software version of the NF
required: true
vnfm_info:
type: list
required: true
description: Identifies VNFM(s) compatible with the NF
entry_schema:
type: string
infra_requirements:
type: InfraRequirements
required: false
description: These are the infra requirements for the Network Function
The sample shows customized TOSCA with the infrastructure requirements definition.
infra_requirements definition
tosca.datatypes.nfv.InfraRequirements:
derived_from: tosca.datatypes.Root
properties:
node_components:
type: tosca.datatypes.nfv.NodeComponents
required: false
caas_components:
type: list
required: false
entry_schema:
type: tosca.datatypes.nfv.CaasComponentsData
tosca.datatypes.nfv.NodeComponents:
derived_from: tosca.datatypes.Root
properties:
isNumaConfigNeeded:
type: boolean
required: false
kernel:
type: tosca.datatypes.nfv.Kernel
required: false
network:
type: tosca.datatypes.nfv.Network
required: false
passthrough_devices:
type: list
required: false
entity_schema: tosca.datatypes.nfv.PassthroughDevices
latency_sensitivity:
type: string
required: false
additional_config:
type: list
required: false
entity_schema: tosca.datatypes.nfv.AdditionalConfig
file_injection:
type: list
required: false
entity_schema: tosca.datatypes.nfv.FileInjection
tosca.datatypes.nfv.Kernel:
derived_from: tosca.datatypes.Root
properties:
kernel_type:
type: tosca.datatypes.nfv.KernelType
required: false
kernel_args:
type: list
required: false
entry_schema:
type: tosca.datatypes.nfv.KernelArgsData
kernel_modules:
type: list
required: false
entry_schema:
type: tosca.datatypes.nfv.KernelModulesData
custom_packages:
type: list
required: false
entry_schema:
type: tosca.datatypes.nfv.CustomPackagesData
tosca.datatypes.nfv.KernelType:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
required: true
version:
type: string
required: true
image:
type: string
required: false
tosca.datatypes.nfv.KernelArgsData:
derived_from: tosca.datatypes.Root
properties:
key:
type: string
required: true
value:
type: string
required: false
tosca.datatypes.nfv.KernelModulesData:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
required: true
version:
type: string
required: true
tosca.datatypes.nfv.CustomPackagesData:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
required: true
version:
type: string
required: true
tosca.datatypes.nfv.Network:
derived_from: tosca.datatypes.Root
properties:
devices:
type: list
required: true
entry_schema:
type: tosca.datatypes.nfv.NetworkDevices
tosca.datatypes.nfv.NetworkDevices:
derived_from: tosca.datatypes.Root
properties:
deviceType:
type: string
required: true
networkName:
type: string
required: true
resourceName:
type: string
required: true
dpdkBinding:
type: string
required: false
interfaceName:
type: string
required: false
count:
type: integer
required: false
tosca.datatypes.nfv.PassthroughDevices:
derived_from: tosca.datatypes.Root
properties:
deviceType:
type: string
required: true
pf_group:
type: string
required: true
tosca.datatypes.nfv.AdditionalConfig:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
required: true
value:
type: string
required: true
tosca.datatypes.nfv.FileInjection:
derived_from: tosca.datatypes.Root
properties:
source:
type: string
required: true
content:
type: string
required: true
path:
type: string
required: true
tosca.datatypes.nfv.CaasComponentsData:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
required: true
type:
type: string
required: true
version:
type: string
required: false
properties:
type: tosca.datatypes.nfv.CaasProperties
required: false
tosca.datatypes.nfv.CaasProperties:
derived_from: tosca.datatypes.Root