Skip to content

Proposed TOSCA Extension

The following Type definitions are proposed to model the entities of the mentioned CNA quality model1. The extensions consider the different additional requirements identified while modeling the architecture of the FTGO Application1. The modeling was realized with TOSCA (v1.3)1 while considering the quality model and its entities.


1. Overview: Used TOSCA Representations for Modeling Entities

The proposed extensions allow modeling all of the quality model’s proposed entities. In total, eight new Node Types, one new Capability Type and two new Relationship Types have been introduced to represent the thirteen different entities. Although this seems a lot at first, the majority of the Type definitions are based on TOSCA’s existing normative types. In fact, without the modeling of Backing Data and Data Aggregate entities, all definitions would solely consist of a combination of the existing normative types, with a few additional Node or Relationship properties. Therefore, despite the seemingly large number of additions, the extension was able to mainly rely on the concepts provided by the TOSCA standard to represent the entities. The following table summarizes which representations should now be used to model the respective entities as a result of the proposed extensions. The proposed extensions are highlighted in darkblue.

Proposed Entity
Used Extended TOSCA Representation
System Service Template document (→Topology Template)
Component Root.Component Node
Service SoftwareComponent.Service Node
Backing Service BackingService Node
Storage Backing Service Database.StorageBackingService Node
Endpoint {Component Types}→Endpoint Capability
External Endpoint {Component Types}→Endpoint.Public Capability
Link {Component Types}→Endpoint_link Requirement & ConnectsTo.Link Relationship Template
Infrastructure Compute.Infrastructure | DBMS.Infrastructure Node
Deployment Mapping HostedOn Relationship
Request Trace RequestTrace Node
Data Aggregate DataAggregate Node
Backing Data BackingData Node

2. Extending TOSCA's Existing Normative Types

The following section introduces the proposed extensions for entities for which equivalent concepts could be identified within the TOSCA standard. Therefore, the following extensions are based on some specific normative TOSCA Types.

2.1 Component Entity TOSCA Representation

2.1.1 cna.qualityModel.entities.Root.Component

The Root.Component Node represents a generic Component entity. Therefore , it should be used to model a Component that is neither a Service, Backing Service, nor a Storage Backing Service entity. As an extension to the original TOSCA Root Node, this Node allows modeling Endpoints, Links to other Component entities and a Deployment Mapping to an Infrastructure Entity if desired. The Node also allows modeling the persistence of a specific Data Aggregate entity.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name Root.Component
Type Qualified Name qualityModel:Root.Component
Type URI cna.qualityModel.entities.Root.Component
a) Properties
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.Root.Component:
  derived_from: tosca.nodes.Root
  description: Node Type to model Component entities
  requirements:
    # Require deployment on an Infrastructure entity
    - host:
        capability: tosca.capabilities.Compute
        relationship: tosca.relationships.HostedOn
        occurrences: [1, 1]
    # Allow the definition of Links between Components
    - endpoint_link:
        capability: tosca.capabilities.Endpoint
        relationship: cna.qualityModel.relationships.ConnectsTo.Link
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Data Aggregate usage
    - uses_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.DataAggregate
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Backing Data usage
    - uses_backing_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.BackingData
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
  capabilities:
    # Allow assigning Endpoint entities
    endpoint:
      type: tosca.capabilities.Endpoint
      occurrences: [0, UNBOUNDED]
    # Allow assigning External Endpoint entities
    external_endpoint:
      type: tosca.capabilities.Endpoint.Public
      occurrences: [0, UNBOUNDED]
    # Needed so that Data Aggregates can be stored
    persist_data:
      type: cna.qualityModel.capabilities.DataStorage
      valid_source_types: [cna.qualityModel.entities.DataAggregate]
      occurrences: [0, UNBOUNDED]

2.2 Service Entity TOSCA Representation

2.2.1 cna.qualityModel.entities.SoftwareComponent.Service

The SoftwareComponent.Service Node represents a Service entity. It extends the original TOSCA SoftwareComponent Node in order to allow the modeling of Endpoints as well as Links to other Component entities. Additionally, modeled Backing Data and Data Aggregate entities can be referenced. The Node also allows modeling the persistence of a specific Data Aggregate entity.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name SoftwareComponent.Service
Type Qualified Name qualityModel:SoftwareComponent.Service
Type URI cna.qualityModel.entities.SoftwareComponent.Service
a) Properties
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.SoftwareComponent.Service:
  derived_from: tosca.nodes.SoftwareComponent
  description: Node Type to model Service entities
  requirements:
    # Allow the definition of Links between Components
    - endpoint_link:
        capability: tosca.capabilities.Endpoint
        relationship: cna.qualityModel.relationships.ConnectsTo.Link
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Data Aggregate usage
    - uses_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.DataAggregate
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Backing Data usage
    - uses_backing_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.BackingData
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
  capabilities:
    # Allow assigning Endpoint entities
    endpoint:
      type: tosca.capabilities.Endpoint
      occurrences: [0, UNBOUNDED]
    # Allow assigning External Endpoint entities
    external_endpoint:
      type: tosca.capabilities.Endpoint.Public
      occurrences: [0, UNBOUNDED]
    # Needed so that Data Aggregates can be stored
    persist_data:
      type: cna.qualityModel.capabilities.DataStorage
      valid_source_types: [cna.qualityModel.entities.DataAggregate]
      occurrences: [0, UNBOUNDED]

2.3 Storage Backing Service Entity TOSCA Representation

2.3.1 cna.qualityModel.entities.Database.StorageBackingService

The Database.StorageService Node represents a Storage Backing Service entity. It extends the original TOSCA Database Node in order to allow the modeling of External Endpoints as well as Links to other Component entities. Additionally, modeled Backing Data and Data Aggregate entities can be referenced. The Node also allows modeling the persistence of a specific Data Aggregate entity.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name Database.StorageBackingService
Type Qualified Name qualityModel:Database.StorageBackingService
Type URI cna.qualityModel.entities.Database.StorageBackingService
a) Properties
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.Database.StorageBackingService:
  derived_from: tosca.nodes.Database
  description: Node Type to model Storage Backing Service entities
  requirements:
    # Allow the definition of Links between Components
    - endpoint_link:
        capability: tosca.capabilities.Endpoint
        relationship: cna.qualityModel.relationships.ConnectsTo.Link
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Data Aggregate usage
    - uses_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.DataAggregate
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Backing Data usage
    - uses_backing_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.BackingData
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
  capabilities:
    # Endpoint can already be assigned using the database_endpoint capability
    # Allow assigning External Endpoint entities
    external_endpoint:
      type: tosca.capabilities.Endpoint.Public
      occurrences: [0, UNBOUNDED]
    # Needed so that Data Aggregates can be stored
    persist_data:
      type: cna.qualityModel.capabilities.DataStorage
      description: The ability to persist Data Aggregates like Business Objects
      valid_source_types: [cna.qualityModel.entities.DataAggregate]
      occurrences: [1, UNBOUNDED]

The ConnectsTo.Link Node represents a Link entity. It extends the original TOSCA ConnectsTo Relationship in order to allow the assignment of the targeted Endpoint.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name ConnectsTo.Link
Type Qualified Name qualityModel:ConnectsTo.Link
Type URI cna.qualityModel.entities.ConnectsTo.Link
a) Properties
Name Required Type Constraints
Description
target_endpoint true string N/A The endpoint, the connecting Component links to.
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.ConnectsTo.Link:
  derived_from: tosca.relationships.ConnectsTo
  description: Relationship Type to model Link entities
  properties:
    # Allows modeling the specific Endpoint the Link addresses, which represents the connection between the Components
    target_endpoint:
      type: string
      required: true
      description: The Endpoint to which the linked Component connects.

2.5 Infrastructure Entity TOSCA Representation

2.5.1 cna.qualityModel.entities.Compute.Infrastructure

The Compute.Infrastructure Node represents an Infrastructure entity. It extends the original TOSCA Compute Node in order to allow a Compute Node to be hosted by another one, which allows representing Infrastructure entities to be hosted by other Infrastructure entities. Additionally, modeled Backing Data can be referenced.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name Compute.Infrastructure
Type Qualified Name qualityModel:Compute.Infrastructure
Type URI cna.qualityModel.entities.Compute.Infrastructure
a) Properties
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.Compute.Infrastructure:
  derived_from: tosca.nodes.Compute
  description: Node Type to model Infrastructure entities
  requirements:
    # Allow the deployment on another Infrastructure entity
    - host:
        capability: tosca.capabilities.Compute
        relationship: tosca.relationships.HostedOn
        occurrences: [0, 1]
    # Allow the definition of Backing Data usage
    - uses_backing_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.BackingData
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
  capabilities:
    # Allow deployment of any Node Type
    host:
      type: tosca.capabilities.Compute
      valid_source_types: [tosca.nodes.Root]  

2.5.2 cna.qualityModel.entities.DBMS.Infrastructure

The DBMS.Infrastructure Node represents an Infrastructure entity, which is able to host Database.StorageService Nodes. It extends the original TOSCA DBMS Node in order to allow Backing Data entities to be referenced.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name DBMS.Infrastructure
Type Qualified Name qualityModel:DBMS.Infrastructure
Type URI cna.qualityModel.entities.DBMS.Infrastructure
a) Properties
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.DBMS.Infrastructure:
  derived_from: tosca.nodes.DBMS
  description: Node Type to model Infrastructure entities
  requirements:
    # Allow the definition of Backing Data usage
    - uses_backing_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.BackingData
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]

3. Adding New Types

In contrast to the previous section, this section introduces the proposed extensions for entities for which no equivalent concepts could be identified within the TOSCA standard. Therefore, the following extensions are solely based on the respective topmost Root normative TOSCA Type.

3.1 Backing Service Entity Representation

3.1.1 cna.qualityModel.entities.BackingService

The BackingService Node represents a Backing Service entity. It allows the modeling of Endpoints as well as Links to other Component entities. Additionally, modeled Backing Data and Data Aggregate entities can be referenced. The Node also allows modeling the persistence of a specific Data Aggregate entity.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name BackingService
Type Qualified Name qualityModel:BackingService
Type URI cna.qualityModel.entities.BackingService
a) Properties
Name Required Type Constraints
Description
provided_functionality false string N/A The general functionality the Backing Service provides
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.BackingService:
  derived_from: tosca.nodes.Root
  description: Node Type to model Backing Service entities
  properties:
    provided_functionality:
      type: string
      required: false
  requirements:
    # Require deployment on an Infrastructure entity
    - host:
        capability: tosca.capabilities.Compute
        relationship: tosca.relationships.HostedOn
        occurrences: [1, 1]
    # Allow the definition of Links between Components
    - endpoint_link:
        capability: tosca.capabilities.Endpoint
        relationship: cna.qualityModel.relationships.ConnectsTo.Link
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Data Aggregate usage
    - uses_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.DataAggregate
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
    # Allow the definition of Backing Data usage
    - uses_backing_data:
        capability: tosca.capabilities.Attachment
        node: cna.qualityModel.entities.BackingData
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [0, UNBOUNDED]
  capabilities:
    # Allow assigning Endpoint entities
    endpoint:
      type: tosca.capabilities.Endpoint
      occurrences: [0, UNBOUNDED]
    # Allow assigning External Endpoint entities
    external_endpoint:
      type: tosca.capabilities.Endpoint.Public
      occurrences: [0, UNBOUNDED]
    # Needed so that Data Aggregates can be stored
    persist_data:
      type: cna.qualityModel.capabilities.DataStorage
      valid_source_types: [cna.qualityModel.entities.DataAggregate]
      occurrences: [0, UNBOUNDED]

3.2 Request Trace Entity Representation

3.2.1 cna.qualityModel.entities.RequestTrace

The RequestTrace Node models a Request Trace entity. It allows the inclusion of the various Component, Service, Backing Service and Storage Backing Service entities as well as Link entities that are part of the Request Trace.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name RequestTrace
Type Qualified Name qualityModel:RequestTrace
Type URI cna.qualityModel.entities.RequestTrace
a) Properties
Name Required Type Constraints
Description
endpoint true string N/A The specific External Endpoint for which the Request Trace entity is defined.
nodes false list N/A The existing Component, Service, Backing Service or Storage Backing Service entities which are part of this Request Trace entity.
links true list N/A The existing Link entities which are part of this Request Trace entity.
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.RequestTrace:
  derived_from: tosca.nodes.Root
  description: Node Type to model Request Trace entities
  properties:
    endpoint:
      type: string
      required: true
    nodes:
      type: list
      required: false
      entry_schema:
        description: An existing Component, Service, Backing Service or Storage Backing Service entity which is part of this Request Trace entity
        type: string
    links:
      type: list
      required: true
      entry_schema:
        description: An existing Link entity which is part of this Request Trace entity
        type: string
  requirements:
    # Reference to External Endpoint for which the Request Trace is defined
    - external_endpoint:
        capability: tosca.capabilities.Endpoint.Public
        relationship: tosca.relationships.ConnectsTo
        occurrences: [1, 1]

3.3 Data Aggregate Entity Representation

3.3.1 cna.qualityModel.entities.DataAggregate

The DataAggregate Node can model a Data Aggregate entity.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name DataAggregate
Type Qualified Name qualityModel:DataAggregate
Type URI cna.qualityModel.entities.DataAggregate
a) Properties
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.DataAggregate:
  derived_from: tosca.nodes.Root
  description: Node Type to model Data Aggregate entities
  requirements:
    # Allows Data Aggregate to be persisted by Storage Backing Service entity
    - persistence:
        capability: cna.qualityModel.capabilities.DataStorage
        relationship: cna.qualityModel.relationships.AttachesTo.Data
        occurrences: [1, UNBOUNDED]
  capabilities:
    # Allows Data Aggregate to be used by other entities
    provided_data:
      type: tosca.capabilities.Attachment
      valid_source_types:
        - cna.qualityModel.entities.Root.Component
        - cna.qualityModel.entities.SoftwareComponent.Service
        - cna.qualityModel.entities.BackingService
        - cna.qualityModel.entities.Database.StorageService
      occurrences: [1, 1]

3.4 Backing Data Entity Representation

3.4.1 cna.qualityModel.entities.BackingData

The BackingData Node can model a Backing Data entity.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name BackingData
Type Qualified Name qualityModel:BackingData
Type URI cna.qualityModel.entities.BackingData
a) Properties
Name Required Type Constraints
Description
included_data true map N/A The information represented by the Backing Data entity.
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.entities.BackingData:
  derived_from: tosca.nodes.Root
  description: Node Type to model Backing Data entities
  properties:
    included_data:
      type: map
      required: true
      key_schema:
        type: string
        description: the name specifying the individual Backing Data element
      entry_schema:
        type: string
        description: the value of the individual Backing Data element
  capabilities:
    provided_data:
        type: tosca.capabilities.Attachment
        valid_source_types:
          - cna.qualityModel.entities.Root.Component
          - cna.qualityModel.entities.SoftwareComponent.Service
          - cna.qualityModel.entities.BackingService
          - cna.qualityModel.entities.Database.StorageService
          - cna.qualityModel.entities.Compute.Infrastructure
          - cna.qualityModel.entities.DBMS.Infrastructure
        occurrences: [1, 1]

3.5 Additionally Required Type Definitions

The following Type definitions are not used to represent some entities of the quality model but are required to realize them with the previously extended TOSCA definitions.

3.5.1 cna.qualityModel.capabilities.DataStorage

When a Node includes the DataStorage Capability, it is able to store Data Aggregate entities.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name DataStorage
Type Qualified Name qualityModel:DataStorage
Type URI cna.qualityModel.capabilities.DataStorage
a) Properties
Name Required Type Constraints
Description
included_data true map N/A The information represented by the Backing Data entity.
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.capabilities.DataStorage:
  derived_from: tosca.capabilities.Root
  description: When included, the Node is able to store Data Aggregate entities

3.5.2 cna.qualityModel.relationships.AttachesTo.Data

The AttachtesTo.Data Relationship is used to model the connection between a Component and a Data Aggregate or Backing Data entity. It extends the original TOSCA AttachesTo Relationship in order to change the "location" property to a non-required one.

File references:      TOSCA-File      Individual Node Definition      Example

Shorthand Name AttachesTo.Data
Type Qualified Name qualityModel:AttachesTo.Data
Type URI cna.qualityModel.relationships.AttachesTo.Data
a) Properties
Name Required Type Constraints
Description
location false map N/A The relative location.
b) Attributes
Name Required Type Constraints
Description
N/A N/A N/A N/A N/A
c) Definition
cna.qualityModel.relationships.AttachesTo.Data:
  derived_from: tosca.relationships.AttachesTo
  valid_target_types: [tosca.capabilities.Attachment]
  properties:
    location:
      # Override parent AttachesTo definition to make this property non-required
      required: false

  1. last accessed 2022-03-28 


Last update: 2022-08-31
Back to top