xref: /aosp_15_r20/external/googleapis/google/cloud/batch/v1/job.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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