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, CapabilityAssignment 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.network.FloatingIP:
343 derived_from: tosca.nodes.Root
345 The TOSCA FloatingIP node represents a floating IP that can associate to a Port.
358 capability: tosca.capabilities.network.Linkable
359 relationship: tosca.relationships.network.LinksTo
360 node: tosca.nodes.network.Port
362 tosca.nodes.ObjectStorage:
363 derived_from: tosca.nodes.Root
365 The TOSCA ObjectStorage node represents storage that provides the ability
366 to store data as objects (or BLOBs of data) without consideration for the
367 underlying filesystem or devices
373 The logical name of the object store (or container).
375 type: scalar-unit.size
378 - greater_or_equal: 0 GB
380 The requested initial storage size.
382 type: scalar-unit.size
385 - greater_or_equal: 0 GB
387 The requested maximum storage size.
390 type: tosca.capabilities.Endpoint
392 tosca.nodes.LoadBalancer:
393 derived_from: tosca.nodes.Root
401 type: tosca.capabilities.Endpoint.Public
402 occurrences: [0, UNBOUNDED]
403 description: the Floating (IP) client’s on the public network can connect to
406 capability: tosca.capabilities.Endpoint
407 relationship: tosca.relationships.RoutesTo
408 occurrences: [0, UNBOUNDED]
409 description: Connection to one or more load balanced applications
411 tosca.nodes.Container.Application:
412 derived_from: tosca.nodes.Root
415 capability: tosca.capabilities.Container
416 node: tosca.nodes.Container.Runtime
417 relationship: tosca.relationships.HostedOn
419 tosca.nodes.Container.Runtime:
420 derived_from: tosca.nodes.SoftwareComponent
423 type: tosca.capabilities.Container
425 type: tosca.capabilities.Scalable
427 tosca.nodes.Container.Application.Docker:
428 derived_from: tosca.nodes.Container.Application
431 capability: tosca.capabilities.Container.Docker
433 ##########################################################################
435 # A Relationship Type is a reusable entity that defines the type of one
436 # or more relationships between Node Types or Node Templates.
437 ##########################################################################
439 tosca.relationships.Root:
441 The TOSCA root Relationship Type all other TOSCA base Relationship Types
450 type: tosca.interfaces.relationship.Configure
452 tosca.relationships.DependsOn:
453 derived_from: tosca.relationships.Root
455 tosca.relationships.HostedOn:
456 derived_from: tosca.relationships.Root
457 valid_target_types: [ tosca.capabilities.Container ]
459 tosca.relationships.ConnectsTo:
460 derived_from: tosca.relationships.Root
461 valid_target_types: [ tosca.capabilities.Endpoint ]
463 type: tosca.datatypes.Credential
466 tosca.relationships.AttachesTo:
467 derived_from: tosca.relationships.Root
468 valid_target_types: [ tosca.capabilities.Attachment ]
479 tosca.relationships.RoutesTo:
480 derived_from: tosca.relationships.ConnectsTo
481 valid_target_types: [ tosca.capabilities.Endpoint ]
483 tosca.relationships.network.LinksTo:
484 derived_from: tosca.relationships.DependsOn
485 valid_target_types: [ tosca.capabilities.network.Linkable ]
487 tosca.relationships.network.BindsTo:
488 derived_from: tosca.relationships.DependsOn
489 valid_target_types: [ tosca.capabilities.network.Bindable ]
491 ##########################################################################
492 # CapabilityAssignment Type.
493 # A CapabilityAssignment Type is a reusable entity that describes a kind of
494 # capability that a Node Type can declare to expose.
495 ##########################################################################
497 tosca.capabilities.Root:
499 The TOSCA root Capability Type all other TOSCA base Capability Types
502 tosca.capabilities.Node:
503 derived_from: tosca.capabilities.Root
505 tosca.capabilities.Container:
506 derived_from: tosca.capabilities.Root
512 - greater_or_equal: 1
515 type: scalar-unit.frequency
517 - greater_or_equal: 0.1 GHz
520 type: scalar-unit.size
522 - greater_or_equal: 0 MB
525 type: scalar-unit.size
527 - greater_or_equal: 0 MB
529 tosca.capabilities.Endpoint:
530 derived_from: tosca.capabilities.Root
537 type: tosca.datatypes.network.PortDef
558 - valid_values: [source, target, peer]
565 type: tosca.datatypes.network.PortSpec
570 tosca.capabilities.Endpoint.Admin:
571 derived_from: tosca.capabilities.Endpoint
579 tosca.capabilities.Endpoint.Public:
580 derived_from: tosca.capabilities.Endpoint
582 # Change the default network_name to use the first public network found
590 Indicates that the public address should be allocated from a pool of
591 floating IPs that are associated with the network.
596 description: The optional name to register with DNS
601 tosca.capabilities.Scalable:
602 derived_from: tosca.capabilities.Root
609 This property is used to indicate the minimum number of instances
610 that should be created for the associated TOSCA Node Template by
611 a TOSCA orchestrator.
617 This property is used to indicate the maximum number of instances
618 that should be created for the associated TOSCA Node Template by
619 a TOSCA orchestrator.
624 An optional property that indicates the requested default number
625 of instances that should be the starting number of instances a
626 TOSCA orchestrator should attempt to allocate.
627 The value for this property MUST be in the range between the values
628 set for min_instances and max_instances properties.
630 tosca.capabilities.Endpoint.Database:
631 derived_from: tosca.capabilities.Endpoint
633 tosca.capabilities.Attachment:
634 derived_from: tosca.capabilities.Root
636 tosca.capabilities.network.Linkable:
637 derived_from: tosca.capabilities.Root
639 A node type that includes the Linkable capability indicates that it can
640 be pointed by tosca.relationships.network.LinksTo relationship type, which
641 represents an association relationship between Port and Network node types.
643 tosca.capabilities.network.Bindable:
644 derived_from: tosca.capabilities.Root
646 A node type that includes the Bindable capability indicates that it can
647 be pointed by tosca.relationships.network.BindsTo relationship type, which
648 represents a network association relationship between Port and Compute node
651 tosca.capabilities.OperatingSystem:
652 derived_from: tosca.capabilities.Root
658 The host Operating System (OS) architecture.
663 The host Operating System (OS) type.
668 The host Operating System (OS) distribution. Examples of valid values
669 for an “type” of “Linux” would include:
670 debian, fedora, rhel and ubuntu.
675 The host Operating System version.
677 tosca.capabilities.Container.Docker:
678 derived_from: tosca.capabilities.Container
686 The Docker version capability.
692 Indicates that all ports (ranges) listed in the dockerfile
693 using the EXPOSE keyword be published.
697 type: tosca.datatypes.network.PortSpec
700 List of ports mappings from source (Docker container)
701 to target (host) ports to publish.
705 type: tosca.datatypes.network.PortSpec
708 List of ports mappings from source (Docker container) to expose
709 to other Docker containers (not accessible outside host).
716 The dockerfile VOLUME command which is used to enable access
717 from the Docker container to a directory on the host machine.
722 The optional identifier of an existing host resource
723 that should be used to run this container on.
728 The optional identifier of an existing storage volume (resource)
729 that should be used to create the container's mount point(s) on.
731 ##########################################################################
733 # The Interfaces element describes a list of one or more interface
734 # definitions for a modelable entity (e.g., a Node or Relationship Type)
735 # as defined within the TOSCA Simple Profile specification.
736 ##########################################################################
738 tosca.interfaces.node.lifecycle.Standard:
740 description: Standard lifecycle create operation.
742 description: Standard lifecycle configure operation.
744 description: Standard lifecycle start operation.
746 description: Standard lifecycle stop operation.
748 description: Standard lifecycle delete operation.
750 tosca.interfaces.relationship.Configure:
751 pre_configure_source:
752 description: Operation to pre-configure the source endpoint.
753 pre_configure_target:
754 description: Operation to pre-configure the target endpoint.
755 post_configure_source:
756 description: Operation to post-configure the source endpoint.
757 post_configure_target:
758 description: Operation to post-configure the target endpoint.
760 description: Operation to add a target node.
762 description: Operation to remove a target node.
764 description: Operation to notify the target node of a source node which
765 is now available via a relationship.
768 description: Operation to notify source some property or attribute of the
771 ##########################################################################
773 # A Datatype is a complex data type declaration which contains other
774 # complex or simple data types.
775 ##########################################################################
777 tosca.datatypes.Root:
779 The TOSCA root Data Type all other TOSCA base Data Types derive from
781 tosca.datatypes.network.NetworkInfo:
782 derived_from: tosca.datatypes.Root
793 tosca.datatypes.network.PortInfo:
794 derived_from: tosca.datatypes.Root
809 tosca.datatypes.network.PortDef:
810 derived_from: tosca.datatypes.Root
813 - in_range: [ 1, 65535 ]
815 tosca.datatypes.network.PortSpec:
816 derived_from: tosca.datatypes.Root
823 - valid_values: [ udp, tcp, igmp ]
825 type: tosca.datatypes.network.PortDef
831 - in_range: [ 1, 65535 ]
833 type: tosca.datatypes.network.PortDef
839 - in_range: [ 1, 65535 ]
841 tosca.datatypes.Credential:
842 derived_from: tosca.datatypes.Root
863 ##########################################################################
865 # An Artifact Type is a reusable entity that defines the type of one or more
866 # files which Node Types or Node Templates can have dependent relationships
867 # and used during operations such as during installation or deployment.
868 ##########################################################################
870 tosca.artifacts.Root:
872 The TOSCA Artifact Type all other TOSCA Artifact Types derive from
876 tosca.artifacts.File:
877 derived_from: tosca.artifacts.Root
879 tosca.artifacts.Deployment:
880 derived_from: tosca.artifacts.Root
881 description: TOSCA base type for deployment artifacts
883 tosca.artifacts.Deployment.Image:
884 derived_from: tosca.artifacts.Deployment
886 tosca.artifacts.Deployment.Image.VM:
887 derived_from: tosca.artifacts.Deployment.Image
889 tosca.artifacts.Implementation:
890 derived_from: tosca.artifacts.Root
891 description: TOSCA base type for implementation artifacts
893 tosca.artifacts.Implementation.Bash:
894 derived_from: tosca.artifacts.Implementation
895 description: Script artifact for the Unix Bash shell
896 mime_type: application/x-sh
899 tosca.artifacts.Implementation.Python:
900 derived_from: tosca.artifacts.Implementation
901 description: Artifact for the interpreted Python language
902 mime_type: application/x-python
905 tosca.artifacts.Deployment.Image.Container.Docker:
906 derived_from: tosca.artifacts.Deployment.Image
907 description: Docker container image
909 tosca.artifacts.Deployment.Image.VM.ISO:
910 derived_from: tosca.artifacts.Deployment.Image
911 description: Virtual Machine (VM) image in ISO disk format
912 mime_type: application/octet-stream
915 tosca.artifacts.Deployment.Image.VM.QCOW2:
916 derived_from: tosca.artifacts.Deployment.Image
917 description: Virtual Machine (VM) image in QCOW v2 standard disk format
918 mime_type: application/octet-stream
921 ##########################################################################
923 # TOSCA Policy Types represent logical grouping of TOSCA nodes that have
924 # an implied relationship and need to be orchestrated or managed together
925 # to achieve some result.
926 ##########################################################################
929 description: The TOSCA Policy Type all other TOSCA Policy Types derive from.
931 tosca.policies.Placement:
932 derived_from: tosca.policies.Root
933 description: The TOSCA Policy Type definition that is used to govern
934 placement of TOSCA nodes or groups of nodes.
936 tosca.policies.Scaling:
937 derived_from: tosca.policies.Root
938 description: The TOSCA Policy Type definition that is used to govern
939 scaling of TOSCA nodes or groups of nodes.
941 tosca.policies.Monitoring:
942 derived_from: tosca.policies.Root
943 description: The TOSCA Policy Type definition that is used to govern
944 monitoring of TOSCA nodes or groups of nodes.
946 tosca.policies.Update:
947 derived_from: tosca.policies.Root
948 description: The TOSCA Policy Type definition that is used to govern
949 update of TOSCA nodes or groups of nodes.
951 tosca.policies.Performance:
952 derived_from: tosca.policies.Root
953 description: The TOSCA Policy Type definition that is used to declare
954 performance requirements for TOSCA nodes or groups of nodes.
956 ##########################################################################
958 # Group Type represents logical grouping of TOSCA nodes that have an
959 # implied membership relationship and may need to be orchestrated or
960 # managed together to achieve some result.
961 ##########################################################################
964 description: The TOSCA Group Type all other TOSCA Group Types derive from
967 type: tosca.interfaces.node.lifecycle.Standard