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 ##########################################################################
27 The TOSCA root node all other TOSCA base node types derive from.
37 type: tosca.capabilities.Node
40 capability: tosca.capabilities.Node
41 node: tosca.nodes.Root
42 relationship: tosca.relationships.DependsOn
43 occurrences: [ 0, UNBOUNDED ]
46 type: tosca.interfaces.node.lifecycle.Standard
49 derived_from: tosca.nodes.Root
58 type: tosca.datatypes.network.NetworkInfo
62 type: tosca.datatypes.network.PortInfo
65 type: tosca.capabilities.Container
67 type: tosca.capabilities.network.Bindable
69 type: tosca.capabilities.OperatingSystem
71 type: tosca.capabilities.Scalable
74 capability: tosca.capabilities.Attachment
75 node: tosca.nodes.BlockStorage
76 relationship: tosca.relationships.AttachesTo
77 occurrences: [0, UNBOUNDED]
79 tosca.nodes.SoftwareComponent:
80 derived_from: tosca.nodes.Root
82 # domain-specific software component version
87 Software component version.
89 type: tosca.datatypes.Credential
93 capability: tosca.capabilities.Container
94 node: tosca.nodes.Compute
95 relationship: tosca.relationships.HostedOn
98 derived_from: tosca.nodes.SoftwareComponent
104 The port the DBMS service will listen to for data and requests.
109 The root password for the DBMS service.
112 type: tosca.capabilities.Container
113 valid_source_types: [tosca.nodes.Database]
115 tosca.nodes.Database:
116 derived_from: tosca.nodes.Root
122 User account name for DB administration
127 The port the database service will use to listen for incoming data and
133 The name of the database.
138 The password for the DB user account
141 capability: tosca.capabilities.Container
142 node: tosca.nodes.DBMS
143 relationship: tosca.relationships.HostedOn
146 type: tosca.capabilities.Endpoint.Database
148 tosca.nodes.WebServer:
149 derived_from: tosca.nodes.SoftwareComponent
152 type: tosca.capabilities.Endpoint
154 type: tosca.capabilities.Endpoint.Admin
156 type: tosca.capabilities.Container
157 valid_source_types: [tosca.nodes.WebApplication]
159 tosca.nodes.WebApplication:
160 derived_from: tosca.nodes.Root
167 capability: tosca.capabilities.Container
168 node: tosca.nodes.WebServer
169 relationship: tosca.relationships.HostedOn
172 type: tosca.capabilities.Endpoint
174 tosca.nodes.BlockStorage:
175 derived_from: tosca.nodes.Root
178 type: scalar-unit.size
180 - greater_or_equal: 1 MB
192 type: tosca.capabilities.Attachment
194 tosca.nodes.network.Network:
195 derived_from: tosca.nodes.Root
197 The TOSCA Network node represents a simple, logical network service.
204 - valid_values: [ 4, 6 ]
206 The IP version of the requested network. Valid values are 4 for ipv4
212 The cidr block of the requested network.
217 The IP address to be used as the start of a pool of addresses within
218 the full IP range derived from the cidr block.
223 The IP address to be used as the end of a pool of addresses within
224 the full IP range derived from the cidr block.
229 The gateway IP address.
234 An identifier that represents an existing Network instance in the
235 underlying cloud infrastructure or can be used as the name of the
236 newly created network. If network_name is provided and no other
237 properties are provided (with exception of network_id), then an
238 existing network instance will be used. If network_name is provided
239 alongside with more properties then a new network with this name will
245 An identifier that represents an existing Network instance in the
246 underlying cloud infrastructure. This property is mutually exclusive
247 with all other properties except network_name. This can be used alone
248 or together with network_name to identify an existing network.
253 A segmentation identifier in the underlying cloud infrastructure.
254 E.g. VLAN ID, GRE tunnel ID, etc..
259 It specifies the nature of the physical network in the underlying
260 cloud infrastructure. Examples are flat, vlan, gre or vxlan.
261 For flat and vlan types, physical_network should be provided too.
266 It identifies the physical network on top of which the network is
267 implemented, e.g. physnet1. This property is required if network_type
274 Indicates should DHCP service be enabled on the network or not.
277 type: tosca.capabilities.network.Linkable
279 tosca.nodes.network.Port:
280 derived_from: tosca.nodes.Root
282 The TOSCA Port node represents a logical entity that associates between
283 Compute and Network normative types. The Port node type effectively
284 represents a single virtual NIC on the Compute node instance.
290 Allow the user to set a static IP.
296 - greater_or_equal: 0
298 The order of the NIC on the compute instance (e.g. eth2).
304 If is_default=true this port will be used for the default gateway
305 route. Only one port that is associated to single compute node can
306 set as is_default=true.
311 Defines the starting IP of a range to be allocated for the compute
312 instances that are associated with this Port.
317 Defines the ending IP of a range to be allocated for the compute
318 instances that are associated with this Port.
325 Binding requirement expresses the relationship between Port and
326 Compute nodes. Effectively it indicates that the Port will be
327 attached to specific Compute node instance
328 capability: tosca.capabilities.network.Bindable
329 relationship: tosca.relationships.network.BindsTo
330 node: tosca.nodes.Compute
333 Link requirement expresses the relationship between Port and Network
334 nodes. It indicates which network this port will connect to.
335 capability: tosca.capabilities.network.Linkable
336 relationship: tosca.relationships.network.LinksTo
337 node: tosca.nodes.network.Network
339 tosca.nodes.ObjectStorage:
340 derived_from: tosca.nodes.Root
342 The TOSCA ObjectStorage node represents storage that provides the ability
343 to store data as objects (or BLOBs of data) without consideration for the
344 underlying filesystem or devices
350 The logical name of the object store (or container).
352 type: scalar-unit.size
355 - greater_or_equal: 0 GB
357 The requested initial storage size.
359 type: scalar-unit.size
362 - greater_or_equal: 0 GB
364 The requested maximum storage size.
367 type: tosca.capabilities.Endpoint
369 tosca.nodes.LoadBalancer:
370 derived_from: tosca.nodes.Root
378 type: tosca.capabilities.Endpoint.Public
379 occurrences: [0, UNBOUNDED]
380 description: the Floating (IP) client’s on the public network can connect to
383 capability: tosca.capabilities.Endpoint
384 relationship: tosca.relationships.RoutesTo
385 occurrences: [0, UNBOUNDED]
386 description: Connection to one or more load balanced applications
388 tosca.nodes.Container.Application:
389 derived_from: tosca.nodes.Root
392 capability: tosca.capabilities.Container
393 node: tosca.nodes.Container
394 relationship: tosca.relationships.HostedOn
396 tosca.nodes.Container.Runtime:
397 derived_from: tosca.nodes.SoftwareComponent
400 type: tosca.capabilities.Container
402 type: tosca.capabilities.Scalable
404 tosca.nodes.Container.Application.Docker:
405 derived_from: tosca.nodes.Container.Application
408 capability: tosca.capabilities.Container.Docker
410 ##########################################################################
412 # A Relationship Type is a reusable entity that defines the type of one
413 # or more relationships between Node Types or Node Templates.
414 ##########################################################################
415 tosca.relationships.Root:
417 The TOSCA root Relationship Type all other TOSCA base Relationship Types
426 type: tosca.interfaces.relationship.Configure
428 tosca.relationships.DependsOn:
429 derived_from: tosca.relationships.Root
431 tosca.relationships.HostedOn:
432 derived_from: tosca.relationships.Root
433 valid_target_types: [ tosca.capabilities.Container ]
435 tosca.relationships.ConnectsTo:
436 derived_from: tosca.relationships.Root
437 valid_target_types: [ tosca.capabilities.Endpoint ]
439 type: tosca.datatypes.Credential
442 tosca.relationships.AttachesTo:
443 derived_from: tosca.relationships.Root
444 valid_target_types: [ tosca.capabilities.Attachment ]
455 tosca.relationships.RoutesTo:
456 derived_from: tosca.relationships.ConnectsTo
457 valid_target_types: [ tosca.capabilities.Endpoint ]
459 tosca.relationships.network.LinksTo:
460 derived_from: tosca.relationships.DependsOn
461 valid_target_types: [ tosca.capabilities.network.Linkable ]
463 tosca.relationships.network.BindsTo:
464 derived_from: tosca.relationships.DependsOn
465 valid_target_types: [ tosca.capabilities.network.Bindable ]
467 ##########################################################################
469 # A Capability Type is a reusable entity that describes a kind of
470 # capability that a Node Type can declare to expose.
471 ##########################################################################
472 tosca.capabilities.Root:
474 The TOSCA root Capability Type all other TOSCA base Capability Types
477 tosca.capabilities.Node:
478 derived_from: tosca.capabilities.Root
480 tosca.capabilities.Container:
481 derived_from: tosca.capabilities.Root
487 - greater_or_equal: 1
490 type: scalar-unit.frequency
492 - greater_or_equal: 0.1 GHz
495 type: scalar-unit.size
497 - greater_or_equal: 0 MB
500 type: scalar-unit.size
502 - greater_or_equal: 0 MB
504 tosca.capabilities.Endpoint:
505 derived_from: tosca.capabilities.Root
512 type: tosca.datatypes.network.PortDef
532 - valid_values: [source, target, peer]
539 type: tosca.datatypes.network.PortSpec
544 tosca.capabilities.Endpoint.Admin:
545 derived_from: tosca.capabilities.Endpoint
553 tosca.capabilities.Endpoint.Public:
554 derived_from: tosca.capabilities.Endpoint
556 # Change the default network_name to use the first public network found
564 Indicates that the public address should be allocated from a pool of
565 floating IPs that are associated with the network.
570 description: The optional name to register with DNS
575 tosca.capabilities.Scalable:
576 derived_from: tosca.capabilities.Root
583 This property is used to indicate the minimum number of instances
584 that should be created for the associated TOSCA Node Template by
585 a TOSCA orchestrator.
591 This property is used to indicate the maximum number of instances
592 that should be created for the associated TOSCA Node Template by
593 a TOSCA orchestrator.
598 An optional property that indicates the requested default number
599 of instances that should be the starting number of instances a
600 TOSCA orchestrator should attempt to allocate.
601 The value for this property MUST be in the range between the values
602 set for min_instances and max_instances properties.
604 tosca.capabilities.Endpoint.Database:
605 derived_from: tosca.capabilities.Endpoint
607 tosca.capabilities.Attachment:
608 derived_from: tosca.capabilities.Root
610 tosca.capabilities.network.Linkable:
611 derived_from: tosca.capabilities.Root
613 A node type that includes the Linkable capability indicates that it can
614 be pointed by tosca.relationships.network.LinksTo relationship type, which
615 represents an association relationship between Port and Network node types.
617 tosca.capabilities.network.Bindable:
618 derived_from: tosca.capabilities.Root
620 A node type that includes the Bindable capability indicates that it can
621 be pointed by tosca.relationships.network.BindsTo relationship type, which
622 represents a network association relationship between Port and Compute node
625 tosca.capabilities.OperatingSystem:
626 derived_from: tosca.capabilities.Root
632 The host Operating System (OS) architecture.
637 The host Operating System (OS) type.
642 The host Operating System (OS) distribution. Examples of valid values
643 for an “type” of “Linux” would include:
644 debian, fedora, rhel and ubuntu.
649 The host Operating System version.
651 tosca.capabilities.Container.Docker:
652 derived_from: tosca.capabilities.Container
660 The Docker version capability.
666 Indicates that all ports (ranges) listed in the dockerfile
667 using the EXPOSE keyword be published.
674 List of ports mappings from source (Docker container)
675 to target (host) ports to publish.
682 List of ports mappings from source (Docker container) to expose
683 to other Docker containers (not accessible outside host).
690 The dockerfile VOLUME command which is used to enable access
691 from the Docker container to a directory on the host machine.
696 The optional identifier of an existing host resource
697 that should be used to run this container on.
702 The optional identifier of an existing storage volume (resource)
703 that should be used to create the container's mount point(s) on.
705 ##########################################################################
707 # The Interfaces element describes a list of one or more interface
708 # definitions for a modelable entity (e.g., a Node or Relationship Type)
709 # as defined within the TOSCA Simple Profile specification.
710 ##########################################################################
711 tosca.interfaces.node.lifecycle.Standard:
713 description: Standard lifecycle create operation.
715 description: Standard lifecycle configure operation.
717 description: Standard lifecycle start operation.
719 description: Standard lifecycle stop operation.
721 description: Standard lifecycle delete operation.
723 tosca.interfaces.relationship.Configure:
724 pre_configure_source:
725 description: Operation to pre-configure the source endpoint.
726 pre_configure_target:
727 description: Operation to pre-configure the target endpoint.
728 post_configure_source:
729 description: Operation to post-configure the source endpoint.
730 post_configure_target:
731 description: Operation to post-configure the target endpoint.
733 description: Operation to add a target node.
735 description: Operation to remove a target node.
737 description: Operation to notify the target node of a source node which
738 is now available via a relationship.
741 description: Operation to notify source some property or attribute of the
744 ##########################################################################
746 # A Datatype is a complex data type declaration which contains other
747 # complex or simple data types.
748 ##########################################################################
749 tosca.datatypes.Root:
751 The TOSCA root Data Type all other TOSCA base Data Types derive from
753 tosca.datatypes.network.NetworkInfo:
754 derived_from: tosca.datatypes.Root
765 tosca.datatypes.network.PortInfo:
766 derived_from: tosca.datatypes.Root
781 tosca.datatypes.network.PortDef:
782 derived_from: tosca.datatypes.Root
785 - in_range: [ 1, 65535 ]
787 tosca.datatypes.network.PortSpec:
788 derived_from: tosca.datatypes.Root
795 - valid_values: [ udp, tcp, igmp ]
803 - in_range: [ 1, 65535 ]
811 - in_range: [ 1, 65535 ]
813 tosca.datatypes.Credential:
814 derived_from: tosca.datatypes.Root
830 ##########################################################################
832 # An Artifact Type is a reusable entity that defines the type of one or more
833 # files which Node Types or Node Templates can have dependent relationships
834 # and used during operations such as during installation or deployment.
835 ##########################################################################
836 tosca.artifacts.Root:
838 The TOSCA Artifact Type all other TOSCA Artifact Types derive from
842 tosca.artifacts.File:
843 derived_from: tosca.artifacts.Root
845 tosca.artifacts.Deployment:
846 derived_from: tosca.artifacts.Root
847 description: TOSCA base type for deployment artifacts
849 tosca.artifacts.Deployment.Image:
850 derived_from: tosca.artifacts.Deployment
852 tosca.artifacts.Deployment.Image.VM:
853 derived_from: tosca.artifacts.Deployment.Image
855 tosca.artifacts.Implementation:
856 derived_from: tosca.artifacts.Root
857 description: TOSCA base type for implementation artifacts
859 tosca.artifacts.Implementation.Bash:
860 derived_from: tosca.artifacts.Implementation
861 description: Script artifact for the Unix Bash shell
862 mime_type: application/x-sh
865 tosca.artifacts.Implementation.Python:
866 derived_from: tosca.artifacts.Implementation
867 description: Artifact for the interpreted Python language
868 mime_type: application/x-python
871 tosca.artifacts.Deployment.Image.Container.Docker:
872 derived_from: tosca.artifacts.Deployment.Image
873 description: Docker container image
875 tosca.artifacts.Deployment.Image.VM.ISO:
876 derived_from: tosca.artifacts.Deployment.Image
877 description: Virtual Machine (VM) image in ISO disk format
878 mime_type: application/octet-stream
881 tosca.artifacts.Deployment.Image.VM.QCOW2:
882 derived_from: tosca.artifacts.Deployment.Image
883 description: Virtual Machine (VM) image in QCOW v2 standard disk format
884 mime_type: application/octet-stream
887 ##########################################################################
889 # TOSCA Policy Types represent logical grouping of TOSCA nodes that have
890 # an implied relationship and need to be orchestrated or managed together
891 # to achieve some result.
892 ##########################################################################
894 description: The TOSCA Policy Type all other TOSCA Policy Types derive from.
896 tosca.policies.Placement:
897 derived_from: tosca.policies.Root
898 description: The TOSCA Policy Type definition that is used to govern
899 placement of TOSCA nodes or groups of nodes.
901 tosca.policies.Scaling:
902 derived_from: tosca.policies.Root
903 description: The TOSCA Policy Type definition that is used to govern
904 scaling of TOSCA nodes or groups of nodes.
906 tosca.policies.Update:
907 derived_from: tosca.policies.Root
908 description: The TOSCA Policy Type definition that is used to govern
909 update of TOSCA nodes or groups of nodes.
911 tosca.policies.Performance:
912 derived_from: tosca.policies.Root
913 description: The TOSCA Policy Type definition that is used to declare
914 performance requirements for TOSCA nodes or groups of nodes.
916 ##########################################################################
918 # Group Type represents logical grouping of TOSCA nodes that have an
919 # implied membership relationship and may need to be orchestrated or
920 # managed together to achieve some result.
921 ##########################################################################
923 description: The TOSCA Group Type all other TOSCA Group Types derive from
926 type: tosca.interfaces.node.lifecycle.Standard