| { |
| "Name": "gpu-vm-workflow", |
| "Vars": { |
| "cloud_config_data": { |
| "Required": true, |
| "Description": "Configuration data for the cloud environment to use for the test." |
| }, |
| "build_gcr": { |
| "Required": true, |
| "Description": "container image gcr location" |
| }, |
| "container_image_tag": { |
| "Required": true, |
| "Description": "The tag of the container image." |
| }, |
| "vm_name": { |
| "Required": true, |
| "Description": "The name of the virtual machine instance." |
| }, |
| "vm_project": { |
| "Required": true, |
| "Description": "The project ID where the VM will be created." |
| }, |
| "machine_type": { |
| "Required": true, |
| "Description": "Specifies the machine type." |
| }, |
| "accelerator_type": { |
| "Required": true, |
| "Description": "The resource name of the GPU accelerator. List of supported accelerators [here](https:\/\/cloud.google.com\/compute\/docs\/gpus)" |
| }, |
| "image_project": { |
| "Required": true, |
| "Description": "The project ID for the VM image." |
| }, |
| "image_family": { |
| "Required": true, |
| "Description": "The image family for the VM image." |
| }, |
| "daisy_gcs_bucket": { |
| "Required": true, |
| "Description": "Daisy bucket to be used for the test" |
| } |
| }, |
| "Sources": { |
| "${vm_name}_cloud-config": "${cloud_config_data}" |
| }, |
| "GCSPath": "gs://${daisy_gcs_bucket}/", |
| "Steps": { |
| "create-gpu-vm": { |
| "CreateInstances": [ |
| { |
| "Name": "${vm_name}", |
| "Disks": [ |
| { |
| "InitializeParams": { |
| "SourceImage": "projects/${image_project}/global/images/family/${image_family}", |
| "diskSizeGb": "50" |
| } |
| } |
| ], |
| "Metadata": { |
| "build-gcr": "${build_gcr}", |
| "tag": "${container_image_tag}", |
| "user-data": "${SOURCE:${vm_name}_cloud-config}", |
| "block-project-ssh-keys": "TRUE", |
| "cos-update-strategy": "update_disabled", |
| "google-logging-enabled": "false" |
| }, |
| "guestAccelerators": [ |
| { |
| "acceleratorCount": 1, |
| "acceleratorType": "${accelerator_type}" |
| } |
| ], |
| "Project": "${vm_project}", |
| "machineType": "${machine_type}", |
| "scheduling": { |
| "onHostMaintenance": "TERMINATE" |
| } |
| } |
| ], |
| "Timeout": "20m" |
| }, |
| "wait-for-instance": { |
| "WaitForInstancesSignal": [ |
| { |
| "Name": "${vm_name}", |
| "SerialOutput": { |
| "Port": 1, |
| "SuccessMatch": "TestPass:", |
| "FailureMatch": "TestFail:", |
| "StatusMatch": "TestStatus:" |
| } |
| } |
| ], |
| "Timeout": "20m" |
| }, |
| "delete-instance": { |
| "DeleteResources": { |
| "Instances":["${vm_name}"] |
| } |
| } |
| }, |
| "Dependencies": { |
| "wait-for-instance": [ |
| "create-gpu-vm" |
| ], |
| "delete-instance": ["wait-for-instance"] |
| } |
| } |