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]
2.4 Link Entity TOSCA Representation
2.4.1 cna.qualityModel.entities.ConnectsTo.Link
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