Connector for Compute Engine

Workflows connector that defines the built-in function used to access Compute Engine within a workflow.

Explore further

For detailed documentation that includes this code sample, see the following:

Code sample

YAML

  # This workflow demonstrates how to use the Compute Engine connector: 
 # Create and start a Compute Engine VM instance, then stop and delete the VM 
 # Each step waits until the long-running operation of stopping or starting the VM completes 
 # After each step, the machine status is verified 
 # Expected output: "SUCCESS" 
 main 
 : 
  
 params 
 : 
  
 [] 
  
 steps 
 : 
  
 - 
  
 init 
 : 
  
 assign 
 : 
  
 - 
  
 project 
 : 
  
 ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} 
  
 - 
  
 zone 
 : 
  
 "us-central1-a" 
  
 - 
  
 instance 
 : 
  
 "INSTANCE_NAME" 
  
 # replace INSTANCE_NAME placeholder 
  
 - 
  
 machineType 
 : 
  
 "e2-micro" 
  
 - 
  
 insert_machine 
 : 
  
 call 
 : 
  
 googleapis.compute.v1.instances.insert 
  
 args 
 : 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 body 
 : 
  
 name 
 : 
  
 ${instance} 
  
 machineType 
 : 
  
 ${"zones/" + zone + "/machineTypes/" + machineType} 
  
 disks 
 : 
  
 - 
  
 initializeParams 
 : 
  
 sourceImage 
 : 
  
 "projects/debian-cloud/global/images/debian-10-buster-v20201112" 
  
 boot 
 : 
  
 true 
  
 autoDelete 
 : 
  
 true 
  
 networkInterfaces 
 : 
  
 - 
  
 network 
 : 
  
 "global/networks/default" 
  
 - 
  
 start_machine 
 : 
  
 call 
 : 
  
 googleapis.compute.v1.instances.start 
  
 args 
 : 
  
 instance 
 : 
  
 ${instance} 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 - 
  
 assert_running 
 : 
  
 call 
 : 
  
 assert_machine_status 
  
 args 
 : 
  
 expected_status 
 : 
  
 "RUNNING" 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 instance 
 : 
  
 ${instance} 
  
 - 
  
 stop_machine 
 : 
  
 call 
 : 
  
 googleapis.compute.v1.instances.stop 
  
 args 
 : 
  
 instance 
 : 
  
 ${instance} 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 - 
  
 assert_terminated 
 : 
  
 call 
 : 
  
 assert_machine_status 
  
 args 
 : 
  
 expected_status 
 : 
  
 "TERMINATED" 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 instance 
 : 
  
 ${instance} 
  
 - 
  
 delete_machine 
 : 
  
 call 
 : 
  
 googleapis.compute.v1.instances.delete 
  
 args 
 : 
  
 instance 
 : 
  
 ${instance} 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 - 
  
 the_end 
 : 
  
 return 
 : 
  
 "SUCCESS" 
 assert_machine_status 
 : 
  
 params 
 : 
  
 [ 
 expected_status 
 , 
  
 project 
 , 
  
 zone 
 , 
  
 instance 
 ] 
  
 steps 
 : 
  
 - 
  
 get_instance 
 : 
  
 call 
 : 
  
 googleapis.compute.v1.instances.get 
  
 args 
 : 
  
 instance 
 : 
  
 ${instance} 
  
 project 
 : 
  
 ${project} 
  
 zone 
 : 
  
 ${zone} 
  
 result 
 : 
  
 instance 
  
 - 
  
 compare 
 : 
  
 switch 
 : 
  
 - 
  
 condition 
 : 
  
 ${instance.status == expected_status} 
  
 next 
 : 
  
 end 
  
 - 
  
 fail 
 : 
  
 raise 
 : 
  
 ${"Expected VM status is " + expected_status + ". Received " + instance.status + " instead."} 
 

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser .

Create a Mobile Website
View Site in Mobile | Classic
Share by: