Nodes of this type represent a connection point of a resource. This can be an L2 network interface, a port, a VLAN subinterface, etc.
The Linkable-type requirement of the CP nodes are more important for modeling than the node type itself. When a the Linkable-type requirement of a CP is not used for an internal link and exposed through a substitution mapping of a model, this CP is external.
Definition
node_types: onap.nodes.CP: derived_from: onap.nodes.Resource description: a connection point requirements: - binding: description: binding with a VFC capability: onap.capabilities.Bindable occurrences: [1, 1] # exactly one occurrence relationships: onap.relationships.BindsTo - link: description: link to a network. If left dangling, it is external. capability: onap.capabilities.Linkable occurrences: [1, 1] # Exactly one occurrence; # either spend it with an internal VL (and this is how this CP becomes internal) # or leave it unsatisfied (and thus make the CP external) relationships: onap.relationships.LinksTo # without a relationship, a TOSCA requirement cannot have properties :(
Example 1: Two resources communicating through an internal network
Example 2: A topology with an external CP
External CP
node_templates: # Other nodes, omitted #... ext_cp_123: type: onap.nodes.CP requirements: - bind: # bound to a component node in this topology node: vnfc_01 capability: bind - link: node_filter: capabilities: - onap.capabilities.Linkable properties: protocols: - contains_all: [IPv4, TCP] # WARNING: 'contains_all' is not a standard TOSCA constraint ! roles: - contains_any: [peer] # WARNING: 'contains_any' is not a standard TOSCA constraint ! bitrate: - greater_or_equal: 1000