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