tosca_definitions_version: tosca_simple_yaml_1_0 description: > This template is a test template which contains invalid output needed for substitution mappings. The outputs defined by the topology template have to match the attributes of the node type or the substituted node template, and the observable attributes of the substituted node template have to be defined as attributes of the node type or outputs in the topology template. But this template contains output of my_cpu_output which is not defined in node type of example.TransactionSubsystem, so it will be validated error for substitution mappings. imports: - ../definitions.yaml topology_template: description: Template of a database including its hosting stack. inputs: mq_server_ip: type: string description: IP address of the message queuing server to receive messages from. default: 127.0.0.1 receiver_port: type: integer description: Port to be used for receiving messages. default: 8080 my_cpus: type: integer description: Number of CPUs for the server. default: 2 constraints: - valid_values: [ 1, 2, 4, 8 ] substitution_mappings: node_type: example.TransactionSubsystem capabilities: message_receiver: [ app, message_receiver ] requirements: database_endpoint: [ app, database ] node_templates: app: type: example.SomeApp properties: admin_user: foo pool_size: 10 capabilities: message_receiver: properties: server_ip: { get_input: mq_server_ip } requirements: - host: node: websrv websrv: type: tosca.nodes.WebServer capabilities: data_endpoint: properties: port_name: { get_input: receiver_port } requirements: - host: node: server server: type: tosca.nodes.Compute capabilities: host: properties: disk_size: 10 GB num_cpus: { get_input: my_cpus } mem_size: 4096 MB os: properties: architecture: x86_64 type: Linux distribution: Ubuntu version: 14.04 outputs: receiver_ip: description: private IP address of the message receiver application value: { get_attribute: [ server, private_address ] } receiver_port: description: receiver_port of the message receiver application value: { get_input: receiver_port } my_cpu_output: description: this output is only invalid for substitution mappings value: { get_input: my_cpus }