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
75 capability: tosca.capabilities.Attachment
76 node: tosca.nodes.BlockStorage
77 relationship: tosca.relationships.AttachesTo
78 occurrences: [0, UNBOUNDED]
80 tosca.nodes.SoftwareComponent:
81 derived_from: tosca.nodes.Root
83 # domain-specific software component version
88 Software component version.
90 type: tosca.datatypes.Credential
94 capability: tosca.capabilities.Container
95 node: tosca.nodes.Compute
96 relationship: tosca.relationships.HostedOn
99 derived_from: tosca.nodes.SoftwareComponent
105 The port the DBMS service will listen to for data and requests.
110 The root password for the DBMS service.
113 type: tosca.capabilities.Container
114 valid_source_types: [tosca.nodes.Database]
116 tosca.nodes.Database:
117 derived_from: tosca.nodes.Root
123 User account name for DB administration
128 The port the database service will use to listen for incoming data and
134 The name of the database.
139 The password for the DB user account
142 capability: tosca.capabilities.Container
143 node: tosca.nodes.DBMS
144 relationship: tosca.relationships.HostedOn
147 type: tosca.capabilities.Endpoint.Database
149 tosca.nodes.WebServer:
150 derived_from: tosca.nodes.SoftwareComponent
153 type: tosca.capabilities.Endpoint
155 type: tosca.capabilities.Endpoint.Admin
157 type: tosca.capabilities.Container
158 valid_source_types: [tosca.nodes.WebApplication]
160 tosca.nodes.WebApplication:
161 derived_from: tosca.nodes.Root
168 capability: tosca.capabilities.Container
169 node: tosca.nodes.WebServer
170 relationship: tosca.relationships.HostedOn
173 type: tosca.capabilities.Endpoint
175 tosca.nodes.BlockStorage:
176 derived_from: tosca.nodes.Root
179 type: scalar-unit.size
181 - greater_or_equal: 1 MB
193 type: tosca.capabilities.Attachment
195 tosca.nodes.network.Network:
196 derived_from: tosca.nodes.Root
198 The TOSCA Network node represents a simple, logical network service.
205 - valid_values: [ 4, 6 ]
207 The IP version of the requested network. Valid values are 4 for ipv4
213 The cidr block of the requested network.
218 The IP address to be used as the start of a pool of addresses within
219 the full IP range derived from the cidr block.
224 The IP address to be used as the end of a pool of addresses within
225 the full IP range derived from the cidr block.
230 The gateway IP address.
235 An identifier that represents an existing Network instance in the
236 underlying cloud infrastructure or can be used as the name of the
237 newly created network. If network_name is provided and no other
238 properties are provided (with exception of network_id), then an
239 existing network instance will be used. If network_name is provided
240 alongside with more properties then a new network with this name will
246 An identifier that represents an existing Network instance in the
247 underlying cloud infrastructure. This property is mutually exclusive
248 with all other properties except network_name. This can be used alone
249 or together with network_name to identify an existing network.
254 A segmentation identifier in the underlying cloud infrastructure.
255 E.g. VLAN ID, GRE tunnel ID, etc..
260 It specifies the nature of the physical network in the underlying
261 cloud infrastructure. Examples are flat, vlan, gre or vxlan.
262 For flat and vlan types, physical_network should be provided too.
267 It identifies the physical network on top of which the network is
268 implemented, e.g. physnet1. This property is required if network_type
275 Indicates should DHCP service be enabled on the network or not.
278 type: tosca.capabilities.network.Linkable
280 tosca.nodes.network.Port:
281 derived_from: tosca.nodes.Root
283 The TOSCA Port node represents a logical entity that associates between
284 Compute and Network normative types. The Port node type effectively
285 represents a single virtual NIC on the Compute node instance.
291 Allow the user to set a static IP.
297 - greater_or_equal: 0
299 The order of the NIC on the compute instance (e.g. eth2).
305 If is_default=true this port will be used for the default gateway
306 route. Only one port that is associated to single compute node can
307 set as is_default=true.
312 Defines the starting IP of a range to be allocated for the compute
313 instances that are associated with this Port.
318 Defines the ending IP of a range to be allocated for the compute
319 instances that are associated with this Port.
326 Binding requirement expresses the relationship between Port and
327 Compute nodes. Effectively it indicates that the Port will be
328 attached to specific Compute node instance
329 capability: tosca.capabilities.network.Bindable
330 relationship: tosca.relationships.network.BindsTo
331 node: tosca.nodes.Compute
334 Link requirement expresses the relationship between Port and Network
335 nodes. It indicates which network this port will connect to.
336 capability: tosca.capabilities.network.Linkable
337 relationship: tosca.relationships.network.LinksTo
338 node: tosca.nodes.network.Network
340 tosca.nodes.ObjectStorage:
341 derived_from: tosca.nodes.Root
343 The TOSCA ObjectStorage node represents storage that provides the ability
344 to store data as objects (or BLOBs of data) without consideration for the
345 underlying filesystem or devices
351 The logical name of the object store (or container).
353 type: scalar-unit.size
356 - greater_or_equal: 0 GB
358 The requested initial storage size.
360 type: scalar-unit.size
363 - greater_or_equal: 0 GB
365 The requested maximum storage size.
368 type: tosca.capabilities.Endpoint
370 tosca.nodes.LoadBalancer:
371 derived_from: tosca.nodes.Root
379 type: tosca.capabilities.Endpoint.Public
380 occurrences: [0, UNBOUNDED]
381 description: the Floating (IP) client’s on the public network can connect to
384 capability: tosca.capabilities.Endpoint
385 relationship: tosca.relationships.RoutesTo
386 occurrences: [0, UNBOUNDED]
387 description: Connection to one or more load balanced applications
389 tosca.nodes.Container.Application:
390 derived_from: tosca.nodes.Root
393 capability: tosca.capabilities.Container
394 node: tosca.nodes.Container.Runtime
395 relationship: tosca.relationships.HostedOn
397 tosca.nodes.Container.Runtime:
398 derived_from: tosca.nodes.SoftwareComponent
401 type: tosca.capabilities.Container
403 type: tosca.capabilities.Scalable
405 tosca.nodes.Container.Application.Docker:
406 derived_from: tosca.nodes.Container.Application
409 capability: tosca.capabilities.Container.Docker
411 ##########################################################################
413 # A Relationship Type is a reusable entity that defines the type of one
414 # or more relationships between Node Types or Node Templates.
415 ##########################################################################
417 tosca.relationships.Root:
419 The TOSCA root Relationship Type all other TOSCA base Relationship Types
428 type: tosca.interfaces.relationship.Configure
430 tosca.relationships.DependsOn:
431 derived_from: tosca.relationships.Root
433 tosca.relationships.HostedOn:
434 derived_from: tosca.relationships.Root
435 valid_target_types: [ tosca.capabilities.Container ]
437 tosca.relationships.ConnectsTo:
438 derived_from: tosca.relationships.Root
439 valid_target_types: [ tosca.capabilities.Endpoint ]
441 type: tosca.datatypes.Credential
444 tosca.relationships.AttachesTo:
445 derived_from: tosca.relationships.Root
446 valid_target_types: [ tosca.capabilities.Attachment ]
457 tosca.relationships.RoutesTo:
458 derived_from: tosca.relationships.ConnectsTo
459 valid_target_types: [ tosca.capabilities.Endpoint ]
461 tosca.relationships.network.LinksTo:
462 derived_from: tosca.relationships.DependsOn
463 valid_target_types: [ tosca.capabilities.network.Linkable ]
465 tosca.relationships.network.BindsTo:
466 derived_from: tosca.relationships.DependsOn
467 valid_target_types: [ tosca.capabilities.network.Bindable ]
469 ##########################################################################
471 # A Capability Type is a reusable entity that describes a kind of
472 # capability that a Node Type can declare to expose.
473 ##########################################################################
475 tosca.capabilities.Root:
477 The TOSCA root Capability Type all other TOSCA base Capability Types
480 tosca.capabilities.Node:
481 derived_from: tosca.capabilities.Root
483 tosca.capabilities.Container:
484 derived_from: tosca.capabilities.Root
490 - greater_or_equal: 1
493 type: scalar-unit.frequency
495 - greater_or_equal: 0.1 GHz
498 type: scalar-unit.size
500 - greater_or_equal: 0 MB
503 type: scalar-unit.size
505 - greater_or_equal: 0 MB
507 tosca.capabilities.Endpoint:
508 derived_from: tosca.capabilities.Root
515 type: tosca.datatypes.network.PortDef
535 - valid_values: [source, target, peer]
542 type: tosca.datatypes.network.PortSpec
547 tosca.capabilities.Endpoint.Admin:
548 derived_from: tosca.capabilities.Endpoint
556 tosca.capabilities.Endpoint.Public:
557 derived_from: tosca.capabilities.Endpoint
559 # Change the default network_name to use the first public network found
567 Indicates that the public address should be allocated from a pool of
568 floating IPs that are associated with the network.
573 description: The optional name to register with DNS
578 tosca.capabilities.Scalable:
579 derived_from: tosca.capabilities.Root
586 This property is used to indicate the minimum number of instances
587 that should be created for the associated TOSCA Node Template by
588 a TOSCA orchestrator.
594 This property is used to indicate the maximum number of instances
595 that should be created for the associated TOSCA Node Template by
596 a TOSCA orchestrator.
601 An optional property that indicates the requested default number
602 of instances that should be the starting number of instances a
603 TOSCA orchestrator should attempt to allocate.
604 The value for this property MUST be in the range between the values
605 set for min_instances and max_instances properties.
607 tosca.capabilities.Endpoint.Database:
608 derived_from: tosca.capabilities.Endpoint
610 tosca.capabilities.Attachment:
611 derived_from: tosca.capabilities.Root
613 tosca.capabilities.network.Linkable:
614 derived_from: tosca.capabilities.Root
616 A node type that includes the Linkable capability indicates that it can
617 be pointed by tosca.relationships.network.LinksTo relationship type, which
618 represents an association relationship between Port and Network node types.
620 tosca.capabilities.network.Bindable:
621 derived_from: tosca.capabilities.Root
623 A node type that includes the Bindable capability indicates that it can
624 be pointed by tosca.relationships.network.BindsTo relationship type, which
625 represents a network association relationship between Port and Compute node
628 tosca.capabilities.OperatingSystem:
629 derived_from: tosca.capabilities.Root
635 The host Operating System (OS) architecture.
640 The host Operating System (OS) type.
645 The host Operating System (OS) distribution. Examples of valid values
646 for an “type” of “Linux” would include:
647 debian, fedora, rhel and ubuntu.
652 The host Operating System version.
654 tosca.capabilities.Container.Docker:
655 derived_from: tosca.capabilities.Container
663 The Docker version capability.
669 Indicates that all ports (ranges) listed in the dockerfile
670 using the EXPOSE keyword be published.
677 List of ports mappings from source (Docker container)
678 to target (host) ports to publish.
685 List of ports mappings from source (Docker container) to expose
686 to other Docker containers (not accessible outside host).
693 The dockerfile VOLUME command which is used to enable access
694 from the Docker container to a directory on the host machine.
699 The optional identifier of an existing host resource
700 that should be used to run this container on.
705 The optional identifier of an existing storage volume (resource)
706 that should be used to create the container's mount point(s) on.
708 ##########################################################################
710 # The Interfaces element describes a list of one or more interface
711 # definitions for a modelable entity (e.g., a Node or Relationship Type)
712 # as defined within the TOSCA Simple Profile specification.
713 ##########################################################################
715 tosca.interfaces.node.lifecycle.Standard:
717 description: Standard lifecycle create operation.
719 description: Standard lifecycle configure operation.
721 description: Standard lifecycle start operation.
723 description: Standard lifecycle stop operation.
725 description: Standard lifecycle delete operation.
727 tosca.interfaces.relationship.Configure:
728 pre_configure_source:
729 description: Operation to pre-configure the source endpoint.
730 pre_configure_target:
731 description: Operation to pre-configure the target endpoint.
732 post_configure_source:
733 description: Operation to post-configure the source endpoint.
734 post_configure_target:
735 description: Operation to post-configure the target endpoint.
737 description: Operation to add a target node.
739 description: Operation to remove a target node.
741 description: Operation to notify the target node of a source node which
742 is now available via a relationship.
745 description: Operation to notify source some property or attribute of the
748 ##########################################################################
750 # A Datatype is a complex data type declaration which contains other
751 # complex or simple data types.
752 ##########################################################################
754 tosca.datatypes.Root:
756 The TOSCA root Data Type all other TOSCA base Data Types derive from
758 tosca.datatypes.network.NetworkInfo:
759 derived_from: tosca.datatypes.Root
770 tosca.datatypes.network.PortInfo:
771 derived_from: tosca.datatypes.Root
786 tosca.datatypes.network.PortDef:
787 derived_from: tosca.datatypes.Root
790 - in_range: [ 1, 65535 ]
792 tosca.datatypes.network.PortSpec:
793 derived_from: tosca.datatypes.Root
800 - valid_values: [ udp, tcp, igmp ]
808 - in_range: [ 1, 65535 ]
816 - in_range: [ 1, 65535 ]
818 tosca.datatypes.Credential:
819 derived_from: tosca.datatypes.Root
840 ##########################################################################
842 # An Artifact Type is a reusable entity that defines the type of one or more
843 # files which Node Types or Node Templates can have dependent relationships
844 # and used during operations such as during installation or deployment.
845 ##########################################################################
847 tosca.artifacts.Root:
849 The TOSCA Artifact Type all other TOSCA Artifact Types derive from
853 tosca.artifacts.File:
854 derived_from: tosca.artifacts.Root
856 tosca.artifacts.Deployment:
857 derived_from: tosca.artifacts.Root
858 description: TOSCA base type for deployment artifacts
860 tosca.artifacts.Deployment.Image:
861 derived_from: tosca.artifacts.Deployment
863 tosca.artifacts.Deployment.Image.VM:
864 derived_from: tosca.artifacts.Deployment.Image
866 tosca.artifacts.Implementation:
867 derived_from: tosca.artifacts.Root
868 description: TOSCA base type for implementation artifacts
870 tosca.artifacts.Implementation.Bash:
871 derived_from: tosca.artifacts.Implementation
872 description: Script artifact for the Unix Bash shell
873 mime_type: application/x-sh
876 tosca.artifacts.Implementation.Python:
877 derived_from: tosca.artifacts.Implementation
878 description: Artifact for the interpreted Python language
879 mime_type: application/x-python
882 tosca.artifacts.Deployment.Image.Container.Docker:
883 derived_from: tosca.artifacts.Deployment.Image
884 description: Docker container image
886 tosca.artifacts.Deployment.Image.VM.ISO:
887 derived_from: tosca.artifacts.Deployment.Image
888 description: Virtual Machine (VM) image in ISO disk format
889 mime_type: application/octet-stream
892 tosca.artifacts.Deployment.Image.VM.QCOW2:
893 derived_from: tosca.artifacts.Deployment.Image
894 description: Virtual Machine (VM) image in QCOW v2 standard disk format
895 mime_type: application/octet-stream
898 ##########################################################################
900 # TOSCA Policy Types represent logical grouping of TOSCA nodes that have
901 # an implied relationship and need to be orchestrated or managed together
902 # to achieve some result.
903 ##########################################################################
906 description: The TOSCA Policy Type all other TOSCA Policy Types derive from.
908 tosca.policies.Placement:
909 derived_from: tosca.policies.Root
910 description: The TOSCA Policy Type definition that is used to govern
911 placement of TOSCA nodes or groups of nodes.
913 tosca.policies.Placement.Colocate:
914 derived_from: tosca.policies.Placement
915 description: The TOSCA Policy Type definition that is used to govern
916 colocate placement of TOSCA nodes or groups of nodes.
918 tosca.policies.Placement.Antilocate:
919 derived_from: tosca.policies.Placement
920 description: The TOSCA Policy Type definition that is used to govern
921 anti-locate placement of TOSCA nodes or groups of nodes.
923 tosca.policies.Scaling:
924 derived_from: tosca.policies.Root
925 description: The TOSCA Policy Type definition that is used to govern
926 scaling of TOSCA nodes or groups of nodes.
928 tosca.policies.Update:
929 derived_from: tosca.policies.Root
930 description: The TOSCA Policy Type definition that is used to govern
931 update of TOSCA nodes or groups of nodes.
933 tosca.policies.Performance:
934 derived_from: tosca.policies.Root
935 description: The TOSCA Policy Type definition that is used to declare
936 performance requirements for TOSCA nodes or groups of nodes.
938 ##########################################################################
940 # Group Type represents logical grouping of TOSCA nodes that have an
941 # implied membership relationship and may need to be orchestrated or
942 # managed together to achieve some result.
943 ##########################################################################
946 description: The TOSCA Group Type all other TOSCA Group Types derive from
949 type: tosca.interfaces.node.lifecycle.Standard