TOSCA Type Support
Normative TOSCA Types
Supported normative TOSCA types defined in ch. 5 of TOSCA Simple Profile v1.1 are listed below.
Node Types
TOSCA type URI |
java class |
tosca.nodes.Apache |
Apache |
tosca.nodes.Compute |
Compute |
tosca.nodes.Container.Application |
ContainerApplication |
tosca.nodes.Container.Runtime |
ContainerRuntime |
tosca.nodes.Database |
Database |
tosca.nodes.DBMS |
Dbms |
tosca.nodes.LoadBalancer |
LoadBalancer |
tosca.nodes.Root |
RootNode |
tosca.nodes.SoftwareComponent |
SoftwareComponent |
tosca.nodes.Storage.BlockStorage |
BlockStorage |
tosca.nodes.Storage.ObjectStorage |
ObjectStorage |
tosca.nodes.WebApplication |
WebApplication |
tosca.nodes.WebServer |
WebServer |
Capability Types
TOSCA type URI |
java class |
tosca.capabilities.Attachment |
AttachmentCapability |
tosca.capabilities.Compute |
ComputeCapability |
tosca.capabilities.Container |
ContainerCapability |
tosca.capabilities.Endpoint |
EndpointCapability |
tosca.capabilities.Endpoint.Admin |
AdminEndpointCapability |
tosca.capabilities.Endpoint.Database |
DatabaseEndpointCapability |
tosca.capabilities.Endpoint.Public |
PublicEndpointCapability |
tosca.capabilities.Network |
NetworkCapability |
tosca.capabilities.network.Bindable |
BindableCapability |
tosca.capabilities.Node |
NodeCapability |
tosca.capabilities.OperatingSystem |
OsCapability |
tosca.capabilities.Root |
Capability |
tosca.capabilities.Scalable |
ScalableCapability |
tosca.capabilities.Storage |
StorageCapability |
Relationship Types
TOSCA type URI |
java class |
tosca.relationships.AttachesTo |
AttachesTo |
tosca.relationships.ConnectsTo |
ConnectsTo |
tosca.relationships.DependsOn |
DependsOn |
tosca.relationships.HostedOn |
HostedOn |
tosca.relationships.Root |
RootRelationship |
tosca.relationships.RoutesTo |
RoutesTo |
Non-normative TOSCA Types
Supported non-normative TOSCA types defined in ch. 9 of TOSCA Simple Profile v1.1 are listed below.
Node Types
TOSCA type URI |
java class |
tosca.nodes.Container.Application.Docker |
DockerApplication |
tosca.nodes.Database.MySQL |
MysqlDatabase |
tosca.nodes.DBMS.MySQL |
MysqlDbms |
tosca.nodes.WebApplication.WordPress |
WordPress |
tosca.nodes.WebServer.Nodejs |
Nodejs |
Capability Types
TOSCA type URI |
java class |
tosca.capabilities.Container.Docker |
DockerContainerCapability |
Custom Types
Custom types which are not part of the TOSCA specifications, but nevertheless got natively integrated into TOSCAna, are listed below.
Node Types
TOSCA type URI |
java class |
toscana.nodes.JavaApplication |
JavaApplication |
toscana.nodes.JavaRuntime |
JavaRuntime |
Add new types
In order to add a new type, following steps are necessary:
- Implement the type class
- the class must, either directly or indirectly, inherit from the appropriate base class
RootNode
/ Capability
/ Relationship
- remember to use ToscaKeys instead of directly using data fields. Pay special attention to specifying the necessary type information correctly.
- generate getters and setters with the supplied code templates. Make use of the Optional getter template if a value is not required.
- write a routine for initialization of complex values. This is the place where you can specify default values, as well. Look into existing classes if you're not sure how to do this.
- override the
accept
method. If this is omitted, the type can't be visited with one if the visitors.
- add an appropriate
visit
method to either NodeVisitor
, CapabilityVisitor
or RelationshipVisitor
and also update its corresponding strict version.
Add custom types
Additionally to above steps, following steps have to be taken:
- put its TOSCA type definition into server/src/main/resources/tosca_definitions
- modify the
CustomTypeInjector
class to also load the new definition. This will inject the type definition into any service template that makes use of the new type.