github.com/pachyderm/pachyderm@v1.13.4/src/client/pps/pps.proto (about) 1 syntax = "proto3"; 2 3 package pps; 4 option go_package = "github.com/pachyderm/pachyderm/src/client/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/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.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.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.File pfs_state = 4; 202 repeated pfs.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.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.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.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.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.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.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.BranchInfo new_branch = 27; 328 pfs.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.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, 55; 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.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 string reprocess_spec = 56; 467 // Set at call time, not stored in pfs/etcd 468 int64 unclaimed_tasks = 52; 469 string worker_rc = 53; 470 bool autoscaling = 54; 471 } 472 473 message PipelineInfos { 474 repeated PipelineInfo pipeline_info = 1; 475 } 476 477 message CreateJobRequest { 478 reserved 3, 4, 1, 10, 7, 9, 8, 12, 11, 13, 14, 21, 15, 16, 17, 18, 19, 20, 22, 23, 24; 479 Pipeline pipeline = 2; 480 pfs.Commit output_commit = 25; 481 482 // Fields below should only be set when restoring an extracted job. 483 uint64 restart = 26; 484 485 // Counts of how many times we processed or skipped a datum 486 int64 data_processed = 27; 487 int64 data_skipped = 28; 488 int64 data_total = 29; 489 int64 data_failed = 30; 490 int64 data_recovered = 31; 491 492 // Download/process/upload time and download/upload bytes 493 ProcessStats stats = 32; 494 495 pfs.Commit stats_commit = 33; 496 JobState state = 34; 497 string reason = 35; 498 google.protobuf.Timestamp started = 36; 499 google.protobuf.Timestamp finished = 37; 500 } 501 502 message InspectJobRequest { 503 // Callers should set either Job or OutputCommit, not both. 504 Job job = 1; 505 pfs.Commit output_commit = 3; 506 bool block_state = 2; // block until state is either JOB_STATE_FAILURE or JOB_STATE_SUCCESS 507 bool full = 4; 508 } 509 510 message ListJobRequest { 511 Pipeline pipeline = 1; // nil means all pipelines 512 repeated pfs.Commit input_commit = 2; // nil means all inputs 513 pfs.Commit output_commit = 3; // nil means all outputs 514 515 // History indicates return jobs from historical versions of pipelines 516 // semantics are: 517 // 0: Return jobs from the current version of the pipeline or pipelines. 518 // 1: Return the above and jobs from the next most recent version 519 // 2: etc. 520 //-1: Return jobs from all historical versions. 521 int64 history = 4; 522 523 // Full indicates whether the result should include all pipeline details in 524 // each JobInfo, or limited information including name and status, but 525 // excluding information in the pipeline spec. Leaving this "false" can make 526 // the call significantly faster in clusters with a large number of pipelines 527 // and jobs. 528 // Note that if 'input_commit' is set, this field is coerced to "true" 529 bool full = 5; 530 531 // A jq program string for additional result filtering 532 string jqFilter = 6; 533 } 534 535 message FlushJobRequest { 536 repeated pfs.Commit commits = 1; 537 repeated Pipeline to_pipelines = 2; 538 } 539 540 message DeleteJobRequest { 541 Job job = 1; 542 } 543 544 message StopJobRequest { 545 Job job = 1; 546 } 547 548 message UpdateJobStateRequest { 549 Job job = 1; 550 JobState state = 2; 551 string reason = 3; 552 uint64 restart = 4; 553 int64 data_processed = 5; 554 int64 data_skipped = 6; 555 int64 data_failed = 7; 556 int64 data_recovered = 8; 557 int64 data_total = 9; 558 ProcessStats stats = 10; 559 } 560 561 message GetLogsRequest { 562 reserved 4; 563 // The pipeline from which we want to get logs (required if the job in 'job' 564 // was created as part of a pipeline. To get logs from a non-orphan job 565 // without the pipeline that created it, you need to use ElasticSearch). 566 Pipeline pipeline = 2; 567 568 // The job from which we want to get logs. 569 Job job = 1; 570 571 // Names of input files from which we want processing logs. This may contain 572 // multiple files, to query pipelines that contain multiple inputs. Each 573 // filter may be an absolute path of a file within a pps repo, or it may be 574 // a hash for that file (to search for files at specific versions) 575 repeated string data_filters = 3; 576 577 Datum datum = 6; 578 579 // If true get logs from the master process 580 bool master = 5; 581 582 // Continue to follow new logs as they become available. 583 bool follow = 7; 584 585 // If nonzero, the number of lines from the end of the logs to return. Note: 586 // tail applies per container, so you will get tail * <number of pods> total 587 // lines back. 588 int64 tail = 8; 589 590 // UseLokiBackend causes the logs request to go through the loki backend 591 // rather than through kubernetes. This behavior can also be achieved by 592 // setting the LOKI_LOGGING feature flag. 593 bool use_loki_backend = 9; 594 595 // Since specifies how far in the past to return logs from. It defaults to 24 hours. 596 google.protobuf.Duration since = 10; 597 } 598 599 // LogMessage is a log line from a PPS worker, annotated with metadata 600 // indicating when and why the line was logged. 601 message LogMessage { 602 // The job and pipeline for which a PFS file is being processed (if the job 603 // is an orphan job, pipeline name and ID will be unset) 604 string pipeline_name = 1; 605 string job_id = 3 [(gogoproto.customname) = "JobID"]; 606 string worker_id = 7 [(gogoproto.customname) = "WorkerID"]; 607 string datum_id = 9 [(gogoproto.customname) = "DatumID"]; 608 bool master = 10; 609 610 // The PFS files being processed (one per pipeline/job input) 611 repeated InputFile data = 4; 612 613 // User is true if log message comes from the users code. 614 bool user = 8; 615 616 // The message logged, and the time at which it was logged 617 google.protobuf.Timestamp ts = 5; 618 string message = 6; 619 } 620 621 message RestartDatumRequest { 622 Job job = 1; 623 repeated string data_filters = 2; 624 } 625 626 message InspectDatumRequest { 627 Datum datum = 1; 628 } 629 630 message ListDatumRequest { 631 // Job and Input are two different ways to specify the datums you want. 632 // Only one can be set. 633 // Job is the job to list datums from. 634 Job job = 1; 635 // Input is the input to list datums from. 636 // The datums listed are the ones that would be run if a pipeline was created 637 // with input. 638 Input input = 4; 639 int64 page_size = 2; 640 int64 page = 3; 641 // Enables retrieving only status information for datums, rather than including the 642 // inputs and time spent, which improves performance. 643 bool status_only = 5; 644 } 645 646 message ListDatumResponse { 647 repeated DatumInfo datum_infos = 1; 648 int64 total_pages = 2; 649 int64 page = 3; 650 } 651 652 // ListDatumStreamResponse is identical to ListDatumResponse, except that only 653 // one DatumInfo is present (as these responses are streamed) 654 message ListDatumStreamResponse { 655 DatumInfo datum_info = 1; 656 // total_pages is only set in the first response (and set to 0 in all other 657 // responses) 658 int64 total_pages = 2; 659 // page is only set in the first response (and set to 0 in all other 660 // responses) 661 int64 page = 3; 662 } 663 664 // ChunkSpec specifies how a pipeline should chunk its datums. 665 message ChunkSpec { 666 // number, if nonzero, specifies that each chunk should contain `number` 667 // datums. Chunks may contain fewer if the total number of datums don't 668 // divide evenly. 669 int64 number = 1; 670 // size_bytes, if nonzero, specifies a target size for each chunk of datums. 671 // Chunks may be larger or smaller than size_bytes, but will usually be 672 // pretty close to size_bytes in size. 673 int64 size_bytes = 2; 674 } 675 676 message SchedulingSpec { 677 map<string, string> node_selector = 1; 678 string priority_class_name = 2; 679 } 680 681 message CreatePipelineRequest { 682 reserved 3, 4, 11, 15, 19, 49; 683 Pipeline pipeline = 1; 684 // tf_job encodes a Kubeflow TFJob spec. Pachyderm uses this to create TFJobs 685 // when running in a kubernetes cluster on which kubeflow has been installed. 686 // Exactly one of 'tf_job' and 'transform' should be set 687 TFJob tf_job = 35 [(gogoproto.customname) = "TFJob"]; 688 Transform transform = 2; 689 ParallelismSpec parallelism_spec = 7; 690 HashtreeSpec hashtree_spec = 31; 691 Egress egress = 9; 692 bool update = 5; 693 string output_branch = 10; 694 // s3_out, if set, requires a pipeline's user to write to its output repo 695 // via Pachyderm's s3 gateway (if set, workers will serve Pachyderm's s3 696 // gateway API at http://<pipeline>-s3.<namespace>/<job id>.out/my/file). 697 // In this mode /pfs/out won't be walked or uploaded, and the s3 gateway 698 // service in the workers will allow writes to the job's output commit 699 bool s3_out = 36; 700 ResourceSpec resource_requests = 12; 701 ResourceSpec resource_limits = 22; 702 ResourceSpec sidecar_resource_limits = 47; 703 Input input = 13; 704 string description = 14; 705 string cache_size = 16; 706 bool enable_stats = 17; 707 // Reprocess forces the pipeline to reprocess all datums. 708 // It only has meaning if Update is true 709 bool reprocess = 18; 710 int64 max_queue_size = 20; 711 Service service = 21; 712 Spout spout = 33; 713 ChunkSpec chunk_spec = 23; 714 google.protobuf.Duration datum_timeout = 24; 715 google.protobuf.Duration job_timeout = 25; 716 string salt = 26; 717 bool standby = 27; 718 int64 datum_tries = 28; 719 SchedulingSpec scheduling_spec = 29; 720 string pod_spec = 30; // deprecated, use pod_patch below 721 string pod_patch = 32; // a json patch will be applied to the pipeline's pod_spec before it's created; 722 pfs.Commit spec_commit = 34; 723 Metadata metadata = 46; 724 bool autoscaling = 48; 725 string reprocess_spec = 50; 726 } 727 728 message InspectPipelineRequest { 729 Pipeline pipeline = 1; 730 } 731 732 message ListPipelineRequest { 733 // If non-nil, only return info about a single pipeline, this is redundant 734 // with InspectPipeline unless history is non-zero. 735 Pipeline pipeline = 1; 736 // History indicates how many historical versions you want returned. Its 737 // semantics are: 738 // 0: Return the current version of the pipeline or pipelines. 739 // 1: Return the above and the next most recent version 740 // 2: etc. 741 //-1: Return all historical versions. 742 int64 history = 2; 743 744 // Return PipelineInfos with incomplete data if the pipeline spec cannot be 745 // retrieved. Incomplete PipelineInfos will have a nil Transform field, but 746 // will have the fields present in EtcdPipelineInfo. 747 bool allow_incomplete = 3; 748 749 // A jq program string for additional result filtering 750 string jqFilter = 4; 751 } 752 753 message DeletePipelineRequest { 754 reserved 2, 3; 755 Pipeline pipeline = 1; 756 bool all = 4; 757 bool force = 5; 758 bool keep_repo = 6; 759 bool split_transaction = 7; 760 } 761 762 message StartPipelineRequest { 763 Pipeline pipeline = 1; 764 } 765 766 message StopPipelineRequest { 767 Pipeline pipeline = 1; 768 } 769 770 message RunPipelineRequest { 771 reserved 3; 772 Pipeline pipeline = 1; 773 repeated pfs.CommitProvenance provenance = 2; 774 string job_id = 4 [(gogoproto.customname) = "JobID"]; 775 } 776 777 message RunCronRequest { 778 Pipeline pipeline = 1; 779 } 780 781 message CreateSecretRequest { 782 bytes file = 1; 783 } 784 785 message DeleteSecretRequest { 786 Secret secret = 1; 787 } 788 789 message InspectSecretRequest { 790 Secret secret = 1; 791 } 792 793 message Secret { 794 string name = 1; 795 } 796 797 message SecretInfo { 798 Secret secret = 1; 799 string type = 2; 800 google.protobuf.Timestamp creation_timestamp = 3; 801 } 802 803 message SecretInfos { 804 repeated SecretInfo secret_info = 1; 805 } 806 807 message GarbageCollectRequest { 808 // Memory is how much memory to use in computing which objects are alive. A 809 // larger number will result in more precise garbage collection (at the 810 // cost of more memory usage). 811 int64 memory_bytes = 1; 812 } 813 message GarbageCollectResponse {} 814 815 message ActivateAuthRequest {} 816 message ActivateAuthResponse {} 817 818 service API { 819 rpc CreateJob(CreateJobRequest) returns (Job) {} 820 rpc InspectJob(InspectJobRequest) returns (JobInfo) {} 821 // ListJob returns information about current and past Pachyderm jobs. This is 822 // deprecated in favor of ListJobStream 823 rpc ListJob(ListJobRequest) returns (JobInfos) {} 824 // ListJobStream returns information about current and past Pachyderm jobs. 825 rpc ListJobStream(ListJobRequest) returns (stream JobInfo) {} 826 rpc FlushJob(FlushJobRequest) returns (stream JobInfo) {} 827 rpc DeleteJob(DeleteJobRequest) returns (google.protobuf.Empty) {} 828 rpc StopJob(StopJobRequest) returns (google.protobuf.Empty) {} 829 rpc InspectDatum(InspectDatumRequest) returns (DatumInfo) {} 830 // ListDatum returns information about each datum fed to a Pachyderm job. This 831 // is deprecated in favor of ListDatumStream 832 rpc ListDatum(ListDatumRequest) returns (ListDatumResponse) {} 833 // ListDatumStream returns information about each datum fed to a Pachyderm job 834 rpc ListDatumStream(ListDatumRequest) returns (stream ListDatumStreamResponse) {} 835 rpc RestartDatum(RestartDatumRequest) returns (google.protobuf.Empty) {} 836 837 rpc CreatePipeline(CreatePipelineRequest) returns (google.protobuf.Empty) {} 838 rpc InspectPipeline(InspectPipelineRequest) returns (PipelineInfo) {} 839 rpc ListPipeline(ListPipelineRequest) returns (PipelineInfos) {} 840 rpc DeletePipeline(DeletePipelineRequest) returns (google.protobuf.Empty) {} 841 rpc StartPipeline(StartPipelineRequest) returns (google.protobuf.Empty) {} 842 rpc StopPipeline(StopPipelineRequest) returns (google.protobuf.Empty) {} 843 rpc RunPipeline(RunPipelineRequest) returns (google.protobuf.Empty) {} 844 rpc RunCron(RunCronRequest) returns (google.protobuf.Empty) {} 845 846 rpc CreateSecret(CreateSecretRequest) returns (google.protobuf.Empty) {} 847 rpc DeleteSecret(DeleteSecretRequest) returns (google.protobuf.Empty) {} 848 rpc ListSecret(google.protobuf.Empty) returns (SecretInfos) {} 849 rpc InspectSecret(InspectSecretRequest) returns (SecretInfo) {} 850 851 // DeleteAll deletes everything 852 rpc DeleteAll(google.protobuf.Empty) returns (google.protobuf.Empty) {} 853 rpc GetLogs(GetLogsRequest) returns (stream LogMessage) {} 854 855 // Garbage collection 856 rpc GarbageCollect(GarbageCollectRequest) returns (GarbageCollectResponse) {} 857 858 // An internal call that causes PPS to put itself into an auth-enabled state 859 // (all pipeline have tokens, correct permissions, etcd) 860 rpc ActivateAuth(ActivateAuthRequest) returns (ActivateAuthResponse) {} 861 862 // An internal call used to move a job from one state to another 863 rpc UpdateJobState(UpdateJobStateRequest) returns(google.protobuf.Empty) {} 864 }