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 .

