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