blob: c21f0bc4cbbab40b641414c466188ea9f8490cf0 [file] [log] [blame]
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
##########################################################################
# The content of this file reflects TOSCA Simple Profile in YAML version
# 1.0.0. It describes the definition for TOSCA types including Node Type,
# Relationship Type, Capability Type and Interfaces.
##########################################################################
tosca_definitions_version: tosca_simple_yaml_1_0
##########################################################################
# Node Type.
# A Node Type is a reusable entity that defines the type of one or more
# Node Templates.
##########################################################################
tosca.nodes.Root:
description: >
The TOSCA root node all other TOSCA base node types derive from.
attributes:
tosca_id:
type: string
tosca_name:
type: string
state:
type: string
capabilities:
feature:
type: tosca.capabilities.Node
requirements:
- dependency:
capability: tosca.capabilities.Node
node: tosca.nodes.Root
relationship: tosca.relationships.DependsOn
occurrences: [ 0, UNBOUNDED ]
interfaces:
Standard:
type: tosca.interfaces.node.lifecycle.Standard
tosca.nodes.Compute:
derived_from: tosca.nodes.Root
attributes:
private_address:
type: string
public_address:
type: string
capabilities:
host:
type: tosca.capabilities.Container
binding:
type: tosca.capabilities.network.Bindable
os:
type: tosca.capabilities.OperatingSystem
scalable:
type: tosca.capabilities.Scalable
requirements:
- local_storage:
capability: tosca.capabilities.Attachment
node: tosca.nodes.BlockStorage
relationship: tosca.relationships.AttachesTo
occurrences: [0, UNBOUNDED]
tosca.nodes.SoftwareComponent:
derived_from: tosca.nodes.Root
properties:
# domain-specific software component version
component_version:
type: version
required: false
description: >
Software component version.
admin_credential:
type: tosca.datatypes.Credential
required: false
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.Compute
relationship: tosca.relationships.HostedOn
tosca.nodes.DBMS:
derived_from: tosca.nodes.SoftwareComponent
properties:
port:
required: no
type: integer
description: >
The port the DBMS service will listen to for data and requests.
root_password:
required: no
type: string
description: >
The root password for the DBMS service.
capabilities:
host:
type: tosca.capabilities.Container
valid_source_types: [tosca.nodes.Database]
tosca.nodes.Database:
derived_from: tosca.nodes.Root
properties:
user:
required: no
type: string
description: >
User account name for DB administration
name:
required: no
type: string
description: >
The name of the database.
password:
required: no
type: string
description: >
The password for the DB user account
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.DBMS
relationship: tosca.relationships.HostedOn
capabilities:
database_endpoint:
type: tosca.capabilities.Endpoint.Database
tosca.nodes.WebServer:
derived_from: tosca.nodes.SoftwareComponent
capabilities:
data_endpoint:
type: tosca.capabilities.Endpoint
admin_endpoint:
type: tosca.capabilities.Endpoint.Admin
host:
type: tosca.capabilities.Container
valid_source_types: [tosca.nodes.WebApplication]
tosca.nodes.WebApplication:
derived_from: tosca.nodes.Root
properties:
context_root:
type: string
required: false
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.WebServer
relationship: tosca.relationships.HostedOn
capabilities:
app_endpoint:
type: tosca.capabilities.Endpoint
tosca.nodes.BlockStorage:
derived_from: tosca.nodes.Root
properties:
size:
type: integer
constraints:
- greater_or_equal: 1
volume_id:
type: string
required: false
snapshot_id:
type: string
required: false
attributes:
volume_id:
type: string
capabilities:
attachment:
type: tosca.capabilities.Attachment
tosca.nodes.network.Network:
derived_from: tosca.nodes.Root
description: >
The TOSCA Network node represents a simple, logical network service.
properties:
ip_version:
type: integer
required: no
default: 4
constraints:
- valid_values: [ 4, 6 ]
description: >
The IP version of the requested network. Valid values are 4 for ipv4
or 6 for ipv6.
cidr:
type: string
required: no
description: >
The cidr block of the requested network.
start_ip:
type: string
required: no
description: >
The IP address to be used as the start of a pool of addresses within
the full IP range derived from the cidr block.
end_ip:
type: string
required: no
description: >
The IP address to be used as the end of a pool of addresses within
the full IP range derived from the cidr block.
gateway_ip:
type: string
required: no
description: >
The gateway IP address.
network_name:
type: string
required: no
description: >
An identifier that represents an existing Network instance in the
underlying cloud infrastructure or can be used as the name of the
newly created network. If network_name is provided and no other
properties are provided (with exception of network_id), then an
existing network instance will be used. If network_name is provided
alongside with more properties then a new network with this name will
be created.
network_id:
type: string
required: no
description: >
An identifier that represents an existing Network instance in the
underlying cloud infrastructure. This property is mutually exclusive
with all other properties except network_name. This can be used alone
or together with network_name to identify an existing network.
segmentation_id:
type: string
required: no
description: >
A segmentation identifier in the underlying cloud infrastructure.
E.g. VLAN ID, GRE tunnel ID, etc..
dhcp_enabled:
type: boolean
required: no
default: true
description: >
Indicates should DHCP service be enabled on the network or not.
capabilities:
link:
type: tosca.capabilities.network.Linkable
tosca.nodes.network.Port:
derived_from: tosca.nodes.Root
description: >
The TOSCA Port node represents a logical entity that associates between
Compute and Network normative types. The Port node type effectively
represents a single virtual NIC on the Compute node instance.
properties:
ip_address:
type: string
required: no
description: >
Allow the user to set a static IP.
order:
type: integer
required: no
default: 0
constraints:
- greater_or_equal: 0
description: >
The order of the NIC on the compute instance (e.g. eth2).
is_default:
type: boolean
required: no
default: false
description: >
If is_default=true this port will be used for the default gateway
route. Only one port that is associated to single compute node can
set as is_default=true.
ip_range_start:
type: string
required: no
description: >
Defines the starting IP of a range to be allocated for the compute
instances that are associated with this Port.
ip_range_end:
type: string
required: no
description: >
Defines the ending IP of a range to be allocated for the compute
instances that are associated with this Port.
attributes:
ip_address:
type: string
requirements:
- binding:
description: >
Binding requirement expresses the relationship between Port and
Compute nodes. Effectevely it indicates that the Port will be
attached to specific Compute node instance
capability: tosca.capabilities.network.Bindable
relationship: tosca.relationships.network.BindsTo
- link:
description: >
Link requirement expresses the relationship between Port and Network
nodes. It indicates which network this port will connect to.
capability: tosca.capabilities.network.Linkable
relationship: tosca.relationships.network.LinksTo
tosca.nodes.ObjectStorage:
derived_from: tosca.nodes.Root
description: >
The TOSCA ObjectStorage node represents storage that provides the ability
to store data as objects (or BLOBs of data) without consideration for the
underlying filesystem or devices
properties:
name:
type: string
required: yes
description: >
The logical name of the object store (or container).
size:
type: scalar-unit.size
required: no
constraints:
- greater_or_equal: 0 GB
description: >
The requested initial storage size.
maxsize:
type: scalar-unit.size
required: no
constraints:
- greater_or_equal: 0 GB
description: >
The requested maximum storage size.
capabilities:
storage_endpoint:
type: tosca.capabilities.Endpoint
##########################################################################
# Relationship Type.
# A Relationship Type is a reusable entity that defines the type of one
# or more relationships between Node Types or Node Templates.
##########################################################################
tosca.relationships.Root:
description: >
The TOSCA root Relationship Type all other TOSCA base Relationship Types
derive from.
attributes:
tosca_id:
type: string
tosca_name:
type: string
interfaces:
Configure:
type: tosca.interfaces.relationship.Configure
tosca.relationships.DependsOn:
derived_from: tosca.relationships.Root
tosca.relationships.HostedOn:
derived_from: tosca.relationships.Root
valid_target_types: [ tosca.capabilities.Container ]
tosca.relationships.ConnectsTo:
derived_from: tosca.relationships.Root
valid_target_types: [ tosca.capabilities.Endpoint ]
credential:
type: tosca.datatypes.Credential
required: false
tosca.relationships.AttachesTo:
derived_from: tosca.relationships.Root
valid_target_types: [ tosca.capabilities.Attachment ]
properties:
location:
required: true
type: string
constraints:
- min_length: 1
device:
required: false
type: string
tosca.relationships.network.LinksTo:
derived_from: tosca.relationships.DependsOn
valid_target_types: [ tosca.capabilities.network.Linkable ]
tosca.relationships.network.BindsTo:
derived_from: tosca.relationships.DependsOn
valid_target_types: [ tosca.capabilities.network.Bindable ]
##########################################################################
# Capability Type.
# A Capability Type is a reusable entity that describes a kind of
# capability that a Node Type can declare to expose.
##########################################################################
tosca.capabilities.Root:
description: >
The TOSCA root Capability Type all other TOSCA base Capability Types
derive from.
tosca.capabilities.Node:
derived_from: tosca.capabilities.Root
tosca.capabilities.Container:
derived_from: tosca.capabilities.Root
properties:
num_cpus:
required: no
type: integer
constraints:
- greater_or_equal: 1
cpu_frequency:
required: no
type: scalar-unit.frequency
constraints:
- greater_or_equal: 0.1 GHz
disk_size:
required: no
type: scalar-unit.size
constraints:
- greater_or_equal: 0 MB
mem_size:
required: no
type: scalar-unit.size
constraints:
- greater_or_equal: 0 MB
tosca.capabilities.Endpoint:
derived_from: tosca.capabilities.Root
properties:
protocol:
type: string
default: tcp
port:
type: tosca.datatypes.network.PortDef
required: false
secure:
type: boolean
default: false
url_path:
type: string
required: false
port_name:
type: string
required: false
network_name:
type: string
required: false
initiator:
type: string
default: source
constraints:
- valid_values: [source, target, peer]
ports:
type: map
required: false
constraints:
- min_length: 1
entry_schema:
type: tosca.datatypes.network.PortDef
attributes:
public_address:
type: string
private_address:
type: string
tosca.capabilities.Endpoint.Admin:
derived_from: tosca.capabilities.Endpoint
properties:
secure: true
tosca.capabilities.Scalable:
derived_from: tosca.capabilities.Root
properties:
min_instances:
type: integer
required: yes
default: 1
description: >
This property is used to indicate the minimum number of instances
that should be created for the associated TOSCA Node Template by
a TOSCA orchestrator.
max_instances:
type: integer
required: yes
default: 1
description: >
This property is used to indicate the maximum number of instances
that should be created for the associated TOSCA Node Template by
a TOSCA orchestrator.
default_instances:
type: integer
required: no
description: >
An optional property that indicates the requested default number
of instances that should be the starting number of instances a
TOSCA orchestrator should attempt to allocate.
The value for this property MUST be in the range between the values
set for min_instances and max_instances properties.
tosca.capabilities.Endpoint.Database:
derived_from: tosca.capabilities.Endpoint
tosca.capabilities.Attachment:
derived_from: tosca.capabilities.Root
tosca.capabilities.network.Linkable:
derived_from: tosca.capabilities.Root
description: >
A node type that includes the Linkable capability indicates that it can
be pointed by tosca.relationships.network.LinksTo relationship type, which
represents an association relationship between Port and Network node types.
tosca.capabilities.network.Bindable:
derived_from: tosca.capabilities.Root
description: >
A node type that includes the Bindable capability indicates that it can
be pointed by tosca.relationships.network.BindsTo relationship type, which
represents a network association relationship between Port and Compute node
types.
tosca.capabilities.OperatingSystem:
derived_from: tosca.capabilities.Root
properties:
architecture:
required: yes
default: x86_64
type: string
description: >
The host Operating System (OS) architecture.
type:
required: yes
type: string
description: >
The host Operating System (OS) type.
distribution:
required: no
type: string
description: >
The host Operating System (OS) distribution. Examples of valid values
for an “type” of “Linux” would include:
debian, fedora, rhel and ubuntu.
version:
required: no
type: string
description: >
The host Operating System version.
##########################################################################
# Interfaces Type.
# The Interfaces element describes a list of one or more interface
# definitions for a modelable entity (e.g., a Node or Relationship Type)
# as defined within the TOSCA Simple Profile specification.
##########################################################################
tosca.interfaces.node.lifecycle.Standard:
create:
description: Standard lifecycle create operation.
configure:
description: Standard lifecycle configure operation.
start:
description: Standard lifecycle start operation.
stop:
description: Standard lifecycle stop operation.
delete:
description: Standard lifecycle delete operation.
tosca.interfaces.relationship.Configure:
pre_configure_source:
description: Operation to pre-configure the source endpoint.
pre_configure_target:
description: Operation to pre-configure the target endpoint.
post_configure_source:
description: Operation to post-configure the source endpoint.
post_configure_target:
description: Operation to post-configure the target endpoint.
add_target:
description: Operation to add a target node.
remove_target:
description: Operation to remove a target node.
add_source: >
description: Operation to notify the target node of a source node which
is now available via a relationship.
description:
target_changed: >
description: Operation to notify source some property or attribute of the
target changed
##########################################################################
# Data Type.
# A Datatype is a complex data type declaration which contains other
# complex or simple data types.
##########################################################################
tosca.datatypes.network.NetworkInfo:
properties:
network_name:
type: string
network_id:
type: string
addresses:
type: list
entry_schema:
type: string
tosca.datatypes.network.PortInfo:
properties:
port_name:
type: string
port_id:
type: string
network_id:
type: string
mac_address:
type: string
addresses:
type: list
entry_schema:
type: string
tosca.datatypes.network.PortDef:
type: integer
constraints:
- in_range: [ 1, 65535 ]
tosca.datatypes.network.PortSpec:
properties:
protocol:
type: string
required: true
default: tcp
constraints:
- valid_values: [ udp, tcp, igmp ]
target:
type: list
entry_schema:
type: PortDef
target_range:
type: range
constraints:
- in_range: [ 1, 65535 ]
source:
type: list
entry_schema:
type: PortDef
source_range:
type: range
constraints:
- in_range: [ 1, 65535 ]
tosca.datatypes.Credential:
properties:
protocol:
type: string
token_type:
type: string
token:
type: string
keys:
type: map
entry_schema:
type: string
user:
type: string
required: false
##########################################################################
# Artifact Type.
# An Artifact Type is a reusable entity that defines the type of one or more
# files which Node Types or Node Templates can have dependent relationships
# and used during operations such as during installation or deployment.
##########################################################################
tosca.artifacts.Root:
description: >
The TOSCA Artifact Type all other TOSCA Artifact Types derive from
properties:
version: version
tosca.artifacts.File:
derived_from: tosca.artifacts.Root
tosca.artifacts.Deployment:
derived_from: tosca.artifacts.Root
description: TOSCA base type for deployment artifacts
tosca.artifacts.Deployment.Image:
derived_from: tosca.artifacts.Deployment
tosca.artifacts.Deployment.Image.VM:
derived_from: tosca.artifacts.Deployment.Image
tosca.artifacts.Implementation:
derived_from: tosca.artifacts.Root
description: TOSCA base type for implementation artifacts
tosca.artifacts.impl.Bash:
derived_from: tosca.artifacts.Implementation
description: Script artifact for the Unix Bash shell
mime_type: application/x-sh
file_ext: [ sh ]
tosca.artifacts.impl.Python:
derived_from: tosca.artifacts.Implementation
description: Artifact for the interpreted Python language
mime_type: application/x-python
file_ext: [ py ]
tosca.artifacts.Deployment.Image.Container.Docker:
derived_from: tosca.artifacts.Deployment.Image
description: Docker container image
tosca.artifacts.Deployment.Image.VM.ISO:
derived_from: tosca.artifacts.Deployment.Image
description: Virtual Machine (VM) image in ISO disk format
mime_type: application/octet-stream
file_ext: [ iso ]
tosca.artifacts.Deployment.Image.VM.QCOW2:
derived_from: tosca.artifacts.Deployment.Image
description: Virtual Machine (VM) image in QCOW v2 standard disk format
mime_type: application/octet-stream
file_ext: [ qcow2 ]