217 lines
7.2 KiB
Protocol Buffer
217 lines
7.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package org.kubeflow.pipelines.components.v1alpha1;
|
|
import "google/protobuf/struct.proto";
|
|
|
|
// Describes the component input specification
|
|
message InputSpec {
|
|
string name = 1;
|
|
TypeSpecType type = 2;
|
|
string description = 3;
|
|
string default = 4;
|
|
bool optional = 5;
|
|
}
|
|
|
|
// Describes the component output specification
|
|
message OutputSpec {
|
|
string name = 1;
|
|
TypeSpecType type = 2;
|
|
string description = 3;
|
|
}
|
|
|
|
message StringOrPlaceholder {
|
|
oneof oneof {
|
|
// Constant string
|
|
string constantValue = 1;
|
|
|
|
// Represents the command-line argument placeholder that will be replaced at run-time by the input argument value.
|
|
string inputValue = 2; // == input value for <Input name>
|
|
|
|
// Represents the command-line argument placeholder that will be replaced at run-time by a local file path pointing to a file containing the input argument value.
|
|
string inputPath = 3; // == input path for <Input name>
|
|
|
|
// Represents the command-line argument placeholder that will be replaced at run-time by a local file path pointing to a file where the program should write its output data.
|
|
string outputPath = 4; // == output path for <Output name>
|
|
|
|
// Represents the command-line argument placeholder that will be replaced at run-time by the concatenated values of its items.
|
|
ConcatPlaceholder concat = 5;
|
|
|
|
// Represents the command-line argument placeholder that will be replaced at run-time by a boolean value specifying whether the caller has passed an argument for the specified optional input.
|
|
IfPlaceholder if = 6;
|
|
}
|
|
}
|
|
|
|
message ContainerSpec {
|
|
// Docker image name.
|
|
string image = 1;
|
|
|
|
// Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided.
|
|
repeated StringOrPlaceholder command = 2;
|
|
|
|
// Arguments to the entrypoint. The docker image's CMD is used if this is not provided.
|
|
repeated StringOrPlaceholder args = 3;
|
|
|
|
// List of environment variables to set in the container.
|
|
map<string, string> env = 4;
|
|
|
|
// Legacy. Deprecated. Can be used to specify output paths for programs that do not allow setting the path of some output using command-line.
|
|
map<string, string> fileOutputs = 5;
|
|
}
|
|
|
|
// Represents the container component implementation.
|
|
message ContainerImplementation {
|
|
ContainerSpec container = 1;
|
|
}
|
|
|
|
// Component specification. Describes the metadata (name, description, source), the interface (inputs and outputs) and the implementation of the component.
|
|
message ComponentSpec {
|
|
string name = 1;
|
|
string description = 2;
|
|
repeated InputSpec inputs = 3;
|
|
repeated OutputSpec outputs = 4;
|
|
ImplementationType implementation = 5;
|
|
string version = 6;
|
|
MetadataSpec metadata = 7;
|
|
}
|
|
|
|
// Component reference. Contains information that can be used to locate and load a component by name, digest or URL
|
|
message ComponentReference {
|
|
string name = 1;
|
|
string digest = 2;
|
|
string tag = 3;
|
|
string url = 4;
|
|
ComponentSpec spec = 5;
|
|
}
|
|
|
|
// References the input of the graph.
|
|
message GraphInputReference {
|
|
string inputName = 1;
|
|
TypeSpecType type = 2;
|
|
}
|
|
|
|
// References the output of a sibling task.
|
|
message TaskOutputReference {
|
|
string outputName = 1;
|
|
string taskId = 2;
|
|
TypeSpecType type = 3;
|
|
}
|
|
|
|
|
|
message TaskArgumentType {
|
|
oneof oneof {
|
|
// Constant task argument.
|
|
string string_value = 1;
|
|
|
|
// Represents the task argument value that comes from the graph component input.
|
|
GraphInputReference graphInput = 2;
|
|
|
|
// Represents the task argument value that comes from the output of a sibling task.
|
|
TaskOutputReference taskOutput = 3;
|
|
}
|
|
}
|
|
|
|
// Task specification. Task is a configured component - a component supplied with arguments and other applied configuration changes.
|
|
message TaskSpec {
|
|
ComponentReference componentRef = 1; // Reference to the component from which the task is instantiated
|
|
|
|
map<string, TaskArgumentType> arguments = 2; // Arguments to pass to the component
|
|
|
|
PredicateType isEnabled = 3; // Specifies predicate to execute the task conditionally
|
|
|
|
ExecutionOptionsSpec executionOptions = 4;
|
|
}
|
|
|
|
// Describes the graph component implementation. It represents a graph of component tasks connected to the upstream sources of data using the argument specifications. It also describes the sources of graph output values.
|
|
message GraphSpec {
|
|
map<string, TaskSpec> tasks = 1; // List of tasks (components and their arguments) belonging to the graph.
|
|
map<string, TaskArgumentType> outputValues = 2; // Sources of the graph component output values.
|
|
}
|
|
|
|
// The implementation of the component
|
|
message ImplementationType {
|
|
oneof oneof {
|
|
ContainerSpec container = 1; // Represents the component implementated as a containerized program
|
|
GraphSpec graph = 2; // Represents the component implementated as graph of connected tasks
|
|
}
|
|
}
|
|
|
|
// The object that can be sent to the backend to start a new Run.
|
|
message PipelineRunSpec {
|
|
TaskSpec rootTask = 1;
|
|
TaskSpec onExitTask = 2;
|
|
}
|
|
|
|
message TypeSpecType {
|
|
message Properties {
|
|
map<string, TypeSpecType> type = 1;
|
|
}
|
|
|
|
oneof oneof {
|
|
string type_name = 1;
|
|
Properties properties = 2;
|
|
}
|
|
}
|
|
|
|
// Represents the command-line argument placeholder that will be replaced at run-time by the concatenated values of its items.
|
|
message ConcatPlaceholder {
|
|
// Items to concatenate
|
|
repeated StringOrPlaceholder items = 1;
|
|
}
|
|
|
|
message IfConditionArgumentType {
|
|
oneof oneof {
|
|
bool boolean_value = 1; // e.g. True
|
|
string string_value = 2; // e.g. "true"
|
|
string isPresent = 3; // Checks whether an argument for some input was passed to the component // Represents the command-line argument placeholder that will be replaced at run-time by a boolean value specifying whether the caller has passed an argument for the specified optional input.
|
|
}
|
|
}
|
|
|
|
message IfPlaceholder {
|
|
IfConditionArgumentType cond = 1;
|
|
repeated StringOrPlaceholder then = 2;
|
|
repeated StringOrPlaceholder else = 3;
|
|
}
|
|
|
|
message MetadataSpec {
|
|
map<string, string> annotations = 1;
|
|
}
|
|
|
|
// Represents a logical expression. Used to specify condition for conditional task executed.
|
|
message PredicateType {
|
|
oneof oneof {
|
|
PredicateType not = 1;
|
|
|
|
TwoLogicalOperands and = 2;
|
|
TwoLogicalOperands or = 3;
|
|
|
|
TwoArgumentOperands eq = 4;
|
|
TwoArgumentOperands ne = 5;
|
|
TwoArgumentOperands gt = 6;
|
|
TwoArgumentOperands ge = 7;
|
|
TwoArgumentOperands lt = 8;
|
|
TwoArgumentOperands le = 9;
|
|
}
|
|
}
|
|
|
|
// Pair of operands for a binary operation.
|
|
message TwoArgumentOperands {
|
|
TaskArgumentType op1 = 1;
|
|
TaskArgumentType op2 = 2;
|
|
}
|
|
|
|
// Pair of operands for a binary logical operation.
|
|
message TwoLogicalOperands {
|
|
PredicateType op1 = 1;
|
|
PredicateType op2 = 2;
|
|
}
|
|
|
|
// Optional configuration that specifies how the task should be retried if it fails.
|
|
message RetryStrategySpec {
|
|
int32 maxRetries = 1;
|
|
}
|
|
|
|
// Optional configuration that specifies how the task should be executed. Can be used to set some platform-specific options.
|
|
message ExecutionOptionsSpec {
|
|
RetryStrategySpec retryStrategy = 1;
|
|
}
|