syntax = "proto3"; package flyteidl.admin; option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"; import "flyteidl/admin/common.proto"; import "flyteidl/core/execution.proto"; import "flyteidl/core/catalog.proto"; import "flyteidl/core/compiler.proto"; import "flyteidl/core/identifier.proto"; import "flyteidl/core/literals.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/duration.proto"; // A message used to fetch a single node execution entity. // See :ref:`ref_flyteidl.admin.NodeExecution` for more details message NodeExecutionGetRequest { // Uniquely identifies an individual node execution. // +required core.NodeExecutionIdentifier id = 1; } // Represents a request structure to retrieve a list of node execution entities. // See :ref:`ref_flyteidl.admin.NodeExecution` for more details message NodeExecutionListRequest { // Indicates the workflow execution to filter by. // +required core.WorkflowExecutionIdentifier workflow_execution_id = 1; // Indicates the number of resources to be returned. // +required uint32 limit = 2; // In the case of multiple pages of results, the, server-provided token can be used to fetch the next page // in a query. // +optional string token = 3; // Indicates a list of filters passed as string. // More info on constructing filters : // +optional string filters = 4; // Sort ordering. // +optional Sort sort_by = 5; // Unique identifier of the parent node in the execution // +optional string unique_parent_id = 6; } // Represents a request structure to retrieve a list of node execution entities launched by a specific task. // This can arise when a task yields a subworkflow. message NodeExecutionForTaskListRequest { // Indicates the node execution to filter by. // +required core.TaskExecutionIdentifier task_execution_id = 1; // Indicates the number of resources to be returned. // +required uint32 limit = 2; // In the case of multiple pages of results, the, server-provided token can be used to fetch the next page // in a query. // +optional string token = 3; // Indicates a list of filters passed as string. // More info on constructing filters : // +optional string filters = 4; // Sort ordering. // +optional Sort sort_by = 5; } // Encapsulates all details for a single node execution entity. // A node represents a component in the overall workflow graph. A node launch a task, multiple tasks, an entire nested // sub-workflow, or even a separate child-workflow execution. // The same task can be called repeatedly in a single workflow but each node is unique. message NodeExecution { // Uniquely identifies an individual node execution. core.NodeExecutionIdentifier id = 1; // Path to remote data store where input blob is stored. string input_uri = 2; // Computed results associated with this node execution. NodeExecutionClosure closure = 3; // Metadata for Node Execution NodeExecutionMetaData metadata = 4; } // Represents additional attributes related to a Node Execution message NodeExecutionMetaData { // Node executions are grouped depending on retries of the parent // Retry group is unique within the context of a parent node. string retry_group = 1; // Boolean flag indicating if the node has child nodes under it // This can be true when a node contains a dynamic workflow which then produces // child nodes. bool is_parent_node = 2; // Node id of the node in the original workflow // This maps to value of WorkflowTemplate.nodes[X].id string spec_node_id = 3; // Boolean flag indicating if the node has contains a dynamic workflow which then produces child nodes. // This is to distinguish between subworkflows and dynamic workflows which can both have is_parent_node as true. bool is_dynamic = 4; // Boolean flag indicating if the node is an array node. This is intended to uniquely identify // array nodes from other nodes which can have is_parent_node as true. bool is_array = 5; } // Request structure to retrieve a list of node execution entities. // See :ref:`ref_flyteidl.admin.NodeExecution` for more details message NodeExecutionList { repeated NodeExecution node_executions = 1; // In the case of multiple pages of results, the server-provided token can be used to fetch the next page // in a query. If there are no more results, this value will be empty. string token = 2; } // Container for node execution details and results. message NodeExecutionClosure { // Only a node in a terminal state will have a non-empty output_result. oneof output_result { // Links to a remotely stored, serialized core.LiteralMap of node execution outputs. // DEPRECATED. Use GetNodeExecutionData to fetch output data instead. string output_uri = 1 [deprecated = true]; // Error information for the Node core.ExecutionError error = 2; // Raw output data produced by this node execution. // DEPRECATED. Use GetNodeExecutionData to fetch output data instead. core.LiteralMap output_data = 10 [deprecated = true]; } // The last recorded phase for this node execution. core.NodeExecution.Phase phase = 3; // Time at which the node execution began running. google.protobuf.Timestamp started_at = 4; // The amount of time the node execution spent running. google.protobuf.Duration duration = 5; // Time at which the node execution was created. google.protobuf.Timestamp created_at = 6; // Time at which the node execution was last updated. google.protobuf.Timestamp updated_at = 7; // Store metadata for what the node launched. // for ex: if this is a workflow node, we store information for the launched workflow. oneof target_metadata { WorkflowNodeMetadata workflow_node_metadata = 8; TaskNodeMetadata task_node_metadata = 9; } // String location uniquely identifying where the deck HTML file is. // NativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar) string deck_uri = 11; // dynamic_job_spec_uri is the location of the DynamicJobSpec proto message for a DynamicWorkflow. This is required // to correctly recover partially completed executions where the subworkflow has already been compiled. string dynamic_job_spec_uri = 12; } // Metadata for a WorkflowNode message WorkflowNodeMetadata { // The identifier for a workflow execution launched by a node. core.WorkflowExecutionIdentifier executionId = 1; } // Metadata for the case in which the node is a TaskNode message TaskNodeMetadata { // Captures the status of caching for this execution. core.CatalogCacheStatus cache_status = 1; // This structure carries the catalog artifact information core.CatalogMetadata catalog_key = 2; // The latest checkpoint location string checkpoint_uri = 4; } // For dynamic workflow nodes we capture information about the dynamic workflow definition that gets generated. message DynamicWorkflowNodeMetadata { // id represents the unique identifier of the workflow. core.Identifier id = 1; // Represents the compiled representation of the embedded dynamic workflow. core.CompiledWorkflowClosure compiled_workflow = 2; // dynamic_job_spec_uri is the location of the DynamicJobSpec proto message for this DynamicWorkflow. This is // required to correctly recover partially completed executions where the subworkflow has already been compiled. string dynamic_job_spec_uri = 3; } // Request structure to fetch inputs and output for a node execution. // By default, these are not returned in :ref:`ref_flyteidl.admin.NodeExecutionGetRequest` message NodeExecutionGetDataRequest { // The identifier of the node execution for which to fetch inputs and outputs. core.NodeExecutionIdentifier id = 1; } // Response structure for NodeExecutionGetDataRequest which contains inputs and outputs for a node execution. message NodeExecutionGetDataResponse { // Signed url to fetch a core.LiteralMap of node execution inputs. // Deprecated: Please use full_inputs instead. UrlBlob inputs = 1 [deprecated = true]; // Signed url to fetch a core.LiteralMap of node execution outputs. // Deprecated: Please use full_outputs instead. UrlBlob outputs = 2 [deprecated = true]; // Full_inputs will only be populated if they are under a configured size threshold. core.LiteralMap full_inputs = 3; // Full_outputs will only be populated if they are under a configured size threshold. core.LiteralMap full_outputs = 4; // Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. DynamicWorkflowNodeMetadata dynamic_workflow = 16; FlyteURLs flyte_urls = 17; } message GetDynamicNodeWorkflowRequest { core.NodeExecutionIdentifier id = 1; } message DynamicNodeWorkflowResponse { core.CompiledWorkflowClosure compiled_workflow = 1; }