1 # Licensed under the Apache License, Version 2.0 (the "License"); you may
2 # not use this file except in compliance with the License. You may obtain
3 # a copy of the License at
5 # http://www.apache.org/licenses/LICENSE-2.0
7 # Unless required by applicable law or agreed to in writing, software
8 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10 # License for the specific language governing permissions and limitations
13 ##########################################################################
14 # The content of this file reflects TOSCA Simple Profile in YAML version
15 # 1.0.0. It describes the definition for TOSCA types including Node Type,
16 # Relationship Type, Capability Type and Interfaces.
17 ##########################################################################
18 tosca_definitions_version: tosca_simple_yaml_1_0
20 ##########################################################################
22 # A Node Type is a reusable entity that defines the type of one or more
24 ##########################################################################
28 The TOSCA root node all other TOSCA base node types derive from.
38 type: tosca.capabilities.Node
41 capability: tosca.capabilities.Node
42 node: tosca.nodes.Root
43 relationship: tosca.relationships.DependsOn
44 occurrences: [ 0, UNBOUNDED ]
47 type: tosca.interfaces.node.lifecycle.Standard
50 derived_from: tosca.nodes.Root
59 type: tosca.datatypes.network.NetworkInfo
63 type: tosca.datatypes.network.PortInfo
66 type: tosca.capabilities.Container
68 type: tosca.capabilities.network.Bindable
70 type: tosca.capabilities.OperatingSystem
72 type: tosca.capabilities.Scalable
74 type: tosca.capabilities.Endpoint.Admin
77 capability: tosca.capabilities.Attachment
78 node: tosca.nodes.BlockStorage
79 relationship: tosca.relationships.AttachesTo
80 occurrences: [0, UNBOUNDED]
82 tosca.nodes.SoftwareComponent:
83 derived_from: tosca.nodes.Root
85 # domain-specific software component version
90 Software component version.
92 type: tosca.datatypes.Credential
96 capability: tosca.capabilities.Container
97 node: tosca.nodes.Compute
98 relationship: tosca.relationships.HostedOn
101 derived_from: tosca.nodes.SoftwareComponent
107 The port the DBMS service will listen to for data and requests.
112 The root password for the DBMS service.
115 type: tosca.capabilities.Container
116 valid_source_types: [tosca.nodes.Database]
118 tosca.nodes.Database:
119 derived_from: tosca.nodes.Root
125 User account name for DB administration
130 The port the database service will use to listen for incoming data and
136 The name of the database.
141 The password for the DB user account
144 capability: tosca.capabilities.Container
145 node: tosca.nodes.DBMS
146 relationship: tosca.relationships.HostedOn
149 type: tosca.capabilities.Endpoint.Database
151 tosca.nodes.WebServer:
152 derived_from: tosca.nodes.SoftwareComponent
155 type: tosca.capabilities.Endpoint
157 type: tosca.capabilities.Endpoint.Admin
159 type: tosca.capabilities.Container
160 valid_source_types: [tosca.nodes.WebApplication]
162 tosca.nodes.WebApplication:
163 derived_from: tosca.nodes.Root
170 capability: tosca.capabilities.Container
171 node: tosca.nodes.WebServer
172 relationship: tosca.relationships.HostedOn
175 type: tosca.capabilities.Endpoint
177 tosca.nodes.BlockStorage:
178 derived_from: tosca.nodes.Root
181 type: scalar-unit.size
183 - greater_or_equal: 1 MB
195 type: tosca.capabilities.Attachment
197 tosca.nodes.network.Network:
198 derived_from: tosca.nodes.Root
200 The TOSCA Network node represents a simple, logical network service.
207 - valid_values: [ 4, 6 ]
209 The IP version of the requested network. Valid values are 4 for ipv4
215 The cidr block of the requested network.
220 The IP address to be used as the start of a pool of addresses within
221 the full IP range derived from the cidr block.
226 The IP address to be used as the end of a pool of addresses within
227 the full IP range derived from the cidr block.
232 The gateway IP address.
237 An identifier that represents an existing Network instance in the
238 underlying cloud infrastructure or can be used as the name of the
239 newly created network. If network_name is provided and no other
240 properties are provided (with exception of network_id), then an
241 existing network instance will be used. If network_name is provided
242 alongside with more properties then a new network with this name will
248 An identifier that represents an existing Network instance in the
249 underlying cloud infrastructure. This property is mutually exclusive
250 with all other properties except network_name. This can be used alone
251 or together with network_name to identify an existing network.
256 A segmentation identifier in the underlying cloud infrastructure.
257 E.g. VLAN ID, GRE tunnel ID, etc..
262 It specifies the nature of the physical network in the underlying
263 cloud infrastructure. Examples are flat, vlan, gre or vxlan.
264 For flat and vlan types, physical_network should be provided too.
269 It identifies the physical network on top of which the network is
270 implemented, e.g. physnet1. This property is required if network_type
277 Indicates should DHCP service be enabled on the network or not.
280 type: tosca.capabilities.network.Linkable
282 tosca.nodes.network.Port:
283 derived_from: tosca.nodes.Root
285 The TOSCA Port node represents a logical entity that associates between
286 Compute and Network normative types. The Port node type effectively
287 represents a single virtual NIC on the Compute node instance.
293 Allow the user to set a static IP.
299 - greater_or_equal: 0
301 The order of the NIC on the compute instance (e.g. eth2).
307 If is_default=true this port will be used for the default gateway
308 route. Only one port that is associated to single compute node can
309 set as is_default=true.
314 Defines the starting IP of a range to be allocated for the compute
315 instances that are associated with this Port.
320 Defines the ending IP of a range to be allocated for the compute
321 instances that are associated with this Port.
328 Binding requirement expresses the relationship between Port and
329 Compute nodes. Effectively it indicates that the Port will be
330 attached to specific Compute node instance
331 capability: tosca.capabilities.network.Bindable
332 relationship: tosca.relationships.network.BindsTo
333 node: tosca.nodes.Compute
336 Link requirement expresses the relationship between Port and Network
337 nodes. It indicates which network this port will connect to.
338 capability: tosca.capabilities.network.Linkable
339 relationship: tosca.relationships.network.LinksTo
340 node: tosca.nodes.network.Network
342 tosca.nodes.ObjectStorage:
343 derived_from: tosca.nodes.Root
345 The TOSCA ObjectStorage node represents storage that provides the ability
346 to store data as objects (or BLOBs of data) without consideration for the
347 underlying filesystem or devices
353 The logical name of the object store (or container).
355 type: scalar-unit.size
358 - greater_or_equal: 0 GB
360 The requested initial storage size.
362 type: scalar-unit.size
365 - greater_or_equal: 0 GB
367 The requested maximum storage size.
370 type: tosca.capabilities.Endpoint
372 tosca.nodes.LoadBalancer:
373 derived_from: tosca.nodes.Root
381 type: tosca.capabilities.Endpoint.Public
382 occurrences: [0, UNBOUNDED]
383 description: the Floating (IP) client’s on the public network can connect to
386 capability: tosca.capabilities.Endpoint
387 relationship: tosca.relationships.RoutesTo
388 occurrences: [0, UNBOUNDED]
389 description: Connection to one or more load balanced applications
391 tosca.nodes.Container.Application:
392 derived_from: tosca.nodes.Root
395 capability: tosca.capabilities.Container
396 node: tosca.nodes.Container.Runtime
397 relationship: tosca.relationships.HostedOn
399 tosca.nodes.Container.Runtime:
400 derived_from: tosca.nodes.SoftwareComponent
403 type: tosca.capabilities.Container
405 type: tosca.capabilities.Scalable
407 tosca.nodes.Container.Application.Docker:
408 derived_from: tosca.nodes.Container.Application
411 capability: tosca.capabilities.Container.Docker
413 ##########################################################################
415 # A Relationship Type is a reusable entity that defines the type of one
416 # or more relationships between Node Types or Node Templates.
417 ##########################################################################
419 tosca.relationships.Root:
421 The TOSCA root Relationship Type all other TOSCA base Relationship Types
430 type: tosca.interfaces.relationship.Configure
432 tosca.relationships.DependsOn:
433 derived_from: tosca.relationships.Root
435 tosca.relationships.HostedOn:
436 derived_from: tosca.relationships.Root
437 valid_target_types: [ tosca.capabilities.Container ]
439 tosca.relationships.ConnectsTo:
440 derived_from: tosca.relationships.Root
441 valid_target_types: [ tosca.capabilities.Endpoint ]
443 type: tosca.datatypes.Credential
446 tosca.relationships.AttachesTo:
447 derived_from: tosca.relationships.Root
448 valid_target_types: [ tosca.capabilities.Attachment ]
459 tosca.relationships.RoutesTo:
460 derived_from: tosca.relationships.ConnectsTo
461 valid_target_types: [ tosca.capabilities.Endpoint ]
463 tosca.relationships.network.LinksTo:
464 derived_from: tosca.relationships.DependsOn
465 valid_target_types: [ tosca.capabilities.network.Linkable ]
467 tosca.relationships.network.BindsTo:
468 derived_from: tosca.relationships.DependsOn
469 valid_target_types: [ tosca.capabilities.network.Bindable ]
471 ##########################################################################
473 # A Capability Type is a reusable entity that describes a kind of
474 # capability that a Node Type can declare to expose.
475 ##########################################################################
477 tosca.capabilities.Root:
479 The TOSCA root Capability Type all other TOSCA base Capability Types
482 tosca.capabilities.Node:
483 derived_from: tosca.capabilities.Root
485 tosca.capabilities.Container:
486 derived_from: tosca.capabilities.Root
492 - greater_or_equal: 1
495 type: scalar-unit.frequency
497 - greater_or_equal: 0.1 GHz
500 type: scalar-unit.size
502 - greater_or_equal: 0 MB
505 type: scalar-unit.size
507 - greater_or_equal: 0 MB
509 tosca.capabilities.Endpoint:
510 derived_from: tosca.capabilities.Root
517 type: tosca.datatypes.network.PortDef
538 - valid_values: [source, target, peer]
545 type: tosca.datatypes.network.PortSpec
550 tosca.capabilities.Endpoint.Admin:
551 derived_from: tosca.capabilities.Endpoint
559 tosca.capabilities.Endpoint.Public:
560 derived_from: tosca.capabilities.Endpoint
562 # Change the default network_name to use the first public network found
570 Indicates that the public address should be allocated from a pool of
571 floating IPs that are associated with the network.
576 description: The optional name to register with DNS
581 tosca.capabilities.Scalable:
582 derived_from: tosca.capabilities.Root
589 This property is used to indicate the minimum number of instances
590 that should be created for the associated TOSCA Node Template by
591 a TOSCA orchestrator.
597 This property is used to indicate the maximum number of instances
598 that should be created for the associated TOSCA Node Template by
599 a TOSCA orchestrator.
604 An optional property that indicates the requested default number
605 of instances that should be the starting number of instances a
606 TOSCA orchestrator should attempt to allocate.
607 The value for this property MUST be in the range between the values
608 set for min_instances and max_instances properties.
610 tosca.capabilities.Endpoint.Database:
611 derived_from: tosca.capabilities.Endpoint
613 tosca.capabilities.Attachment:
614 derived_from: tosca.capabilities.Root
616 tosca.capabilities.network.Linkable:
617 derived_from: tosca.capabilities.Root
619 A node type that includes the Linkable capability indicates that it can
620 be pointed by tosca.relationships.network.LinksTo relationship type, which
621 represents an association relationship between Port and Network node types.
623 tosca.capabilities.network.Bindable:
624 derived_from: tosca.capabilities.Root
626 A node type that includes the Bindable capability indicates that it can
627 be pointed by tosca.relationships.network.BindsTo relationship type, which
628 represents a network association relationship between Port and Compute node
631 tosca.capabilities.OperatingSystem:
632 derived_from: tosca.capabilities.Root
638 The host Operating System (OS) architecture.
643 The host Operating System (OS) type.
648 The host Operating System (OS) distribution. Examples of valid values
649 for an “type” of “Linux” would include:
650 debian, fedora, rhel and ubuntu.
655 The host Operating System version.
657 tosca.capabilities.Container.Docker:
658 derived_from: tosca.capabilities.Container
666 The Docker version capability.
672 Indicates that all ports (ranges) listed in the dockerfile
673 using the EXPOSE keyword be published.
677 type: tosca.datatypes.network.PortSpec
680 List of ports mappings from source (Docker container)
681 to target (host) ports to publish.
685 type: tosca.datatypes.network.PortSpec
688 List of ports mappings from source (Docker container) to expose
689 to other Docker containers (not accessible outside host).
696 The dockerfile VOLUME command which is used to enable access
697 from the Docker container to a directory on the host machine.
702 The optional identifier of an existing host resource
703 that should be used to run this container on.
708 The optional identifier of an existing storage volume (resource)
709 that should be used to create the container's mount point(s) on.
711 ##########################################################################
713 # The Interfaces element describes a list of one or more interface
714 # definitions for a modelable entity (e.g., a Node or Relationship Type)
715 # as defined within the TOSCA Simple Profile specification.
716 ##########################################################################
718 tosca.interfaces.node.lifecycle.Standard:
720 description: Standard lifecycle create operation.
722 description: Standard lifecycle configure operation.
724 description: Standard lifecycle start operation.
726 description: Standard lifecycle stop operation.
728 description: Standard lifecycle delete operation.
730 tosca.interfaces.relationship.Configure:
731 pre_configure_source:
732 description: Operation to pre-configure the source endpoint.
733 pre_configure_target:
734 description: Operation to pre-configure the target endpoint.
735 post_configure_source:
736 description: Operation to post-configure the source endpoint.
737 post_configure_target:
738 description: Operation to post-configure the target endpoint.
740 description: Operation to add a target node.
742 description: Operation to remove a target node.
744 description: Operation to notify the target node of a source node which
745 is now available via a relationship.
748 description: Operation to notify source some property or attribute of the
751 ##########################################################################
753 # A Datatype is a complex data type declaration which contains other
754 # complex or simple data types.
755 ##########################################################################
757 tosca.datatypes.Root:
759 The TOSCA root Data Type all other TOSCA base Data Types derive from
761 tosca.datatypes.network.NetworkInfo:
762 derived_from: tosca.datatypes.Root
773 tosca.datatypes.network.PortInfo:
774 derived_from: tosca.datatypes.Root
789 tosca.datatypes.network.PortDef:
790 derived_from: tosca.datatypes.Root
793 - in_range: [ 1, 65535 ]
795 tosca.datatypes.network.PortSpec:
796 derived_from: tosca.datatypes.Root
803 - valid_values: [ udp, tcp, igmp ]
805 type: tosca.datatypes.network.PortDef
811 - in_range: [ 1, 65535 ]
813 type: tosca.datatypes.network.PortDef
819 - in_range: [ 1, 65535 ]
821 tosca.datatypes.Credential:
822 derived_from: tosca.datatypes.Root
843 ##########################################################################
845 # An Artifact Type is a reusable entity that defines the type of one or more
846 # files which Node Types or Node Templates can have dependent relationships
847 # and used during operations such as during installation or deployment.
848 ##########################################################################
850 tosca.artifacts.Root:
852 The TOSCA Artifact Type all other TOSCA Artifact Types derive from
856 tosca.artifacts.File:
857 derived_from: tosca.artifacts.Root
859 tosca.artifacts.Deployment:
860 derived_from: tosca.artifacts.Root
861 description: TOSCA base type for deployment artifacts
863 tosca.artifacts.Deployment.Image:
864 derived_from: tosca.artifacts.Deployment
866 tosca.artifacts.Deployment.Image.VM:
867 derived_from: tosca.artifacts.Deployment.Image
869 tosca.artifacts.Implementation:
870 derived_from: tosca.artifacts.Root
871 description: TOSCA base type for implementation artifacts
873 tosca.artifacts.Implementation.Bash:
874 derived_from: tosca.artifacts.Implementation
875 description: Script artifact for the Unix Bash shell
876 mime_type: application/x-sh
879 tosca.artifacts.Implementation.Python:
880 derived_from: tosca.artifacts.Implementation
881 description: Artifact for the interpreted Python language
882 mime_type: application/x-python
885 tosca.artifacts.Deployment.Image.Container.Docker:
886 derived_from: tosca.artifacts.Deployment.Image
887 description: Docker container image
889 tosca.artifacts.Deployment.Image.VM.ISO:
890 derived_from: tosca.artifacts.Deployment.Image
891 description: Virtual Machine (VM) image in ISO disk format
892 mime_type: application/octet-stream
895 tosca.artifacts.Deployment.Image.VM.QCOW2:
896 derived_from: tosca.artifacts.Deployment.Image
897 description: Virtual Machine (VM) image in QCOW v2 standard disk format
898 mime_type: application/octet-stream
901 ##########################################################################
903 # TOSCA Policy Types represent logical grouping of TOSCA nodes that have
904 # an implied relationship and need to be orchestrated or managed together
905 # to achieve some result.
906 ##########################################################################
909 description: The TOSCA Policy Type all other TOSCA Policy Types derive from.
911 tosca.policies.Placement:
912 derived_from: tosca.policies.Root
913 description: The TOSCA Policy Type definition that is used to govern
914 placement of TOSCA nodes or groups of nodes.
916 tosca.policies.Placement.Colocate:
917 derived_from: tosca.policies.Placement
918 description: The TOSCA Policy Type definition that is used to govern
919 colocate placement of TOSCA nodes or groups of nodes.
921 tosca.policies.Placement.Antilocate:
922 derived_from: tosca.policies.Placement
923 description: The TOSCA Policy Type definition that is used to govern
924 anti-locate placement of TOSCA nodes or groups of nodes.
926 tosca.policies.Scaling:
927 derived_from: tosca.policies.Root
928 description: The TOSCA Policy Type definition that is used to govern
929 scaling of TOSCA nodes or groups of nodes.
931 tosca.policies.Update:
932 derived_from: tosca.policies.Root
933 description: The TOSCA Policy Type definition that is used to govern
934 update of TOSCA nodes or groups of nodes.
936 tosca.policies.Performance:
937 derived_from: tosca.policies.Root
938 description: The TOSCA Policy Type definition that is used to declare
939 performance requirements for TOSCA nodes or groups of nodes.
941 ##########################################################################
943 # Group Type represents logical grouping of TOSCA nodes that have an
944 # implied membership relationship and may need to be orchestrated or
945 # managed together to achieve some result.
946 ##########################################################################
949 description: The TOSCA Group Type all other TOSCA Group Types derive from
952 type: tosca.interfaces.node.lifecycle.Standard