tosca_definitions_version: tosca_simple_yaml_1_1_0 description: > TOSCA simple profile common types. To be included by default in all templates. data_types: #see 5.3.1 tosca.datatypes.Root: description: The TOSCA root Data Type all other TOSCA base Data Types derive from #from 5.3.2 tosca.datatypes.Credential: derived_from: tosca.datatypes.Root properties: protocol: type: string required: false token_type: type: string default: password token: type: string keys: type: map required: false entry_schema: string user: type: string required: false #from 5.3.3 tosca.datatypes.TimeInterval: derived_from: tosca.datatypes.Root properties: start_time: type: timestamp required: true end_time: type: timestamp required: true #from 5.3.4 tosca.datatypes.network.NetworkInfo: derived_from: tosca.datatypes.Root properties: network_name: type: string network_id: type: string addresses: type: list entry_schema: string #from 5.3.5 tosca.datatypes.network.PortInfo: derived_from: tosca.datatypes.Root properties: port_name: type: string port_id: type: string network_id: type: string mac_address: type: string addresses: type: list entry_schema: string #from 5.3.6 tosca.datatypes.network.PortDef: derived_from: integer constraints: - in_range: [ 1, 65535 ] #from 5.3.7 tosca.datatypes.network.PortSpec: derived_from: tosca.datatypes.Root properties: protocol: type: string required: true default: tcp constraints: - valid_values: [ udp, tcp, igmp ] target: #I think the intent was (same for source): #type: tosca.datatypes.network.PortDef type: integer entry_schema: tosca.datatypes.network.PortDef target_range: type: range constraints: - in_range: [ 1, 65535 ] source: type: integer entry_schema: tosca.datatypes.network.PortDef source_range: type: range constraints: - in_range: [ 1, 65535 ] capability_types: #from 5.5.1 tosca.capabilities.Root: description: The TOSCA root Capability Type all other TOSCA base Capability Types derive from #from 5.5.2 tosca.capabilities.Node: derived_from: tosca.capabilities.Root #from 5.5.3 tosca.capabilities.Compute: derived_from: tosca.capabilities.Root properties: name: type: string required: false num_cpus: type: integer required: false constraints: - greater_or_equal: 1 cpu_frequency: type: scalar-unit.frequency required: false constraints: - greater_or_equal: 0.1 GHz disk_size: type: scalar-unit.size required: false constraints: - greater_or_equal: 0 MB mem_size: type: scalar-unit.size required: false constraints: - greater_or_equal: 0 MB #from 5.5.4 tosca.capabilities.Network: derived_from: tosca.capabilities.Root properties: name: type: string required: false #from 5.5.5 tosca.capabilities.Storage: derived_from: tosca.capabilities.Root properties: name: type: string required: false #from 5.5.6 tosca.capabilities.compute.Container: derived_from: tosca.capabilities.Compute tosca.capabilities.Container: derived_from: tosca.capabilities.Compute #from 5.5.7 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 default: PRIVATE initiator: type: string default: source constraints: - valid_values: [ source, target, peer ] ports: type: map required: false constraints: - min_length: 1 entry_schema: tosca.datatypes.network.PortSpec attributes: ip_address: type: string #from 5.5.8 tosca.capabilities.Endpoint.Public: derived_from: tosca.capabilities.Endpoint properties: # Change the default network_name to use the first public network found network_name: type: string default: PUBLIC floating: description: > indicates that the public address should be allocated from a pool of floating IPs that are associated with the network. type: boolean default: false status: experimental dns_name: description: The optional name to register with DNS type: string required: false status: experimental #from 5.5.9 tosca.capabilities.Endpoint.Admin: derived_from: tosca.capabilities.Endpoint # Change Endpoint secure indicator to true from its default of false properties: secure: type: boolean default: true constraints: - equal: true #from 5.5.10 tosca.capabilities.Endpoint.Database: derived_from: tosca.capabilities.Endpoint #from 5.5.11 tosca.capabilities.Attachment: derived_from: tosca.capabilities.Root #from 5.5.12 tosca.capabilities.OperatingSystem: derived_from: tosca.capabilities.Root properties: architecture: type: string required: false type: type: string required: false distribution: type: string required: false version: type: version required: false #from 5.5.13 tosca.capabilities.Scalable: derived_from: tosca.capabilities.Root properties: min_instances: type: integer default: 1 max_instances: type: integer default: 1 default_instances: type: integer #from C.3.11 tosca.capabilities.network.Bindable: derived_from: tosca.capabilities.Node relationship_types: #from 5.7.1 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 #from 5.7.2 tosca.relationships.DependsOn: derived_from: tosca.relationships.Root valid_target_types: [ tosca.capabilities.Node ] #from 5.7.3 tosca.relationships.HostedOn: derived_from: tosca.relationships.Root valid_target_types: [ tosca.capabilities.compute.Container ] #from 5.7.4 tosca.relationships.ConnectsTo: derived_from: tosca.relationships.Root valid_target_types: [ tosca.capabilities.Endpoint ] properties: credential: type: tosca.datatypes.Credential required: false #from 5.7.5 tosca.relationships.AttachesTo: derived_from: tosca.relationships.Root valid_target_types: [ tosca.capabilities.Attachment ] properties: location: type: string constraints: - min_length: 1 device: type: string required: false #from 5.7.6 tosca.relationships.RoutesTo: derived_from: tosca.relationships.ConnectsTo valid_target_types: [ tosca.capabilities.Endpoint ] interface_types: #from 5.8.3 tosca.interfaces.Root: # derived_from: tosca.entity.Root description: The TOSCA root Interface Type all other TOSCA base Interface Types derive from #from 5.8.4 tosca.interfaces.node.lifecycle.Standard: derived_from: tosca.interfaces.Root 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. #from 5.8.5 tosca.interfaces.relationship.Configure: derived_from: tosca.interfaces.Root 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 notify the source node of a target node being added via a relationship. add_source: description: Operation to notify the target node of a source node which is now available via a relationship. target_changed: description: Operation to notify source some property or attribute of the target changed remove_target: description: Operation to remove a target node. node_types: #from 5.9.1 tosca.nodes.Root: description: The TOSCA Node Type 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 #from 5.9.2 tosca.nodes.Compute: derived_from: tosca.nodes.Root attributes: private_address: type: string public_address: type: string networks: type: map #entry schema for attribute has a string value as per A.5.9 .. #the standard document defines it as a map similar to the property definition .. entry_schema: tosca.datatypes.network.NetworkInfo ports: type: map entry_schema: tosca.datatypes.network.PortInfo requirements: - local_storage: capability: tosca.capabilities.Attachment node: tosca.nodes.BlockStorage relationship: tosca.relationships.AttachesTo occurrences: [0, UNBOUNDED] capabilities: host: type: tosca.capabilities.compute.Container valid_source_types: [tosca.nodes.SoftwareComponent] endpoint: type: tosca.capabilities.Endpoint.Admin os: type: tosca.capabilities.OperatingSystem scalable: type: tosca.capabilities.Scalable binding: type: tosca.capabilities.network.Bindable #from 5.9.3 tosca.nodes.SoftwareComponent: derived_from: tosca.nodes.Root properties: # domain-specific software component version component_version: type: version required: false admin_credential: type: tosca.datatypes.Credential required: false requirements: - host: capability: tosca.capabilities.compute.Container node: tosca.nodes.Compute relationship: tosca.relationships.HostedOn #from 5.9.4 tosca.nodes.WebServer: derived_from: tosca.nodes.SoftwareComponent capabilities: # Private, layer 4 endpoints data_endpoint: tosca.capabilities.Endpoint admin_endpoint: tosca.capabilities.Endpoint.Admin host: type: tosca.capabilities.compute.Container valid_source_types: [ tosca.nodes.WebApplication ] #from 5.9.5 tosca.nodes.WebApplication: derived_from: tosca.nodes.Root properties: context_root: type: string capabilities: app_endpoint: type: tosca.capabilities.Endpoint requirements: - host: capability: tosca.capabilities.compute.Container node: tosca.nodes.WebServer relationship: tosca.relationships.HostedOn #from 5.9.6 tosca.nodes.DBMS: derived_from: tosca.nodes.SoftwareComponent properties: root_password: type: string required: false description: the optional root password for the DBMS service port: type: integer required: false description: the port the DBMS service will listen to for data and requests capabilities: host: type: tosca.capabilities.compute.Container valid_source_types: [ tosca.nodes.Database ] #from 5.9.7 tosca.nodes.Database: derived_from: tosca.nodes.Root properties: name: type: string description: the logical name of the database port: type: integer description: the port the underlying database service will listen to for data user: type: string description: the optional user account name for DB administration required: false password: type: string description: the optional password for the DB user account required: false requirements: - host: capability: tosca.capabilities.compute.Container node: tosca.nodes.DBMS relationship: tosca.relationships.HostedOn capabilities: database_endpoint: type: tosca.capabilities.Endpoint.Database #from 5.9.8 tosca.nodes.ObjectStorage: derived_from: tosca.nodes.Root properties: name: type: string size: type: scalar-unit.size constraints: - greater_or_equal: 0 GB maxsize: type: scalar-unit.size constraints: - greater_or_equal: 0 GB capabilities: storage_endpoint: type: tosca.capabilities.Endpoint #from 5.9.9 tosca.nodes.BlockStorage: derived_from: tosca.nodes.Root properties: size: type: scalar-unit.size constraints: - greater_or_equal: 1 MB volume_id: type: string required: false snapshot_id: type: string required: false capabilities: attachment: type: tosca.capabilities.Attachment #from 5.9.10 tosca.nodes.Container.Runtime: derived_from: tosca.nodes.SoftwareComponent capabilities: host: type: tosca.capabilities.compute.Container scalable: type: tosca.capabilities.Scalable #from 5.9.11 tosca.nodes.Container.Application: derived_from: tosca.nodes.Root requirements: - host: capability: tosca.capabilities.compute.Container # node: tosca.nodes.Container !invalid node reference! relationship: tosca.relationships.HostedOn #from 5.9.12 tosca.nodes.LoadBalancer: derived_from: tosca.nodes.Root properties: # TBD algorithm: type: string required: false status: experimental capabilities: client: type: tosca.capabilities.Endpoint.Public occurrences: [0, UNBOUNDED] description: the Floating (IP) clients on the public network can connect to requirements: - application: capability: tosca.capabilities.Endpoint relationship: tosca.relationships.RoutesTo occurrences: [0, UNBOUNDED] # correction by jora: requirement defintion does not allow for a description entry # description: Connection to one or more load balanced applications artifact_types: #from 5.4.1 tosca.artifacts.Root: description: The TOSCA Artifact Type all other TOSCA Artifact Types derive from #from 5.4.2 tosca.artifacts.File: derived_from: tosca.artifacts.Root #from 5.4.3 tosca.artifacts.Deployment: derived_from: tosca.artifacts.Root description: TOSCA base type for deployment artifacts #from 5.4.3.3 tosca.artifacts.Deployment.Image: derived_from: tosca.artifacts.Deployment #from 5.4.3.4 tosca.artifacts.Deployment.Image.VM: derived_from: tosca.artifacts.Deployment.Image description: Virtual Machine (VM) Image #from 5.4.4 tosca.artifacts.Implementation: derived_from: tosca.artifacts.Root description: TOSCA base type for implementation artifacts #from 5.4.4.3 tosca.artifacts.Implementation.Bash: derived_from: tosca.artifacts.Implementation description: Script artifact for the Unix Bash shell mime_type: application/x-sh file_ext: [ sh ] #from 5.4.4.4 tosca.artifacts.Implementation.Python: derived_from: tosca.artifacts.Implementation description: Artifact for the interpreted Python language mime_type: application/x-python file_ext: [ py ] #from 5.9 group_types: tosca.groups.Root: description: The TOSCA Group Type all other TOSCA Group Types derive from interfaces: Standard: type: tosca.interfaces.node.lifecycle.Standard #from 5.10 policy_types: tosca.policies.Root: description: The TOSCA Policy Type all other TOSCA Policy Types derive from tosca.policies.Placement: derived_from: tosca.policies.Root description: The TOSCA Policy Type definition that is used to govern placement of TOSCA nodes or groups of nodes. tosca.policies.Scaling: derived_from: tosca.policies.Root description: The TOSCA Policy Type definition that is used to govern scaling of TOSCA nodes or groups of nodes. tosca.policies.Update: derived_from: tosca.policies.Root description: The TOSCA Policy Type definition that is used to govern update of TOSCA nodes or groups of nodes. tosca.policies.Performance: derived_from: tosca.policies.Root description: The TOSCA Policy Type definition that is used to declare performance requirements for TOSCA nodes or groups of nodes.