Condition Function
Condition functions are usually used to define whether elements need to be deployed, including cond_eq, cond_not, cond_and, cond_or, and cond_if. Except cond_if, other condition functions can only be used in the conditions section. The cond_if function can be used in the conditions, node_templates, and outputs sections.
For example, vm_deploy is used to determine whether to deploy a VM.
tosca_definitions_version: huaweicloud_tosca_version_1_0 conditions: condition_vm_deploy: #The conditions can be met only when inputs parameters are matched. cond_eq: - get_input: vm_deploy - true inputs: image: description: ID of the image used by the Elastic Cloud Server (ECS) type: HuaweiCloud.ECS.Image.Id instance: default: 1 description: number of ECSs to be created subnet: description: ID of the subnet to which the ECS belongs ..vm_deploy: #Determines whether to deploy the VM. default: true type: boolean vpc: description: ID of the Virtual Private Cloud (VPC) to which the ECS belongs node_templates: vm: condition: condition_vm_deploy # The VM will be deployed only when the conditions are met. type: HuaweiCloud.ECS.CloudServer properties: availabilityZone: cn-south-1a imageId: get_input: image flavor: s3.small.1 instances: get_input: instance name: my-ecs nics: - subnetId: get_input: subnet rootVolume: size: 40 volumeType: SATA vpcId: get_input: vpc myecs: type: HuaweiCloud.ECS.CloudServer properties: name: my-ecs instances: get_input: instance imageId: get_input: image flavor: s3.small.1 vpcId: get_input: vpc availabilityZone: cn-south-1a nics: - subnetId: get_input: subnet rootVolume: volumeType: SSD size: 40
cond_eq
The cond_eq function is used to determine whether an equal condition is met. It is generally used to determine whether an input parameter is consistent with an expected value.
Syntax |
Parameter Description |
Return Value |
---|---|---|
cond_eq: [cond1, cond2] |
|
When the value of cond1 is the same as that of cond2, true is returned; otherwise, false is returned. |
The following describes how to use the cond_eq function to determine whether the input parameter is consistent with an expected value:
inputs: a: type: string default: 10 conditions: matchA: cond_eq: [{get_input: a}, 10]
cond_not
The cond_not function is used to reverse the calculation result and is usually nested with other condition functions.
Syntax |
Parameter Description |
Return Value |
---|---|---|
cond_not: cond |
|
If the calculation result of the condition expression is true, false is returned. If the result is false, true is returned. |
The following describes how to use the cond_not function to determine whether the input parameter is consistent with an expected value:
inputs: a: type: boolean default: true conditions: matchA: cond_not: {get_input: a}
cond_and
The cond_and function is used to check whether multiple conditions are met. This function supports 2 to 10 conditions.
Syntax |
Parameter Description |
Return Value |
---|---|---|
cond_and: [cond1, cond2...condn] |
|
If all parameter conditions are met, true is returned; otherwise, false is returned. |
The following describes how to use the cond_and function to check whether the combination conditions are met:
inputs: a: type: integer default: 10 b: type: string default: debug conditions: matchAnd: cond_and: [{cond_eq: [{get_input: a}, 10]}, {cond_eq: [{get_input: b}, debug]}] # The condition of matchAnd can be met only when both conditions 1 and 2 are met.
cond_or
The cond_or function is used to determine whether any of multiple conditions is met. This function supports 2 to 10 conditions.
Syntax |
Parameter Description |
Return Value |
---|---|---|
cond_or: [cond1, cond2...condn] |
|
If any condition is met, true is returned. If no condition is met, false is returned. |
The following describes how to use the cond_or function to check whether the combination conditions are met:
inputs: a: type: integer default: 10 b: type: string default: debug conditions: matchOr: cond_or: [{cond_eq: [{get_input: a}, 8]}, {cond_eq: [{get_input: b}, debug]}] # The condition of matchOr can be met when either condition is met.
cond_if
The cond_if function is a triplet expression used to assign values to properties. It is generally used in the property structure of node_templates.
Syntax |
Parameter Description |
Return Value |
---|---|---|
cond_if: [condition, value_true, value_false] |
|
If the condition is met, value_true is returned. If the condition is not met, value_false is returned. |
The following describes how to use the cond_if function to define property values:
inputs: a: type: integer default: 10 b: type: string default: debug conditions: matchOr: cond_or: [{cond_eq: [{get_input: a}, 8]}, {cond_eq: [{get_input: b}, debug]}] # The condition of matchOr can be met when either condition is met. node_templates: vm: type: HuaweiCloud.ECS.CloudServer properties: vpcId: vpc-id-123 name: myvm nics: - subnetId: subnet-id-123 imageId: {cond_if: [matchOr, image-debug, image-product]} # cond_if is used to define a condition. If the debugging mode is used, debugging images are used; otherwise, product images are used. instances: 1 availabilityZone: az-1 rootVolume: volumeType: SATA size: 40 flavor: flavor-1
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.