1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.batch.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/batch/v1/task.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto"; 23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 24*d5c09012SAndroid Build Coastguard Worker 25*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Batch.V1"; 26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/batch/apiv1/batchpb;batchpb"; 27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "JobProto"; 29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.batch.v1"; 30*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GCB"; 31*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Batch\\V1"; 32*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::Batch::V1"; 33*d5c09012SAndroid Build Coastguard Worker 34*d5c09012SAndroid Build Coastguard Worker// The Cloud Batch Job description. 35*d5c09012SAndroid Build Coastguard Workermessage Job { 36*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 37*d5c09012SAndroid Build Coastguard Worker type: "batch.googleapis.com/Job" 38*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/jobs/{job}" 39*d5c09012SAndroid Build Coastguard Worker }; 40*d5c09012SAndroid Build Coastguard Worker 41*d5c09012SAndroid Build Coastguard Worker // Output only. Job name. 42*d5c09012SAndroid Build Coastguard Worker // For example: "projects/123456/locations/us-central1/jobs/job01". 43*d5c09012SAndroid Build Coastguard Worker string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 44*d5c09012SAndroid Build Coastguard Worker 45*d5c09012SAndroid Build Coastguard Worker // Output only. A system generated unique ID for the Job. 46*d5c09012SAndroid Build Coastguard Worker string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; 47*d5c09012SAndroid Build Coastguard Worker 48*d5c09012SAndroid Build Coastguard Worker // Priority of the Job. 49*d5c09012SAndroid Build Coastguard Worker // The valid value range is [0, 100). Default value is 0. 50*d5c09012SAndroid Build Coastguard Worker // Higher value indicates higher priority. 51*d5c09012SAndroid Build Coastguard Worker // A job with higher priority value is more likely to run earlier if all other 52*d5c09012SAndroid Build Coastguard Worker // requirements are satisfied. 53*d5c09012SAndroid Build Coastguard Worker int64 priority = 3; 54*d5c09012SAndroid Build Coastguard Worker 55*d5c09012SAndroid Build Coastguard Worker // Required. TaskGroups in the Job. Only one TaskGroup is supported now. 56*d5c09012SAndroid Build Coastguard Worker repeated TaskGroup task_groups = 4 [(google.api.field_behavior) = REQUIRED]; 57*d5c09012SAndroid Build Coastguard Worker 58*d5c09012SAndroid Build Coastguard Worker // Compute resource allocation for all TaskGroups in the Job. 59*d5c09012SAndroid Build Coastguard Worker AllocationPolicy allocation_policy = 7; 60*d5c09012SAndroid Build Coastguard Worker 61*d5c09012SAndroid Build Coastguard Worker // Labels for the Job. Labels could be user provided or system generated. 62*d5c09012SAndroid Build Coastguard Worker // For example, 63*d5c09012SAndroid Build Coastguard Worker // "labels": { 64*d5c09012SAndroid Build Coastguard Worker // "department": "finance", 65*d5c09012SAndroid Build Coastguard Worker // "environment": "test" 66*d5c09012SAndroid Build Coastguard Worker // } 67*d5c09012SAndroid Build Coastguard Worker // You can assign up to 64 labels. [Google Compute Engine label 68*d5c09012SAndroid Build Coastguard Worker // restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) 69*d5c09012SAndroid Build Coastguard Worker // apply. 70*d5c09012SAndroid Build Coastguard Worker // Label names that start with "goog-" or "google-" are reserved. 71*d5c09012SAndroid Build Coastguard Worker map<string, string> labels = 8; 72*d5c09012SAndroid Build Coastguard Worker 73*d5c09012SAndroid Build Coastguard Worker // Output only. Job status. It is read only for users. 74*d5c09012SAndroid Build Coastguard Worker JobStatus status = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; 75*d5c09012SAndroid Build Coastguard Worker 76*d5c09012SAndroid Build Coastguard Worker // Output only. When the Job was created. 77*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp create_time = 11 78*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 79*d5c09012SAndroid Build Coastguard Worker 80*d5c09012SAndroid Build Coastguard Worker // Output only. The last time the Job was updated. 81*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp update_time = 12 82*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 83*d5c09012SAndroid Build Coastguard Worker 84*d5c09012SAndroid Build Coastguard Worker // Log preservation policy for the Job. 85*d5c09012SAndroid Build Coastguard Worker LogsPolicy logs_policy = 13; 86*d5c09012SAndroid Build Coastguard Worker 87*d5c09012SAndroid Build Coastguard Worker // Notification configurations. 88*d5c09012SAndroid Build Coastguard Worker repeated JobNotification notifications = 14; 89*d5c09012SAndroid Build Coastguard Worker} 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker// LogsPolicy describes how outputs from a Job's Tasks (stdout/stderr) will be 92*d5c09012SAndroid Build Coastguard Worker// preserved. 93*d5c09012SAndroid Build Coastguard Workermessage LogsPolicy { 94*d5c09012SAndroid Build Coastguard Worker // `CloudLoggingOption` contains additional settings for Cloud Logging logs 95*d5c09012SAndroid Build Coastguard Worker // generated by Batch job. 96*d5c09012SAndroid Build Coastguard Worker message CloudLoggingOption { 97*d5c09012SAndroid Build Coastguard Worker // Optional. Set this flag to true to change the [monitored resource 98*d5c09012SAndroid Build Coastguard Worker // type](https://cloud.google.com/monitoring/api/resources) for 99*d5c09012SAndroid Build Coastguard Worker // Cloud Logging logs generated by this Batch job from 100*d5c09012SAndroid Build Coastguard Worker // the 101*d5c09012SAndroid Build Coastguard Worker // [`batch.googleapis.com/Job`](https://cloud.google.com/monitoring/api/resources#tag_batch.googleapis.com/Job) 102*d5c09012SAndroid Build Coastguard Worker // type to the formerly used 103*d5c09012SAndroid Build Coastguard Worker // [`generic_task`](https://cloud.google.com/monitoring/api/resources#tag_generic_task) 104*d5c09012SAndroid Build Coastguard Worker // type. 105*d5c09012SAndroid Build Coastguard Worker bool use_generic_task_monitored_resource = 1 106*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 107*d5c09012SAndroid Build Coastguard Worker } 108*d5c09012SAndroid Build Coastguard Worker 109*d5c09012SAndroid Build Coastguard Worker // The destination (if any) for logs. 110*d5c09012SAndroid Build Coastguard Worker enum Destination { 111*d5c09012SAndroid Build Coastguard Worker // Logs are not preserved. 112*d5c09012SAndroid Build Coastguard Worker DESTINATION_UNSPECIFIED = 0; 113*d5c09012SAndroid Build Coastguard Worker 114*d5c09012SAndroid Build Coastguard Worker // Logs are streamed to Cloud Logging. 115*d5c09012SAndroid Build Coastguard Worker CLOUD_LOGGING = 1; 116*d5c09012SAndroid Build Coastguard Worker 117*d5c09012SAndroid Build Coastguard Worker // Logs are saved to a file path. 118*d5c09012SAndroid Build Coastguard Worker PATH = 2; 119*d5c09012SAndroid Build Coastguard Worker } 120*d5c09012SAndroid Build Coastguard Worker 121*d5c09012SAndroid Build Coastguard Worker // Where logs should be saved. 122*d5c09012SAndroid Build Coastguard Worker Destination destination = 1; 123*d5c09012SAndroid Build Coastguard Worker 124*d5c09012SAndroid Build Coastguard Worker // The path to which logs are saved when the destination = PATH. This can be a 125*d5c09012SAndroid Build Coastguard Worker // local file path on the VM, or under the mount point of a Persistent Disk or 126*d5c09012SAndroid Build Coastguard Worker // Filestore, or a Cloud Storage path. 127*d5c09012SAndroid Build Coastguard Worker string logs_path = 2; 128*d5c09012SAndroid Build Coastguard Worker 129*d5c09012SAndroid Build Coastguard Worker // Optional. Additional settings for Cloud Logging. It will only take effect 130*d5c09012SAndroid Build Coastguard Worker // when the destination of `LogsPolicy` is set to `CLOUD_LOGGING`. 131*d5c09012SAndroid Build Coastguard Worker CloudLoggingOption cloud_logging_option = 3 132*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 133*d5c09012SAndroid Build Coastguard Worker} 134*d5c09012SAndroid Build Coastguard Worker 135*d5c09012SAndroid Build Coastguard Worker// Job status. 136*d5c09012SAndroid Build Coastguard Workermessage JobStatus { 137*d5c09012SAndroid Build Coastguard Worker // VM instance status. 138*d5c09012SAndroid Build Coastguard Worker message InstanceStatus { 139*d5c09012SAndroid Build Coastguard Worker // The Compute Engine machine type. 140*d5c09012SAndroid Build Coastguard Worker string machine_type = 1; 141*d5c09012SAndroid Build Coastguard Worker 142*d5c09012SAndroid Build Coastguard Worker // The VM instance provisioning model. 143*d5c09012SAndroid Build Coastguard Worker AllocationPolicy.ProvisioningModel provisioning_model = 2; 144*d5c09012SAndroid Build Coastguard Worker 145*d5c09012SAndroid Build Coastguard Worker // The max number of tasks can be assigned to this instance type. 146*d5c09012SAndroid Build Coastguard Worker int64 task_pack = 3; 147*d5c09012SAndroid Build Coastguard Worker 148*d5c09012SAndroid Build Coastguard Worker // The VM boot disk. 149*d5c09012SAndroid Build Coastguard Worker AllocationPolicy.Disk boot_disk = 4; 150*d5c09012SAndroid Build Coastguard Worker } 151*d5c09012SAndroid Build Coastguard Worker 152*d5c09012SAndroid Build Coastguard Worker // Aggregated task status for a TaskGroup. 153*d5c09012SAndroid Build Coastguard Worker message TaskGroupStatus { 154*d5c09012SAndroid Build Coastguard Worker // Count of task in each state in the TaskGroup. 155*d5c09012SAndroid Build Coastguard Worker // The map key is task state name. 156*d5c09012SAndroid Build Coastguard Worker map<string, int64> counts = 1; 157*d5c09012SAndroid Build Coastguard Worker 158*d5c09012SAndroid Build Coastguard Worker // Status of instances allocated for the TaskGroup. 159*d5c09012SAndroid Build Coastguard Worker repeated InstanceStatus instances = 2; 160*d5c09012SAndroid Build Coastguard Worker } 161*d5c09012SAndroid Build Coastguard Worker 162*d5c09012SAndroid Build Coastguard Worker // Valid Job states. 163*d5c09012SAndroid Build Coastguard Worker enum State { 164*d5c09012SAndroid Build Coastguard Worker // Job state unspecified. 165*d5c09012SAndroid Build Coastguard Worker STATE_UNSPECIFIED = 0; 166*d5c09012SAndroid Build Coastguard Worker 167*d5c09012SAndroid Build Coastguard Worker // Job is admitted (validated and persisted) and waiting for resources. 168*d5c09012SAndroid Build Coastguard Worker QUEUED = 1; 169*d5c09012SAndroid Build Coastguard Worker 170*d5c09012SAndroid Build Coastguard Worker // Job is scheduled to run as soon as resource allocation is ready. 171*d5c09012SAndroid Build Coastguard Worker // The resource allocation may happen at a later time but with a high 172*d5c09012SAndroid Build Coastguard Worker // chance to succeed. 173*d5c09012SAndroid Build Coastguard Worker SCHEDULED = 2; 174*d5c09012SAndroid Build Coastguard Worker 175*d5c09012SAndroid Build Coastguard Worker // Resource allocation has been successful. At least one Task in the Job is 176*d5c09012SAndroid Build Coastguard Worker // RUNNING. 177*d5c09012SAndroid Build Coastguard Worker RUNNING = 3; 178*d5c09012SAndroid Build Coastguard Worker 179*d5c09012SAndroid Build Coastguard Worker // All Tasks in the Job have finished successfully. 180*d5c09012SAndroid Build Coastguard Worker SUCCEEDED = 4; 181*d5c09012SAndroid Build Coastguard Worker 182*d5c09012SAndroid Build Coastguard Worker // At least one Task in the Job has failed. 183*d5c09012SAndroid Build Coastguard Worker FAILED = 5; 184*d5c09012SAndroid Build Coastguard Worker 185*d5c09012SAndroid Build Coastguard Worker // The Job will be deleted, but has not been deleted yet. Typically this is 186*d5c09012SAndroid Build Coastguard Worker // because resources used by the Job are still being cleaned up. 187*d5c09012SAndroid Build Coastguard Worker DELETION_IN_PROGRESS = 6; 188*d5c09012SAndroid Build Coastguard Worker } 189*d5c09012SAndroid Build Coastguard Worker 190*d5c09012SAndroid Build Coastguard Worker // Job state 191*d5c09012SAndroid Build Coastguard Worker State state = 1; 192*d5c09012SAndroid Build Coastguard Worker 193*d5c09012SAndroid Build Coastguard Worker // Job status events 194*d5c09012SAndroid Build Coastguard Worker repeated StatusEvent status_events = 2; 195*d5c09012SAndroid Build Coastguard Worker 196*d5c09012SAndroid Build Coastguard Worker // Aggregated task status for each TaskGroup in the Job. 197*d5c09012SAndroid Build Coastguard Worker // The map key is TaskGroup ID. 198*d5c09012SAndroid Build Coastguard Worker map<string, TaskGroupStatus> task_groups = 4; 199*d5c09012SAndroid Build Coastguard Worker 200*d5c09012SAndroid Build Coastguard Worker // The duration of time that the Job spent in status RUNNING. 201*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration run_duration = 5; 202*d5c09012SAndroid Build Coastguard Worker} 203*d5c09012SAndroid Build Coastguard Worker 204*d5c09012SAndroid Build Coastguard Worker// Notification configurations. 205*d5c09012SAndroid Build Coastguard Workermessage JobNotification { 206*d5c09012SAndroid Build Coastguard Worker // Message details. 207*d5c09012SAndroid Build Coastguard Worker // Describe the conditions under which messages will be sent. 208*d5c09012SAndroid Build Coastguard Worker // If no attribute is defined, no message will be sent by default. 209*d5c09012SAndroid Build Coastguard Worker // One message should specify either the job or the task level attributes, 210*d5c09012SAndroid Build Coastguard Worker // but not both. For example, 211*d5c09012SAndroid Build Coastguard Worker // job level: JOB_STATE_CHANGED and/or a specified new_job_state; 212*d5c09012SAndroid Build Coastguard Worker // task level: TASK_STATE_CHANGED and/or a specified new_task_state. 213*d5c09012SAndroid Build Coastguard Worker message Message { 214*d5c09012SAndroid Build Coastguard Worker // The message type. 215*d5c09012SAndroid Build Coastguard Worker Type type = 1; 216*d5c09012SAndroid Build Coastguard Worker 217*d5c09012SAndroid Build Coastguard Worker // The new job state. 218*d5c09012SAndroid Build Coastguard Worker JobStatus.State new_job_state = 2; 219*d5c09012SAndroid Build Coastguard Worker 220*d5c09012SAndroid Build Coastguard Worker // The new task state. 221*d5c09012SAndroid Build Coastguard Worker TaskStatus.State new_task_state = 3; 222*d5c09012SAndroid Build Coastguard Worker } 223*d5c09012SAndroid Build Coastguard Worker 224*d5c09012SAndroid Build Coastguard Worker // The message type. 225*d5c09012SAndroid Build Coastguard Worker enum Type { 226*d5c09012SAndroid Build Coastguard Worker // Unspecified. 227*d5c09012SAndroid Build Coastguard Worker TYPE_UNSPECIFIED = 0; 228*d5c09012SAndroid Build Coastguard Worker 229*d5c09012SAndroid Build Coastguard Worker // Notify users that the job state has changed. 230*d5c09012SAndroid Build Coastguard Worker JOB_STATE_CHANGED = 1; 231*d5c09012SAndroid Build Coastguard Worker 232*d5c09012SAndroid Build Coastguard Worker // Notify users that the task state has changed. 233*d5c09012SAndroid Build Coastguard Worker TASK_STATE_CHANGED = 2; 234*d5c09012SAndroid Build Coastguard Worker } 235*d5c09012SAndroid Build Coastguard Worker 236*d5c09012SAndroid Build Coastguard Worker // The Pub/Sub topic where notifications like the job state changes 237*d5c09012SAndroid Build Coastguard Worker // will be published. The topic must exist in the same project as 238*d5c09012SAndroid Build Coastguard Worker // the job and billings will be charged to this project. 239*d5c09012SAndroid Build Coastguard Worker // If not specified, no Pub/Sub messages will be sent. 240*d5c09012SAndroid Build Coastguard Worker // Topic format: `projects/{project}/topics/{topic}`. 241*d5c09012SAndroid Build Coastguard Worker string pubsub_topic = 1; 242*d5c09012SAndroid Build Coastguard Worker 243*d5c09012SAndroid Build Coastguard Worker // The attribute requirements of messages to be sent to this Pub/Sub topic. 244*d5c09012SAndroid Build Coastguard Worker // Without this field, no message will be sent. 245*d5c09012SAndroid Build Coastguard Worker Message message = 2; 246*d5c09012SAndroid Build Coastguard Worker} 247*d5c09012SAndroid Build Coastguard Worker 248*d5c09012SAndroid Build Coastguard Worker// A Job's resource allocation policy describes when, where, and how compute 249*d5c09012SAndroid Build Coastguard Worker// resources should be allocated for the Job. 250*d5c09012SAndroid Build Coastguard Workermessage AllocationPolicy { 251*d5c09012SAndroid Build Coastguard Worker message LocationPolicy { 252*d5c09012SAndroid Build Coastguard Worker // A list of allowed location names represented by internal URLs. 253*d5c09012SAndroid Build Coastguard Worker // 254*d5c09012SAndroid Build Coastguard Worker // Each location can be a region or a zone. 255*d5c09012SAndroid Build Coastguard Worker // Only one region or multiple zones in one region is supported now. 256*d5c09012SAndroid Build Coastguard Worker // For example, 257*d5c09012SAndroid Build Coastguard Worker // ["regions/us-central1"] allow VMs in any zones in region us-central1. 258*d5c09012SAndroid Build Coastguard Worker // ["zones/us-central1-a", "zones/us-central1-c"] only allow VMs 259*d5c09012SAndroid Build Coastguard Worker // in zones us-central1-a and us-central1-c. 260*d5c09012SAndroid Build Coastguard Worker // 261*d5c09012SAndroid Build Coastguard Worker // All locations end up in different regions would cause errors. 262*d5c09012SAndroid Build Coastguard Worker // For example, 263*d5c09012SAndroid Build Coastguard Worker // ["regions/us-central1", "zones/us-central1-a", "zones/us-central1-b", 264*d5c09012SAndroid Build Coastguard Worker // "zones/us-west1-a"] contains 2 regions "us-central1" and 265*d5c09012SAndroid Build Coastguard Worker // "us-west1". An error is expected in this case. 266*d5c09012SAndroid Build Coastguard Worker repeated string allowed_locations = 1; 267*d5c09012SAndroid Build Coastguard Worker } 268*d5c09012SAndroid Build Coastguard Worker 269*d5c09012SAndroid Build Coastguard Worker // A new persistent disk or a local ssd. 270*d5c09012SAndroid Build Coastguard Worker // A VM can only have one local SSD setting but multiple local SSD partitions. 271*d5c09012SAndroid Build Coastguard Worker // See https://cloud.google.com/compute/docs/disks#pdspecs and 272*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/compute/docs/disks#localssds. 273*d5c09012SAndroid Build Coastguard Worker message Disk { 274*d5c09012SAndroid Build Coastguard Worker // A data source from which a PD will be created. 275*d5c09012SAndroid Build Coastguard Worker oneof data_source { 276*d5c09012SAndroid Build Coastguard Worker // URL for a VM image to use as the data source for this disk. 277*d5c09012SAndroid Build Coastguard Worker // For example, the following are all valid URLs: 278*d5c09012SAndroid Build Coastguard Worker // 279*d5c09012SAndroid Build Coastguard Worker // * Specify the image by its family name: 280*d5c09012SAndroid Build Coastguard Worker // projects/{project}/global/images/family/{image_family} 281*d5c09012SAndroid Build Coastguard Worker // * Specify the image version: 282*d5c09012SAndroid Build Coastguard Worker // projects/{project}/global/images/{image_version} 283*d5c09012SAndroid Build Coastguard Worker // 284*d5c09012SAndroid Build Coastguard Worker // You can also use Batch customized image in short names. 285*d5c09012SAndroid Build Coastguard Worker // The following image values are supported for a boot disk: 286*d5c09012SAndroid Build Coastguard Worker // 287*d5c09012SAndroid Build Coastguard Worker // * `batch-debian`: use Batch Debian images. 288*d5c09012SAndroid Build Coastguard Worker // * `batch-centos`: use Batch CentOS images. 289*d5c09012SAndroid Build Coastguard Worker // * `batch-cos`: use Batch Container-Optimized images. 290*d5c09012SAndroid Build Coastguard Worker // * `batch-hpc-centos`: use Batch HPC CentOS images. 291*d5c09012SAndroid Build Coastguard Worker // * `batch-hpc-rocky`: use Batch HPC Rocky Linux images. 292*d5c09012SAndroid Build Coastguard Worker string image = 4; 293*d5c09012SAndroid Build Coastguard Worker 294*d5c09012SAndroid Build Coastguard Worker // Name of a snapshot used as the data source. 295*d5c09012SAndroid Build Coastguard Worker // Snapshot is not supported as boot disk now. 296*d5c09012SAndroid Build Coastguard Worker string snapshot = 5; 297*d5c09012SAndroid Build Coastguard Worker } 298*d5c09012SAndroid Build Coastguard Worker 299*d5c09012SAndroid Build Coastguard Worker // Disk type as shown in `gcloud compute disk-types list`. 300*d5c09012SAndroid Build Coastguard Worker // For example, local SSD uses type "local-ssd". 301*d5c09012SAndroid Build Coastguard Worker // Persistent disks and boot disks use "pd-balanced", "pd-extreme", "pd-ssd" 302*d5c09012SAndroid Build Coastguard Worker // or "pd-standard". 303*d5c09012SAndroid Build Coastguard Worker string type = 1; 304*d5c09012SAndroid Build Coastguard Worker 305*d5c09012SAndroid Build Coastguard Worker // Disk size in GB. 306*d5c09012SAndroid Build Coastguard Worker // 307*d5c09012SAndroid Build Coastguard Worker // **Non-Boot Disk**: 308*d5c09012SAndroid Build Coastguard Worker // If the `type` specifies a persistent disk, this field 309*d5c09012SAndroid Build Coastguard Worker // is ignored if `data_source` is set as `image` or `snapshot`. 310*d5c09012SAndroid Build Coastguard Worker // If the `type` specifies a local SSD, this field should be a multiple of 311*d5c09012SAndroid Build Coastguard Worker // 375 GB, otherwise, the final size will be the next greater multiple of 312*d5c09012SAndroid Build Coastguard Worker // 375 GB. 313*d5c09012SAndroid Build Coastguard Worker // 314*d5c09012SAndroid Build Coastguard Worker // **Boot Disk**: 315*d5c09012SAndroid Build Coastguard Worker // Batch will calculate the boot disk size based on source 316*d5c09012SAndroid Build Coastguard Worker // image and task requirements if you do not speicify the size. 317*d5c09012SAndroid Build Coastguard Worker // If both this field and the `boot_disk_mib` field in task spec's 318*d5c09012SAndroid Build Coastguard Worker // `compute_resource` are defined, Batch will only honor this field. 319*d5c09012SAndroid Build Coastguard Worker // Also, this field should be no smaller than the source disk's 320*d5c09012SAndroid Build Coastguard Worker // size when the `data_source` is set as `snapshot` or `image`. 321*d5c09012SAndroid Build Coastguard Worker // For example, if you set an image as the `data_source` field and the 322*d5c09012SAndroid Build Coastguard Worker // image's default disk size 30 GB, you can only use this field to make the 323*d5c09012SAndroid Build Coastguard Worker // disk larger or equal to 30 GB. 324*d5c09012SAndroid Build Coastguard Worker int64 size_gb = 2; 325*d5c09012SAndroid Build Coastguard Worker 326*d5c09012SAndroid Build Coastguard Worker // Local SSDs are available through both "SCSI" and "NVMe" interfaces. 327*d5c09012SAndroid Build Coastguard Worker // If not indicated, "NVMe" will be the default one for local ssds. 328*d5c09012SAndroid Build Coastguard Worker // This field is ignored for persistent disks as the interface is chosen 329*d5c09012SAndroid Build Coastguard Worker // automatically. See 330*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/compute/docs/disks/persistent-disks#choose_an_interface. 331*d5c09012SAndroid Build Coastguard Worker string disk_interface = 6; 332*d5c09012SAndroid Build Coastguard Worker } 333*d5c09012SAndroid Build Coastguard Worker 334*d5c09012SAndroid Build Coastguard Worker // A new or an existing persistent disk (PD) or a local ssd attached to a VM 335*d5c09012SAndroid Build Coastguard Worker // instance. 336*d5c09012SAndroid Build Coastguard Worker message AttachedDisk { 337*d5c09012SAndroid Build Coastguard Worker oneof attached { 338*d5c09012SAndroid Build Coastguard Worker Disk new_disk = 1; 339*d5c09012SAndroid Build Coastguard Worker 340*d5c09012SAndroid Build Coastguard Worker // Name of an existing PD. 341*d5c09012SAndroid Build Coastguard Worker string existing_disk = 2; 342*d5c09012SAndroid Build Coastguard Worker } 343*d5c09012SAndroid Build Coastguard Worker 344*d5c09012SAndroid Build Coastguard Worker // Device name that the guest operating system will see. 345*d5c09012SAndroid Build Coastguard Worker // It is used by Runnable.volumes field to mount disks. So please specify 346*d5c09012SAndroid Build Coastguard Worker // the device_name if you want Batch to help mount the disk, and it should 347*d5c09012SAndroid Build Coastguard Worker // match the device_name field in volumes. 348*d5c09012SAndroid Build Coastguard Worker string device_name = 3; 349*d5c09012SAndroid Build Coastguard Worker } 350*d5c09012SAndroid Build Coastguard Worker 351*d5c09012SAndroid Build Coastguard Worker // Accelerator describes Compute Engine accelerators to be attached to the VM. 352*d5c09012SAndroid Build Coastguard Worker message Accelerator { 353*d5c09012SAndroid Build Coastguard Worker // The accelerator type. For example, "nvidia-tesla-t4". 354*d5c09012SAndroid Build Coastguard Worker // See `gcloud compute accelerator-types list`. 355*d5c09012SAndroid Build Coastguard Worker string type = 1; 356*d5c09012SAndroid Build Coastguard Worker 357*d5c09012SAndroid Build Coastguard Worker // The number of accelerators of this type. 358*d5c09012SAndroid Build Coastguard Worker int64 count = 2; 359*d5c09012SAndroid Build Coastguard Worker 360*d5c09012SAndroid Build Coastguard Worker // Deprecated: please use instances[0].install_gpu_drivers instead. 361*d5c09012SAndroid Build Coastguard Worker bool install_gpu_drivers = 3 [deprecated = true]; 362*d5c09012SAndroid Build Coastguard Worker 363*d5c09012SAndroid Build Coastguard Worker // Optional. The NVIDIA GPU driver version that should be installed for this 364*d5c09012SAndroid Build Coastguard Worker // type. 365*d5c09012SAndroid Build Coastguard Worker // 366*d5c09012SAndroid Build Coastguard Worker // You can define the specific driver version such as "470.103.01", 367*d5c09012SAndroid Build Coastguard Worker // following the driver version requirements in 368*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#minimum-driver. 369*d5c09012SAndroid Build Coastguard Worker // Batch will install the specific accelerator driver if qualified. 370*d5c09012SAndroid Build Coastguard Worker string driver_version = 4 [(google.api.field_behavior) = OPTIONAL]; 371*d5c09012SAndroid Build Coastguard Worker } 372*d5c09012SAndroid Build Coastguard Worker 373*d5c09012SAndroid Build Coastguard Worker // InstancePolicy describes an instance type and resources attached to each VM 374*d5c09012SAndroid Build Coastguard Worker // created by this InstancePolicy. 375*d5c09012SAndroid Build Coastguard Worker message InstancePolicy { 376*d5c09012SAndroid Build Coastguard Worker // The Compute Engine machine type. 377*d5c09012SAndroid Build Coastguard Worker string machine_type = 2; 378*d5c09012SAndroid Build Coastguard Worker 379*d5c09012SAndroid Build Coastguard Worker // The minimum CPU platform. 380*d5c09012SAndroid Build Coastguard Worker // See 381*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform. 382*d5c09012SAndroid Build Coastguard Worker string min_cpu_platform = 3; 383*d5c09012SAndroid Build Coastguard Worker 384*d5c09012SAndroid Build Coastguard Worker // The provisioning model. 385*d5c09012SAndroid Build Coastguard Worker ProvisioningModel provisioning_model = 4; 386*d5c09012SAndroid Build Coastguard Worker 387*d5c09012SAndroid Build Coastguard Worker // The accelerators attached to each VM instance. 388*d5c09012SAndroid Build Coastguard Worker repeated Accelerator accelerators = 5; 389*d5c09012SAndroid Build Coastguard Worker 390*d5c09012SAndroid Build Coastguard Worker // Boot disk to be created and attached to each VM by this InstancePolicy. 391*d5c09012SAndroid Build Coastguard Worker // Boot disk will be deleted when the VM is deleted. 392*d5c09012SAndroid Build Coastguard Worker // Batch API now only supports booting from image. 393*d5c09012SAndroid Build Coastguard Worker Disk boot_disk = 8; 394*d5c09012SAndroid Build Coastguard Worker 395*d5c09012SAndroid Build Coastguard Worker // Non-boot disks to be attached for each VM created by this InstancePolicy. 396*d5c09012SAndroid Build Coastguard Worker // New disks will be deleted when the VM is deleted. 397*d5c09012SAndroid Build Coastguard Worker // A non-boot disk is a disk that can be of a device with a 398*d5c09012SAndroid Build Coastguard Worker // file system or a raw storage drive that is not ready for data 399*d5c09012SAndroid Build Coastguard Worker // storage and accessing. 400*d5c09012SAndroid Build Coastguard Worker repeated AttachedDisk disks = 6; 401*d5c09012SAndroid Build Coastguard Worker 402*d5c09012SAndroid Build Coastguard Worker // Optional. If specified, VMs will consume only the specified reservation. 403*d5c09012SAndroid Build Coastguard Worker // If not specified (default), VMs will consume any applicable reservation. 404*d5c09012SAndroid Build Coastguard Worker string reservation = 7 [(google.api.field_behavior) = OPTIONAL]; 405*d5c09012SAndroid Build Coastguard Worker } 406*d5c09012SAndroid Build Coastguard Worker 407*d5c09012SAndroid Build Coastguard Worker // InstancePolicyOrTemplate lets you define the type of resources to use for 408*d5c09012SAndroid Build Coastguard Worker // this job either with an InstancePolicy or an instance template. 409*d5c09012SAndroid Build Coastguard Worker // If undefined, Batch picks the type of VM to use and doesn't include 410*d5c09012SAndroid Build Coastguard Worker // optional VM resources such as GPUs and extra disks. 411*d5c09012SAndroid Build Coastguard Worker message InstancePolicyOrTemplate { 412*d5c09012SAndroid Build Coastguard Worker oneof policy_template { 413*d5c09012SAndroid Build Coastguard Worker // InstancePolicy. 414*d5c09012SAndroid Build Coastguard Worker InstancePolicy policy = 1; 415*d5c09012SAndroid Build Coastguard Worker 416*d5c09012SAndroid Build Coastguard Worker // Name of an instance template used to create VMs. 417*d5c09012SAndroid Build Coastguard Worker // Named the field as 'instance_template' instead of 'template' to avoid 418*d5c09012SAndroid Build Coastguard Worker // c++ keyword conflict. 419*d5c09012SAndroid Build Coastguard Worker string instance_template = 2; 420*d5c09012SAndroid Build Coastguard Worker } 421*d5c09012SAndroid Build Coastguard Worker 422*d5c09012SAndroid Build Coastguard Worker // Set this field true if users want Batch to help fetch drivers from a 423*d5c09012SAndroid Build Coastguard Worker // third party location and install them for GPUs specified in 424*d5c09012SAndroid Build Coastguard Worker // policy.accelerators or instance_template on their behalf. Default is 425*d5c09012SAndroid Build Coastguard Worker // false. 426*d5c09012SAndroid Build Coastguard Worker // 427*d5c09012SAndroid Build Coastguard Worker // For Container-Optimized Image cases, Batch will install the 428*d5c09012SAndroid Build Coastguard Worker // accelerator driver following milestones of 429*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/container-optimized-os/docs/release-notes. For 430*d5c09012SAndroid Build Coastguard Worker // non Container-Optimized Image cases, following 431*d5c09012SAndroid Build Coastguard Worker // https://github.com/GoogleCloudPlatform/compute-gpu-installation/blob/main/linux/install_gpu_driver.py. 432*d5c09012SAndroid Build Coastguard Worker bool install_gpu_drivers = 3; 433*d5c09012SAndroid Build Coastguard Worker } 434*d5c09012SAndroid Build Coastguard Worker 435*d5c09012SAndroid Build Coastguard Worker // A network interface. 436*d5c09012SAndroid Build Coastguard Worker message NetworkInterface { 437*d5c09012SAndroid Build Coastguard Worker // The URL of an existing network resource. 438*d5c09012SAndroid Build Coastguard Worker // You can specify the network as a full or partial URL. 439*d5c09012SAndroid Build Coastguard Worker // 440*d5c09012SAndroid Build Coastguard Worker // For example, the following are all valid URLs: 441*d5c09012SAndroid Build Coastguard Worker // 442*d5c09012SAndroid Build Coastguard Worker // * https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} 443*d5c09012SAndroid Build Coastguard Worker // * projects/{project}/global/networks/{network} 444*d5c09012SAndroid Build Coastguard Worker // * global/networks/{network} 445*d5c09012SAndroid Build Coastguard Worker string network = 1; 446*d5c09012SAndroid Build Coastguard Worker 447*d5c09012SAndroid Build Coastguard Worker // The URL of an existing subnetwork resource in the network. 448*d5c09012SAndroid Build Coastguard Worker // You can specify the subnetwork as a full or partial URL. 449*d5c09012SAndroid Build Coastguard Worker // 450*d5c09012SAndroid Build Coastguard Worker // For example, the following are all valid URLs: 451*d5c09012SAndroid Build Coastguard Worker // 452*d5c09012SAndroid Build Coastguard Worker // * https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork} 453*d5c09012SAndroid Build Coastguard Worker // * projects/{project}/regions/{region}/subnetworks/{subnetwork} 454*d5c09012SAndroid Build Coastguard Worker // * regions/{region}/subnetworks/{subnetwork} 455*d5c09012SAndroid Build Coastguard Worker string subnetwork = 2; 456*d5c09012SAndroid Build Coastguard Worker 457*d5c09012SAndroid Build Coastguard Worker // Default is false (with an external IP address). Required if 458*d5c09012SAndroid Build Coastguard Worker // no external public IP address is attached to the VM. If no external 459*d5c09012SAndroid Build Coastguard Worker // public IP address, additional configuration is required to allow the VM 460*d5c09012SAndroid Build Coastguard Worker // to access Google Services. See 461*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/vpc/docs/configure-private-google-access and 462*d5c09012SAndroid Build Coastguard Worker // https://cloud.google.com/nat/docs/gce-example#create-nat for more 463*d5c09012SAndroid Build Coastguard Worker // information. 464*d5c09012SAndroid Build Coastguard Worker bool no_external_ip_address = 3; 465*d5c09012SAndroid Build Coastguard Worker } 466*d5c09012SAndroid Build Coastguard Worker 467*d5c09012SAndroid Build Coastguard Worker // NetworkPolicy describes VM instance network configurations. 468*d5c09012SAndroid Build Coastguard Worker message NetworkPolicy { 469*d5c09012SAndroid Build Coastguard Worker // Network configurations. 470*d5c09012SAndroid Build Coastguard Worker repeated NetworkInterface network_interfaces = 1; 471*d5c09012SAndroid Build Coastguard Worker } 472*d5c09012SAndroid Build Coastguard Worker 473*d5c09012SAndroid Build Coastguard Worker // PlacementPolicy describes a group placement policy for the VMs controlled 474*d5c09012SAndroid Build Coastguard Worker // by this AllocationPolicy. 475*d5c09012SAndroid Build Coastguard Worker message PlacementPolicy { 476*d5c09012SAndroid Build Coastguard Worker // UNSPECIFIED vs. COLLOCATED (default UNSPECIFIED). Use COLLOCATED when you 477*d5c09012SAndroid Build Coastguard Worker // want VMs to be located close to each other for low network latency 478*d5c09012SAndroid Build Coastguard Worker // between the VMs. No placement policy will be generated when collocation 479*d5c09012SAndroid Build Coastguard Worker // is UNSPECIFIED. 480*d5c09012SAndroid Build Coastguard Worker string collocation = 1; 481*d5c09012SAndroid Build Coastguard Worker 482*d5c09012SAndroid Build Coastguard Worker // When specified, causes the job to fail if more than max_distance logical 483*d5c09012SAndroid Build Coastguard Worker // switches are required between VMs. Batch uses the most compact possible 484*d5c09012SAndroid Build Coastguard Worker // placement of VMs even when max_distance is not specified. An explicit 485*d5c09012SAndroid Build Coastguard Worker // max_distance makes that level of compactness a strict requirement. 486*d5c09012SAndroid Build Coastguard Worker // Not yet implemented 487*d5c09012SAndroid Build Coastguard Worker int64 max_distance = 2; 488*d5c09012SAndroid Build Coastguard Worker } 489*d5c09012SAndroid Build Coastguard Worker 490*d5c09012SAndroid Build Coastguard Worker // Compute Engine VM instance provisioning model. 491*d5c09012SAndroid Build Coastguard Worker enum ProvisioningModel { 492*d5c09012SAndroid Build Coastguard Worker // Unspecified. 493*d5c09012SAndroid Build Coastguard Worker PROVISIONING_MODEL_UNSPECIFIED = 0; 494*d5c09012SAndroid Build Coastguard Worker 495*d5c09012SAndroid Build Coastguard Worker // Standard VM. 496*d5c09012SAndroid Build Coastguard Worker STANDARD = 1; 497*d5c09012SAndroid Build Coastguard Worker 498*d5c09012SAndroid Build Coastguard Worker // SPOT VM. 499*d5c09012SAndroid Build Coastguard Worker SPOT = 2; 500*d5c09012SAndroid Build Coastguard Worker 501*d5c09012SAndroid Build Coastguard Worker // Preemptible VM (PVM). 502*d5c09012SAndroid Build Coastguard Worker // 503*d5c09012SAndroid Build Coastguard Worker // Above SPOT VM is the preferable model for preemptible VM instances: the 504*d5c09012SAndroid Build Coastguard Worker // old preemptible VM model (indicated by this field) is the older model, 505*d5c09012SAndroid Build Coastguard Worker // and has been migrated to use the SPOT model as the underlying technology. 506*d5c09012SAndroid Build Coastguard Worker // This old model will still be supported. 507*d5c09012SAndroid Build Coastguard Worker PREEMPTIBLE = 3; 508*d5c09012SAndroid Build Coastguard Worker } 509*d5c09012SAndroid Build Coastguard Worker 510*d5c09012SAndroid Build Coastguard Worker // Location where compute resources should be allocated for the Job. 511*d5c09012SAndroid Build Coastguard Worker LocationPolicy location = 1; 512*d5c09012SAndroid Build Coastguard Worker 513*d5c09012SAndroid Build Coastguard Worker // Describe instances that can be created by this AllocationPolicy. 514*d5c09012SAndroid Build Coastguard Worker // Only instances[0] is supported now. 515*d5c09012SAndroid Build Coastguard Worker repeated InstancePolicyOrTemplate instances = 8; 516*d5c09012SAndroid Build Coastguard Worker 517*d5c09012SAndroid Build Coastguard Worker // Defines the service account for Batch-created VMs. If omitted, the [default 518*d5c09012SAndroid Build Coastguard Worker // Compute Engine service 519*d5c09012SAndroid Build Coastguard Worker // account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) 520*d5c09012SAndroid Build Coastguard Worker // is used. Must match the service account specified in any used instance 521*d5c09012SAndroid Build Coastguard Worker // template configured in the Batch job. 522*d5c09012SAndroid Build Coastguard Worker // 523*d5c09012SAndroid Build Coastguard Worker // Includes the following fields: 524*d5c09012SAndroid Build Coastguard Worker // * email: The service account's email address. If not set, the default 525*d5c09012SAndroid Build Coastguard Worker // Compute Engine service account is used. 526*d5c09012SAndroid Build Coastguard Worker // * scopes: Additional OAuth scopes to grant the service account, beyond the 527*d5c09012SAndroid Build Coastguard Worker // default cloud-platform scope. (list of strings) 528*d5c09012SAndroid Build Coastguard Worker ServiceAccount service_account = 9; 529*d5c09012SAndroid Build Coastguard Worker 530*d5c09012SAndroid Build Coastguard Worker // Labels applied to all VM instances and other resources 531*d5c09012SAndroid Build Coastguard Worker // created by AllocationPolicy. 532*d5c09012SAndroid Build Coastguard Worker // Labels could be user provided or system generated. 533*d5c09012SAndroid Build Coastguard Worker // You can assign up to 64 labels. [Google Compute Engine label 534*d5c09012SAndroid Build Coastguard Worker // restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) 535*d5c09012SAndroid Build Coastguard Worker // apply. 536*d5c09012SAndroid Build Coastguard Worker // Label names that start with "goog-" or "google-" are reserved. 537*d5c09012SAndroid Build Coastguard Worker map<string, string> labels = 6; 538*d5c09012SAndroid Build Coastguard Worker 539*d5c09012SAndroid Build Coastguard Worker // The network policy. 540*d5c09012SAndroid Build Coastguard Worker // 541*d5c09012SAndroid Build Coastguard Worker // If you define an instance template in the `InstancePolicyOrTemplate` field, 542*d5c09012SAndroid Build Coastguard Worker // Batch will use the network settings in the instance template instead of 543*d5c09012SAndroid Build Coastguard Worker // this field. 544*d5c09012SAndroid Build Coastguard Worker NetworkPolicy network = 7; 545*d5c09012SAndroid Build Coastguard Worker 546*d5c09012SAndroid Build Coastguard Worker // The placement policy. 547*d5c09012SAndroid Build Coastguard Worker PlacementPolicy placement = 10; 548*d5c09012SAndroid Build Coastguard Worker 549*d5c09012SAndroid Build Coastguard Worker // Optional. Tags applied to the VM instances. 550*d5c09012SAndroid Build Coastguard Worker // 551*d5c09012SAndroid Build Coastguard Worker // The tags identify valid sources or targets for network firewalls. 552*d5c09012SAndroid Build Coastguard Worker // Each tag must be 1-63 characters long, and comply with 553*d5c09012SAndroid Build Coastguard Worker // [RFC1035](https://www.ietf.org/rfc/rfc1035.txt). 554*d5c09012SAndroid Build Coastguard Worker repeated string tags = 11 [(google.api.field_behavior) = OPTIONAL]; 555*d5c09012SAndroid Build Coastguard Worker} 556*d5c09012SAndroid Build Coastguard Worker 557*d5c09012SAndroid Build Coastguard Worker// A TaskGroup defines one or more Tasks that all share the same TaskSpec. 558*d5c09012SAndroid Build Coastguard Workermessage TaskGroup { 559*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 560*d5c09012SAndroid Build Coastguard Worker type: "batch.googleapis.com/TaskGroup" 561*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/jobs/{job}/taskGroups/{task_group}" 562*d5c09012SAndroid Build Coastguard Worker }; 563*d5c09012SAndroid Build Coastguard Worker 564*d5c09012SAndroid Build Coastguard Worker // How Tasks in the TaskGroup should be scheduled relative to each other. 565*d5c09012SAndroid Build Coastguard Worker enum SchedulingPolicy { 566*d5c09012SAndroid Build Coastguard Worker // Unspecified. 567*d5c09012SAndroid Build Coastguard Worker SCHEDULING_POLICY_UNSPECIFIED = 0; 568*d5c09012SAndroid Build Coastguard Worker 569*d5c09012SAndroid Build Coastguard Worker // Run Tasks as soon as resources are available. 570*d5c09012SAndroid Build Coastguard Worker // 571*d5c09012SAndroid Build Coastguard Worker // Tasks might be executed in parallel depending on parallelism and 572*d5c09012SAndroid Build Coastguard Worker // task_count values. 573*d5c09012SAndroid Build Coastguard Worker AS_SOON_AS_POSSIBLE = 1; 574*d5c09012SAndroid Build Coastguard Worker 575*d5c09012SAndroid Build Coastguard Worker // Run Tasks sequentially with increased task index. 576*d5c09012SAndroid Build Coastguard Worker IN_ORDER = 2; 577*d5c09012SAndroid Build Coastguard Worker } 578*d5c09012SAndroid Build Coastguard Worker 579*d5c09012SAndroid Build Coastguard Worker // Output only. TaskGroup name. 580*d5c09012SAndroid Build Coastguard Worker // The system generates this field based on parent Job name. 581*d5c09012SAndroid Build Coastguard Worker // For example: 582*d5c09012SAndroid Build Coastguard Worker // "projects/123456/locations/us-west1/jobs/job01/taskGroups/group01". 583*d5c09012SAndroid Build Coastguard Worker string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 584*d5c09012SAndroid Build Coastguard Worker 585*d5c09012SAndroid Build Coastguard Worker // Required. Tasks in the group share the same task spec. 586*d5c09012SAndroid Build Coastguard Worker TaskSpec task_spec = 3 [(google.api.field_behavior) = REQUIRED]; 587*d5c09012SAndroid Build Coastguard Worker 588*d5c09012SAndroid Build Coastguard Worker // Number of Tasks in the TaskGroup. 589*d5c09012SAndroid Build Coastguard Worker // Default is 1. 590*d5c09012SAndroid Build Coastguard Worker int64 task_count = 4; 591*d5c09012SAndroid Build Coastguard Worker 592*d5c09012SAndroid Build Coastguard Worker // Max number of tasks that can run in parallel. 593*d5c09012SAndroid Build Coastguard Worker // Default to min(task_count, parallel tasks per job limit). 594*d5c09012SAndroid Build Coastguard Worker // See: [Job Limits](https://cloud.google.com/batch/quotas#job_limits). 595*d5c09012SAndroid Build Coastguard Worker // Field parallelism must be 1 if the scheduling_policy is IN_ORDER. 596*d5c09012SAndroid Build Coastguard Worker int64 parallelism = 5; 597*d5c09012SAndroid Build Coastguard Worker 598*d5c09012SAndroid Build Coastguard Worker // Scheduling policy for Tasks in the TaskGroup. 599*d5c09012SAndroid Build Coastguard Worker // The default value is AS_SOON_AS_POSSIBLE. 600*d5c09012SAndroid Build Coastguard Worker SchedulingPolicy scheduling_policy = 6; 601*d5c09012SAndroid Build Coastguard Worker 602*d5c09012SAndroid Build Coastguard Worker // An array of environment variable mappings, which are passed to Tasks with 603*d5c09012SAndroid Build Coastguard Worker // matching indices. If task_environments is used then task_count should 604*d5c09012SAndroid Build Coastguard Worker // not be specified in the request (and will be ignored). Task count will be 605*d5c09012SAndroid Build Coastguard Worker // the length of task_environments. 606*d5c09012SAndroid Build Coastguard Worker // 607*d5c09012SAndroid Build Coastguard Worker // Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in 608*d5c09012SAndroid Build Coastguard Worker // addition to any environment variables set in task_environments, specifying 609*d5c09012SAndroid Build Coastguard Worker // the number of Tasks in the Task's parent TaskGroup, and the specific Task's 610*d5c09012SAndroid Build Coastguard Worker // index in the TaskGroup (0 through BATCH_TASK_COUNT - 1). 611*d5c09012SAndroid Build Coastguard Worker repeated Environment task_environments = 9; 612*d5c09012SAndroid Build Coastguard Worker 613*d5c09012SAndroid Build Coastguard Worker // Max number of tasks that can be run on a VM at the same time. 614*d5c09012SAndroid Build Coastguard Worker // If not specified, the system will decide a value based on available 615*d5c09012SAndroid Build Coastguard Worker // compute resources on a VM and task requirements. 616*d5c09012SAndroid Build Coastguard Worker int64 task_count_per_node = 10; 617*d5c09012SAndroid Build Coastguard Worker 618*d5c09012SAndroid Build Coastguard Worker // When true, Batch will populate a file with a list of all VMs assigned to 619*d5c09012SAndroid Build Coastguard Worker // the TaskGroup and set the BATCH_HOSTS_FILE environment variable to the path 620*d5c09012SAndroid Build Coastguard Worker // of that file. Defaults to false. The host file supports up to 1000 VMs. 621*d5c09012SAndroid Build Coastguard Worker bool require_hosts_file = 11; 622*d5c09012SAndroid Build Coastguard Worker 623*d5c09012SAndroid Build Coastguard Worker // When true, Batch will configure SSH to allow passwordless login between 624*d5c09012SAndroid Build Coastguard Worker // VMs running the Batch tasks in the same TaskGroup. 625*d5c09012SAndroid Build Coastguard Worker bool permissive_ssh = 12; 626*d5c09012SAndroid Build Coastguard Worker 627*d5c09012SAndroid Build Coastguard Worker // Optional. If not set or set to false, Batch uses the root user to execute 628*d5c09012SAndroid Build Coastguard Worker // runnables. If set to true, Batch runs the runnables using a non-root user. 629*d5c09012SAndroid Build Coastguard Worker // Currently, the non-root user Batch used is generated by OS Login. For more 630*d5c09012SAndroid Build Coastguard Worker // information, see [About OS 631*d5c09012SAndroid Build Coastguard Worker // Login](https://cloud.google.com/compute/docs/oslogin). 632*d5c09012SAndroid Build Coastguard Worker bool run_as_non_root = 14 [(google.api.field_behavior) = OPTIONAL]; 633*d5c09012SAndroid Build Coastguard Worker} 634*d5c09012SAndroid Build Coastguard Worker 635*d5c09012SAndroid Build Coastguard Worker// Carries information about a Google Cloud service account. 636*d5c09012SAndroid Build Coastguard Workermessage ServiceAccount { 637*d5c09012SAndroid Build Coastguard Worker // Email address of the service account. 638*d5c09012SAndroid Build Coastguard Worker string email = 1; 639*d5c09012SAndroid Build Coastguard Worker 640*d5c09012SAndroid Build Coastguard Worker // List of scopes to be enabled for this service account. 641*d5c09012SAndroid Build Coastguard Worker repeated string scopes = 2; 642*d5c09012SAndroid Build Coastguard Worker} 643