github.com/pachyderm/pachyderm@v1.13.4/src/client/admin/v1_12/pps/pps.proto (about) 1 syntax = "proto3"; 2 3 package pps_1_12; 4 option go_package = "github.com/pachyderm/pachyderm/src/client/admin/v1_12/pps"; 5 6 import "google/protobuf/empty.proto"; 7 import "google/protobuf/timestamp.proto"; 8 import "google/protobuf/duration.proto"; 9 10 import "gogoproto/gogo.proto"; 11 12 import "client/admin/v1_12/pfs/pfs.proto"; 13 14 message SecretMount { 15 // Name must be the name of the secret in kubernetes. 16 string name = 1; 17 // Key of the secret to load into env_var, this field only has meaning if EnvVar != "". 18 string key = 4; 19 string mount_path = 2; 20 string env_var = 3; 21 } 22 23 message Transform { 24 string image = 1; 25 repeated string cmd = 2; 26 repeated string err_cmd = 13; 27 map<string, string> env = 3; 28 repeated SecretMount secrets = 4; 29 repeated string image_pull_secrets = 9; 30 repeated string stdin = 5; 31 repeated string err_stdin = 14; 32 repeated int64 accept_return_code = 6; 33 bool debug = 7; 34 string user = 10; 35 string working_dir = 11; 36 string dockerfile = 12; 37 BuildSpec build = 15; 38 } 39 40 message BuildSpec { 41 string path = 1; 42 string language = 2; 43 string image = 3; 44 } 45 46 message TFJob { 47 // tf_job is a serialized Kubeflow TFJob spec. Pachyderm sends this directly 48 // to a kubernetes cluster on which kubeflow has been installed, instead of 49 // creating a pipeline ReplicationController as it normally would. 50 string tf_job = 1 [(gogoproto.customname) = "TFJob"]; 51 } 52 53 message Egress { 54 string URL = 1; 55 } 56 57 message Job { 58 string id = 1 [(gogoproto.customname) = "ID"]; 59 } 60 61 enum JobState { 62 JOB_STARTING = 0; 63 JOB_RUNNING = 1; 64 JOB_FAILURE = 2; 65 JOB_SUCCESS = 3; 66 JOB_KILLED = 4; 67 JOB_MERGING = 5; 68 JOB_EGRESSING = 6; 69 } 70 71 message Metadata { 72 map<string, string> annotations = 1; 73 map<string, string> labels = 2; 74 } 75 76 message Service { 77 int32 internal_port = 1; 78 int32 external_port = 2; 79 string ip = 3 [(gogoproto.customname) = "IP"]; 80 string type = 4; 81 } 82 83 message Spout { 84 bool overwrite = 1; 85 Service service = 2; 86 string marker = 3; 87 } 88 89 message PFSInput { 90 string name = 1; 91 string repo = 2; 92 string branch = 3; 93 string commit = 4; 94 string glob = 5; 95 string join_on = 8; 96 bool outer_join = 12; 97 string group_by = 11; 98 bool lazy = 6; 99 // EmptyFiles, if true, will cause files from this PFS input to be 100 // presented as empty files. This is useful in shuffle pipelines where you 101 // want to read the names of files and reorganize them using symlinks. 102 bool empty_files = 7; 103 // S3, if true, will cause the worker to NOT download or link files from this 104 // input into the /pfs directory. Instead, an instance of our S3 gateway 105 // service will run on each of the sidecars, and data can be retrieved from 106 // this input by querying 107 // http://<pipeline>-s3.<namespace>/<job id>.<input>/my/file 108 bool s3 = 9; 109 // Trigger defines when this input is processed by the pipeline, if it's nil 110 // the input is processed anytime something is committed to the input branch. 111 pfs_1_12.Trigger trigger = 10; 112 } 113 114 message CronInput { 115 string name = 1; 116 string repo = 2; 117 string commit = 3; 118 string spec = 4; 119 // Overwrite, if true, will expose a single datum that gets overwritten each 120 // tick. If false, it will create a new datum for each tick. 121 bool overwrite = 6; 122 google.protobuf.Timestamp start = 5; 123 } 124 125 message GitInput { 126 string name = 1; 127 string url = 2 [(gogoproto.customname) = "URL"]; 128 string branch = 3; 129 string commit = 4; 130 } 131 132 message Input { 133 PFSInput pfs = 6; 134 repeated Input join = 7; 135 repeated Input group = 8; 136 repeated Input cross = 2; 137 repeated Input union = 3; 138 CronInput cron = 4; 139 GitInput git = 5; 140 } 141 142 message JobInput { 143 string name = 4; 144 pfs_1_12.Commit commit = 1; 145 string glob = 2; 146 bool lazy = 3; 147 } 148 149 message ParallelismSpec { 150 reserved 1; 151 152 // Starts the pipeline/job with a 'constant' workers, unless 'constant' is 153 // zero. If 'constant' is zero (which is the zero value of ParallelismSpec), 154 // then Pachyderm will choose the number of workers that is started, 155 // (currently it chooses the number of workers in the cluster) 156 uint64 constant = 2; 157 158 // Starts the pipeline/job with number of workers equal to 'coefficient' * N, 159 // where N is the number of nodes in the kubernetes cluster. 160 // 161 // For example, if each Kubernetes node has four CPUs, you might set 162 // 'coefficient' to four, so that there are four Pachyderm workers per 163 // Kubernetes node, and each Pachyderm worker gets one CPU. If you want to 164 // reserve half the nodes in your cluster for other tasks, you might set 165 // 'coefficient' to 0.5. 166 double coefficient = 3; 167 } 168 169 // HashTreeSpec sets the number of shards into which pps splits a pipeline's 170 // output commits (sharded commits are implemented in Pachyderm 1.8+ only) 171 message HashtreeSpec { 172 uint64 constant = 1; 173 } 174 175 message InputFile { 176 // This file's absolute path within its pfs repo. 177 string path = 4; 178 179 // This file's hash 180 bytes hash = 5; 181 } 182 183 message Datum { 184 // ID is the hash computed from all the files 185 string id = 1 [(gogoproto.customname) = "ID"]; 186 Job job = 2; 187 } 188 189 enum DatumState { 190 FAILED = 0; 191 SUCCESS = 1; 192 SKIPPED = 2; 193 STARTING = 3; 194 RECOVERED = 4; 195 } 196 197 message DatumInfo { 198 Datum datum = 1; 199 DatumState state = 2; 200 ProcessStats stats = 3; 201 pfs_1_12.File pfs_state = 4; 202 repeated pfs_1_12.FileInfo data = 5; 203 } 204 205 message Aggregate { 206 int64 count = 1; 207 double mean = 2; 208 double stddev = 3; 209 double fifth_percentile = 4; 210 double ninety_fifth_percentile = 5; 211 } 212 213 message ProcessStats { 214 google.protobuf.Duration download_time = 1; 215 google.protobuf.Duration process_time = 2; 216 google.protobuf.Duration upload_time = 3; 217 uint64 download_bytes = 4; 218 uint64 upload_bytes = 5; 219 } 220 221 message AggregateProcessStats { 222 Aggregate download_time = 1; 223 Aggregate process_time = 2; 224 Aggregate upload_time = 3; 225 Aggregate download_bytes = 4; 226 Aggregate upload_bytes = 5; 227 } 228 229 message WorkerStatus { 230 string worker_id = 1 [(gogoproto.customname) = "WorkerID"]; 231 string job_id = 2 [(gogoproto.customname) = "JobID"]; 232 repeated pps_1_12.InputFile data = 3; 233 // Started is the time processing on the current datum began. 234 google.protobuf.Timestamp started = 4; 235 ProcessStats stats = 5; 236 int64 queue_size = 6; 237 int64 data_processed = 7; 238 int64 data_recovered = 8; 239 } 240 241 // ResourceSpec describes the amount of resources that pipeline pods should 242 // request from kubernetes, for scheduling. 243 message ResourceSpec { 244 reserved 3; 245 246 // The number of CPUs each worker needs (partial values are allowed, and 247 // encouraged) 248 float cpu = 1; 249 250 // The amount of memory each worker needs (in bytes, with allowed 251 // SI suffixes (M, K, G, Mi, Ki, Gi, etc). 252 string memory = 2; 253 254 // The spec for GPU resources. 255 GPUSpec gpu = 5; 256 257 // The amount of ephemeral storage each worker needs (in bytes, with allowed 258 // SI suffixes (M, K, G, Mi, Ki, Gi, etc). 259 string disk = 4; 260 } 261 262 message GPUSpec { 263 // The type of GPU (nvidia.com/gpu or amd.com/gpu for example). 264 string type = 1; 265 // The number of GPUs to request. 266 int64 number = 2; 267 } 268 269 // EtcdJobInfo is the portion of the JobInfo that gets stored in etcd during 270 // job execution. It contains fields which change over the lifetime of the job 271 // but aren't used in the execution of the job. 272 message EtcdJobInfo { 273 Job job = 1; 274 Pipeline pipeline = 2; 275 pfs_1_12.Commit output_commit = 3; 276 // Job restart count (e.g. due to datum failure) 277 uint64 restart = 4; 278 279 // Counts of how many times we processed or skipped a datum 280 int64 data_processed = 5; 281 int64 data_skipped = 6; 282 int64 data_total = 7; 283 int64 data_failed = 8; 284 int64 data_recovered = 15; 285 286 // Download/process/upload time and download/upload bytes 287 ProcessStats stats = 9; 288 289 pfs_1_12.Commit stats_commit = 10; 290 JobState state = 11; 291 string reason = 12; 292 google.protobuf.Timestamp started = 13; 293 google.protobuf.Timestamp finished = 14; 294 } 295 296 message JobInfo { 297 reserved 4, 5, 28, 34; 298 Job job = 1; 299 Transform transform = 2; // requires ListJobRequest.Full 300 Pipeline pipeline = 3; 301 uint64 pipeline_version = 13; // requires ListJobRequest.Full 302 pfs_1_12.Commit spec_commit = 47; 303 ParallelismSpec parallelism_spec = 12; // requires ListJobRequest.Full 304 Egress egress = 15; // requires ListJobRequest.Full 305 Job parent_job = 6; 306 google.protobuf.Timestamp started = 7; 307 google.protobuf.Timestamp finished = 8; 308 pfs_1_12.Commit output_commit = 9; 309 JobState state = 10; 310 string reason = 35; // reason explains why the job is in the current state 311 Service service = 14; // requires ListJobRequest.Full 312 Spout spout = 45; // requires ListJobRequest.Full 313 pfs_1_12.Repo output_repo = 18; 314 string output_branch = 17; // requires ListJobRequest.Full 315 uint64 restart = 20; 316 int64 data_processed = 22; 317 int64 data_skipped = 30; 318 int64 data_failed = 40; 319 int64 data_recovered = 46; 320 int64 data_total = 23; 321 ProcessStats stats = 31; 322 repeated WorkerStatus worker_status = 24; 323 ResourceSpec resource_requests = 25; // requires ListJobRequest.Full 324 ResourceSpec resource_limits = 36; // requires ListJobRequest.Full 325 ResourceSpec sidecar_resource_limits = 48; // requires ListJobRequest.Full 326 Input input = 26; // requires ListJobRequest.Full 327 pfs_1_12.BranchInfo new_branch = 27; 328 pfs_1_12.Commit stats_commit = 29; 329 bool enable_stats = 32; // requires ListJobRequest.Full 330 string salt = 33; // requires ListJobRequest.Full 331 ChunkSpec chunk_spec = 37; // requires ListJobRequest.Full 332 google.protobuf.Duration datum_timeout = 38; // requires ListJobRequest.Full 333 google.protobuf.Duration job_timeout = 39; // requires ListJobRequest.Full 334 int64 datum_tries = 41; // requires ListJobRequest.Full 335 SchedulingSpec scheduling_spec = 42; // requires ListJobRequest.Full 336 string pod_spec = 43; // requires ListJobRequest.Full 337 string pod_patch = 44; // requires ListJobRequest.Full 338 } 339 340 enum WorkerState { 341 POD_RUNNING = 0; 342 POD_SUCCESS = 1; 343 POD_FAILED = 2; 344 } 345 346 message Worker { 347 string name = 1; 348 WorkerState state = 2; 349 } 350 351 message JobInfos { 352 repeated JobInfo job_info = 1; 353 } 354 355 message Pipeline { 356 string name = 1; 357 } 358 359 enum PipelineState { 360 // There is an EtcdPipelineInfo + spec commit, but no RC 361 // This happens when a pipeline has been created but not yet picked up by a 362 // PPS server. 363 PIPELINE_STARTING = 0; 364 // A pipeline has a spec commit and a service + RC 365 // This is the normal state of a pipeline. 366 PIPELINE_RUNNING = 1; 367 // Equivalent to STARTING (there is an EtcdPipelineInfo + commit, but no RC) 368 // After some error caused runPipeline to exit, but before the pipeline is 369 // re-run. This is when the exponential backoff is in effect. 370 PIPELINE_RESTARTING = 2; 371 // The pipeline has encountered unrecoverable errors and is no longer being 372 // retried. It won't leave this state until the pipeline is updated. 373 PIPELINE_FAILURE = 3; 374 // The pipeline has been explicitly paused by the user (the pipeline spec's 375 // Stopped field should be true if the pipeline is in this state) 376 PIPELINE_PAUSED = 4; 377 // The pipeline is fully functional, but there are no commits to process. 378 PIPELINE_STANDBY = 5; 379 // The pipeline's workers are crashing, or failing to come up, this may 380 // resolve itself, the pipeline may make progress while in this state if the 381 // problem is only being experienced by some workers. 382 PIPELINE_CRASHING = 6; 383 } 384 385 // EtcdPipelineInfo is proto that Pachd stores in etcd for each pipeline. It 386 // tracks the state of the pipeline, and points to its metadata in PFS (and, 387 // by pointing to a PFS commit, de facto tracks the pipeline's version) 388 message EtcdPipelineInfo { 389 PipelineState state = 1; 390 string reason = 4; 391 pfs_1_12.Commit spec_commit = 2; 392 map<int32, int32> job_counts = 3; 393 string auth_token = 5; 394 JobState last_job_state = 6; 395 396 // parallelism tracks the literal number of workers that this pipeline should 397 // run. Unlike PipelineInfo.ParallelismSpec, this accounts for the number of 398 // nodes in the k8s cluster if Coefficient parallelism is used (i.e. if 399 // Coefficient is 2 and the cluster has 5 nodes, this will be set to 10 by 400 // pachd). This allows the worker master to shard work correctly without 401 // k8s privileges and without knowing the number of cluster nodes in the 402 // Coefficient case. 403 uint64 parallelism = 7; 404 } 405 406 message PipelineInfo { 407 reserved 3, 4, 22, 26, 27, 18; 408 string id = 17 [(gogoproto.customname) = "ID"]; 409 Pipeline pipeline = 1; 410 uint64 version = 11; 411 Transform transform = 2; 412 // tf_job encodes a Kubeflow TFJob spec. Pachyderm uses this to create TFJobs 413 // when running in a kubernetes cluster on which kubeflow has been installed. 414 // Exactly one of 'tf_job' and 'transform' should be set 415 TFJob tf_job = 46 [(gogoproto.customname) = "TFJob"]; 416 ParallelismSpec parallelism_spec = 10; 417 HashtreeSpec hashtree_spec = 42; 418 Egress egress = 15; 419 google.protobuf.Timestamp created_at = 6; 420 421 // state indicates the current state of the pipeline. This is not stored in 422 // PFS along with the rest of this data structure--PPS.InspectPipeline fills 423 // it in 424 PipelineState state = 7; 425 // same for stopped field 426 bool stopped = 38; 427 string recent_error = 8; 428 429 int64 workers_requested = 49; 430 int64 workers_available = 50; 431 432 // job_counts and last_job_state indicates the number of jobs within this 433 // pipeline in a given state and the state of the most recently created job, 434 // respectively. This is not stored in PFS along with the rest of this data 435 // structure--PPS.InspectPipeline fills it in from the EtcdPipelineInfo. 436 map<int32, int32> job_counts = 9; 437 JobState last_job_state = 43; 438 439 string output_branch = 16; 440 ResourceSpec resource_requests = 19; 441 ResourceSpec resource_limits = 31; 442 ResourceSpec sidecar_resource_limits = 51; 443 Input input = 20; 444 string description = 21; 445 string cache_size = 23; 446 bool enable_stats = 24; 447 string salt = 25; 448 449 // reason includes any error messages associated with a failed pipeline 450 string reason = 28; 451 int64 max_queue_size = 29; 452 Service service = 30; 453 Spout spout = 45; 454 ChunkSpec chunk_spec = 32; 455 google.protobuf.Duration datum_timeout = 33; 456 google.protobuf.Duration job_timeout = 34; 457 string githook_url = 35 [(gogoproto.customname) = "GithookURL"]; 458 pfs_1_12.Commit spec_commit = 36; 459 bool standby = 37; 460 int64 datum_tries = 39; 461 SchedulingSpec scheduling_spec = 40; 462 string pod_spec = 41; 463 string pod_patch = 44; 464 bool s3_out = 47; 465 Metadata metadata = 48; 466 } 467 468 message PipelineInfos { 469 repeated PipelineInfo pipeline_info = 1; 470 } 471 472 message CreateJobRequest { 473 reserved 3, 4, 1, 10, 7, 9, 8, 12, 11, 13, 14, 21, 15, 16, 17, 18, 19, 20, 22, 23, 24; 474 Pipeline pipeline = 2; 475 pfs_1_12.Commit output_commit = 25; 476 477 // Fields below should only be set when restoring an extracted job. 478 uint64 restart = 26; 479 480 // Counts of how many times we processed or skipped a datum 481 int64 data_processed = 27; 482 int64 data_skipped = 28; 483 int64 data_total = 29; 484 int64 data_failed = 30; 485 int64 data_recovered = 31; 486 487 // Download/process/upload time and download/upload bytes 488 ProcessStats stats = 32; 489 490 pfs_1_12.Commit stats_commit = 33; 491 JobState state = 34; 492 string reason = 35; 493 google.protobuf.Timestamp started = 36; 494 google.protobuf.Timestamp finished = 37; 495 } 496 497 message InspectJobRequest { 498 // Callers should set either Job or OutputCommit, not both. 499 Job job = 1; 500 pfs_1_12.Commit output_commit = 3; 501 bool block_state = 2; // block until state is either JOB_STATE_FAILURE or JOB_STATE_SUCCESS 502 bool full = 4; 503 } 504 505 message ListJobRequest { 506 Pipeline pipeline = 1; // nil means all pipelines 507 repeated pfs_1_12.Commit input_commit = 2; // nil means all inputs 508 pfs_1_12.Commit output_commit = 3; // nil means all outputs 509 510 // History indicates return jobs from historical versions of pipelines 511 // semantics are: 512 // 0: Return jobs from the current version of the pipeline or pipelines. 513 // 1: Return the above and jobs from the next most recent version 514 // 2: etc. 515 //-1: Return jobs from all historical versions. 516 int64 history = 4; 517 518 // Full indicates whether the result should include all pipeline details in 519 // each JobInfo, or limited information including name and status, but 520 // excluding information in the pipeline spec. Leaving this "false" can make 521 // the call significantly faster in clusters with a large number of pipelines 522 // and jobs. 523 // Note that if 'input_commit' is set, this field is coerced to "true" 524 bool full = 5; 525 526 // A jq program string for additional result filtering 527 string jqFilter = 6; 528 } 529 530 message FlushJobRequest { 531 repeated pfs_1_12.Commit commits = 1; 532 repeated Pipeline to_pipelines = 2; 533 } 534 535 message DeleteJobRequest { 536 Job job = 1; 537 } 538 539 message StopJobRequest { 540 Job job = 1; 541 } 542 543 message UpdateJobStateRequest { 544 Job job = 1; 545 JobState state = 2; 546 string reason = 3; 547 uint64 restart = 4; 548 int64 data_processed = 5; 549 int64 data_skipped = 6; 550 int64 data_failed = 7; 551 int64 data_recovered = 8; 552 int64 data_total = 9; 553 ProcessStats stats = 10; 554 } 555 556 message GetLogsRequest { 557 reserved 4; 558 // The pipeline from which we want to get logs (required if the job in 'job' 559 // was created as part of a pipeline. To get logs from a non-orphan job 560 // without the pipeline that created it, you need to use ElasticSearch). 561 Pipeline pipeline = 2; 562 563 // The job from which we want to get logs. 564 Job job = 1; 565 566 // Names of input files from which we want processing logs. This may contain 567 // multiple files, to query pipelines that contain multiple inputs. Each 568 // filter may be an absolute path of a file within a pps repo, or it may be 569 // a hash for that file (to search for files at specific versions) 570 repeated string data_filters = 3; 571 572 Datum datum = 6; 573 574 // If true get logs from the master process 575 bool master = 5; 576 577 // Continue to follow new logs as they become available. 578 bool follow = 7; 579 580 // If nonzero, the number of lines from the end of the logs to return. Note: 581 // tail applies per container, so you will get tail * <number of pods> total 582 // lines back. 583 int64 tail = 8; 584 585 // UseLokiBackend causes the logs request to go through the loki backend 586 // rather than through kubernetes. This behavior can also be achieved by 587 // setting the LOKI_LOGGING feature flag. 588 bool use_loki_backend = 9; 589 } 590 591 // LogMessage is a log line from a PPS worker, annotated with metadata 592 // indicating when and why the line was logged. 593 message LogMessage { 594 // The job and pipeline for which a PFS file is being processed (if the job 595 // is an orphan job, pipeline name and ID will be unset) 596 string pipeline_name = 1; 597 string job_id = 3 [(gogoproto.customname) = "JobID"]; 598 string worker_id = 7 [(gogoproto.customname) = "WorkerID"]; 599 string datum_id = 9 [(gogoproto.customname) = "DatumID"]; 600 bool master = 10; 601 602 // The PFS files being processed (one per pipeline/job input) 603 repeated InputFile data = 4; 604 605 // User is true if log message comes from the users code. 606 bool user = 8; 607 608 // The message logged, and the time at which it was logged 609 google.protobuf.Timestamp ts = 5; 610 string message = 6; 611 } 612 613 message RestartDatumRequest { 614 Job job = 1; 615 repeated string data_filters = 2; 616 } 617 618 message InspectDatumRequest { 619 Datum datum = 1; 620 } 621 622 message ListDatumRequest { 623 // Job and Input are two different ways to specify the datums you want. 624 // Only one can be set. 625 // Job is the job to list datums from. 626 Job job = 1; 627 // Input is the input to list datums from. 628 // The datums listed are the ones that would be run if a pipeline was created 629 // with input. 630 Input input = 4; 631 int64 page_size = 2; 632 int64 page = 3; 633 } 634 635 message ListDatumResponse { 636 repeated DatumInfo datum_infos = 1; 637 int64 total_pages = 2; 638 int64 page = 3; 639 } 640 641 // ListDatumStreamResponse is identical to ListDatumResponse, except that only 642 // one DatumInfo is present (as these responses are streamed) 643 message ListDatumStreamResponse { 644 DatumInfo datum_info = 1; 645 // total_pages is only set in the first response (and set to 0 in all other 646 // responses) 647 int64 total_pages = 2; 648 // page is only set in the first response (and set to 0 in all other 649 // responses) 650 int64 page = 3; 651 } 652 653 // ChunkSpec specifies how a pipeline should chunk its datums. 654 message ChunkSpec { 655 // number, if nonzero, specifies that each chunk should contain `number` 656 // datums. Chunks may contain fewer if the total number of datums don't 657 // divide evenly. 658 int64 number = 1; 659 // size_bytes, if nonzero, specifies a target size for each chunk of datums. 660 // Chunks may be larger or smaller than size_bytes, but will usually be 661 // pretty close to size_bytes in size. 662 int64 size_bytes = 2; 663 } 664 665 message SchedulingSpec { 666 map<string, string> node_selector = 1; 667 string priority_class_name = 2; 668 } 669 670 message CreatePipelineRequest { 671 reserved 3, 4, 11, 15, 19; 672 Pipeline pipeline = 1; 673 // tf_job encodes a Kubeflow TFJob spec. Pachyderm uses this to create TFJobs 674 // when running in a kubernetes cluster on which kubeflow has been installed. 675 // Exactly one of 'tf_job' and 'transform' should be set 676 TFJob tf_job = 35 [(gogoproto.customname) = "TFJob"]; 677 Transform transform = 2; 678 ParallelismSpec parallelism_spec = 7; 679 HashtreeSpec hashtree_spec = 31; 680 Egress egress = 9; 681 bool update = 5; 682 string output_branch = 10; 683 // s3_out, if set, requires a pipeline's user to write to its output repo 684 // via Pachyderm's s3 gateway (if set, workers will serve Pachyderm's s3 685 // gateway API at http://<pipeline>-s3.<namespace>/<job id>.out/my/file). 686 // In this mode /pfs/out won't be walked or uploaded, and the s3 gateway 687 // service in the workers will allow writes to the job's output commit 688 bool s3_out = 36; 689 ResourceSpec resource_requests = 12; 690 ResourceSpec resource_limits = 22; 691 ResourceSpec sidecar_resource_limits = 47; 692 Input input = 13; 693 string description = 14; 694 string cache_size = 16; 695 bool enable_stats = 17; 696 // Reprocess forces the pipeline to reprocess all datums. 697 // It only has meaning if Update is true 698 bool reprocess = 18; 699 int64 max_queue_size = 20; 700 Service service = 21; 701 Spout spout = 33; 702 ChunkSpec chunk_spec = 23; 703 google.protobuf.Duration datum_timeout = 24; 704 google.protobuf.Duration job_timeout = 25; 705 string salt = 26; 706 bool standby = 27; 707 int64 datum_tries = 28; 708 SchedulingSpec scheduling_spec = 29; 709 string pod_spec = 30; // deprecated, use pod_patch below 710 string pod_patch = 32; // a json patch will be applied to the pipeline's pod_spec before it's created; 711 pfs_1_12.Commit spec_commit = 34; 712 Metadata metadata = 46; 713 } 714 715 message InspectPipelineRequest { 716 Pipeline pipeline = 1; 717 } 718 719 message ListPipelineRequest { 720 // If non-nil, only return info about a single pipeline, this is redundant 721 // with InspectPipeline unless history is non-zero. 722 Pipeline pipeline = 1; 723 // History indicates how many historical versions you want returned. Its 724 // semantics are: 725 // 0: Return the current version of the pipeline or pipelines. 726 // 1: Return the above and the next most recent version 727 // 2: etc. 728 //-1: Return all historical versions. 729 int64 history = 2; 730 731 // Return PipelineInfos with incomplete data if the pipeline spec cannot be 732 // retrieved. Incomplete PipelineInfos will have a nil Transform field, but 733 // will have the fields present in EtcdPipelineInfo. 734 bool allow_incomplete = 3; 735 736 // A jq program string for additional result filtering 737 string jqFilter = 4; 738 } 739 740 message DeletePipelineRequest { 741 reserved 2, 3; 742 Pipeline pipeline = 1; 743 bool all = 4; 744 bool force = 5; 745 bool keep_repo = 6; 746 bool split_transaction = 7; 747 } 748 749 message StartPipelineRequest { 750 Pipeline pipeline = 1; 751 } 752 753 message StopPipelineRequest { 754 Pipeline pipeline = 1; 755 } 756 757 message RunPipelineRequest { 758 reserved 3; 759 Pipeline pipeline = 1; 760 repeated pfs_1_12.CommitProvenance provenance = 2; 761 string job_id = 4 [(gogoproto.customname) = "JobID"]; 762 } 763 764 message RunCronRequest { 765 Pipeline pipeline = 1; 766 } 767 768 message CreateSecretRequest { 769 bytes file = 1; 770 } 771 772 message DeleteSecretRequest { 773 Secret secret = 1; 774 } 775 776 message InspectSecretRequest { 777 Secret secret = 1; 778 } 779 780 message Secret { 781 string name = 1; 782 } 783 784 message SecretInfo { 785 Secret secret = 1; 786 string type = 2; 787 google.protobuf.Timestamp creation_timestamp = 3; 788 } 789 790 message SecretInfos { 791 repeated SecretInfo secret_info = 1; 792 } 793 794 message GarbageCollectRequest { 795 // Memory is how much memory to use in computing which objects are alive. A 796 // larger number will result in more precise garbage collection (at the 797 // cost of more memory usage). 798 int64 memory_bytes = 1; 799 } 800 message GarbageCollectResponse {} 801 802 message ActivateAuthRequest {} 803 message ActivateAuthResponse {} 804 805 service API { 806 rpc CreateJob(CreateJobRequest) returns (Job) {} 807 rpc InspectJob(InspectJobRequest) returns (JobInfo) {} 808 // ListJob returns information about current and past Pachyderm jobs. This is 809 // deprecated in favor of ListJobStream 810 rpc ListJob(ListJobRequest) returns (JobInfos) {} 811 // ListJobStream returns information about current and past Pachyderm jobs. 812 rpc ListJobStream(ListJobRequest) returns (stream JobInfo) {} 813 rpc FlushJob(FlushJobRequest) returns (stream JobInfo) {} 814 rpc DeleteJob(DeleteJobRequest) returns (google.protobuf.Empty) {} 815 rpc StopJob(StopJobRequest) returns (google.protobuf.Empty) {} 816 rpc InspectDatum(InspectDatumRequest) returns (DatumInfo) {} 817 // ListDatum returns information about each datum fed to a Pachyderm job. This 818 // is deprecated in favor of ListDatumStream 819 rpc ListDatum(ListDatumRequest) returns (ListDatumResponse) {} 820 // ListDatumStream returns information about each datum fed to a Pachyderm job 821 rpc ListDatumStream(ListDatumRequest) returns (stream ListDatumStreamResponse) {} 822 rpc RestartDatum(RestartDatumRequest) returns (google.protobuf.Empty) {} 823 824 rpc CreatePipeline(CreatePipelineRequest) returns (google.protobuf.Empty) {} 825 rpc InspectPipeline(InspectPipelineRequest) returns (PipelineInfo) {} 826 rpc ListPipeline(ListPipelineRequest) returns (PipelineInfos) {} 827 rpc DeletePipeline(DeletePipelineRequest) returns (google.protobuf.Empty) {} 828 rpc StartPipeline(StartPipelineRequest) returns (google.protobuf.Empty) {} 829 rpc StopPipeline(StopPipelineRequest) returns (google.protobuf.Empty) {} 830 rpc RunPipeline(RunPipelineRequest) returns (google.protobuf.Empty) {} 831 rpc RunCron(RunCronRequest) returns (google.protobuf.Empty) {} 832 833 rpc CreateSecret(CreateSecretRequest) returns (google.protobuf.Empty) {} 834 rpc DeleteSecret(DeleteSecretRequest) returns (google.protobuf.Empty) {} 835 rpc ListSecret(google.protobuf.Empty) returns (SecretInfos) {} 836 rpc InspectSecret(InspectSecretRequest) returns (SecretInfo) {} 837 838 // DeleteAll deletes everything 839 rpc DeleteAll(google.protobuf.Empty) returns (google.protobuf.Empty) {} 840 rpc GetLogs(GetLogsRequest) returns (stream LogMessage) {} 841 842 // Garbage collection 843 rpc GarbageCollect(GarbageCollectRequest) returns (GarbageCollectResponse) {} 844 845 // An internal call that causes PPS to put itself into an auth-enabled state 846 // (all pipeline have tokens, correct permissions, etcd) 847 rpc ActivateAuth(ActivateAuthRequest) returns (ActivateAuthResponse) {} 848 849 // An internal call used to move a job from one state to another 850 rpc UpdateJobState(UpdateJobStateRequest) returns(google.protobuf.Empty) {} 851 }