Updated on 2022-02-22 GMT+08:00

get_attribute

The get_attribute function is used to obtain the initialization results of other elements in a template.

Syntax

get_attribute: [resourceName, attributeName ]

If the content corresponding to attributeName is a structure body and contains multiple key-value fields, you can extend the definition. The format is as follows:

get_attribute: [resourceName, attributeName1, attributeName2, [...]]

Parameter Description

Table 1 Parameter description

Parameter

Mandatory

Description

resourceName

Yes

Name of a resource customized in the template.

attributeName

Yes

Attribute name of the desired resource. For details about the attribute name, see the outputs section of the element object. If the attribute name defined in the template does not exist, no information is returned.

Currently, for most elements, only their refID and refName can be obtained.

  • refID: unique ID generated after a resource is created.
  • refName: resource name.

Return Value

Attribute value obtained

  • When a single resource is created, the return values of refID and refName are strings.
  • When multiple resources are created (for example, multiple ECS VMs are created at a time), the return values of refID and refName are string arrays.

Examples

  • Obtaining parameters and assign values to the parameters in the outputs section.

    Example: Obtaining the ID of the created my-first-vpc, and then assign it to the vpc_id output parameter of a stack.

    tosca_definitions_version: cloud_tosca_version_1_0
    inputs:
      name:
        default: test-vpc
      cidr:
        default: 10.0.0.0/8  
    node_templates:
      my-first-vpc:
        type: Cloud.VPC.VPC
        properties:
          name: {get_input: name}
          ciddr: {get_input: cidr}
    outputs:
      vpc_id:
        value: {get_attribute: [my-first-vpc,refID]}
  • Obtaining parameters and use them as input parameters for creating other resources.

    Example: Obtaining the ID of the created my-second-vpc and assign a value to the subnet resource as the input for creating the subnet resource. In this way, multiple resources can be created in one blueprint file.

    node_templates:
      my-subnet:
        type: Cloud.VPC.Subnet
        properties:
          name: {get_input: subnet-name}
          cidr: {get_input: vpc-cidr}
          gateway: {get_input: subnet-gateway}
          dnsList: {get_input: dnsList}
          vpc: {get_attribute: [my-second-vpc,refID]}
          availabilityZone: {get_input: az}
        requirements:
          - vpcId:
              node: my-vpc    
      my-second-vpc:
        type: Cloud.VPC.VPC
        properties:
          name: {get_input: vpc-name}
          cidr: {get_input: vpc-cidr}