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