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