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 sample shows customized TOSCA with the infrastructure requirements definition.
TOSCA Sample
tosca_definitions_version: tosca_simple_yaml_1_2
description: Network Function description
imports:
- etsi_nfv_sol001_common_2_7_1_types.yaml
- etsi_nfv_sol001_vnfd_2_7_1_types.yaml
- vmware_nfv_custom_vnfd_2_7_1_types.yaml
node_types:
tosca.nodes.nfv.VMware.CNF.testnf:
derived_from: tosca.nodes.nfv.VMware.CNF
interfaces:
Vnflcm:
type: tosca.interfaces.nfv.VMware.Vnflcm
tosca.nodes.nfv.Vdu.Compute.Helm.testnf:
derived_from: tosca.nodes.nfv.Vdu.Compute.Helm
properties:
configurable_properties:
type: tosca.datatypes.nfv.VnfcConfigurableProperties.testnf
required: true
data_types:
tosca.datatypes.nfv.VnfcConfigurableProperties.testnf:
derived_from: tosca.datatypes.nfv.VnfcConfigurableProperties
properties:
additional_vnfc_configurable_properties:
type: tosca.datatypes.nfv.VnfcAdditionalConfigurableProperties.testnf
description: Describes additional configuration for VNFC that can be configured
required: true
tosca.datatypes.nfv.VnfcAdditionalConfigurableProperties.testnf:
derived_from: tosca.datatypes.nfv.VnfcAdditionalConfigurableProperties
properties:
values:
required: false
propertyName: values
description: ''
default: ''
type: string
format: file
vlan3:
required: true
propertyName: vlan3
description: Network interface providing PF config for sriov with ipam
default: ''
type: string
format: network
vlan4:
required: true
propertyName: vlan4
description: Network interface providing PF config for sriov with igb_uio
default: ''
type: string
format: network
vlan5:
required: true
propertyName: vlan5
description: Network interface providing PF config for sriov with vfio-pci
default: ''
type: string
format: network
tosca.datatypes.nfv.VMware.Interface.InstantiateStartInputParameters:
derived_from: tosca.datatypes.nfv.VnfOperationAdditionalParameters
properties:
USERNAME:
name: USERNAME
type: string
description: K8s master username
required: true
default: ''
format: string
PASSWORD:
name: PASSWORD
type: password
description: K8s master password
required: true
default: ''
format: password
IP:
name: IP
type: string
description: K8s master ip address
required: true
default: ''
format: string
K8S_NAMESPACE:
name: K8S_NAMESPACE
type: string
description: K8S namespace for testnf
required: true
default: testnf
format: string
NAD_FILE:
name: NAD_FILE
type: string
description: The NAD Config file
required: true
default: ''
format: file
NODE_POOL_FOR_CAT:
name: NODE_POOL_FOR_CAT
type: string
description: Node pool to enable CAT (Cache Allocation Technology), leave it empty if CAT is not required.
required: false
default: ''
format: string
tosca.datatypes.nfv.VMware.Interface.InstantiateStartOutputParameters:
derived_from: tosca.datatypes.nfv.VnfOperationAdditionalParameters
properties:
nsCreateResult:
name: nsCreateResult
type: string
description: ''
copyNADResult:
name: copyNADResult
type: string
description: ''
nadCreateResult:
name: nadCreateResult
type: string
description: ''
tosca.datatypes.nfv.VMware.Interface.InstantiateEndInputParameters:
derived_from: tosca.datatypes.nfv.VnfOperationAdditionalParameters
properties:
USERNAME:
name: USERNAME
type: string
description: K8s master username
required: true
default: ''
format: string
PASSWORD:
name: PASSWORD
type: password
description: K8s master password
required: true
default: ''
format: password
IP:
name: IP
type: string
description: K8s master ip address
required: true
default: ''
format: string
K8S_NAMESPACE:
name: K8S_NAMESPACE
type: string
description: K8S namespace for testnf
required: true
format: string
NODE_POOL_FOR_CAT:
name: NODE_POOL_FOR_CAT
type: string
description: Node pool to verify CAT (Cache Allocation Technology), leave it empty if CAT is not enabled.
required: false
default: ''
format: string
tosca.datatypes.nfv.VMware.Interface.InstantiateEndOutputParameters:
derived_from: tosca.datatypes.nfv.VnfOperationAdditionalParameters
properties:
nsCheckResult:
name: nsCheckResult
type: string
description: ''
nadCheckResult:
name: nadCheckResult
type: string
description: ''
copyResult:
name: copyResult
type: string
description: ''
topology_template:
substitution_mappings:
node_type: tosca.nodes.nfv.VMware.CNF.testnf
node_templates:
testnf:
properties:
descriptor_id: vnfd_4501ecbe-4414-11eb-bf08-9b885
provider: VMware
vendor: VMware
product_name: testnf
version: 2.0.0
id: testnf
software_version: 2.0.0
descriptor_version: 2.0.0
flavour_id: default
flavour_description: default
vnfm_info:
- gvnfmdriver
infra_requirements:
node_components:
isNumaConfigNeeded: true
kernel:
kernel_type:
name: linux-rt
version: 4.19.198-5.ph3
kernel_args:
- key: nosoftlockup
- key: noswap
- key: softlockup_panic
value: 0
- key: pcie_aspm.policy
value: performance
- key: intel_idle.max_cstate
value: 1
- key: mce
value: ignore_ce
- key: fsck.mode
value: force
- key: fsck.repair
value: yes
- key: nowatchdog
- key: cpuidle.off
value: 1
- key: nmi_watchdog
value: 0
- key: audit
value: 0
- key: processor.max_cstate
value: 1
- key: intel_pstate
value: disable
- key: isolcpus
value: 4-{{tca.node.vmNumCPUs}}
- key: skew_tick
value: 1
- key: irqaffinity
value: 0-3
- key: selinux
value: 0
- key: enforcing
value: 0
- key: nohz
value: 'on'
- key: nohz_full
value: 4-{{tca.node.vmNumCPUs}}
- key: rcu_nocb_poll
value: 1
- key: rcu_nocbs
value: 4-{{tca.node.vmNumCPUs}}
- key: idle
value: poll
- key: default_hugepagesz
value: 1G
- key: hugepagesz
value: 1G
- key: hugepages
value: 8
- key: intel_iommu
value: 'on'
- key: iommu
value: pt
- key: clock
value: tsc
- key: clocksource
value: tsc
- key: tsc
value: reliable
kernel_modules:
- name: dpdk
version: '20.11'
custom_packages:
- name: pciutils
version: 3.6.2-1.ph3
- name: tuned
version: 2.13.0-4.ph3
- name: linuxptp
version: 3.1-1.ph3
- name: stalld
version: 1.3.0-8.ph3
file_injection:
- source: file
content: ../Artifacts/scripts/realtime-variables.conf
path: /etc/tuned/realtime-variables.conf
- source: file
content: ../Artifacts/scripts/testnf-stalld.conf
path: /etc/sysconfig/stalld
additional_config:
- name: tuned
value: '[{"name":"realtime"}]'
network:
devices:
- deviceType: sriov
networkName: vlan3
resourceName: sriovpass
- deviceType: sriov
networkName: vlan4
resourceName: sriovigbuio
dpdkBinding: igb_uio
count: 2
- deviceType: sriov
networkName: vlan5
resourceName: sriovvfio
dpdkBinding: vfio-pci
caas_components:
- name: sriov
type: cni
interfaces:
Vnflcm:
instantiate_start:
implementation: ../Artifacts/workflows/PreInstantiation_WF.json
description: Configure testnf using a configmap
inputs:
type: tosca.datatypes.nfv.VMware.Interface.InstantiateStartInputParameters
USERNAME:
PASSWORD:
IP:
K8S_NAMESPACE: testnf
NAD_FILE: ''
NODE_POOL_FOR_CAT: ''
outputs:
type: tosca.datatypes.nfv.VMware.Interface.InstantiateStartOutputParameters
nsCreateResult: ''
copyNADResult: ''
nadCreateResult: ''
instantiate_end:
implementation: ../Artifacts/workflows/PostInstantiation_WF.json
description: Configure testnf using a configmap
inputs:
type: tosca.datatypes.nfv.VMware.Interface.InstantiateEndInputParameters
USERNAME:
PASSWORD:
IP:
K8S_NAMESPACE: ''
NODE_POOL_FOR_CAT: ''
outputs:
type: tosca.datatypes.nfv.VMware.Interface.InstantiateEndOutputParameters
nsCheckResult: ''
nadCheckResult: ''
type: tosca.nodes.nfv.VMware.CNF.testnf
testnf1:
type: tosca.nodes.nfv.Vdu.Compute.Helm.testnf
properties:
name: testnf
description: Chart for testnf
chartName: testnf-du
chartVersion: 2.0.0
helmVersion: v3
configurable_properties:
additional_vnfc_configurable_properties:
values: ''
vlan3: ''
vlan4: ''
vlan5: ''
interface_types:
tosca.interfaces.nfv.VMware.Vnflcm:
derived_from: tosca.interfaces.nfv.Vnflcm
instantiate_start:
description: interface description
instantiate_end:
description: interface description