| { | |
| "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"] | |
| } | |
| } |