# There is no need to derive VNF or PNF node types at the *data model* level
# Use composition to cover the differences
tosca.nodes.nfv.NF:
derived_from: tosca.nodes.Root
properties:
descriptor_id:
type: string # GUID
required: true
descriptor_version:
type: string
required: true
provider:
type: string
required: true
product_name:
type: string
required: true
software_version:
type: string
required: true
product_info_name:
type: string
required: false
product_info_description:
type: string
required: false
localization_languages:
type: list
entry_schema:
type: string
required: false
default_localization_language:
type: string
required: false
# configurable_properties:
# type: tosca.datatypes.nfv.VnfConfigurableProperties <== remove Vnf prefix?
# required: true
# modifiable_attributes:
# type: tosca.datatypes.nfv.VnfInfoModifiableAttributes <== remove Vnf prefix?
# required: true
# lcm_operations_configuration: # what use is made of this and by whom?
# type: tosca.datatypes.nfv.NfLcmOperationsConfiguration
# description: Describes the configuration parameters for the NF LCM operations
# required: true
# monitoring_parameters:
# type: list
# entry_schema:
# type: tosca.datatypes.nfv.NfMonitoringParameter
# description: Describes monitoring parameters applicable to the NF.
# required: false
flavour_id:
type: string
required: true
# flavour_description: # should be in the NF's DF definition and not need to be provided here (join it with the id)
# type: string
# required: false
# vnfm_info: # I wouldn't recommend putting this in any static model. Maybe a reference to a dynamic property?
# type: list
# entry_schema:
# type: string
# required: true
#capabilities:
# monitoring_parameter:
# modelled as ad hoc capabilities in the VNF node template
requirements:
- virtual_link:
capability: tosca.capabilities.nfv.VirtualLinkable
relationship: tosca.relationships.nfv.VirtualLinksTo
node: tosca.nodes.nfv.VirtualLink # Change to remove vnf
occurrences: [ 0, UNBOUNDED ]
# Work with OASIS on normative representations of compute, storage, architecture, etc.
# I'll just lump them into ExecutionEnvironmentAspects for this example
tosca.capabilities.nfv.Moveable:
derived_from: tosca.capabilities.Root
# Only PNFs could have this capability
tosca.capabilities.nfv.PhysicallyMoveable:
derived_from: tosca.capabilities.nfv.Moveable
# Only VNFs could have this capability
tosca.capabilities.nfv.VirtuallyMoveable:
derived_from: tosca.capabilities.nfv.Moveable
# Only PNFs could have this capability
tosca.capabilities.nfv.PurposeBuiltHostingPlatform:
derived_from: tosca.capabilities.Root
properties:
provider:
type: string
required: true
serial_number:
type: string
required: false
attributes:
serial_number:
type: string
required: true
valid_source_types: [] |