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