tosca_definitions_version: tosca_simple_yaml_1_3
description: ETSI NFV SOL 001 pnfd types definitions version 3.7.1
metadata:
  template_name: etsi_nfv_sol001_pnfd_types
  template_author: ETSI_NFV
  template_version: 3.7.1

imports:
  - https://forge.etsi.org/rep/nfv/SOL001/raw/3.7.1/etsi_nfv_sol001_common_types.yaml

data_types:

  tosca.datatypes.nfv.LocationInfo:
    derived_from: tosca.datatypes.Root
    description: Represents geographical information on the location where a PNF is deployed.
    properties:
      country_code:
        type: string # two-letter ISO 3166 country code
        description: Country code
        required: true
      civic_address_element:
        type: list
        entry_schema:
         type: tosca.datatypes.nfv.CivicAddressElement
         description: Elements composing the civic address where the PNF is deployed.
        required: false
      geographic_coordinates:
        type: tosca.datatypes.nfv.GeographicCoordinates
        description: Geographic coordinates (e.g. Altitude, Longitude, Latitude) where the PNF is deployed.
        required: false

  tosca.datatypes.nfv.CivicAddressElement:
    derived_from: tosca.datatypes.Root
    description: Represents an element of a civic location as specified in IETF RFC 4776. 
    properties:
      ca_type:
        type: string # RFC4776
        description: caType as per RFC4776
        required: true
      ca_value:
        type: string # RFC4776
        description: caValue as per RFC4776.
        required: true

  tosca.datatypes.nfv.GeographicCoordinates:
    derived_from: tosca.datatypes.Root
    description: Represents an element of a geographic coordinate location as specified in IETF RFC 6225. 
    properties:
      latitude_uncertainty:
        type: string # RFC 6225
        description: LatUnc as per RFC 6225
        required: false
      latitude:
        type: string # RFC 6225
        description: Latitude value as per RFC 6225
        required: true
      longitude_uncertainty:
        type: string # RFC 6225
        description: LongUnc as per RFC 6225
        required: false
      longitude:
        type: string # RFC 6225
        description: Longitude value as per RFC 6225
        required: true
      altitude_type:
        type: string # RFC 6225
        description: AType value as per RFC 6225
        required: true      
      altitude_uncertainty:
        type: string # RFC 6225
        description: AltUnc as per RFC 6225
        required: false
      altitude:
        type: string # RFC 6225
        description: Altitude value as per RFC 6225
        required: true

node_types:

  tosca.nodes.nfv.PNF:
    derived_from: tosca.nodes.Root
    properties: 
      descriptor_id: # instead of pnfd_id
        type: string # UUID
        required: true
        description: Identifier of this PNFD information element. It uniquely identifies the PNFD.
      function_description:
        type: string
        required: true
        description: Describes the PNF function.
      provider:
        type: string
        required: true
        description: Identifies the provider of the PNFD.
      version:
        type: string
        required: true
        description: Identifies the version of the PNFD.
      descriptor_invariant_id: # instead of pnfd-invariant-id
        type: string # UUID
        required: true
        description: Identifier of this PNFD in a version independent manner. This attribute is invariant across versions of PNFD.
      name:
        type: string
        required: true
        description: Name to identify the PNFD.
      geographical_location_info: 
        type: tosca.datatypes.nfv.LocationInfo 
        required: false
        description: Provides information about the geographical location (e.g. geographic coordinates or address of the building, etc.) of the PNF.
    requirements:
      - virtual_link:
          capability: tosca.capabilities.nfv.VirtualLinkable
          relationship: tosca.relationships.nfv.VirtualLinksTo
          occurrences: [ 0, 1 ]
 # Additional requirements shall be defined in the PNF specific node type (deriving from tosca.nodes.nfv.PNF) corresponding to NS virtual links that need to connect to PnfExtCps

  tosca.nodes.nfv.PnfExtCp:
    derived_from: tosca.nodes.nfv.Cp
    description: node definition of PnfExtCp.
    requirements:
      - external_virtual_link:
          capability: tosca.capabilities.nfv.VirtualLinkable
          relationship: tosca.relationships.nfv.VirtualLinksTo
          occurrences: [0, 1]

policy_types:

  tosca.policies.nfv.PnfSecurityGroupRule:
    derived_from: tosca.policies.nfv.Abstract.SecurityGroupRule
    description: The PnfSecurityGroupRule type is a policy type specified the matching criteria for the ingress and/or egress traffic to/from visited PNF external connection points.
    targets: [ tosca.nodes.nfv.PnfExtCp ]
