Skip to content

TOSCA Vintner Profile 1.0 Release Candidate

This document specifies the TOSCA Vintner profile. This profile includes normative TOSCA types for the domain of cloud computing. Standardizing such normative TOSCA types improves interoperability. The specification is under active development and is not backwards compatible with any previous versions.

TOSCA Vintner Core Profile

The core normative TOSCA type definitions contain high-level type definitions.

Metadata

We define the following metadata.

Metadata Description
vintner_ignore Flag for ignoring an entity (type) during generation, e.g., to omit a property from the environment.
vintner_name Overrides the original name, e.g., override a property name with its correct environment name.
vintner_generated Flag for marking an entity (type) that has been generated.
vintner_orchestrator Orchestrator name for which the entity (type) has been generated.
vintner_abstract Flag for marking an entity type as abstract.
vintner_normative Flag for marking an entity type as normative (considering this specification).
vintner_link URL which points, e.g., to the documentation page of the entity type.

Artifact Types

We specify the following normative artifact types. An overview is given in Figure C1.

Artifact Types

Figure C1: TOSCA Vintner Core Artifact Types

artifact

The "root" artifact type manages the root artifact type all other artifact types inherit from.

1
2
3
4
artifact:
    derived_from: tosca.artifacts.Root
    metadata:
        vintner_normative: 'true'

source.archive

The "source.archive" artifact type manages a generic archive that holds distribution files of a component.

source.archive:
    derived_from: artifact
    metadata:
        vintner_normative: 'true'
    properties:
        extra_opts:
            type: list
            description: extra options when extracting the archive
            entry_schema:
                type: string
            required: false

system.package

The "system.package" artifact type manages a package that is installed via a system package manager. It expects the package name in the "file" key.

system.package:
    derived_from: artifact
    metadata:
        vintner_normative: 'true'
    properties:
        script:
            type: string
            required: false
            description: URL of an installation script
        repository:
            type: string
            required: false
            description: name of the repository (required if source is set)
        key:
            type: string
            required: false
            description: URL of the apt key which signs the apt repository (required if source is set)
        source:
            type: string
            required: false
            description: source of the repository
        dependencies:
            type: string
            required: false
            description: Comma separated list of apt packages that are additionally installed
        env:
            type: string
            required: false
            description: Space separated env variables

container.image

The "container.image" artifact type manages a generic container image. It expects the image reference in the "file" key.

1
2
3
4
container.image:
    derived_from: artifact
    metadata:
        vintner_normative: 'true'

machine.image

The "machine.image" artifact type manages a generic machine image. It expects the image reference in the "file" key.

1
2
3
4
machine.image:
    derived_from: artifact
    metadata:
        vintner_normative: 'true'

dbms.image

The "dbms.image" artifact type manages a generic DBMS image. It expects the image reference in the "file" key.

1
2
3
4
dbms.image:
    derived_from: artifact
    metadata:
        vintner_normative: 'true'

cache.image

The "cache.image" artifact type manages a generic cache image. It expects the image reference in the "file" key.

1
2
3
4
cache.image:
    derived_from: artifact
    metadata:
        vintner_normative: 'true'

Interface Types

We specify the following normative interface types. An overview is given in Figure C2.

Interface Types

Figure C2: TOSCA Vintner Core Interface Types

interface

The "interface" interface type manages the root interface type all other interface types inherit from.

1
2
3
4
interface:
    derived_from: tosca.interfaces.Root
    metadata:
        vintner_normative: 'true'

management

The "management" interface type manages the standard lifecycle management of components.

management:
    derived_from: interface
    metadata:
        vintner_normative: 'true'
    operations:
        create:
            description: create lifecycle management operation, i.e., an inline-bash script
        configure:
            description: configure lifecycle management operation, i.e., an inline-bash script
        start:
            description: start lifecycle management operation, i.e., an inline-bash script
        stop:
            description: stop lifecycle management operation, i.e., an inline-bash script
        delete:
            description: delete lifecycle management operation, i.e., an inline-bash script

Node Types

We specify the following normative node types. An overview is given in Figure C3.

Node Types

Figure C3: TOSCA Vintner Core Node Types

node

The abstract "node" node type defines the root node type all other node types inherit from.

1
2
3
4
5
node:
    derived_from: tosca.nodes.Root
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'

cloud.provider

The abstract "cloud.provider" node type defines an abstract cloud provider, which is capable of hosting cloud services.

1
2
3
4
5
6
7
8
cloud.provider:
    derived_from: node
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    capabilities:
        host:
            type: tosca.capabilities.Compute

cloud.service

The abstract "cloud.service" node type defines an generic cloud service, which is hosted on a cloud provider and which is hosting an instance of a cloud service offering.

cloud.service:
    derived_from: node
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    capabilities:
        host:
            type: tosca.capabilities.Compute
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

software.application

The abstract "software.application" node type defines a generic software application. It requires a hosting and its lifecycle is managed by the management interface.

software.application:
    derived_from: node
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_name:
            type: string
            description: name of the application
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn
    interfaces:
        management:
            type: management

service.application

The abstract "service.application" node type defines a generic software application, which provides a service. It is not normative how this component is implemented. This could be implemented by a Kubernetes Deployment Resource along with a Kubernetes Service Resource on Kubernetes or by a Systemd Service Unit on a virtual machine.

service.application:
    derived_from: software.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            description: the programming/ platform language of the application, e.g., node22
        application_port:
            type: string
            description: the port the application listens on, e.g., 3000
            metadata:
                vintner_name: PORT
        application_protocol:
            type: string
            description: the protocol the application uses, e.g., http
    attributes:
        application_address:
            type: string
            description: the address under which the application can be reached, i.e., the IP or a domain name
        application_endpoint:
            type: string
            description: the endpoint under which the application can be reached, i.e., the protocol, IP and port concatenated

software.runtime

The abstract "software.runtime" node type defines a generic software runtime.

1
2
3
4
5
6
7
8
software.runtime:
    derived_from: software.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    capabilities:
        host:
            type: tosca.capabilities.Compute

container.runtime

The abstract "container.runtime" node type defines a generic container runtime.

1
2
3
4
5
container.runtime:
    derived_from: software.runtime
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'

machine

The abstract "machine" node type defines a generic computing machine.

machine:
    derived_from: node
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        machine_name:
            type: string
            description: name of the machine
    attributes:
        application_address:
            type: string
            description: the address under which the machine can be publicly reached, i.e., the IP or a domain name
        management_address:
            type: string
            description: the address under which the machine can be privately reached, i.e., the IP or a domain name

local.machine

The "local.machine" node type manages a local machine, i.e., localhost. It is capable of hosting, e.g., software components.

1
2
3
4
5
6
7
8
local.machine:
    derived_from: machine
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    capabilities:
        host:
            type: tosca.capabilities.Compute

remote.machine

The "remote.machine" node type manages a remote machine, i.e., a machine that is not localhost. It is capable of hosting, e.g., software components.

remote.machine:
    derived_from: machine
    metadata:
        vintner_normative: 'true'
    properties:
        machine_name:
            type: string
            description: name of the machine
        ports:
            type: list
            description: ports to open
            entry_schema:
                type: string
        flavor:
            type: string
            description: flavor of the machine, i.e., cpu, memory, disk size encoded as string
            default: m1.medium
        network:
            type: string
            description: network to connect to
        ssh_user:
            type: string
            description: ssh user to connect to the machine
        ssh_key_name:
            type: string
            description: ssh key name to connect to the machine
        ssh_key_file:
            type: string
            description: ssh key file to connect to the machine, i.e., the absolute path to the ssh key file on the filesystem of the orchestrator
    capabilities:
        host:
            type: tosca.capabilities.Compute

virtual.machine

The "virtual.machine" node type manages a virtual machine.

virtual.machine:
    derived_from: remote.machine

physical.machine

The "physical.machine" node type manages a physical machine.

physical.machine:
    derived_from: remote.machine

database

The abstract "database" node type defines a generic database. It requires a DBMS to run.

1
2
3
4
5
6
7
8
9
database:
    derived_from: node
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

relational.database

The abstract "relational.database" node type defines a generic relational database. It requires a relational DBMS to run.

1
2
3
4
5
relational.database:
    derived_from: database
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'

dbms

The abstract "dbms" node type defines a generic DBMS.

1
2
3
4
5
dbms:
    derived_from: software.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'

relational.dbms

The abstract "relational.dbms" node type defines a generic relational DBMS.

1
2
3
4
5
relational.dbms:
    derived_from: dbms
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'

cache

The abstract "cache" node type defines a generic caching service.

cache:
    derived_from: software.application
    properties:
        cache_name:
            type: string
            description: name of the cache
        cache_port:
            type: string
            description: port the cache listens on
    attributes:
        application_address:
            type: string
            description: the address under which the cache can be reached, i.e., the IP or a domain name
        application_endpoint:
            type: string
            description: the endpoint under which the cache can be reached, i.e., the protocol, IP and port concatenated

storage

The abstract "storage" node type defines a generic storage service.

1
2
3
4
storage:
    derived_from: node
    metadata:
        vintner_normative: 'true'

block.storage

The abstract "block.storage" node type defines a generic block storage.

1
2
3
4
block.storage:
    derived_from: storage
    metadata:
        vintner_normative: 'true'

object.storage

The abstract "object.storage" node type defines a generic object storage.

object.storage:
    derived_from: storage
    metadata:
        vintner_normative: 'true'
    properties:
        storage_name:
            type: string
            description: name of the storage
        storage_dialect:
            type: string
            description: dialect of the storage, e.g., s3
        storage_user:
            type: string
        storage_token:
            type: string
    attributes:
        storage_endpoint:
            type: string
        storage_token:
            type: string
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

file.storage

The abstract "file.storage" node type defines a generic file storage.

1
2
3
4
file.storage:
    derived_from: storage
    metadata:
        vintner_normative: 'true'

ingress

The "ingress" node type manages a generic ingress service, which is a reverse proxy that exposes an upstream application. It is not normative how this component is implemented. This could be implemented by an Ingress resource on Kubernetes or by a reverse proxy, such as NGINX or Caddy, on a virtual machine.

ingress:
    derived_from: node
    metadata:
        vintner_normative: 'true'
    properties:
        application_name:
            type: string
            description: name of the upstream application
        application_port:
            type: string
            description: port the upstream application listens on
        application_protocol:
            type: string
            description: protocol the upstream application uses
    attributes:
        application_address:
            type: string
            description: the address under which the upstream application is exposed by the ingress, i.e., the IP or a domain name
    requirements:
        - application:
              capability: tosca.capabilities.Endpoint
              relationship: tosca.relationships.ConnectsTo
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

TOSCA Vintner Extended Profile

The extended normative TOSCA type definitions contain additional provider-specific type definitions which are derived from the core type definitions.

Artifact Types

We specify the following normative artifact types. An overview is given in Figure E1.

Artifact Types

Figure E1: Artifact Types

docker.image

The "docker.image" artifact type manages a concrete Docker Image. It expects the Docker Image reference in the "file" key.

1
2
3
4
docker.image:
    derived_from: container.image
    metadata:
        vintner_normative: 'true'

zip.archive

The "zip.archive" artifact type manages a ZIP archive, which contains the distribution files of a component.

1
2
3
4
zip.archive:
    derived_from: source.archive
    metadata:
        vintner_normative: 'true'

tar.archive

The "tar.archive" artifact type manages a TAR archive, which contains the distribution files of a component

1
2
3
4
tar.archive:
    derived_from: source.archive
    metadata:
        vintner_normative: 'true'

apt.package

The "apt.package" artifact type manages a package that is installed via the apt package manager.

apt.package:
    derived_from: system.package
    metadata:
        vintner_normative: 'true'
    properties:
        script:
            type: string
            required: false
            description: URL of an installation script
        repository:
            type: string
            required: false
            description: name of the repository (required if source is set)
        key:
            type: string
            required: false
            description: URL of the apt key which signs the apt repository (required if source is set)
        source:
            type: string
            required: false
            description: source of the repository
        dependencies:
            type: string
            required: false
            description: Comma separated list of apt packages that are additionally installed
        env:
            type: string
            required: false
            description: Space separated env variables

Node Types

We specify the following normative node types. An overview is given in Figure E2.

Node Types

Figure E2: Node Types

nodejs.runtime

The "nodejs.runtime" node type manages the Node.js runtime, which is a software runtime that runs on a machine. It is capable of hosting Node.js components

nodejs.runtime:
    derived_from: software.runtime
    metadata:
        vintner_normative: 'true'
    properties:
        application_name:
            type: string
            default: nodejs
            description: the name of the application
    artifacts:
        apt_package:
            type: apt.package
            description: the apt package to install Node.js
            file: nodejs
            properties:
                script: https://deb.nodesource.com/setup_18.x
    attributes:
        management_address:
            type: string
            description: the management address of the host
    capabilities:
        host:
            type: tosca.capabilities.Compute

nodejs.service.application

The "nodejs.service.application" node type manages a Node.js service application.

nodejs.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: nodejs18
    interfaces:
        management:
            type: management
            operations:
                configure: npm ci
                start: npm start

reactjs.service.application

The "reactjs.service.application" node type manages a React.js service application.

1
2
3
4
5
6
7
8
9
reactjs.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: nodejs18

python.runtime

The "python.runtime" node type manages the Python runtime, which is a software runtime that runs on a machine. It is capable of hosting Python components.

python.runtime:
    derived_from: software.runtime
    metadata:
        vintner_normative: 'true'
    artifacts:
        apt_package:
            type: apt.package
            file: python-is-python3
            properties:
                dependencies:
                    type: string
                    default: python3 python3-pip python3-venv
    attributes:
        management_address:
            type: string
            description: the management address of the host
    capabilities:
        host:
            type: tosca.capabilities.Compute

python.service.application

The "python.service.application" node type manages a Python service application.

python.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: python3
    interfaces:
        management:
            type: management
            operations:
                configure: pip install -r requirements.txt
                start: python main.py

go.service.application

The "go.service.application" node type manages a Go service application.

1
2
3
4
5
6
7
8
9
go.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: go122

java.runtime

The "java.runtime" node type manages the Java runtime, which is a software runtime that runs on a machine. It is capable of hosting Java components.

java.runtime:
    derived_from: software.runtime
    metadata:
        vintner_normative: 'true'
    properties:
        application_name:
            type: string
            default: java
    artifacts:
        apt_package:
            type: apt.package
            file: openjdk-18-jre-headless
    attributes:
        management_address:
            type: string
            description: the management address of the host
    capabilities:
        host:
            type: tosca.capabilities.Compute

java.service.application

The "java.service.application" node type manages a Java service application.

1
2
3
4
5
6
7
8
9
java.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: java21

dotnet.runtime

The "dotnet.runtime" node type manages the .NET runtime, which is a software runtime that runs on a machine. It is capable of hosting .NET components.

dotnet.runtime:
    derived_from: software.runtime
    metadata:
        vintner_normative: 'true'
    properties:
        application_name:
            type: string
            default: java
    artifacts:
        apt_package:
            type: apt.package
            file: dotnet-sdk-8.0
    attributes:
        management_address:
            type: string
            description: the management address of the host
    capabilities:
        host:
            type: tosca.capabilities.Compute

csharp.service.application

The "csharp.service.application" node type manages a C# service application.

1
2
3
4
5
6
7
8
9
csharp.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: dotnet8

binary.service.application

The "binary.service.application" node type manages a binary service application.

1
2
3
4
5
6
7
8
9
binary.service.application:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        application_language:
            type: string
            default: binary

gcp.provider

The abstract "gcp.provider" node type defines a Google Cloud Platform (GCP) project.

gcp.provider:
    derived_from: cloud.provider
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        _hosting:
            type: string
            default: gcp
        gcp_region:
            type: string
            description: the region of the GCP project
        gcp_service_account_file:
            type: string
            description: the service account file of the GCP project, i.e., the absolute path to the serivce account file on the filesystem of the orchestrator
        gcp_project:
            type: string
    interfaces:
        Standard:
            operations:
                create: exit 0
                delete: exit 0

gcp.service

The abstract "gcp.service" node type defines a Google Cloud Platform (GCP) service.

gcp.service:
    derived_from: cloud.service
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        _hosting:
            type: string
            default: gcp
        gcp_service:
            type: string
            description: the API of the GCP service

gcp.cloudrun

The "gcp.cloudrun" node type manages a the GCP CloudRun service.

1
2
3
4
5
6
7
8
gcp.cloudrun:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: run.googleapis.com

gcp.cloudsql

The "gcp.cloudsql" node type manages a the GCP CloudSQL service.

1
2
3
4
5
6
7
8
gcp.cloudsql:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: sqladmin.googleapis.com

gcp.appengine

The "gcp.appengine" node type manages a the GCP AppEngine service.

gcp.appengine:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: appengine.googleapis.com
    requirements:
        - build:
              capability: tosca.capabilities.Root
              relationship: tosca.relationships.DependsOn
        - reporting:
              capability: tosca.capabilities.Root
              relationship: tosca.relationships.DependsOn

gcp.appenginereporting

The "gcp.appenginereporting" node type manages a the GCP AppEngine Reporting service.

1
2
3
4
5
6
7
8
gcp.appenginereporting:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: appenginereporting.googleapis.com

gcp.cloudbuild

The "gcp.cloudbuild" node type manages a the GCP CloudBuild service.

1
2
3
4
5
6
7
8
gcp.cloudbuild:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: cloudbuild.googleapis.com

gcp.kubernetesengine

The "gcp.kubernetesengine" node type manages a the GCP Kubernetes Engine service.

1
2
3
4
5
6
7
8
gcp.kubernetesengine:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: container.googleapis.com

gcp.cloudstorage

The "gcp.cloudstorage" node type manages a the GCP CloudStorage service.

gcp.cloudstorage:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: storage.googleapis.com
    attributes:
        storage_dialect:
            type: string
            default: gcp

gcp.memorystore

The "gcp.memorystore" node type manages a the GCP Memorystore service.

1
2
3
4
5
6
7
8
gcp.memorystore:
    derived_from: gcp.service
    metadata:
        vintner_normative: 'true'
    properties:
        gcp_service:
            type: string
            default: redis.googleapis.com

docker.engine

The "docker.engine" node type manages the Docker Engine, which is a software runtime that runs on a machine. It is capable of hosting Docker containers. It is configured to listen on the unix socket as well as on tcp://0.0.0.0:2375.

docker.engine:
    derived_from: container.runtime
    metadata:
        vintner_normative: 'true'
    properties:
        application_name:
            type: string
            default: docker
        _hosting:
            type: string
            default: docker
    attributes:
        management_address:
            type: string
            description: the management address of the host
    capabilities:
        host:
            type: tosca.capabilities.Compute

kubernetes.cluster

The abstract "kubernetes.cluster" node type describes a Kubernetes cluster. It is typically hosted on a cloud provider.

kubernetes.cluster:
    derived_from: cloud.service
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        _hosting:
            type: string
            default: kubernetes
        k8s_host:
            type: string
            description: the host of the Kubernetes API
        k8s_ca_cert_file:
            type: string
            description: the CA certificate file of the Kubernetes API
        k8s_client_cert_file:
            type: string
            description: the client certificate file to connect to the Kubernetes API
        k8s_client_key_file:
            type: string
            description: the client key file to connect to the Kubernetes API
    capabilities:
        host:
            type: tosca.capabilities.Compute
    interfaces:
        Standard:
            operations:
                create: exit 0
                delete: exit 0

openstack.provider

The abstract "openstack.provider" node type defines an OpenStack project.

openstack.provider:
    derived_from: cloud.provider
    metadata:
        vintner_normative: 'true'
        vintner_abstract: 'true'
    properties:
        _hosting:
            type: string
            default: openstack
        os_region_name:
            type: string
            description: the region of the OpenStack project
        os_auth_type:
            type: string
            description: the authentication type of the OpenStack project
        os_auth_url:
            type: string
            description: the authentication URL of the OpenStack project
        os_identity_api_version:
            type: string
            description: the identity API version of the OpenStack project
        os_interface:
            type: string
            description: the interface of the OpenStack project
        os_application_credential_id:
            type: string
            description: the application credential ID to authenticate at the OpenStack project
        os_application_credential_secret:
            type: string
            description: the application credential secret to authenticate at the OpenStack project
    interfaces:
        Standard:
            operations:
                create: exit 0
                delete: exit 0

mysql.dbms

The "mysql.dbms" node type manages a MySQL DBMS, which is capable of hosting MySQL databases.

mysql.dbms:
    derived_from: relational.dbms
    metadata:
        vintner_normative: 'true'
    properties:
        dbms_name:
            type: string
            description: the name of the DBMS
        application_name:
            type: string
            description: the name of the DBMS
        dbms_password:
            type: string
            description: the root password of the DBMS
        dbms_ssl_mode:
            type: string
            default: None
            description: the SSL mode of the DBMS
    attributes:
        application_address:
            type: string
            description: the application address of the DBMS
        application_port:
            type: string
            description: the application port of the DBMS
        management_address:
            type: string
            description: the management address of the DBMS
        management_port:
            type: string
            description: the management port of the DBMS
    capabilities:
        host:
            type: tosca.capabilities.Compute
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

mysql.database

The "mysql.database" node type manages a MySQL database, which is hosted on a MySQL and which can be accessed by other components.

mysql.database:
    derived_from: relational.database
    metadata:
        vintner_normative: 'true'
    properties:
        database_name:
            type: string
            description: the name of the database
        database_user:
            type: string
            description: the user of the database
        database_password:
            type: string
            description: the password for the database user
    attributes:
        application_address:
            type: string
            description: the application address of the DBMS
        application_port:
            type: string
            description: the application port of the DBMS
    capabilities:
        database:
            type: tosca.capabilities.Endpoint.Database
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

minio.server

The "minio.server" node type manages a MinIO server.

minio.server:
    derived_from: service.application
    metadata:
        vintner_normative: 'true'
    properties:
        access_key:
            type: string
            metadata:
                vintner_name: MINIO_ROOT_USER
            description: the access key of the MinIO server
        secret_key:
            type: string
            metadata:
                vintner_name: MINIO_ROOT_PASSWORD
            description: the secret key of the MinIO server
    attributes:
        storage_dialect:
            type: string
            default: minio

redis.server

The "redis.server" node type manages a Redis server.

1
2
3
4
5
6
7
8
redis.server:
    derived_from: cache
    metadata:
        vintner_normative: 'true'
    properties:
        application_protocol:
            type: string
            default: redis

Appendix A "TOSCA Vintner Profile"

This appendix contains the TOSCA Vintner profile. The profile is also available as download.

tosca_definitions_version: tosca_simple_yaml_1_3
description: TOSCA Profile for OpenTOSCA Vintner
metadata:
    vintner_normative: 'true'
    template_name: TOSCA Vintner Profile
    template_author: Miles Stötzner
    template_contact: miles.stoetzner@iste.uni-stuttgart.de
    template_link: https://vintner.opentosca.org
    template_version: 1.0.0-draft
    template_id: tosca-vintner-profile
    template_license: https://www.apache.org/licenses/LICENSE-2.0
    acknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).
imports:
    - ./tosca-vintner-profile-core.yaml
    - ./tosca-vintner-profile-extended.yaml

Appendix B "TOSCA Vintner Core Profile"

This appendix contains the TOSCA Vintner Core profile. The profile is also available as download.

tosca_definitions_version: tosca_simple_yaml_1_3
description: TOSCA Profile for OpenTOSCA Vintner (Core)
metadata:
    vintner_normative: 'true'
    template_name: TOSCA Vintner Profile (Core)
    template_author: Miles Stötzner
    template_contact: miles.stoetzner@iste.uni-stuttgart.de
    template_link: https://vintner.opentosca.org
    template_version: 1.0.0-draft
    template_id: tosca-vintner-profile
    template_license: https://www.apache.org/licenses/LICENSE-2.0
    acknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).
artifact_types:
    artifact:
        derived_from: tosca.artifacts.Root
        description: The "root" artifact type manages the root artifact type all other artifact types inherit from.
        metadata:
            vintner_normative: 'true'
    source.archive:
        derived_from: artifact
        description: The "source.archive" artifact type manages a generic archive that holds distribution files of a component.
        metadata:
            vintner_normative: 'true'
        properties:
            extra_opts:
                type: list
                description: extra options when extracting the archive
                entry_schema:
                    type: string
                required: false
    system.package:
        derived_from: artifact
        description: The "system.package" artifact type manages a package that is installed via a system package manager. It expects the package name in the "file" key.
        metadata:
            vintner_normative: 'true'
        properties:
            script:
                type: string
                required: false
                description: URL of an installation script
            repository:
                type: string
                required: false
                description: name of the repository (required if source is set)
            key:
                type: string
                required: false
                description: URL of the apt key which signs the apt repository (required if source is set)
            source:
                type: string
                required: false
                description: source of the repository
            dependencies:
                type: string
                required: false
                description: Comma separated list of apt packages that are additionally installed
            env:
                type: string
                required: false
                description: Space separated env variables
    container.image:
        derived_from: artifact
        description: The "container.image" artifact type manages a generic container image. It expects the image reference in the "file" key.
        metadata:
            vintner_normative: 'true'
    machine.image:
        derived_from: artifact
        description: The "machine.image" artifact type manages a generic machine image. It expects the image reference in the "file" key.
        metadata:
            vintner_normative: 'true'
    dbms.image:
        derived_from: artifact
        description: The "dbms.image" artifact type manages a generic DBMS image. It expects the image reference in the "file" key.
        metadata:
            vintner_normative: 'true'
    cache.image:
        derived_from: artifact
        description: The "cache.image" artifact type manages a generic cache image. It expects the image reference in the "file" key.
        metadata:
            vintner_normative: 'true'
interface_types:
    interface:
        derived_from: tosca.interfaces.Root
        description: The "interface" interface type manages the root interface type all other interface types inherit from.
        metadata:
            vintner_normative: 'true'
    management:
        derived_from: interface
        description: The "management" interface type manages the standard lifecycle management of components.
        metadata:
            vintner_normative: 'true'
        operations:
            create:
                description: create lifecycle management operation, i.e., an inline-bash script
            configure:
                description: configure lifecycle management operation, i.e., an inline-bash script
            start:
                description: start lifecycle management operation, i.e., an inline-bash script
            stop:
                description: stop lifecycle management operation, i.e., an inline-bash script
            delete:
                description: delete lifecycle management operation, i.e., an inline-bash script
node_types:
    node:
        derived_from: tosca.nodes.Root
        description: The abstract "node" node type defines the root node type all other node types inherit from.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
    cloud.provider:
        derived_from: node
        description: The abstract "cloud.provider" node type defines an abstract cloud provider, which is capable of hosting cloud services.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        capabilities:
            host:
                type: tosca.capabilities.Compute
    cloud.service:
        derived_from: node
        description: The abstract "cloud.service" node type defines an generic cloud service, which is hosted on a cloud provider and which is hosting an instance of a cloud service offering.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        capabilities:
            host:
                type: tosca.capabilities.Compute
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn
    software.application:
        derived_from: node
        description: The abstract "software.application" node type defines a generic software application. It requires a hosting and its lifecycle is managed by the management interface.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_name:
                type: string
                description: name of the application
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn
        interfaces:
            management:
                type: management
    service.application:
        derived_from: software.application
        description: The abstract "service.application" node type defines a generic software application, which provides a service. It is not normative how this component is implemented. This could be implemented by a Kubernetes Deployment Resource along with a Kubernetes Service Resource on Kubernetes or by a Systemd Service Unit on a virtual machine.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                description: the programming/ platform language of the application, e.g., node22
            application_port:
                type: string
                description: the port the application listens on, e.g., 3000
                metadata:
                    vintner_name: PORT
            application_protocol:
                type: string
                description: the protocol the application uses, e.g., http
        attributes:
            application_address:
                type: string
                description: the address under which the application can be reached, i.e., the IP or a domain name
            application_endpoint:
                type: string
                description: the endpoint under which the application can be reached, i.e., the protocol, IP and port concatenated
    software.runtime:
        derived_from: software.application
        description: The abstract "software.runtime" node type defines a generic software runtime.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        capabilities:
            host:
                type: tosca.capabilities.Compute
    container.runtime:
        derived_from: software.runtime
        description: The abstract "container.runtime" node type defines a generic container runtime.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
    machine:
        derived_from: node
        description: The abstract "machine" node type defines a generic computing machine.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            machine_name:
                type: string
                description: name of the machine
        attributes:
            application_address:
                type: string
                description: the address under which the machine can be publicly reached, i.e., the IP or a domain name
            management_address:
                type: string
                description: the address under which the machine can be privately reached, i.e., the IP or a domain name
    local.machine:
        derived_from: machine
        description: The "local.machine" node type manages a local machine, i.e., localhost. It is capable of hosting, e.g., software components.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        capabilities:
            host:
                type: tosca.capabilities.Compute
    remote.machine:
        derived_from: machine
        description: The "remote.machine" node type manages a remote machine, i.e., a machine that is not localhost. It is capable of hosting, e.g., software components.
        metadata:
            vintner_normative: 'true'
        properties:
            machine_name:
                type: string
                description: name of the machine
            ports:
                type: list
                description: ports to open
                entry_schema:
                    type: string
            flavor:
                type: string
                description: flavor of the machine, i.e., cpu, memory, disk size encoded as string
                default: m1.medium
            network:
                type: string
                description: network to connect to
            ssh_user:
                type: string
                description: ssh user to connect to the machine
            ssh_key_name:
                type: string
                description: ssh key name to connect to the machine
            ssh_key_file:
                type: string
                description: ssh key file to connect to the machine, i.e., the absolute path to the ssh key file on the filesystem of the orchestrator
        capabilities:
            host:
                type: tosca.capabilities.Compute
    virtual.machine:
        derived_from: remote.machine
        description: The "virtual.machine" node type manages a virtual machine.
    physical.machine:
        derived_from: remote.machine
        description: The "physical.machine" node type manages a physical machine.
    database:
        derived_from: node
        description: The abstract "database" node type defines a generic database. It requires a DBMS to run.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn
    relational.database:
        derived_from: database
        description: The abstract "relational.database" node type defines a generic relational database. It requires a relational DBMS to run.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
    dbms:
        derived_from: software.application
        description: The abstract "dbms" node type defines a generic DBMS.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
    relational.dbms:
        derived_from: dbms
        description: The abstract "relational.dbms" node type defines a generic relational DBMS.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
    cache:
        derived_from: software.application
        description: The abstract "cache" node type defines a generic caching service.
        properties:
            cache_name:
                type: string
                description: name of the cache
            cache_port:
                type: string
                description: port the cache listens on
        attributes:
            application_address:
                type: string
                description: the address under which the cache can be reached, i.e., the IP or a domain name
            application_endpoint:
                type: string
                description: the endpoint under which the cache can be reached, i.e., the protocol, IP and port concatenated
    storage:
        derived_from: node
        description: The abstract "storage" node type defines a generic storage service.
        metadata:
            vintner_normative: 'true'
    block.storage:
        derived_from: storage
        description: The abstract "block.storage" node type defines a generic block storage.
        metadata:
            vintner_normative: 'true'
    object.storage:
        derived_from: storage
        description: The abstract "object.storage" node type defines a generic object storage.
        metadata:
            vintner_normative: 'true'
        properties:
            storage_name:
                type: string
                description: name of the storage
            storage_dialect:
                type: string
                description: dialect of the storage, e.g., s3
            storage_user:
                type: string
            storage_token:
                type: string
        attributes:
            storage_endpoint:
                type: string
            storage_token:
                type: string
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn
    file.storage:
        derived_from: storage
        description: The abstract "file.storage" node type defines a generic file storage.
        metadata:
            vintner_normative: 'true'
    ingress:
        derived_from: node
        description: The "ingress" node type manages a generic ingress service, which is a reverse proxy that exposes an upstream application. It is not normative how this component is implemented. This could be implemented by an Ingress resource on Kubernetes or by a reverse proxy, such as NGINX or Caddy, on a virtual machine.
        metadata:
            vintner_normative: 'true'
        properties:
            application_name:
                type: string
                description: name of the upstream application
            application_port:
                type: string
                description: port the upstream application listens on
            application_protocol:
                type: string
                description: protocol the upstream application uses
        attributes:
            application_address:
                type: string
                description: the address under which the upstream application is exposed by the ingress, i.e., the IP or a domain name
        requirements:
            - application:
                  capability: tosca.capabilities.Endpoint
                  relationship: tosca.relationships.ConnectsTo
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn

Appendix C "TOSCA Vintner Extended Profile"

This appendix contains the TOSCA Vintner Extended profile. The profile is also available as download.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
tosca_definitions_version: tosca_simple_yaml_1_3
description: TOSCA Profile for OpenTOSCA Vintner (Extended)
metadata:
    vintner_normative: 'true'
    template_name: TOSCA Vintner Profile (Extended)
    template_author: Miles Stötzner
    template_contact: miles.stoetzner@iste.uni-stuttgart.de
    template_link: https://vintner.opentosca.org
    template_version: 1.0.0-draft
    template_id: tosca-vintner-profile
    template_license: https://www.apache.org/licenses/LICENSE-2.0
    acknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).
imports:
    - tosca-vintner-profile-core.yaml
artifact_types:
    docker.image:
        derived_from: container.image
        description: The "docker.image" artifact type manages a concrete Docker Image. It expects the Docker Image reference in the "file" key.
        metadata:
            vintner_normative: 'true'
    zip.archive:
        derived_from: source.archive
        description: The "zip.archive" artifact type manages a ZIP archive, which contains the distribution files of a component.
        metadata:
            vintner_normative: 'true'
    tar.archive:
        derived_from: source.archive
        description: The "tar.archive" artifact type manages a TAR archive, which contains the distribution files of a component
        metadata:
            vintner_normative: 'true'
    apt.package:
        derived_from: system.package
        description: The "apt.package" artifact type manages a package that is installed via the apt package manager.
        metadata:
            vintner_normative: 'true'
        properties:
            script:
                type: string
                required: false
                description: URL of an installation script
            repository:
                type: string
                required: false
                description: name of the repository (required if source is set)
            key:
                type: string
                required: false
                description: URL of the apt key which signs the apt repository (required if source is set)
            source:
                type: string
                required: false
                description: source of the repository
            dependencies:
                type: string
                required: false
                description: Comma separated list of apt packages that are additionally installed
            env:
                type: string
                required: false
                description: Space separated env variables
node_types:
    nodejs.runtime:
        derived_from: software.runtime
        description: The "nodejs.runtime" node type manages the Node.js runtime, which is a software runtime that runs on a machine. It is capable of hosting Node.js components
        metadata:
            vintner_normative: 'true'
        properties:
            application_name:
                type: string
                default: nodejs
                description: the name of the application
        artifacts:
            apt_package:
                type: apt.package
                description: the apt package to install Node.js
                file: nodejs
                properties:
                    script: https://deb.nodesource.com/setup_18.x
        attributes:
            management_address:
                type: string
                description: the management address of the host
        capabilities:
            host:
                type: tosca.capabilities.Compute
    nodejs.service.application:
        derived_from: service.application
        description: The "nodejs.service.application" node type manages a Node.js service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: nodejs18
        interfaces:
            management:
                type: management
                operations:
                    configure: npm ci
                    start: npm start
    reactjs.service.application:
        derived_from: service.application
        description: The "reactjs.service.application" node type manages a React.js service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: nodejs18
    python.runtime:
        derived_from: software.runtime
        description: The "python.runtime" node type manages the Python runtime, which is a software runtime that runs on a machine. It is capable of hosting Python components.
        metadata:
            vintner_normative: 'true'
        artifacts:
            apt_package:
                type: apt.package
                file: python-is-python3
                properties:
                    dependencies:
                        type: string
                        default: python3 python3-pip python3-venv
        attributes:
            management_address:
                type: string
                description: the management address of the host
        capabilities:
            host:
                type: tosca.capabilities.Compute
    python.service.application:
        derived_from: service.application
        description: The "python.service.application" node type manages a Python service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: python3
        interfaces:
            management:
                type: management
                operations:
                    configure: pip install -r requirements.txt
                    start: python main.py
    go.service.application:
        derived_from: service.application
        description: The "go.service.application" node type manages a Go service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: go122
    java.runtime:
        derived_from: software.runtime
        description: The "java.runtime" node type manages the Java runtime, which is a software runtime that runs on a machine. It is capable of hosting Java components.
        metadata:
            vintner_normative: 'true'
        properties:
            application_name:
                type: string
                default: java
        artifacts:
            apt_package:
                type: apt.package
                file: openjdk-18-jre-headless
        attributes:
            management_address:
                type: string
                description: the management address of the host
        capabilities:
            host:
                type: tosca.capabilities.Compute
    java.service.application:
        derived_from: service.application
        description: The "java.service.application" node type manages a Java service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: java21
    dotnet.runtime:
        derived_from: software.runtime
        description: The "dotnet.runtime" node type manages the .NET runtime, which is a software runtime that runs on a machine. It is capable of hosting .NET components.
        metadata:
            vintner_normative: 'true'
        properties:
            application_name:
                type: string
                default: java
        artifacts:
            apt_package:
                type: apt.package
                file: dotnet-sdk-8.0
        attributes:
            management_address:
                type: string
                description: the management address of the host
        capabilities:
            host:
                type: tosca.capabilities.Compute
    csharp.service.application:
        derived_from: service.application
        description: The "csharp.service.application" node type manages a C# service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: dotnet8
    binary.service.application:
        derived_from: service.application
        description: The "binary.service.application" node type manages a binary service application.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            application_language:
                type: string
                default: binary
    gcp.provider:
        derived_from: cloud.provider
        description: The abstract "gcp.provider" node type defines a Google Cloud Platform (GCP) project.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            _hosting:
                type: string
                default: gcp
            gcp_region:
                type: string
                description: the region of the GCP project
            gcp_service_account_file:
                type: string
                description: the service account file of the GCP project, i.e., the absolute path to the serivce account file on the filesystem of the orchestrator
            gcp_project:
                type: string
        interfaces:
            Standard:
                operations:
                    create: exit 0
                    delete: exit 0
    gcp.service:
        derived_from: cloud.service
        description: The abstract "gcp.service" node type defines a Google Cloud Platform (GCP) service.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            _hosting:
                type: string
                default: gcp
            gcp_service:
                type: string
                description: the API of the GCP service
    gcp.cloudrun:
        derived_from: gcp.service
        description: The "gcp.cloudrun" node type manages a the GCP CloudRun service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: run.googleapis.com
    gcp.cloudsql:
        derived_from: gcp.service
        description: The "gcp.cloudsql" node type manages a the GCP CloudSQL service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: sqladmin.googleapis.com
    gcp.appengine:
        derived_from: gcp.service
        description: The "gcp.appengine" node type manages a the GCP AppEngine service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: appengine.googleapis.com
        requirements:
            - build:
                  capability: tosca.capabilities.Root
                  relationship: tosca.relationships.DependsOn
            - reporting:
                  capability: tosca.capabilities.Root
                  relationship: tosca.relationships.DependsOn
    gcp.appenginereporting:
        derived_from: gcp.service
        description: The "gcp.appenginereporting" node type manages a the GCP AppEngine Reporting service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: appenginereporting.googleapis.com
    gcp.cloudbuild:
        derived_from: gcp.service
        description: The "gcp.cloudbuild" node type manages a the GCP CloudBuild service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: cloudbuild.googleapis.com
    gcp.kubernetesengine:
        derived_from: gcp.service
        description: The "gcp.kubernetesengine" node type manages a the GCP Kubernetes Engine service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: container.googleapis.com
    gcp.cloudstorage:
        derived_from: gcp.service
        description: The "gcp.cloudstorage" node type manages a the GCP CloudStorage service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: storage.googleapis.com
        attributes:
            storage_dialect:
                type: string
                default: gcp
    gcp.memorystore:
        derived_from: gcp.service
        description: The "gcp.memorystore" node type manages a the GCP Memorystore service.
        metadata:
            vintner_normative: 'true'
        properties:
            gcp_service:
                type: string
                default: redis.googleapis.com
    docker.engine:
        derived_from: container.runtime
        description: The "docker.engine" node type manages the Docker Engine, which is a software runtime that runs on a machine. It is capable of hosting Docker containers. It is configured to listen on the unix socket as well as on tcp://0.0.0.0:2375.
        metadata:
            vintner_normative: 'true'
        properties:
            application_name:
                type: string
                default: docker
            _hosting:
                type: string
                default: docker
        attributes:
            management_address:
                type: string
                description: the management address of the host
        capabilities:
            host:
                type: tosca.capabilities.Compute
    kubernetes.cluster:
        derived_from: cloud.service
        description: The abstract "kubernetes.cluster" node type describes a Kubernetes cluster. It is typically hosted on a cloud provider.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            _hosting:
                type: string
                default: kubernetes
            k8s_host:
                type: string
                description: the host of the Kubernetes API
            k8s_ca_cert_file:
                type: string
                description: the CA certificate file of the Kubernetes API
            k8s_client_cert_file:
                type: string
                description: the client certificate file to connect to the Kubernetes API
            k8s_client_key_file:
                type: string
                description: the client key file to connect to the Kubernetes API
        capabilities:
            host:
                type: tosca.capabilities.Compute
        interfaces:
            Standard:
                operations:
                    create: exit 0
                    delete: exit 0
    openstack.provider:
        derived_from: cloud.provider
        description: The abstract "openstack.provider" node type defines an OpenStack project.
        metadata:
            vintner_normative: 'true'
            vintner_abstract: 'true'
        properties:
            _hosting:
                type: string
                default: openstack
            os_region_name:
                type: string
                description: the region of the OpenStack project
            os_auth_type:
                type: string
                description: the authentication type of the OpenStack project
            os_auth_url:
                type: string
                description: the authentication URL of the OpenStack project
            os_identity_api_version:
                type: string
                description: the identity API version of the OpenStack project
            os_interface:
                type: string
                description: the interface of the OpenStack project
            os_application_credential_id:
                type: string
                description: the application credential ID to authenticate at the OpenStack project
            os_application_credential_secret:
                type: string
                description: the application credential secret to authenticate at the OpenStack project
        interfaces:
            Standard:
                operations:
                    create: exit 0
                    delete: exit 0
    mysql.dbms:
        derived_from: relational.dbms
        description: The "mysql.dbms" node type manages a MySQL DBMS, which is capable of hosting MySQL databases.
        metadata:
            vintner_normative: 'true'
        properties:
            dbms_name:
                type: string
                description: the name of the DBMS
            application_name:
                type: string
                description: the name of the DBMS
            dbms_password:
                type: string
                description: the root password of the DBMS
            dbms_ssl_mode:
                type: string
                default: None
                description: the SSL mode of the DBMS
        attributes:
            application_address:
                type: string
                description: the application address of the DBMS
            application_port:
                type: string
                description: the application port of the DBMS
            management_address:
                type: string
                description: the management address of the DBMS
            management_port:
                type: string
                description: the management port of the DBMS
        capabilities:
            host:
                type: tosca.capabilities.Compute
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn
    mysql.database:
        derived_from: relational.database
        description: The "mysql.database" node type manages a MySQL database, which is hosted on a MySQL and which can be accessed by other components.
        metadata:
            vintner_normative: 'true'
        properties:
            database_name:
                type: string
                description: the name of the database
            database_user:
                type: string
                description: the user of the database
            database_password:
                type: string
                description: the password for the database user
        attributes:
            application_address:
                type: string
                description: the application address of the DBMS
            application_port:
                type: string
                description: the application port of the DBMS
        capabilities:
            database:
                type: tosca.capabilities.Endpoint.Database
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn
    minio.server:
        derived_from: service.application
        description: The "minio.server" node type manages a MinIO server.
        metadata:
            vintner_normative: 'true'
        properties:
            access_key:
                type: string
                metadata:
                    vintner_name: MINIO_ROOT_USER
                description: the access key of the MinIO server
            secret_key:
                type: string
                metadata:
                    vintner_name: MINIO_ROOT_PASSWORD
                description: the secret key of the MinIO server
        attributes:
            storage_dialect:
                type: string
                default: minio
    redis.server:
        derived_from: cache
        description: The "redis.server" node type manages a Redis server.
        metadata:
            vintner_normative: 'true'
        properties:
            application_protocol:
                type: string
                default: redis

Acknowledgments

This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).

Correspondence

Please address all correspondence concerning this specification to Miles Stötzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.

Disclaimer of Warranty

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.


Last update: December 13, 2024