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