xref: /aosp_15_r20/external/googleapis/google/dataflow/v1beta3/streaming.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 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.dataflow.v1beta3;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Dataflow.V1Beta3";
20*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/dataflow/apiv1beta3/dataflowpb;dataflowpb";
21*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
22*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "StreamingProto";
23*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.dataflow.v1beta3";
24*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Dataflow\\V1beta3";
25*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::Dataflow::V1beta3";
26*d5c09012SAndroid Build Coastguard Worker
27*d5c09012SAndroid Build Coastguard Worker// Global topology of the streaming Dataflow job, including all
28*d5c09012SAndroid Build Coastguard Worker// computations and their sharded locations.
29*d5c09012SAndroid Build Coastguard Workermessage TopologyConfig {
30*d5c09012SAndroid Build Coastguard Worker  // The computations associated with a streaming Dataflow job.
31*d5c09012SAndroid Build Coastguard Worker  repeated ComputationTopology computations = 1;
32*d5c09012SAndroid Build Coastguard Worker
33*d5c09012SAndroid Build Coastguard Worker  // The disks assigned to a streaming Dataflow job.
34*d5c09012SAndroid Build Coastguard Worker  repeated DataDiskAssignment data_disk_assignments = 2;
35*d5c09012SAndroid Build Coastguard Worker
36*d5c09012SAndroid Build Coastguard Worker  // Maps user stage names to stable computation names.
37*d5c09012SAndroid Build Coastguard Worker  map<string, string> user_stage_to_computation_name_map = 3;
38*d5c09012SAndroid Build Coastguard Worker
39*d5c09012SAndroid Build Coastguard Worker  // The size (in bits) of keys that will be assigned to source messages.
40*d5c09012SAndroid Build Coastguard Worker  int32 forwarding_key_bits = 4;
41*d5c09012SAndroid Build Coastguard Worker
42*d5c09012SAndroid Build Coastguard Worker  // Version number for persistent state.
43*d5c09012SAndroid Build Coastguard Worker  int32 persistent_state_version = 5;
44*d5c09012SAndroid Build Coastguard Worker}
45*d5c09012SAndroid Build Coastguard Worker
46*d5c09012SAndroid Build Coastguard Worker// Identifies a pubsub location to use for transferring data into or
47*d5c09012SAndroid Build Coastguard Worker// out of a streaming Dataflow job.
48*d5c09012SAndroid Build Coastguard Workermessage PubsubLocation {
49*d5c09012SAndroid Build Coastguard Worker  // A pubsub topic, in the form of
50*d5c09012SAndroid Build Coastguard Worker  // "pubsub.googleapis.com/topics/<project-id>/<topic-name>"
51*d5c09012SAndroid Build Coastguard Worker  string topic = 1;
52*d5c09012SAndroid Build Coastguard Worker
53*d5c09012SAndroid Build Coastguard Worker  // A pubsub subscription, in the form of
54*d5c09012SAndroid Build Coastguard Worker  // "pubsub.googleapis.com/subscriptions/<project-id>/<subscription-name>"
55*d5c09012SAndroid Build Coastguard Worker  string subscription = 2;
56*d5c09012SAndroid Build Coastguard Worker
57*d5c09012SAndroid Build Coastguard Worker  // If set, contains a pubsub label from which to extract record timestamps.
58*d5c09012SAndroid Build Coastguard Worker  // If left empty, record timestamps will be generated upon arrival.
59*d5c09012SAndroid Build Coastguard Worker  string timestamp_label = 3;
60*d5c09012SAndroid Build Coastguard Worker
61*d5c09012SAndroid Build Coastguard Worker  // If set, contains a pubsub label from which to extract record ids.
62*d5c09012SAndroid Build Coastguard Worker  // If left empty, record deduplication will be strictly best effort.
63*d5c09012SAndroid Build Coastguard Worker  string id_label = 4;
64*d5c09012SAndroid Build Coastguard Worker
65*d5c09012SAndroid Build Coastguard Worker  // Indicates whether the pipeline allows late-arriving data.
66*d5c09012SAndroid Build Coastguard Worker  bool drop_late_data = 5;
67*d5c09012SAndroid Build Coastguard Worker
68*d5c09012SAndroid Build Coastguard Worker  // If set, specifies the pubsub subscription that will be used for tracking
69*d5c09012SAndroid Build Coastguard Worker  // custom time timestamps for watermark estimation.
70*d5c09012SAndroid Build Coastguard Worker  string tracking_subscription = 6;
71*d5c09012SAndroid Build Coastguard Worker
72*d5c09012SAndroid Build Coastguard Worker  // If true, then the client has requested to get pubsub attributes.
73*d5c09012SAndroid Build Coastguard Worker  bool with_attributes = 7;
74*d5c09012SAndroid Build Coastguard Worker}
75*d5c09012SAndroid Build Coastguard Worker
76*d5c09012SAndroid Build Coastguard Worker// Identifies the location of a streaming computation stage, for
77*d5c09012SAndroid Build Coastguard Worker// stage-to-stage communication.
78*d5c09012SAndroid Build Coastguard Workermessage StreamingStageLocation {
79*d5c09012SAndroid Build Coastguard Worker  // Identifies the particular stream within the streaming Dataflow
80*d5c09012SAndroid Build Coastguard Worker  // job.
81*d5c09012SAndroid Build Coastguard Worker  string stream_id = 1;
82*d5c09012SAndroid Build Coastguard Worker}
83*d5c09012SAndroid Build Coastguard Worker
84*d5c09012SAndroid Build Coastguard Worker// Identifies the location of a streaming side input.
85*d5c09012SAndroid Build Coastguard Workermessage StreamingSideInputLocation {
86*d5c09012SAndroid Build Coastguard Worker  // Identifies the particular side input within the streaming Dataflow job.
87*d5c09012SAndroid Build Coastguard Worker  string tag = 1;
88*d5c09012SAndroid Build Coastguard Worker
89*d5c09012SAndroid Build Coastguard Worker  // Identifies the state family where this side input is stored.
90*d5c09012SAndroid Build Coastguard Worker  string state_family = 2;
91*d5c09012SAndroid Build Coastguard Worker}
92*d5c09012SAndroid Build Coastguard Worker
93*d5c09012SAndroid Build Coastguard Worker// Identifies the location of a custom souce.
94*d5c09012SAndroid Build Coastguard Workermessage CustomSourceLocation {
95*d5c09012SAndroid Build Coastguard Worker  // Whether this source is stateful.
96*d5c09012SAndroid Build Coastguard Worker  bool stateful = 1;
97*d5c09012SAndroid Build Coastguard Worker}
98*d5c09012SAndroid Build Coastguard Worker
99*d5c09012SAndroid Build Coastguard Worker// Describes a stream of data, either as input to be processed or as
100*d5c09012SAndroid Build Coastguard Worker// output of a streaming Dataflow job.
101*d5c09012SAndroid Build Coastguard Workermessage StreamLocation {
102*d5c09012SAndroid Build Coastguard Worker  // A specification of a stream's location.
103*d5c09012SAndroid Build Coastguard Worker  oneof location {
104*d5c09012SAndroid Build Coastguard Worker    // The stream is part of another computation within the current
105*d5c09012SAndroid Build Coastguard Worker    // streaming Dataflow job.
106*d5c09012SAndroid Build Coastguard Worker    StreamingStageLocation streaming_stage_location = 1;
107*d5c09012SAndroid Build Coastguard Worker
108*d5c09012SAndroid Build Coastguard Worker    // The stream is a pubsub stream.
109*d5c09012SAndroid Build Coastguard Worker    PubsubLocation pubsub_location = 2;
110*d5c09012SAndroid Build Coastguard Worker
111*d5c09012SAndroid Build Coastguard Worker    // The stream is a streaming side input.
112*d5c09012SAndroid Build Coastguard Worker    StreamingSideInputLocation side_input_location = 3;
113*d5c09012SAndroid Build Coastguard Worker
114*d5c09012SAndroid Build Coastguard Worker    // The stream is a custom source.
115*d5c09012SAndroid Build Coastguard Worker    CustomSourceLocation custom_source_location = 4;
116*d5c09012SAndroid Build Coastguard Worker  }
117*d5c09012SAndroid Build Coastguard Worker}
118*d5c09012SAndroid Build Coastguard Worker
119*d5c09012SAndroid Build Coastguard Worker// State family configuration.
120*d5c09012SAndroid Build Coastguard Workermessage StateFamilyConfig {
121*d5c09012SAndroid Build Coastguard Worker  // The state family value.
122*d5c09012SAndroid Build Coastguard Worker  string state_family = 1;
123*d5c09012SAndroid Build Coastguard Worker
124*d5c09012SAndroid Build Coastguard Worker  // If true, this family corresponds to a read operation.
125*d5c09012SAndroid Build Coastguard Worker  bool is_read = 2;
126*d5c09012SAndroid Build Coastguard Worker}
127*d5c09012SAndroid Build Coastguard Worker
128*d5c09012SAndroid Build Coastguard Worker// All configuration data for a particular Computation.
129*d5c09012SAndroid Build Coastguard Workermessage ComputationTopology {
130*d5c09012SAndroid Build Coastguard Worker  // The system stage name.
131*d5c09012SAndroid Build Coastguard Worker  string system_stage_name = 1;
132*d5c09012SAndroid Build Coastguard Worker
133*d5c09012SAndroid Build Coastguard Worker  // The ID of the computation.
134*d5c09012SAndroid Build Coastguard Worker  string computation_id = 5;
135*d5c09012SAndroid Build Coastguard Worker
136*d5c09012SAndroid Build Coastguard Worker  // The key ranges processed by the computation.
137*d5c09012SAndroid Build Coastguard Worker  repeated KeyRangeLocation key_ranges = 2;
138*d5c09012SAndroid Build Coastguard Worker
139*d5c09012SAndroid Build Coastguard Worker  // The inputs to the computation.
140*d5c09012SAndroid Build Coastguard Worker  repeated StreamLocation inputs = 3;
141*d5c09012SAndroid Build Coastguard Worker
142*d5c09012SAndroid Build Coastguard Worker  // The outputs from the computation.
143*d5c09012SAndroid Build Coastguard Worker  repeated StreamLocation outputs = 4;
144*d5c09012SAndroid Build Coastguard Worker
145*d5c09012SAndroid Build Coastguard Worker  // The state family values.
146*d5c09012SAndroid Build Coastguard Worker  repeated StateFamilyConfig state_families = 7;
147*d5c09012SAndroid Build Coastguard Worker}
148*d5c09012SAndroid Build Coastguard Worker
149*d5c09012SAndroid Build Coastguard Worker// Location information for a specific key-range of a sharded computation.
150*d5c09012SAndroid Build Coastguard Worker// Currently we only support UTF-8 character splits to simplify encoding into
151*d5c09012SAndroid Build Coastguard Worker// JSON.
152*d5c09012SAndroid Build Coastguard Workermessage KeyRangeLocation {
153*d5c09012SAndroid Build Coastguard Worker  // The start (inclusive) of the key range.
154*d5c09012SAndroid Build Coastguard Worker  string start = 1;
155*d5c09012SAndroid Build Coastguard Worker
156*d5c09012SAndroid Build Coastguard Worker  // The end (exclusive) of the key range.
157*d5c09012SAndroid Build Coastguard Worker  string end = 2;
158*d5c09012SAndroid Build Coastguard Worker
159*d5c09012SAndroid Build Coastguard Worker  // The physical location of this range assignment to be used for
160*d5c09012SAndroid Build Coastguard Worker  // streaming computation cross-worker message delivery.
161*d5c09012SAndroid Build Coastguard Worker  string delivery_endpoint = 3;
162*d5c09012SAndroid Build Coastguard Worker
163*d5c09012SAndroid Build Coastguard Worker  // The name of the data disk where data for this range is stored.
164*d5c09012SAndroid Build Coastguard Worker  // This name is local to the Google Cloud Platform project and uniquely
165*d5c09012SAndroid Build Coastguard Worker  // identifies the disk within that project, for example
166*d5c09012SAndroid Build Coastguard Worker  // "myproject-1014-104817-4c2-harness-0-disk-1".
167*d5c09012SAndroid Build Coastguard Worker  string data_disk = 5;
168*d5c09012SAndroid Build Coastguard Worker
169*d5c09012SAndroid Build Coastguard Worker  // DEPRECATED. The location of the persistent state for this range, as a
170*d5c09012SAndroid Build Coastguard Worker  // persistent directory in the worker local filesystem.
171*d5c09012SAndroid Build Coastguard Worker  string deprecated_persistent_directory = 4 [deprecated = true];
172*d5c09012SAndroid Build Coastguard Worker}
173*d5c09012SAndroid Build Coastguard Worker
174*d5c09012SAndroid Build Coastguard Worker// Describes mounted data disk.
175*d5c09012SAndroid Build Coastguard Workermessage MountedDataDisk {
176*d5c09012SAndroid Build Coastguard Worker  // The name of the data disk.
177*d5c09012SAndroid Build Coastguard Worker  // This name is local to the Google Cloud Platform project and uniquely
178*d5c09012SAndroid Build Coastguard Worker  // identifies the disk within that project, for example
179*d5c09012SAndroid Build Coastguard Worker  // "myproject-1014-104817-4c2-harness-0-disk-1".
180*d5c09012SAndroid Build Coastguard Worker  string data_disk = 1;
181*d5c09012SAndroid Build Coastguard Worker}
182*d5c09012SAndroid Build Coastguard Worker
183*d5c09012SAndroid Build Coastguard Worker// Data disk assignment for a given VM instance.
184*d5c09012SAndroid Build Coastguard Workermessage DataDiskAssignment {
185*d5c09012SAndroid Build Coastguard Worker  // VM instance name the data disks mounted to, for example
186*d5c09012SAndroid Build Coastguard Worker  // "myproject-1014-104817-4c2-harness-0".
187*d5c09012SAndroid Build Coastguard Worker  string vm_instance = 1;
188*d5c09012SAndroid Build Coastguard Worker
189*d5c09012SAndroid Build Coastguard Worker  // Mounted data disks. The order is important a data disk's 0-based index in
190*d5c09012SAndroid Build Coastguard Worker  // this list defines which persistent directory the disk is mounted to, for
191*d5c09012SAndroid Build Coastguard Worker  // example the list of { "myproject-1014-104817-4c2-harness-0-disk-0" },
192*d5c09012SAndroid Build Coastguard Worker  // { "myproject-1014-104817-4c2-harness-0-disk-1" }.
193*d5c09012SAndroid Build Coastguard Worker  repeated string data_disks = 2;
194*d5c09012SAndroid Build Coastguard Worker}
195*d5c09012SAndroid Build Coastguard Worker
196*d5c09012SAndroid Build Coastguard Worker// Data disk assignment information for a specific key-range of a sharded
197*d5c09012SAndroid Build Coastguard Worker// computation.
198*d5c09012SAndroid Build Coastguard Worker// Currently we only support UTF-8 character splits to simplify encoding into
199*d5c09012SAndroid Build Coastguard Worker// JSON.
200*d5c09012SAndroid Build Coastguard Workermessage KeyRangeDataDiskAssignment {
201*d5c09012SAndroid Build Coastguard Worker  // The start (inclusive) of the key range.
202*d5c09012SAndroid Build Coastguard Worker  string start = 1;
203*d5c09012SAndroid Build Coastguard Worker
204*d5c09012SAndroid Build Coastguard Worker  // The end (exclusive) of the key range.
205*d5c09012SAndroid Build Coastguard Worker  string end = 2;
206*d5c09012SAndroid Build Coastguard Worker
207*d5c09012SAndroid Build Coastguard Worker  // The name of the data disk where data for this range is stored.
208*d5c09012SAndroid Build Coastguard Worker  // This name is local to the Google Cloud Platform project and uniquely
209*d5c09012SAndroid Build Coastguard Worker  // identifies the disk within that project, for example
210*d5c09012SAndroid Build Coastguard Worker  // "myproject-1014-104817-4c2-harness-0-disk-1".
211*d5c09012SAndroid Build Coastguard Worker  string data_disk = 3;
212*d5c09012SAndroid Build Coastguard Worker}
213*d5c09012SAndroid Build Coastguard Worker
214*d5c09012SAndroid Build Coastguard Worker// Describes full or partial data disk assignment information of the computation
215*d5c09012SAndroid Build Coastguard Worker// ranges.
216*d5c09012SAndroid Build Coastguard Workermessage StreamingComputationRanges {
217*d5c09012SAndroid Build Coastguard Worker  // The ID of the computation.
218*d5c09012SAndroid Build Coastguard Worker  string computation_id = 1;
219*d5c09012SAndroid Build Coastguard Worker
220*d5c09012SAndroid Build Coastguard Worker  // Data disk assignments for ranges from this computation.
221*d5c09012SAndroid Build Coastguard Worker  repeated KeyRangeDataDiskAssignment range_assignments = 2;
222*d5c09012SAndroid Build Coastguard Worker}
223*d5c09012SAndroid Build Coastguard Worker
224*d5c09012SAndroid Build Coastguard Worker// Streaming appliance snapshot configuration.
225*d5c09012SAndroid Build Coastguard Workermessage StreamingApplianceSnapshotConfig {
226*d5c09012SAndroid Build Coastguard Worker  // If set, indicates the snapshot id for the snapshot being performed.
227*d5c09012SAndroid Build Coastguard Worker  string snapshot_id = 1;
228*d5c09012SAndroid Build Coastguard Worker
229*d5c09012SAndroid Build Coastguard Worker  // Indicates which endpoint is used to import appliance state.
230*d5c09012SAndroid Build Coastguard Worker  string import_state_endpoint = 2;
231*d5c09012SAndroid Build Coastguard Worker}
232