diff --git a/.github/workflows/single-binary.yml b/.github/workflows/single-binary.yml index ce5411328c..62a1108aea 100644 --- a/.github/workflows/single-binary.yml +++ b/.github/workflows/single-binary.yml @@ -199,6 +199,12 @@ jobs: - name: End2End run: | make end2end_execute + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ failure() }} + with: + limit-access-to-actor: true + build-and-push-sandbox-bundled-image: if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} diff --git a/.gitignore b/.gitignore index 667375047f..f6797a690a 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,8 @@ dist *.db vendor/ /docker/sandbox-bundled/images/tar +rsts/_tags/ +bin/ **/bin/ docs/_tags/ docs/flytectl diff --git a/Makefile b/Makefile index b3a37c85c4..2d9fdf1e5d 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ export REPOSITORY=flyte +export REPO_ROOT := $(shell pwd) include boilerplate/flyte/end2end/Makefile include boilerplate/flyte/golang_test_targets/Makefile @@ -136,6 +137,15 @@ go-tidy: make -C flytestdlib go-tidy make -C flytecopilot go-tidy +.PHONY: generate +generate: + make -C flyteidl generate + make -C flyteadmin generate + make -C flytepropeller generate + make -C flyteplugins generate + make -C flytestdlib generate + make -C flytecopilot generate + .PHONY: lint-helm-charts lint-helm-charts: # This pressuposes that you have act installed diff --git a/boilerplate/flyte/golang_test_targets/Makefile b/boilerplate/flyte/golang_test_targets/Makefile index c02409a318..c89e471740 100644 --- a/boilerplate/flyte/golang_test_targets/Makefile +++ b/boilerplate/flyte/golang_test_targets/Makefile @@ -4,10 +4,11 @@ # TO OPT OUT OF UPDATES, SEE https://github.com/flyteorg/boilerplate/blob/master/Readme.rst LINT_FLAGS ?= +export REPO_ROOT ?= $(shell pwd) .PHONY: download_tooling download_tooling: #download dependencies (including test deps) for the package - @../boilerplate/flyte/golang_test_targets/download_tooling.sh + @${REPO_ROOT}/boilerplate/flyte/golang_test_targets/download_tooling.sh .PHONY: generate generate: download_tooling #generate go code diff --git a/boilerplate/flyte/golang_test_targets/download_tooling.sh b/boilerplate/flyte/golang_test_targets/download_tooling.sh index 5ba5c6d1da..64a30bf07a 100755 --- a/boilerplate/flyte/golang_test_targets/download_tooling.sh +++ b/boilerplate/flyte/golang_test_targets/download_tooling.sh @@ -30,7 +30,7 @@ cp $REPO_ROOT/flytestdlib/bin/pflags $(go env GOPATH)/bin tmp_dir=$(mktemp -d -t gotooling-XXX) echo "Using temp directory ${tmp_dir}" -cp -R ../boilerplate/flyte/golang_support_tools/* $tmp_dir +cp -R $REPO_ROOT/boilerplate/flyte/golang_support_tools/* $tmp_dir pushd "$tmp_dir" for tool in "${tools[@]}"; do diff --git a/cmd/single/config_flags.go b/cmd/single/config_flags.go new file mode 100755 index 0000000000..3f335ee6f9 --- /dev/null +++ b/cmd/single/config_flags.go @@ -0,0 +1,61 @@ +// Code generated by go generate; DO NOT EDIT. +// This file was generated by robots. + +package single + +import ( + "encoding/json" + "reflect" + + "fmt" + + "github.com/spf13/pflag" +) + +// If v is a pointer, it will get its element value or the zero value of the element type. +// If v is not a pointer, it will return it as is. +func (Config) elemValueOrNil(v interface{}) interface{} { + if t := reflect.TypeOf(v); t.Kind() == reflect.Ptr { + if reflect.ValueOf(v).IsNil() { + return reflect.Zero(t.Elem()).Interface() + } else { + return reflect.ValueOf(v).Interface() + } + } else if v == nil { + return reflect.Zero(t).Interface() + } + + return v +} + +func (Config) mustJsonMarshal(v interface{}) string { + raw, err := json.Marshal(v) + if err != nil { + panic(err) + } + + return string(raw) +} + +func (Config) mustMarshalJSON(v json.Marshaler) string { + raw, err := v.MarshalJSON() + if err != nil { + panic(err) + } + + return string(raw) +} + +// GetPFlagSet will return strongly types pflags for all fields in Config and its nested types. The format of the +// flags is json-name.json-sub-name... etc. +func (cfg Config) GetPFlagSet(prefix string) *pflag.FlagSet { + cmdFlags := pflag.NewFlagSet("Config", pflag.ExitOnError) + cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "propeller.disabled"), DefaultConfig.Propeller.Disabled, "Disables flytepropeller in the single binary mode") + cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "propeller.disableWebhook"), DefaultConfig.Propeller.DisableWebhook, "Disables webhook only") + cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "admin.disabled"), DefaultConfig.Admin.Disabled, "Disables flyteadmin in the single binary mode") + cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "admin.disableScheduler"), DefaultConfig.Admin.DisableScheduler, "Disables Native scheduler in the single binary mode") + cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "admin.disableClusterResourceManager"), DefaultConfig.Admin.DisableClusterResourceManager, "Disables Cluster resource manager") + cmdFlags.StringSlice(fmt.Sprintf("%v%v", prefix, "admin.seedProjects"), DefaultConfig.Admin.SeedProjects, "flyte projects to create by default.") + cmdFlags.Bool(fmt.Sprintf("%v%v", prefix, "dataCatalog.disabled"), DefaultConfig.DataCatalog.Disabled, "Disables datacatalog in the single binary mode") + return cmdFlags +} diff --git a/cmd/single/config_flags_test.go b/cmd/single/config_flags_test.go new file mode 100755 index 0000000000..cf1cb93e1a --- /dev/null +++ b/cmd/single/config_flags_test.go @@ -0,0 +1,200 @@ +// Code generated by go generate; DO NOT EDIT. +// This file was generated by robots. + +package single + +import ( + "encoding/json" + "fmt" + "reflect" + "strings" + "testing" + + "github.com/mitchellh/mapstructure" + "github.com/stretchr/testify/assert" +) + +var dereferencableKindsConfig = map[reflect.Kind]struct{}{ + reflect.Array: {}, reflect.Chan: {}, reflect.Map: {}, reflect.Ptr: {}, reflect.Slice: {}, +} + +// Checks if t is a kind that can be dereferenced to get its underlying type. +func canGetElementConfig(t reflect.Kind) bool { + _, exists := dereferencableKindsConfig[t] + return exists +} + +// This decoder hook tests types for json unmarshaling capability. If implemented, it uses json unmarshal to build the +// object. Otherwise, it'll just pass on the original data. +func jsonUnmarshalerHookConfig(_, to reflect.Type, data interface{}) (interface{}, error) { + unmarshalerType := reflect.TypeOf((*json.Unmarshaler)(nil)).Elem() + if to.Implements(unmarshalerType) || reflect.PtrTo(to).Implements(unmarshalerType) || + (canGetElementConfig(to.Kind()) && to.Elem().Implements(unmarshalerType)) { + + raw, err := json.Marshal(data) + if err != nil { + fmt.Printf("Failed to marshal Data: %v. Error: %v. Skipping jsonUnmarshalHook", data, err) + return data, nil + } + + res := reflect.New(to).Interface() + err = json.Unmarshal(raw, &res) + if err != nil { + fmt.Printf("Failed to umarshal Data: %v. Error: %v. Skipping jsonUnmarshalHook", data, err) + return data, nil + } + + return res, nil + } + + return data, nil +} + +func decode_Config(input, result interface{}) error { + config := &mapstructure.DecoderConfig{ + TagName: "json", + WeaklyTypedInput: true, + Result: result, + DecodeHook: mapstructure.ComposeDecodeHookFunc( + mapstructure.StringToTimeDurationHookFunc(), + mapstructure.StringToSliceHookFunc(","), + jsonUnmarshalerHookConfig, + ), + } + + decoder, err := mapstructure.NewDecoder(config) + if err != nil { + return err + } + + return decoder.Decode(input) +} + +func join_Config(arr interface{}, sep string) string { + listValue := reflect.ValueOf(arr) + strs := make([]string, 0, listValue.Len()) + for i := 0; i < listValue.Len(); i++ { + strs = append(strs, fmt.Sprintf("%v", listValue.Index(i))) + } + + return strings.Join(strs, sep) +} + +func testDecodeJson_Config(t *testing.T, val, result interface{}) { + assert.NoError(t, decode_Config(val, result)) +} + +func testDecodeRaw_Config(t *testing.T, vStringSlice, result interface{}) { + assert.NoError(t, decode_Config(vStringSlice, result)) +} + +func TestConfig_GetPFlagSet(t *testing.T) { + val := Config{} + cmdFlags := val.GetPFlagSet("") + assert.True(t, cmdFlags.HasFlags()) +} + +func TestConfig_SetFlags(t *testing.T) { + actual := Config{} + cmdFlags := actual.GetPFlagSet("") + assert.True(t, cmdFlags.HasFlags()) + + t.Run("Test_propeller.disabled", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := "1" + + cmdFlags.Set("propeller.disabled", testValue) + if vBool, err := cmdFlags.GetBool("propeller.disabled"); err == nil { + testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.Propeller.Disabled) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) + t.Run("Test_propeller.disableWebhook", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := "1" + + cmdFlags.Set("propeller.disableWebhook", testValue) + if vBool, err := cmdFlags.GetBool("propeller.disableWebhook"); err == nil { + testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.Propeller.DisableWebhook) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) + t.Run("Test_admin.disabled", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := "1" + + cmdFlags.Set("admin.disabled", testValue) + if vBool, err := cmdFlags.GetBool("admin.disabled"); err == nil { + testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.Admin.Disabled) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) + t.Run("Test_admin.disableScheduler", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := "1" + + cmdFlags.Set("admin.disableScheduler", testValue) + if vBool, err := cmdFlags.GetBool("admin.disableScheduler"); err == nil { + testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.Admin.DisableScheduler) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) + t.Run("Test_admin.disableClusterResourceManager", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := "1" + + cmdFlags.Set("admin.disableClusterResourceManager", testValue) + if vBool, err := cmdFlags.GetBool("admin.disableClusterResourceManager"); err == nil { + testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.Admin.DisableClusterResourceManager) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) + t.Run("Test_admin.seedProjects", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := join_Config(DefaultConfig.Admin.SeedProjects, ",") + + cmdFlags.Set("admin.seedProjects", testValue) + if vStringSlice, err := cmdFlags.GetStringSlice("admin.seedProjects"); err == nil { + testDecodeRaw_Config(t, join_Config(vStringSlice, ","), &actual.Admin.SeedProjects) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) + t.Run("Test_dataCatalog.disabled", func(t *testing.T) { + + t.Run("Override", func(t *testing.T) { + testValue := "1" + + cmdFlags.Set("dataCatalog.disabled", testValue) + if vBool, err := cmdFlags.GetBool("dataCatalog.disabled"); err == nil { + testDecodeJson_Config(t, fmt.Sprintf("%v", vBool), &actual.DataCatalog.Disabled) + + } else { + assert.FailNow(t, err.Error()) + } + }) + }) +} diff --git a/cmd/single/without_console_dist.go b/cmd/single/without_console_dist.go index 1cef2995af..90298551fc 100644 --- a/cmd/single/without_console_dist.go +++ b/cmd/single/without_console_dist.go @@ -1,5 +1,4 @@ //go:build !console -// +build !console package single diff --git a/datacatalog/Makefile b/datacatalog/Makefile index e4e9b72c42..59258bb4df 100644 --- a/datacatalog/Makefile +++ b/datacatalog/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=datacatalog -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/docker_build/Makefile include ../boilerplate/flyte/golang_test_targets/Makefile diff --git a/flyteadmin/Makefile b/flyteadmin/Makefile index fad51a2edf..f35dee522f 100644 --- a/flyteadmin/Makefile +++ b/flyteadmin/Makefile @@ -1,6 +1,6 @@ export REPOSITORY=flyteadmin export FLYTE_SCHEDULER_REPOSITORY=flytescheduler -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/docker_build/Makefile include ../boilerplate/flyte/golang_test_targets/Makefile include ../boilerplate/flyte/end2end/Makefile diff --git a/flyteadmin/pkg/async/schedule/aws/workflow_executor.go b/flyteadmin/pkg/async/schedule/aws/workflow_executor.go index 918402836b..29fe664a91 100644 --- a/flyteadmin/pkg/async/schedule/aws/workflow_executor.go +++ b/flyteadmin/pkg/async/schedule/aws/workflow_executor.go @@ -12,6 +12,7 @@ import ( "github.com/golang/protobuf/ptypes/timestamp" "github.com/prometheus/client_golang/prometheus" "google.golang.org/grpc/codes" + "google.golang.org/protobuf/types/known/timestamppb" "github.com/flyteorg/flyte/flyteadmin/pkg/async" scheduleInterfaces "github.com/flyteorg/flyte/flyteadmin/pkg/async/schedule/interfaces" @@ -70,15 +71,27 @@ func (e *workflowExecutor) resolveKickoffTimeArg( } for name := range launchPlan.Closure.ExpectedInputs.Parameters { if name == request.KickoffTimeArg { - ts, err := ptypes.TimestampProto(request.KickoffTime) - if err != nil { + ts := timestamppb.New(request.KickoffTime) + if err := ts.CheckValid(); err != nil { logger.Warningf(context.Background(), "failed to serialize kickoff time %+v to timestamp proto for scheduled workflow execution with "+ "launchPlan [%+v]", request.KickoffTime, launchPlan.Id) return errors.NewFlyteAdminErrorf( codes.Internal, "could not serialize kickoff time %+v to timestamp proto", request.KickoffTime) } - executionRequest.Inputs.Literals[name] = &core.Literal{ + if executionRequest.InputData == nil { + executionRequest.InputData = &core.InputData{} + } + + if executionRequest.GetInputData().Inputs == nil { + executionRequest.InputData.Inputs = &core.LiteralMap{} + } + + if executionRequest.GetInputData().GetInputs().Literals == nil { + executionRequest.InputData.Inputs.Literals = map[string]*core.Literal{} + } + + executionRequest.InputData.Inputs.Literals[name] = &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Primitive{ @@ -91,6 +104,7 @@ func (e *workflowExecutor) resolveKickoffTimeArg( }, }, } + return nil } } @@ -160,10 +174,13 @@ func (e *workflowExecutor) formulateExecutionCreateRequest( // No dynamic notifications are configured either. }, // No additional inputs beyond the to-be-filled-out kickoff time arg are specified. - Inputs: &core.LiteralMap{ - Literals: map[string]*core.Literal{}, + InputData: &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{}, + }, }, } + return executionRequest } diff --git a/flyteadmin/pkg/async/schedule/aws/workflow_executor_test.go b/flyteadmin/pkg/async/schedule/aws/workflow_executor_test.go index 0479e89073..1df6aae560 100644 --- a/flyteadmin/pkg/async/schedule/aws/workflow_executor_test.go +++ b/flyteadmin/pkg/async/schedule/aws/workflow_executor_test.go @@ -92,9 +92,9 @@ func TestResolveKickoffTimeArg(t *testing.T) { testExecutor := newWorkflowExecutorForTest(nil, nil, nil) err := testExecutor.resolveKickoffTimeArg(scheduleRequest, launchPlan, &executionRequest) assert.Nil(t, err) - assert.Contains(t, executionRequest.Inputs.Literals, testKickoffTime) + assert.Contains(t, executionRequest.GetInputData().GetInputs().GetLiterals(), testKickoffTime) assert.Equal(t, testKickoffTimeProtoLiteral, - *executionRequest.Inputs.Literals[testKickoffTime]) + *executionRequest.GetInputData().GetInputs().GetLiterals()[testKickoffTime]) } func TestResolveKickoffTimeArg_NoKickoffTimeArg(t *testing.T) { @@ -238,8 +238,8 @@ func TestRun(t *testing.T) { assert.Equal(t, "domain", request.Domain) assert.Equal(t, "ar8fphnlc5wh9dksjncj", request.Name) if messagesSeen == 0 { - assert.Contains(t, request.Inputs.Literals, testKickoffTime) - assert.Equal(t, testKickoffTimeProtoLiteral, *request.Inputs.Literals[testKickoffTime]) + assert.Contains(t, request.GetInputData().GetInputs().GetLiterals(), testKickoffTime) + assert.Equal(t, testKickoffTimeProtoLiteral, *request.GetInputData().GetInputs().GetLiterals()[testKickoffTime]) } messagesSeen++ return &admin.ExecutionCreateResponse{}, nil diff --git a/flyteadmin/pkg/common/data_store.go b/flyteadmin/pkg/common/data_store.go index 359af33cd1..87731b6af7 100644 --- a/flyteadmin/pkg/common/data_store.go +++ b/flyteadmin/pkg/common/data_store.go @@ -4,6 +4,7 @@ import ( "context" "time" + "github.com/golang/protobuf/proto" errrs "github.com/pkg/errors" "google.golang.org/api/googleapi" "google.golang.org/grpc/codes" @@ -15,14 +16,15 @@ import ( "github.com/flyteorg/flyte/flytestdlib/storage" ) -func OffloadLiteralMap(ctx context.Context, storageClient *storage.DataStore, literalMap *core.LiteralMap, nestedKeys ...string) (storage.DataReference, error) { - return OffloadLiteralMapWithRetryDelayAndAttempts(ctx, storageClient, literalMap, async.RetryDelay, 5, nestedKeys...) +func OffloadData(ctx context.Context, storageClient *storage.DataStore, msg proto.Message, nestedKeys ...string) (storage.DataReference, error) { + return OffloadDataWithRetryDelayAndAttempts(ctx, storageClient, msg, async.RetryDelay, 5, nestedKeys...) } -func OffloadLiteralMapWithRetryDelayAndAttempts(ctx context.Context, storageClient *storage.DataStore, literalMap *core.LiteralMap, retryDelay time.Duration, attempts int, nestedKeys ...string) (storage.DataReference, error) { - if literalMap == nil { - literalMap = &core.LiteralMap{} +func OffloadDataWithRetryDelayAndAttempts(ctx context.Context, storageClient *storage.DataStore, msg proto.Message, retryDelay time.Duration, attempts int, nestedKeys ...string) (storage.DataReference, error) { + if msg == nil { + msg = &core.OutputData{} } + nestedKeyReference := []string{ shared.Metadata, } @@ -33,7 +35,7 @@ func OffloadLiteralMapWithRetryDelayAndAttempts(ctx context.Context, storageClie } err = async.RetryOnSpecificErrors(attempts, retryDelay, func() error { - err = storageClient.WriteProtobuf(ctx, uri, storage.Options{}, literalMap) + err = storageClient.WriteProtobuf(ctx, uri, storage.Options{}, msg) return err }, isRetryableError) diff --git a/flyteadmin/pkg/common/data_store_test.go b/flyteadmin/pkg/common/data_store_test.go index 6011fa8087..db23c82f9d 100644 --- a/flyteadmin/pkg/common/data_store_test.go +++ b/flyteadmin/pkg/common/data_store_test.go @@ -42,7 +42,7 @@ func TestOffloadLiteralMap(t *testing.T) { return nil } - uri, err := OffloadLiteralMap(context.TODO(), mockStorage, literalMap, "nested", "key") + uri, err := OffloadData(context.TODO(), mockStorage, literalMap, "nested", "key") assert.NoError(t, err) assert.Equal(t, "s3://bucket/metadata/nested/key", uri.String()) } @@ -53,7 +53,7 @@ func TestOffloadLiteralMap_ConstructReferenceError(t *testing.T) { ctx context.Context, reference storage.DataReference, nestedKeys ...string) (storage.DataReference, error) { return "foo", errors.NewFlyteAdminError(codes.Internal, "foo") } - _, err := OffloadLiteralMap(context.TODO(), mockStorage, literalMap, "nested", "key") + _, err := OffloadData(context.TODO(), mockStorage, literalMap, "nested", "key") assert.Equal(t, err.(errors.FlyteAdminError).Code(), codes.Internal) } @@ -63,7 +63,7 @@ func TestOffloadLiteralMap_StorageFailure(t *testing.T) { assert.Equal(t, reference.String(), "s3://bucket/metadata/nested/key") return errors.NewFlyteAdminError(codes.Internal, "foo") } - _, err := OffloadLiteralMap(context.TODO(), mockStorage, literalMap, "nested", "key") + _, err := OffloadData(context.TODO(), mockStorage, literalMap, "nested", "key") assert.Equal(t, err.(errors.FlyteAdminError).Code(), codes.Internal) } @@ -76,7 +76,7 @@ func TestOffloadLiteralMap_RetryOn409(t *testing.T) { return errs.Wrapf(&googleapi.Error{Code: 409}, "Failed to write data [%vb] to path [%v].", 10, "size") } expectedRetries := 2 - _, err := OffloadLiteralMapWithRetryDelayAndAttempts(context.TODO(), mockStorage, literalMap, time.Millisecond, expectedRetries, "nested", "key") + _, err := OffloadDataWithRetryDelayAndAttempts(context.TODO(), mockStorage, literalMap, time.Millisecond, expectedRetries, "nested", "key") assert.EqualValues(t, retries, expectedRetries+1) assert.Equal(t, err.(errors.FlyteAdminError).Code(), codes.Internal) } diff --git a/flyteadmin/pkg/common/mocks/storage.go b/flyteadmin/pkg/common/mocks/storage.go index 7e91bf0485..dfb0867bc4 100644 --- a/flyteadmin/pkg/common/mocks/storage.go +++ b/flyteadmin/pkg/common/mocks/storage.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/golang/protobuf/proto" + protoV2 "google.golang.org/protobuf/proto" "github.com/flyteorg/flyte/flytestdlib/storage" ) @@ -37,6 +38,19 @@ func (t *TestDataStore) ReadProtobuf(ctx context.Context, reference storage.Data return t.ReadProtobufCb(ctx, reference, msg) } +// ReadProtobufAny retrieves the entire blob from blobstore and unmarshals it to the passed protobuf +func (t *TestDataStore) ReadProtobufAny(ctx context.Context, reference storage.DataReference, msg ...proto.Message) (msgIndex int, err error) { + for i, m := range msg { + empty := protoV2.Clone(proto.MessageV2(m)) + err = t.ReadProtobuf(ctx, reference, m) + if err == nil && !protoV2.Equal(empty, proto.MessageV2(m)) { + return i, nil + } + } + + return -1, err +} + func (t *TestDataStore) WriteProtobuf( ctx context.Context, reference storage.DataReference, opts storage.Options, msg proto.Message) error { return t.WriteProtobufCb(ctx, reference, opts, msg) diff --git a/flyteadmin/pkg/common/testutils/common.go b/flyteadmin/pkg/common/testutils/common.go index 6224c4023b..9189a6c421 100644 --- a/flyteadmin/pkg/common/testutils/common.go +++ b/flyteadmin/pkg/common/testutils/common.go @@ -1,6 +1,13 @@ package testutils -import "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" +import ( + "testing" + + "github.com/golang/protobuf/proto" + "github.com/stretchr/testify/assert" + + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" +) // Convenience method to wrap verbose boilerplate for initializing a PluginOverrides MatchingAttributes. func GetPluginOverridesAttributes(vals map[string][]string) *admin.MatchingAttributes { @@ -19,3 +26,14 @@ func GetPluginOverridesAttributes(vals map[string][]string) *admin.MatchingAttri }, } } + +func AssertProtoEqual(t testing.TB, expected, actual proto.Message, msgAndArgs ...any) bool { + if assert.True(t, proto.Equal(expected, actual), msgAndArgs...) { + return true + } + + t.Logf("Expected: %v", expected) + t.Logf("Actual : %v", actual) + + return false +} diff --git a/flyteadmin/pkg/manager/impl/execution_manager.go b/flyteadmin/pkg/manager/impl/execution_manager.go index da7489258d..a6d158769e 100644 --- a/flyteadmin/pkg/manager/impl/execution_manager.go +++ b/flyteadmin/pkg/manager/impl/execution_manager.go @@ -431,6 +431,9 @@ func (m *ExecutionManager) launchSingleTaskExecution( ctx context.Context, request admin.ExecutionCreateRequest, requestedAt time.Time) ( context.Context, *models.Execution, error) { + request.InputData = migrateInputData(request.GetInputData(), request.GetInputs()) + request.Inputs = nil + taskModel, err := m.db.TaskRepo().Get(ctx, repositoryInterfaces.Identifier{ Project: request.Spec.LaunchPlan.Project, Domain: request.Spec.LaunchPlan.Domain, @@ -471,9 +474,11 @@ func (m *ExecutionManager) launchSingleTaskExecution( } executionInputs, err := validation.CheckAndFetchInputsForExecution( - request.Inputs, - launchPlan.Spec.FixedInputs, - launchPlan.Closure.ExpectedInputs, + request.GetInputData(), + request.GetInputs(), + launchPlan.Spec.GetFixedInputData(), + launchPlan.Spec.GetFixedInputs(), + launchPlan.Spec.GetDefaultInputs(), ) if err != nil { logger.Debugf(ctx, "Failed to CheckAndFetchInputsForExecution with request.Inputs: %+v"+ @@ -515,11 +520,11 @@ func (m *ExecutionManager) launchSingleTaskExecution( // Dynamically assign execution queues. m.populateExecutionQueue(ctx, *workflow.Id, workflow.Closure.CompiledWorkflow) - inputsURI, err := common.OffloadLiteralMap(ctx, m.storageClient, request.Inputs, workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.Inputs) + inputsURI, err := common.OffloadData(ctx, m.storageClient, request.GetInputData(), workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.Inputs) if err != nil { return nil, nil, err } - userInputsURI, err := common.OffloadLiteralMap(ctx, m.storageClient, request.Inputs, workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.UserInputs) + userInputsURI, err := common.OffloadData(ctx, m.storageClient, request.GetInputData(), workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.UserInputs) if err != nil { return nil, nil, err } @@ -558,13 +563,13 @@ func (m *ExecutionManager) launchSingleTaskExecution( executionClusterLabel = requestSpec.ExecutionClusterLabel } executionParameters := workflowengineInterfaces.ExecutionParameters{ - Inputs: executionInputs, + InputData: executionInputs, AcceptedAt: requestedAt, Labels: labels, Annotations: annotations, ExecutionConfig: executionConfig, TaskResources: &platformTaskResources, - EventVersion: m.config.ApplicationConfiguration().GetTopLevelConfig().EventVersion, + EventVersion: m.config.ApplicationConfiguration().GetTopLevelConfig().GetEventVersion(), RoleNameKey: m.config.ApplicationConfiguration().GetTopLevelConfig().RoleNameKey, RawOutputDataConfig: rawOutputDataConfig, ClusterAssignment: clusterAssignment, @@ -857,9 +862,11 @@ func (m *ExecutionManager) launchExecutionAndPrepareModel( // Artifacts retrieved will need to be stored somewhere to ensure that we can re-emit events if necessary // in the future, and also to make sure that relaunch and recover can use it if necessary. executionInputs, err := validation.CheckAndFetchInputsForExecution( - request.Inputs, - launchPlan.Spec.FixedInputs, - lpExpectedInputs, + request.GetInputData(), + request.GetInputs(), + launchPlan.GetSpec().GetFixedInputData(), + launchPlan.GetSpec().GetFixedInputs(), + launchPlan.GetClosure().GetExpectedInputs(), ) if err != nil { @@ -918,11 +925,12 @@ func (m *ExecutionManager) launchExecutionAndPrepareModel( // Dynamically assign execution queues. m.populateExecutionQueue(ctx, *workflow.Id, workflow.Closure.CompiledWorkflow) - inputsURI, err := common.OffloadLiteralMap(ctx, m.storageClient, executionInputs, workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.Inputs) + inputsURI, err := common.OffloadData(ctx, m.storageClient, executionInputs, workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.Inputs) if err != nil { return nil, nil, nil, err } - userInputsURI, err := common.OffloadLiteralMap(ctx, m.storageClient, request.Inputs, workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.UserInputs) + + userInputsURI, err := common.OffloadData(ctx, m.storageClient, request.GetInputData(), workflowExecutionID.Project, workflowExecutionID.Domain, workflowExecutionID.Name, shared.UserInputs) if err != nil { return nil, nil, nil, err } @@ -963,7 +971,7 @@ func (m *ExecutionManager) launchExecutionAndPrepareModel( } executionParameters := workflowengineInterfaces.ExecutionParameters{ - Inputs: executionInputs, + InputData: executionInputs, AcceptedAt: requestedAt, Labels: labels, Annotations: annotations, @@ -1081,14 +1089,29 @@ func (m *ExecutionManager) createExecutionModel( return &workflowExecutionIdentifier, nil } +func migrateInputData(newInputs *core.InputData, oldInputs *core.LiteralMap) *core.InputData { + if newInputs != nil { + return newInputs + } + + return &core.InputData{ + Inputs: oldInputs, + } +} + func (m *ExecutionManager) CreateExecution( ctx context.Context, request admin.ExecutionCreateRequest, requestedAt time.Time) ( *admin.ExecutionCreateResponse, error) { - - // Prior to flyteidl v0.15.0, Inputs was held in ExecutionSpec. Ensure older clients continue to work. - if request.Inputs == nil || len(request.Inputs.Literals) == 0 { - request.Inputs = request.GetSpec().GetInputs() + // Prior to flyteidl v0.15.0, Inputs was held in ExecutionSpec. Ensure older clients continue to work. + if len(request.GetSpec().GetInputs().GetLiterals()) > 0 { + request.InputData = &core.InputData{ + Inputs: request.GetSpec().GetInputs(), + } } + + request.InputData = migrateInputData(request.GetInputData(), request.GetInputs()) + request.Inputs = nil + var executionModel *models.Execution var executionTagModel []*models.ExecutionTag var err error @@ -1105,9 +1128,34 @@ func (m *ExecutionManager) CreateExecution( }, nil } +func readInputsFromExecutionModel(ctx context.Context, inputsURI storage.DataReference, specBytes []byte, storageClient storage.ProtobufStore) (*core.InputData, error) { + var inputData *core.InputData + if len(inputsURI) > 0 { + inputData = &core.InputData{} + inputs := &core.LiteralMap{} + if msgIndex, err := storageClient.ReadProtobufAny(ctx, inputsURI, inputData, inputs); err != nil { + return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to read inputs proto from [%v]. Error: %v", inputsURI, err) + } else if msgIndex == 1 { + inputData = migrateInputData(inputData, inputs) + } + } else { + // For old data, inputs are held in the spec + var spec admin.ExecutionSpec + err := proto.Unmarshal(specBytes, &spec) + if err != nil { + return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to unmarshal spec. Error: %v", err) + } + + inputData = migrateInputData(nil, spec.GetInputs()) + } + + return inputData, nil +} + func (m *ExecutionManager) RelaunchExecution( ctx context.Context, request admin.ExecutionRelaunchRequest, requestedAt time.Time) ( *admin.ExecutionCreateResponse, error) { + existingExecutionModel, err := util.GetExecutionModel(ctx, m.db, *request.Id) if err != nil { logger.Debugf(ctx, "Failed to get execution model for request [%+v] with err %v", request, err) @@ -1122,32 +1170,23 @@ func (m *ExecutionManager) RelaunchExecution( if executionSpec.Metadata == nil { executionSpec.Metadata = &admin.ExecutionMetadata{} } - var inputs *core.LiteralMap - if len(existingExecutionModel.UserInputsURI) > 0 { - inputs = &core.LiteralMap{} - if err := m.storageClient.ReadProtobuf(ctx, existingExecutionModel.UserInputsURI, inputs); err != nil { - return nil, err - } - } else { - // For old data, inputs are held in the spec - var spec admin.ExecutionSpec - err = proto.Unmarshal(existingExecutionModel.Spec, &spec) - if err != nil { - return nil, errors.NewFlyteAdminErrorf(codes.Internal, "failed to unmarshal spec") - } - inputs = spec.Inputs + + inputData, err := readInputsFromExecutionModel(ctx, existingExecutionModel.UserInputsURI, existingExecutionModel.Spec, m.storageClient) + if err != nil { + return nil, err } + executionSpec.Metadata.Mode = admin.ExecutionMetadata_RELAUNCH executionSpec.Metadata.ReferenceExecution = existingExecution.Id executionSpec.OverwriteCache = request.GetOverwriteCache() var executionModel *models.Execution var executionTagModel []*models.ExecutionTag ctx, executionModel, executionTagModel, err = m.launchExecutionAndPrepareModel(ctx, admin.ExecutionCreateRequest{ - Project: request.Id.Project, - Domain: request.Id.Domain, - Name: request.Name, - Spec: executionSpec, - Inputs: inputs, + Project: request.Id.Project, + Domain: request.Id.Domain, + Name: request.Name, + Spec: executionSpec, + InputData: inputData, }, requestedAt) if err != nil { return nil, err @@ -1180,13 +1219,12 @@ func (m *ExecutionManager) RecoverExecution( if executionSpec.Metadata == nil { executionSpec.Metadata = &admin.ExecutionMetadata{} } - var inputs *core.LiteralMap - if len(existingExecutionModel.UserInputsURI) > 0 { - inputs = &core.LiteralMap{} - if err := m.storageClient.ReadProtobuf(ctx, existingExecutionModel.UserInputsURI, inputs); err != nil { - return nil, err - } + + inputData, err := readInputsFromExecutionModel(ctx, existingExecutionModel.UserInputsURI, existingExecutionModel.Spec, m.storageClient) + if err != nil { + return nil, err } + if request.Metadata != nil { executionSpec.Metadata.ParentNodeExecution = request.Metadata.ParentNodeExecution } @@ -1195,11 +1233,11 @@ func (m *ExecutionManager) RecoverExecution( var executionModel *models.Execution var executionTagModel []*models.ExecutionTag ctx, executionModel, executionTagModel, err = m.launchExecutionAndPrepareModel(ctx, admin.ExecutionCreateRequest{ - Project: request.Id.Project, - Domain: request.Id.Domain, - Name: request.Name, - Spec: executionSpec, - Inputs: inputs, + Project: request.Id.Project, + Domain: request.Id.Domain, + Name: request.Name, + Spec: executionSpec, + InputData: inputData, }, requestedAt) if err != nil { return nil, err @@ -1247,14 +1285,21 @@ func (m *ExecutionManager) emitScheduledWorkflowMetrics( return } - var inputs core.LiteralMap - err = m.storageClient.ReadProtobuf(ctx, executionModel.InputsURI, &inputs) + var inputData *core.InputData + inputData, err = readInputsFromExecutionModel(ctx, executionModel.InputsURI, executionModel.Spec, m.storageClient) if err != nil { logger.Errorf(ctx, "Failed to find inputs for emitting schedule delay event from uri: [%v]", executionModel.InputsURI) return } - scheduledKickoffTimeProto := inputs.Literals[launchPlan.Spec.EntityMetadata.Schedule.KickoffTimeInputArg] - if scheduledKickoffTimeProto == nil || scheduledKickoffTimeProto.GetScalar() == nil || + + if len(inputData.GetInputs().GetLiterals()) == 0 { + logger.Errorf(ctx, "no kickoff time to report for scheduled workflow execution [%+v]", + execution.Id) + return + } + + scheduledKickoffTimeProto, found := inputData.GetInputs().GetLiterals()[launchPlan.Spec.EntityMetadata.Schedule.KickoffTimeInputArg] + if !found || scheduledKickoffTimeProto == nil || scheduledKickoffTimeProto.GetScalar() == nil || scheduledKickoffTimeProto.GetScalar().GetPrimitive() == nil || scheduledKickoffTimeProto.GetScalar().GetPrimitive().GetDatetime() == nil { logger.Warningf(context.Background(), @@ -1427,6 +1472,8 @@ func (m *ExecutionManager) CreateWorkflowEvent(ctx context.Context, request admi go m.emitOverallWorkflowExecutionTime(executionModel, request.Event.OccurredAt) if request.Event.GetOutputData() != nil { m.userMetrics.WorkflowExecutionOutputBytes.Observe(float64(proto.Size(request.Event.GetOutputData()))) + } else if request.Event.GetDeprecatedOutputData() != nil { + m.userMetrics.WorkflowExecutionOutputBytes.Observe(float64(proto.Size(request.Event.GetDeprecatedOutputData()))) } err = m.publishNotifications(ctx, request, *executionModel) @@ -1526,7 +1573,11 @@ func (m *ExecutionManager) GetExecutionData( if err := proto.Unmarshal(executionModel.Closure, closure); err != nil { return nil, err } - newInputsURI, err := common.OffloadLiteralMap(ctx, m.storageClient, closure.ComputedInputs, request.Id.Project, request.Id.Domain, request.Id.Name, shared.Inputs) + + inputData := &core.InputData{ + Inputs: closure.ComputedInputs, + } + newInputsURI, err := common.OffloadData(ctx, m.storageClient, inputData, request.Id.Project, request.Id.Domain, request.Id.Name, shared.Inputs) if err != nil { return nil, err } @@ -1549,8 +1600,10 @@ func (m *ExecutionManager) GetExecutionData( response := &admin.WorkflowExecutionGetDataResponse{ Inputs: inputURLBlob, Outputs: outputURLBlob, - FullInputs: inputs, - FullOutputs: outputs, + FullInputs: inputs.GetInputs(), + FullOutputs: outputs.GetOutputs(), + InputData: inputs, + OutputData: outputs, } m.userMetrics.WorkflowExecutionInputBytes.Observe(float64(response.Inputs.Bytes)) diff --git a/flyteadmin/pkg/manager/impl/execution_manager_test.go b/flyteadmin/pkg/manager/impl/execution_manager_test.go index 58e50c0444..c79e3c5c67 100644 --- a/flyteadmin/pkg/manager/impl/execution_manager_test.go +++ b/flyteadmin/pkg/manager/impl/execution_manager_test.go @@ -17,6 +17,7 @@ import ( "github.com/stretchr/testify/mock" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + protoV2 "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/util/sets" @@ -59,16 +60,18 @@ const ( executionClusterLabel = "execution_cluster_label" ) -var spec = testutils.GetExecutionRequest().Spec -var specBytes, _ = proto.Marshal(spec) -var phase = core.WorkflowExecution_RUNNING.String() -var closure = admin.ExecutionClosure{ - Phase: core.WorkflowExecution_RUNNING, - StateChangeDetails: &admin.ExecutionStateChangeDetails{ - State: admin.ExecutionState_EXECUTION_ACTIVE, - OccurredAt: testutils.MockCreatedAtProto, - }, -} +var ( + spec = testutils.GetExecutionRequest().Spec + specBytes, _ = proto.Marshal(spec) + phase = core.WorkflowExecution_RUNNING.String() + closure = admin.ExecutionClosure{ + Phase: core.WorkflowExecution_RUNNING, + StateChangeDetails: &admin.ExecutionStateChangeDetails{ + State: admin.ExecutionState_EXECUTION_ACTIVE, + OccurredAt: testutils.MockCreatedAtProto, + }, + } +) var closureBytes, _ = proto.Marshal(&closure) var executionIdentifier = core.WorkflowExecutionIdentifier{ @@ -76,16 +79,20 @@ var executionIdentifier = core.WorkflowExecutionIdentifier{ Domain: "domain", Name: "name", } -var mockPublisher notificationMocks.MockPublisher -var mockExecutionRemoteURL = dataMocks.NewMockRemoteURL() -var requestedAt = time.Now() -var testCluster = "C1" -var outputURI = "output uri" + +var ( + mockPublisher notificationMocks.MockPublisher + mockExecutionRemoteURL = dataMocks.NewMockRemoteURL() + requestedAt = time.Now() + testCluster = "C1" + outputURI = "output uri" +) var resourceDefaults = runtimeInterfaces.TaskResourceSet{ CPU: resource.MustParse("200m"), Memory: resource.MustParse("200Gi"), } + var resourceLimits = runtimeInterfaces.TaskResourceSet{ CPU: resource.MustParse("300m"), Memory: resource.MustParse("500Gi"), @@ -239,7 +246,8 @@ func setDefaultTaskCallbackForExecTest(repository interfaces.Repository) { func getMockStorageForExecTest(ctx context.Context) *storage.DataStore { mockStorage := commonMocks.GetMockStorageClient() mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).ReadProtobufCb = func( - ctx context.Context, reference storage.DataReference, msg proto.Message) error { + ctx context.Context, reference storage.DataReference, msg proto.Message, + ) error { if val, ok := mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).Store[reference]; ok { _ = proto.Unmarshal(val, msg) return nil @@ -247,7 +255,8 @@ func getMockStorageForExecTest(ctx context.Context) *storage.DataStore { return fmt.Errorf("could not find value in storage [%v]", reference.String()) } mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).WriteProtobufCb = func( - ctx context.Context, reference storage.DataReference, opts storage.Options, msg proto.Message) error { + ctx context.Context, reference storage.DataReference, opts storage.Options, msg proto.Message, + ) error { bytes, err := proto.Marshal(msg) if err != nil { return err @@ -295,11 +304,14 @@ func TestCreateExecution(t *testing.T) { Values: map[string]string{ "label3": "3", "label2": "1", // common label, will be dropped - }} + }, + } repository.ProjectRepo().(*repositoryMocks.MockProjectRepo).GetFunction = func( - ctx context.Context, projectID string) (models.Project, error) { + ctx context.Context, projectID string, + ) (models.Project, error) { return transformers.CreateProjectModel(&admin.Project{ - Labels: &labels}), nil + Labels: &labels, + }), nil } clusterAssignment := admin.ClusterAssignment{ClusterPoolName: "gpu"} @@ -310,7 +322,7 @@ func TestCreateExecution(t *testing.T) { assert.NoError(t, err) assert.Equal(t, principal, spec.Metadata.Principal) assert.Equal(t, rawOutput, spec.RawOutputDataConfig.OutputLocationPrefix) - assert.True(t, proto.Equal(spec.ClusterAssignment, &clusterAssignment)) + commonTestUtils.AssertProtoEqual(t, spec.ClusterAssignment, &clusterAssignment) assert.Equal(t, "launch_plan", input.LaunchEntity) assert.Equal(t, spec.GetMetadata().GetSystemMetadata().Namespace, "project-domain") return nil @@ -390,7 +402,10 @@ func TestCreateExecution(t *testing.T) { assert.NoError(t, err) ctx := identity.WithContext(context.Background()) response, err := execManager.CreateExecution(ctx, request, requestedAt) - assert.Nil(t, err) + if !assert.Nil(t, err) { + t.Log(err.Error()) + t.FailNow() + } expectedResponse := &admin.ExecutionCreateResponse{ Id: &executionIdentifier, @@ -459,7 +474,7 @@ func TestCreateExecutionFromWorkflowNode(t *testing.T) { err := proto.Unmarshal(input.Spec, &spec) assert.NoError(t, err) assert.Equal(t, admin.ExecutionMetadata_CHILD_WORKFLOW, spec.Metadata.Mode) - assert.True(t, proto.Equal(&parentNodeExecutionID, spec.Metadata.ParentNodeExecution)) + commonTestUtils.AssertProtoEqual(t, &parentNodeExecutionID, spec.Metadata.ParentNodeExecution) assert.EqualValues(t, input.ParentNodeExecutionID, 1) assert.EqualValues(t, input.SourceExecutionID, 2) assert.Equal(t, 2, int(spec.Metadata.Nesting)) @@ -612,14 +627,20 @@ func TestCreateExecutionInCompatibleInputs(t *testing.T) { setDefaultLpCallbackForExecTest(repository) r := plugins.NewRegistry() r.RegisterDefault(plugins.PluginIDWorkflowExecutor, &defaultTestExecutor) - execManager := NewExecutionManager(repository, r, getMockExecutionsConfigProvider(), getMockStorageForExecTest(context.Background()), mockScope.NewTestScope(), mockScope.NewTestScope(), &mockPublisher, mockExecutionRemoteURL, nil, nil, nil, nil, &eventWriterMocks.WorkflowExecutionEventWriter{}) + execManager := NewExecutionManager(repository, r, getMockExecutionsConfigProvider(), + getMockStorageForExecTest(context.Background()), mockScope.NewTestScope(), mockScope.NewTestScope(), + &mockPublisher, mockExecutionRemoteURL, nil, nil, nil, + nil, &eventWriterMocks.WorkflowExecutionEventWriter{}) request := testutils.GetExecutionRequest() - request.Inputs = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo-1": coreutils.MustMakeLiteral("foo-value-1"), + request.InputData = &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo-1": coreutils.MustMakeLiteral("foo-value-1"), + }, }, } + response, err := execManager.CreateExecution(context.Background(), request, requestedAt) assert.EqualError(t, err, "invalid input foo-1") assert.Nil(t, response) @@ -726,7 +747,7 @@ func TestCreateExecutionVerifyDbModel(t *testing.T) { } assert.Nil(t, closureValue.ComputedInputs) - var userInputs, inputs core.LiteralMap + var userInputs, inputs core.InputData if err := storageClient.ReadProtobuf(ctx, input.UserInputsURI, &userInputs); err != nil { return err } @@ -734,12 +755,12 @@ func TestCreateExecutionVerifyDbModel(t *testing.T) { return err } fooValue := coreutils.MustMakeLiteral("foo-value-1") - assert.Equal(t, 1, len(userInputs.Literals)) - assert.EqualValues(t, userInputs.Literals["foo"], fooValue) + assert.Equal(t, 1, len(userInputs.GetInputs().GetLiterals())) + assert.EqualValues(t, userInputs.GetInputs().GetLiterals()["foo"], fooValue) barValue := coreutils.MustMakeLiteral("bar-value") - assert.Equal(t, len(inputs.Literals), 2) - assert.EqualValues(t, inputs.Literals["foo"], fooValue) - assert.EqualValues(t, inputs.Literals["bar"], barValue) + assert.Equal(t, len(inputs.GetInputs().GetLiterals()), 2) + assert.EqualValues(t, inputs.GetInputs().GetLiterals()["foo"], fooValue) + assert.EqualValues(t, inputs.GetInputs().GetLiterals()["bar"], barValue) assert.Equal(t, core.WorkflowExecution_UNDEFINED, closureValue.Phase) assert.Equal(t, createdAt, *input.ExecutionCreatedAt) assert.Equal(t, 1, len(closureValue.Notifications)) @@ -763,7 +784,7 @@ func TestCreateExecutionVerifyDbModel(t *testing.T) { response, err := execManager.CreateExecution(context.Background(), request, requestedAt) assert.Nil(t, err) - assert.True(t, proto.Equal(&executionIdentifier, response.Id)) + commonTestUtils.AssertProtoEqual(t, &executionIdentifier, response.Id) } func TestCreateExecutionDefaultNotifications(t *testing.T) { @@ -804,11 +825,11 @@ func TestCreateExecutionDefaultNotifications(t *testing.T) { response, err := execManager.CreateExecution(context.Background(), request, requestedAt) assert.Nil(t, err) - assert.True(t, proto.Equal(&core.WorkflowExecutionIdentifier{ + commonTestUtils.AssertProtoEqual(t, &core.WorkflowExecutionIdentifier{ Project: "project", Domain: "domain", Name: "name", - }, response.Id)) + }, response.Id) } func TestCreateExecutionDisableNotifications(t *testing.T) { @@ -843,11 +864,11 @@ func TestCreateExecutionDisableNotifications(t *testing.T) { response, err := execManager.CreateExecution(context.Background(), request, requestedAt) assert.Nil(t, err) - assert.True(t, proto.Equal(&core.WorkflowExecutionIdentifier{ + commonTestUtils.AssertProtoEqual(t, &core.WorkflowExecutionIdentifier{ Project: "project", Domain: "domain", Name: "name", - }, response.Id)) + }, response.Id) } func TestCreateExecutionNoNotifications(t *testing.T) { @@ -894,7 +915,6 @@ func TestCreateExecutionNoNotifications(t *testing.T) { // Create a callback method to validate no notifications are set when storing the // resulting models.Execution by CreateExecution. exCreateFunc := func(ctx context.Context, input models.Execution) error { - var closureValue admin.ExecutionClosure err := proto.Unmarshal(input.Closure, &closureValue) if err != nil { @@ -913,11 +933,11 @@ func TestCreateExecutionNoNotifications(t *testing.T) { response, err := execManager.CreateExecution(context.Background(), request, requestedAt) assert.Nil(t, err) - assert.True(t, proto.Equal(&core.WorkflowExecutionIdentifier{ + commonTestUtils.AssertProtoEqual(t, &core.WorkflowExecutionIdentifier{ Project: "project", Domain: "domain", Name: "name", - }, response.Id)) + }, response.Id) } func TestCreateExecutionDynamicLabelsAndAnnotations(t *testing.T) { @@ -1057,10 +1077,16 @@ func TestCreateExecutionInterruptible(t *testing.T) { mockExecutor.OnID().Return("testMockExecutor") r := plugins.NewRegistry() r.RegisterDefault(plugins.PluginIDWorkflowExecutor, &mockExecutor) - execManager := NewExecutionManager(repository, r, getMockExecutionsConfigProvider(), getMockStorageForExecTest(context.Background()), mockScope.NewTestScope(), mockScope.NewTestScope(), &mockPublisher, mockExecutionRemoteURL, nil, nil, nil, nil, &eventWriterMocks.WorkflowExecutionEventWriter{}) + execManager := NewExecutionManager(repository, r, getMockExecutionsConfigProvider(), + getMockStorageForExecTest(context.Background()), mockScope.NewTestScope(), mockScope.NewTestScope(), + &mockPublisher, mockExecutionRemoteURL, nil, nil, nil, + nil, &eventWriterMocks.WorkflowExecutionEventWriter{}) _, err := execManager.CreateExecution(context.Background(), request, requestedAt) - assert.Nil(t, err) + if !assert.Nil(t, err) { + t.Log(err.Error()) + t.FailNow() + } }) } } @@ -1269,11 +1295,12 @@ func TestCreateExecution_CustomNamespaceMappingConfig(t *testing.T) { response, err := execManager.CreateExecution(context.Background(), request, requestedAt) assert.Nil(t, err) - assert.True(t, proto.Equal(&executionIdentifier, response.Id)) + commonTestUtils.AssertProtoEqual(t, &executionIdentifier, response.Id) } func makeExecutionGetFunc( - t *testing.T, closureBytes []byte, startTime *time.Time) repositoryMocks.GetExecutionFunc { + t *testing.T, closureBytes []byte, startTime *time.Time, +) repositoryMocks.GetExecutionFunc { return func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { assert.Equal(t, "project", input.Project) assert.Equal(t, "domain", input.Domain) @@ -1299,7 +1326,8 @@ func makeExecutionGetFunc( } func makeLegacyExecutionGetFunc( - t *testing.T, closureBytes []byte, startTime *time.Time) repositoryMocks.GetExecutionFunc { + t *testing.T, closureBytes []byte, startTime *time.Time, +) repositoryMocks.GetExecutionFunc { return func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { assert.Equal(t, "project", input.Project) assert.Equal(t, "domain", input.Domain) @@ -1325,7 +1353,8 @@ func makeLegacyExecutionGetFunc( } func makeExecutionInterruptibleGetFunc( - t *testing.T, closureBytes []byte, startTime *time.Time, interruptible *bool) repositoryMocks.GetExecutionFunc { + t *testing.T, closureBytes []byte, startTime *time.Time, interruptible *bool, +) repositoryMocks.GetExecutionFunc { return func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { assert.Equal(t, "project", input.Project) assert.Equal(t, "domain", input.Domain) @@ -1362,7 +1391,8 @@ func makeExecutionInterruptibleGetFunc( } func makeExecutionOverwriteCacheGetFunc( - t *testing.T, closureBytes []byte, startTime *time.Time, overwriteCache bool) repositoryMocks.GetExecutionFunc { + t *testing.T, closureBytes []byte, startTime *time.Time, overwriteCache bool, +) repositoryMocks.GetExecutionFunc { return func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { assert.Equal(t, "project", input.Project) assert.Equal(t, "domain", input.Domain) @@ -1395,7 +1425,8 @@ func makeExecutionOverwriteCacheGetFunc( } func makeExecutionWithEnvs( - t *testing.T, closureBytes []byte, startTime *time.Time, envs []*core.KeyValuePair) repositoryMocks.GetExecutionFunc { + t *testing.T, closureBytes []byte, startTime *time.Time, envs []*core.KeyValuePair, +) repositoryMocks.GetExecutionFunc { return func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { assert.Equal(t, "project", input.Project) assert.Equal(t, "domain", input.Domain) @@ -1484,7 +1515,7 @@ func TestRelaunchExecution(t *testing.T) { }, } assert.True(t, createCalled) - assert.True(t, proto.Equal(expectedResponse, response)) + commonTestUtils.AssertProtoEqual(t, expectedResponse, response) // TODO: Test with inputs } @@ -1849,7 +1880,7 @@ func TestRecoverExecution(t *testing.T) { }, } assert.True(t, createCalled) - assert.True(t, proto.Equal(expectedResponse, response)) + commonTestUtils.AssertProtoEqual(t, expectedResponse, response) } func TestRecoverExecution_RecoveredChildNode(t *testing.T) { @@ -1919,7 +1950,7 @@ func TestRecoverExecution_RecoveredChildNode(t *testing.T) { NodeId: "parent", } repository.NodeExecutionRepo().(*repositoryMocks.MockNodeExecutionRepo).SetGetCallback(func(ctx context.Context, input interfaces.NodeExecutionResource) (models.NodeExecution, error) { - assert.True(t, proto.Equal(&parentNodeExecution, &input.NodeExecutionIdentifier)) + commonTestUtils.AssertProtoEqual(t, &parentNodeExecution, &input.NodeExecutionIdentifier) return models.NodeExecution{ BaseModel: models.BaseModel{ @@ -1952,7 +1983,7 @@ func TestRecoverExecution_RecoveredChildNode(t *testing.T) { }, } assert.True(t, createCalled) - assert.True(t, proto.Equal(expectedResponse, response)) + commonTestUtils.AssertProtoEqual(t, expectedResponse, response) } func TestRecoverExecution_GetExistingFailure(t *testing.T) { @@ -1999,7 +2030,8 @@ func TestRecoverExecution_GetExistingInputsFailure(t *testing.T) { expectedErr := errors.New("foo") mockStorage := commonMocks.GetMockStorageClient() mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).ReadProtobufCb = func( - ctx context.Context, reference storage.DataReference, msg proto.Message) error { + ctx context.Context, reference storage.DataReference, msg proto.Message, + ) error { return expectedErr } r := plugins.NewRegistry() @@ -2089,7 +2121,7 @@ func TestRecoverExecutionInterruptibleOverride(t *testing.T) { }, } assert.True(t, createCalled) - assert.True(t, proto.Equal(expectedResponse, response)) + commonTestUtils.AssertProtoEqual(t, expectedResponse, response) } func TestRecoverExecutionOverwriteCacheOverride(t *testing.T) { @@ -2244,8 +2276,8 @@ func TestCreateWorkflowEvent(t *testing.T) { } closureBytes, _ := proto.Marshal(&closure) updateExecutionFunc := func( - context context.Context, execution models.Execution) error { - + context context.Context, execution models.Execution, + ) error { assert.Equal(t, "project", execution.Project) assert.Equal(t, "domain", execution.Domain) assert.Equal(t, "name", execution.Name) @@ -2432,7 +2464,8 @@ func TestCreateWorkflowEvent_StartedRunning(t *testing.T) { } closureBytes, _ := proto.Marshal(&closure) updateExecutionFunc := func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { assert.Equal(t, "project", execution.Project) assert.Equal(t, "domain", execution.Domain) assert.Equal(t, "name", execution.Name) @@ -2583,7 +2616,8 @@ func TestCreateWorkflowEvent_ClusterReassignmentOnQueued(t *testing.T) { ) newCluster := "C2" updateExecutionFunc := func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { assert.Equal(t, core.WorkflowExecution_QUEUED.String(), execution.Phase) assert.Equal(t, newCluster, execution.Cluster) return nil @@ -2621,7 +2655,8 @@ func TestCreateWorkflowEvent_InvalidEvent(t *testing.T) { Message: "bar baz", } updateExecutionFunc := func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { return nil } repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetUpdateCallback(updateExecutionFunc) @@ -2722,7 +2757,8 @@ func TestCreateWorkflowEvent_DatabaseUpdateError(t *testing.T) { } expectedErr := errors.New("expected error") updateExecutionFunc := func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { return expectedErr } repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetUpdateCallback(updateExecutionFunc) @@ -2990,7 +3026,8 @@ func TestUpdateExecution(t *testing.T) { func TestListExecutions(t *testing.T) { repository := repositoryMocks.NewMockRepository() executionListFunc := func( - ctx context.Context, input interfaces.ListResourceInput) (interfaces.ExecutionCollectionOutput, error) { + ctx context.Context, input interfaces.ListResourceInput, + ) (interfaces.ExecutionCollectionOutput, error) { var projectFilter, domainFilter, nameFilter bool for _, filter := range input.InlineFilters { assert.Equal(t, common.Execution, filter.GetEntity()) @@ -3113,7 +3150,8 @@ func TestListExecutions_DatabaseError(t *testing.T) { repository := repositoryMocks.NewMockRepository() expectedErr := errors.New("expected error") executionListFunc := func( - ctx context.Context, input interfaces.ListResourceInput) (interfaces.ExecutionCollectionOutput, error) { + ctx context.Context, input interfaces.ListResourceInput, + ) (interfaces.ExecutionCollectionOutput, error) { return interfaces.ExecutionCollectionOutput{}, expectedErr } repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetListCallback(executionListFunc) @@ -3134,7 +3172,8 @@ func TestListExecutions_DatabaseError(t *testing.T) { func TestListExecutions_TransformerError(t *testing.T) { repository := repositoryMocks.NewMockRepository() executionListFunc := func( - ctx context.Context, input interfaces.ListResourceInput) (interfaces.ExecutionCollectionOutput, error) { + ctx context.Context, input interfaces.ListResourceInput, + ) (interfaces.ExecutionCollectionOutput, error) { return interfaces.ExecutionCollectionOutput{ Executions: []models.Execution{ { @@ -3181,7 +3220,7 @@ func TestExecutionManager_PublishNotifications(t *testing.T) { []runtimeInterfaces.ExecutionQueue{}, []runtimeInterfaces.WorkflowConfig{}), nil, nil, nil, nil) - var myExecManager = &ExecutionManager{ + myExecManager := &ExecutionManager{ db: repository, config: mockRuntime, storageClient: getMockStorageForExecTest(context.Background()), @@ -3204,7 +3243,7 @@ func TestExecutionManager_PublishNotifications(t *testing.T) { ExecutionId: &executionIdentifier, }, } - var execClosure = admin.ExecutionClosure{ + execClosure := admin.ExecutionClosure{ Notifications: testutils.GetExecutionRequest().Spec.GetNotifications().Notifications, WorkflowId: &core.Identifier{ ResourceType: core.ResourceType_WORKFLOW, @@ -3214,7 +3253,7 @@ func TestExecutionManager_PublishNotifications(t *testing.T) { Version: "wf_version", }, } - var extraNotifications = []*admin.Notification{ + extraNotifications := []*admin.Notification{ { Phases: []core.WorkflowExecution_Phase{ core.WorkflowExecution_FAILED, @@ -3263,7 +3302,7 @@ func TestExecutionManager_PublishNotifications(t *testing.T) { func TestExecutionManager_PublishNotificationsTransformError(t *testing.T) { repository := repositoryMocks.NewMockRepository() queue := executions.NewQueueAllocator(getMockExecutionsConfigProvider(), repository) - var execManager = &ExecutionManager{ + execManager := &ExecutionManager{ db: repository, config: getMockExecutionsConfigProvider(), storageClient: getMockStorageForExecTest(context.Background()), @@ -3320,7 +3359,7 @@ func TestExecutionManager_TestExecutionManager_PublishNotificationsTransformErro []runtimeInterfaces.ExecutionQueue{}, []runtimeInterfaces.WorkflowConfig{}), nil, nil, nil, nil) - var myExecManager = &ExecutionManager{ + myExecManager := &ExecutionManager{ db: repository, config: mockRuntime, storageClient: getMockStorageForExecTest(context.Background()), @@ -3343,7 +3382,7 @@ func TestExecutionManager_TestExecutionManager_PublishNotificationsTransformErro ExecutionId: &executionIdentifier, }, } - var execClosure = admin.ExecutionClosure{ + execClosure := admin.ExecutionClosure{ Notifications: testutils.GetExecutionRequest().Spec.GetNotifications().Notifications, WorkflowId: &core.Identifier{ ResourceType: core.ResourceType_WORKFLOW, @@ -3367,14 +3406,13 @@ func TestExecutionManager_TestExecutionManager_PublishNotificationsTransformErro Spec: getExpectedSpecBytes(), } assert.Nil(t, myExecManager.publishNotifications(context.Background(), workflowRequest, executionModel)) - } func TestExecutionManager_PublishNotificationsNoPhaseMatch(t *testing.T) { repository := repositoryMocks.NewMockRepository() queue := executions.NewQueueAllocator(getMockExecutionsConfigProvider(), repository) - var myExecManager = &ExecutionManager{ + myExecManager := &ExecutionManager{ db: repository, config: getMockExecutionsConfigProvider(), storageClient: getMockStorageForExecTest(context.Background()), @@ -3394,7 +3432,7 @@ func TestExecutionManager_PublishNotificationsNoPhaseMatch(t *testing.T) { ExecutionId: &executionIdentifier, }, } - var execClosure = admin.ExecutionClosure{ + execClosure := admin.ExecutionClosure{ Notifications: testutils.GetExecutionRequest().Spec.GetNotifications().Notifications, } execClosureBytes, _ := proto.Marshal(&execClosure) @@ -3420,7 +3458,8 @@ func TestTerminateExecution(t *testing.T) { abortCause := "abort cause" updateExecutionFunc := func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { assert.Equal(t, "project", execution.Project) assert.Equal(t, "domain", execution.Domain) assert.Equal(t, "name", execution.Name) @@ -3474,7 +3513,7 @@ func TestTerminateExecution(t *testing.T) { } func TestTerminateExecution_PropellerError(t *testing.T) { - var expectedError = errors.New("expected error") + expectedError := errors.New("expected error") mockExecutor := workflowengineMocks.WorkflowExecutor{} mockExecutor.OnAbortMatch(mock.Anything, mock.Anything).Return(expectedError) @@ -3485,7 +3524,8 @@ func TestTerminateExecution_PropellerError(t *testing.T) { updateCalled := false repository := repositoryMocks.NewMockRepository() repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetUpdateCallback(func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { updateCalled = true assert.Equal(t, core.WorkflowExecution_ABORTING.String(), execution.Phase) return nil @@ -3511,9 +3551,10 @@ func TestTerminateExecution_DatabaseError(t *testing.T) { executionGetFunc := makeExecutionGetFunc(t, []byte{}, &startTime) repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetGetCallback(executionGetFunc) - var expectedError = errors.New("expected error") + expectedError := errors.New("expected error") updateExecutionFunc := func( - context context.Context, execution models.Execution) error { + context context.Context, execution models.Execution, + ) error { return expectedError } repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetUpdateCallback(updateExecutionFunc) @@ -3537,7 +3578,7 @@ func TestTerminateExecution_DatabaseError(t *testing.T) { } func TestTerminateExecution_AlreadyTerminated(t *testing.T) { - var expectedError = errors.New("expected error") + expectedError := errors.New("expected error") mockExecutor := workflowengineMocks.WorkflowExecutor{} mockExecutor.OnAbortMatch(mock.Anything, mock.Anything).Return(expectedError) @@ -3571,7 +3612,7 @@ func TestTerminateExecution_AlreadyTerminated(t *testing.T) { func TestGetExecutionData(t *testing.T) { repository := repositoryMocks.NewMockRepository() startedAt := time.Date(2018, 8, 30, 0, 0, 0, 0, time.UTC) - var closure = admin.ExecutionClosure{ + closure := admin.ExecutionClosure{ Phase: core.WorkflowExecution_RUNNING, OutputResult: &admin.ExecutionClosure_Outputs{ Outputs: &admin.LiteralMapBlob{ @@ -3581,7 +3622,8 @@ func TestGetExecutionData(t *testing.T) { }, }, } - var closureBytes, _ = proto.Marshal(&closure) + + closureBytes, _ := proto.Marshal(&closure) executionGetFunc := func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { return models.Execution{ @@ -3601,7 +3643,8 @@ func TestGetExecutionData(t *testing.T) { } mockExecutionRemoteURL := dataMocks.NewMockRemoteURL() mockExecutionRemoteURL.(*dataMocks.MockRemoteURL).GetCallback = func( - ctx context.Context, uri string) (admin.UrlBlob, error) { + ctx context.Context, uri string, + ) (admin.UrlBlob, error) { if uri == outputURI { return admin.UrlBlob{ Url: "outputs", @@ -3616,28 +3659,31 @@ func TestGetExecutionData(t *testing.T) { return admin.UrlBlob{}, errors.New("unexpected input") } + mockStorage := commonMocks.GetMockStorageClient() fullInputs := &core.LiteralMap{ Literals: map[string]*core.Literal{ "foo": testutils.MakeStringLiteral("foo-value-1"), }, } + fullOutputs := &core.LiteralMap{ Literals: map[string]*core.Literal{ "bar": testutils.MakeStringLiteral("bar-value-1"), }, } + mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).ReadProtobufCb = func( - ctx context.Context, reference storage.DataReference, msg proto.Message) error { + ctx context.Context, reference storage.DataReference, msg proto.Message, + ) error { if reference.String() == "inputs" { marshalled, _ := proto.Marshal(fullInputs) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } else if reference.String() == outputURI { marshalled, _ := proto.Marshal(fullOutputs) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } + return fmt.Errorf("unexpected call to find value in storage [%v]", reference.String()) } @@ -3649,7 +3695,7 @@ func TestGetExecutionData(t *testing.T) { Id: &executionIdentifier, }) assert.Nil(t, err) - assert.True(t, proto.Equal(&admin.WorkflowExecutionGetDataResponse{ + expected := &admin.WorkflowExecutionGetDataResponse{ Outputs: &admin.UrlBlob{ Url: "outputs", Bytes: 200, @@ -3660,7 +3706,15 @@ func TestGetExecutionData(t *testing.T) { }, FullInputs: fullInputs, FullOutputs: fullOutputs, - }, dataResponse)) + InputData: migrateInputData(nil, fullInputs), + OutputData: &core.OutputData{ + Outputs: fullOutputs, + }, + } + if !assert.True(t, proto.Equal(expected, dataResponse)) { + t.Logf("Expected: %v", proto.MarshalTextString(expected)) + t.Logf("Actual: %v", proto.MarshalTextString(dataResponse)) + } } func TestResolveStringMap_RuntimeLimitsObserved(t *testing.T) { @@ -3688,7 +3742,8 @@ func TestAddPluginOverrides(t *testing.T) { db := repositoryMocks.NewMockRepository() db.ResourceRepo().(*repositoryMocks.MockResourceRepo).GetFunction = func(ctx context.Context, ID interfaces.ResourceID) ( - models.Resource, error) { + models.Resource, error, + ) { assert.Equal(t, project, ID.Project) assert.Equal(t, domain, ID.Domain) assert.Equal(t, workflowName, ID.Workflow) @@ -3737,7 +3792,8 @@ func TestPluginOverrides_ResourceGetFailure(t *testing.T) { db := repositoryMocks.NewMockRepository() db.ResourceRepo().(*repositoryMocks.MockResourceRepo).GetFunction = func(ctx context.Context, ID interfaces.ResourceID) ( - models.Resource, error) { + models.Resource, error, + ) { return models.Resource{}, flyteAdminErrors.NewFlyteAdminErrorf(codes.Aborted, "uh oh") } r := plugins.NewRegistry() @@ -3797,7 +3853,7 @@ func TestGetExecutionData_LegacyModel(t *testing.T) { }, }, } - var closureBytes, _ = proto.Marshal(closure) + closureBytes, _ := proto.Marshal(closure) executionGetFunc := func(ctx context.Context, input interfaces.Identifier) (models.Execution, error) { return models.Execution{ @@ -3819,7 +3875,8 @@ func TestGetExecutionData_LegacyModel(t *testing.T) { } mockExecutionRemoteURL := dataMocks.NewMockRemoteURL() mockExecutionRemoteURL.(*dataMocks.MockRemoteURL).GetCallback = func( - ctx context.Context, uri string) (admin.UrlBlob, error) { + ctx context.Context, uri string, + ) (admin.UrlBlob, error) { if uri == outputURI { return admin.UrlBlob{ Url: "outputs", @@ -3844,7 +3901,7 @@ func TestGetExecutionData_LegacyModel(t *testing.T) { Id: &executionIdentifier, }) assert.Nil(t, err) - assert.True(t, proto.Equal(&admin.WorkflowExecutionGetDataResponse{ + commonTestUtils.AssertProtoEqual(t, &admin.WorkflowExecutionGetDataResponse{ Outputs: &admin.UrlBlob{ Url: "outputs", Bytes: 200, @@ -3858,12 +3915,17 @@ func TestGetExecutionData_LegacyModel(t *testing.T) { "foo": testutils.MakeStringLiteral("foo-value-1"), }, }, - FullOutputs: &core.LiteralMap{}, - }, dataResponse)) - var inputs core.LiteralMap + InputData: migrateInputData(nil, &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": testutils.MakeStringLiteral("foo-value-1"), + }, + }), + OutputData: &core.OutputData{}, + }, dataResponse) + var inputs core.InputData err = storageClient.ReadProtobuf(context.Background(), storage.DataReference("s3://bucket/metadata/project/domain/name/inputs"), &inputs) assert.Nil(t, err) - assert.True(t, proto.Equal(&inputs, closure.ComputedInputs)) + commonTestUtils.AssertProtoEqual(t, inputs.GetInputs(), closure.ComputedInputs) } func TestCreateExecution_LegacyClient(t *testing.T) { @@ -3933,7 +3995,7 @@ func TestRelaunchExecution_LegacyModel(t *testing.T) { assert.Equal(t, "default_raw_output", spec.RawOutputDataConfig.OutputLocationPrefix) assert.Equal(t, admin.ExecutionMetadata_RELAUNCH, spec.Metadata.Mode) assert.Equal(t, int32(admin.ExecutionMetadata_RELAUNCH), input.Mode) - assert.True(t, proto.Equal(spec.Inputs, getLegacySpec().Inputs)) + commonTestUtils.AssertProtoEqual(t, spec.Inputs, getLegacySpec().Inputs) return nil } repository.ExecutionRepo().(*repositoryMocks.MockExecutionRepo).SetCreateCallback(exCreateFunc) @@ -3959,23 +4021,24 @@ func TestRelaunchExecution_LegacyModel(t *testing.T) { }, } assert.True(t, createCalled) - assert.True(t, proto.Equal(expectedResponse, response)) + commonTestUtils.AssertProtoEqual(t, expectedResponse, response) - var userInputs core.LiteralMap + var userInputs core.InputData err = storageClient.ReadProtobuf(context.Background(), "s3://bucket/metadata/project/domain/relaunchy/user_inputs", &userInputs) assert.Nil(t, err) - assert.True(t, proto.Equal(&userInputs, getLegacySpec().Inputs)) + commonTestUtils.AssertProtoEqual(t, userInputs.GetInputs(), getLegacySpec().Inputs) - var inputs core.LiteralMap + var inputs core.InputData err = storageClient.ReadProtobuf(context.Background(), "s3://bucket/metadata/project/domain/relaunchy/inputs", &inputs) assert.Nil(t, err) - assert.True(t, proto.Equal(&inputs, existingClosure.ComputedInputs)) + commonTestUtils.AssertProtoEqual(t, inputs.GetInputs(), existingClosure.ComputedInputs) } func TestListExecutions_LegacyModel(t *testing.T) { repository := repositoryMocks.NewMockRepository() executionListFunc := func( - ctx context.Context, input interfaces.ListResourceInput) (interfaces.ExecutionCollectionOutput, error) { + ctx context.Context, input interfaces.ListResourceInput, + ) (interfaces.ExecutionCollectionOutput, error) { var projectFilter, domainFilter, nameFilter bool for _, filter := range input.InlineFilters { assert.Equal(t, common.Execution, filter.GetEntity()) @@ -4053,8 +4116,8 @@ func TestListExecutions_LegacyModel(t *testing.T) { if idx == 0 { assert.Equal(t, "my awesome execution", execution.Id.Name) } - assert.True(t, proto.Equal(spec, execution.Spec)) - assert.True(t, proto.Equal(&closure, execution.Closure)) + commonTestUtils.AssertProtoEqual(t, spec, execution.Spec) + commonTestUtils.AssertProtoEqual(t, &closure, execution.Closure) } assert.Empty(t, executionList.Token) } @@ -4100,7 +4163,7 @@ func TestSetDefaults(t *testing.T) { EphemeralStorage: resource.MustParse("501Mi"), }, }) - assert.True(t, proto.Equal( + commonTestUtils.AssertProtoEqual(t, &core.Container{ Resources: &core.Resources{ Requests: []*core.Resources_ResourceEntry{ @@ -4141,7 +4204,7 @@ func TestSetDefaults(t *testing.T) { }, }, }, - task.Template.GetContainer()), fmt.Sprintf("%+v", task.Template.GetContainer())) + task.Template.GetContainer(), "%+v", task.Template.GetContainer()) } func TestSetDefaults_MissingRequests_ExistingRequestsPreserved(t *testing.T) { @@ -4184,7 +4247,7 @@ func TestSetDefaults_MissingRequests_ExistingRequestsPreserved(t *testing.T) { EphemeralStorage: resource.MustParse("100"), }, }) - assert.True(t, proto.Equal( + commonTestUtils.AssertProtoEqual(t, &core.Container{ Resources: &core.Resources{ Requests: []*core.Resources_ResourceEntry{ @@ -4217,7 +4280,7 @@ func TestSetDefaults_MissingRequests_ExistingRequestsPreserved(t *testing.T) { }, }, }, - task.Template.GetContainer()), fmt.Sprintf("%+v", task.Template.GetContainer())) + task.Template.GetContainer(), "%+v", task.Template.GetContainer()) } func TestSetDefaults_OptionalRequiredResources(t *testing.T) { @@ -4256,7 +4319,7 @@ func TestSetDefaults_OptionalRequiredResources(t *testing.T) { }, Limits: taskConfigLimits, }) - assert.True(t, proto.Equal( + commonTestUtils.AssertProtoEqual(t, &core.Container{ Resources: &core.Resources{ Requests: []*core.Resources_ResourceEntry{ @@ -4281,7 +4344,7 @@ func TestSetDefaults_OptionalRequiredResources(t *testing.T) { }, }, }, - task.Template.GetContainer()), fmt.Sprintf("%+v", task.Template.GetContainer())) + task.Template.GetContainer(), "%+v", task.Template.GetContainer()) }) t.Run("respect non-required resources when defaults exist in config", func(t *testing.T) { @@ -4296,7 +4359,7 @@ func TestSetDefaults_OptionalRequiredResources(t *testing.T) { EphemeralStorage: resource.MustParse("1"), }, }) - assert.True(t, proto.Equal( + commonTestUtils.AssertProtoEqual(t, &core.Container{ Resources: &core.Resources{ Requests: []*core.Resources_ResourceEntry{ @@ -4329,13 +4392,13 @@ func TestSetDefaults_OptionalRequiredResources(t *testing.T) { }, }, }, - task.Template.GetContainer()), fmt.Sprintf("%+v", task.Template.GetContainer())) + task.Template.GetContainer(), "%+v", task.Template.GetContainer()) }) - } + func TestCreateSingleTaskExecution(t *testing.T) { repository := getMockRepositoryForExecTest() - var getCalledCount = 0 + getCalledCount := 0 var newlyCreatedWorkflow models.Workflow workflowCreateFunc := func(input models.Workflow, descriptionEntity *models.DescriptionEntity) error { newlyCreatedWorkflow = input @@ -4465,7 +4528,7 @@ func TestCreateSingleTaskExecution(t *testing.T) { }, input.ExecutionKey) assert.Equal(t, "task", input.LaunchEntity) assert.Equal(t, "UNDEFINED", input.Phase) - assert.True(t, proto.Equal(taskIdentifier, spec.LaunchPlan)) + commonTestUtils.AssertProtoEqual(t, taskIdentifier, spec.LaunchPlan) return nil }) @@ -4573,15 +4636,19 @@ func TestGetExecutionConfigOverrides(t *testing.T) { config: applicationConfig, } resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { // two requests will be made, one with empty domain and one with filled in domain - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) projectDomainResponse := &managerInterfaces.ResourceResponse{ Attributes: &admin.MatchingAttributes{ @@ -4693,8 +4760,8 @@ func TestGetExecutionConfigOverrides(t *testing.T) { assert.Equal(t, requestMaxParallelism, execConfig.MaxParallelism) assert.Equal(t, launchPlanInterruptible, execConfig.Interruptible.Value) assert.Equal(t, launchPlanOverwriteCache, execConfig.OverwriteCache) - assert.True(t, proto.Equal(launchPlan.Spec.SecurityContext, execConfig.SecurityContext)) - assert.True(t, proto.Equal(launchPlan.Spec.Annotations, execConfig.Annotations)) + commonTestUtils.AssertProtoEqual(t, launchPlan.Spec.SecurityContext, execConfig.SecurityContext) + commonTestUtils.AssertProtoEqual(t, launchPlan.Spec.Annotations, execConfig.Annotations) assert.Equal(t, requestOutputLocationPrefix, execConfig.RawOutputDataConfig.OutputLocationPrefix) assert.Equal(t, requestLabels, execConfig.GetLabels().Values) assert.Equal(t, launchPlanEnvironmentVariables, execConfig.GetEnvs().Values) @@ -4826,14 +4893,18 @@ func TestGetExecutionConfigOverrides(t *testing.T) { }) t.Run("matchable resource partial config", func(t *testing.T) { resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return &managerInterfaces.ResourceResponse{ @@ -4873,14 +4944,18 @@ func TestGetExecutionConfigOverrides(t *testing.T) { }) t.Run("matchable resource with no config", func(t *testing.T) { resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return &managerInterfaces.ResourceResponse{ Attributes: &admin.MatchingAttributes{ @@ -4911,14 +4986,18 @@ func TestGetExecutionConfigOverrides(t *testing.T) { }) t.Run("fetch security context from deprecated config", func(t *testing.T) { resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return &managerInterfaces.ResourceResponse{ @@ -4954,16 +5033,20 @@ func TestGetExecutionConfigOverrides(t *testing.T) { }) t.Run("matchable resource workflow resource", func(t *testing.T) { resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - Workflow: workflowIdentifier.Name, - }, {Project: workflowIdentifier.Project, - Domain: "", - Workflow: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + Workflow: workflowIdentifier.Name, + }, { + Project: workflowIdentifier.Project, + Domain: "", + Workflow: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return &managerInterfaces.ResourceResponse{ @@ -5008,14 +5091,18 @@ func TestGetExecutionConfigOverrides(t *testing.T) { }) t.Run("matchable resource failure", func(t *testing.T) { resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return nil, fmt.Errorf("failed to fetch the resources") } @@ -5040,14 +5127,18 @@ func TestGetExecutionConfigOverrides(t *testing.T) { t.Run("application configuration", func(t *testing.T) { resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return &managerInterfaces.ResourceResponse{ Attributes: &admin.MatchingAttributes{ @@ -5324,14 +5415,18 @@ func TestGetExecutionConfigOverrides(t *testing.T) { func TestGetExecutionConfig(t *testing.T) { resourceManager := managerMocks.MockResourceManager{} resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { - assert.Contains(t, []managerInterfaces.ResourceRequest{{ - Project: workflowIdentifier.Project, - Domain: workflowIdentifier.Domain, - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, - }, {Project: workflowIdentifier.Project, - Domain: "", - ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG}, + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { + assert.Contains(t, []managerInterfaces.ResourceRequest{ + { + Project: workflowIdentifier.Project, + Domain: workflowIdentifier.Domain, + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, { + Project: workflowIdentifier.Project, + Domain: "", + ResourceType: admin.MatchableResource_WORKFLOW_EXECUTION_CONFIG, + }, }, request) return &managerInterfaces.ResourceResponse{ Attributes: &admin.MatchingAttributes{ @@ -5363,7 +5458,8 @@ func TestGetExecutionConfig(t *testing.T) { func TestGetExecutionConfig_Spec(t *testing.T) { resourceManager := managerMocks.MockResourceManager{} resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { return nil, nil } applicationConfig := runtime.NewConfigurationProvider() @@ -5404,7 +5500,8 @@ func TestGetExecutionConfig_Spec(t *testing.T) { resourceManager = managerMocks.MockResourceManager{} resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { return nil, nil } executionManager = ExecutionManager{ @@ -5430,7 +5527,8 @@ func TestGetClusterAssignment(t *testing.T) { clusterAssignment := admin.ClusterAssignment{ClusterPoolName: "gpu"} resourceManager := managerMocks.MockResourceManager{} resourceManager.GetResourceFunc = func(ctx context.Context, - request managerInterfaces.ResourceRequest) (*managerInterfaces.ResourceResponse, error) { + request managerInterfaces.ResourceRequest, + ) (*managerInterfaces.ResourceResponse, error) { assert.EqualValues(t, request, managerInterfaces.ResourceRequest{ Project: workflowIdentifier.Project, Domain: workflowIdentifier.Domain, @@ -5455,7 +5553,7 @@ func TestGetClusterAssignment(t *testing.T) { Spec: &admin.ExecutionSpec{}, }) assert.NoError(t, err) - assert.True(t, proto.Equal(ca, &clusterAssignment)) + commonTestUtils.AssertProtoEqual(t, ca, &clusterAssignment) }) t.Run("value from request", func(t *testing.T) { reqClusterAssignment := admin.ClusterAssignment{ClusterPoolName: "swimming-pool"} @@ -5467,7 +5565,7 @@ func TestGetClusterAssignment(t *testing.T) { }, }) assert.NoError(t, err) - assert.True(t, proto.Equal(ca, &reqClusterAssignment)) + commonTestUtils.AssertProtoEqual(t, ca, &reqClusterAssignment) }) t.Run("value from config", func(t *testing.T) { customCP := "my_cp" @@ -5536,7 +5634,8 @@ func TestResolvePermissions(t *testing.T) { RunAs: &core.Identity{ IamRole: assumableIamRole, K8SServiceAccount: k8sServiceAccount, - }}, sc) + }, + }, sc) }) t.Run("use request values security context", func(t *testing.T) { execRequest := &admin.ExecutionCreateRequest{ diff --git a/flyteadmin/pkg/manager/impl/launch_plan_manager_test.go b/flyteadmin/pkg/manager/impl/launch_plan_manager_test.go index 3e5b36793e..3812bafc32 100644 --- a/flyteadmin/pkg/manager/impl/launch_plan_manager_test.go +++ b/flyteadmin/pkg/manager/impl/launch_plan_manager_test.go @@ -83,8 +83,8 @@ func TestCreateLaunchPlan(t *testing.T) { var createCalled bool repository.LaunchPlanRepo().(*repositoryMocks.MockLaunchPlanRepo).SetCreateCallback( func(input models.LaunchPlan) error { - assert.Equal(t, []byte{0xc9, 0xa9, 0x1b, 0xf3, 0x0, 0x65, 0xe5, 0xce, 0xdb, 0xde, 0xbe, 0x14, 0x1b, 0x9b, - 0x60, 0x8d, 0xeb, 0x69, 0x47, 0x69, 0xed, 0x82, 0xae, 0x2c, 0xde, 0x11, 0x70, 0xba, 0xdc, 0x11, 0xe8, 0xdb}, input.Digest) + assert.Equal(t, []byte{0x3f, 0x79, 0x8b, 0x7c, 0xff, 0x94, 0xc2, 0xa2, 0x73, 0x11, 0xca, 0x7c, 0x11, 0xbc, + 0x93, 0xe6, 0x98, 0x25, 0x24, 0xd8, 0xa8, 0xc1, 0xad, 0xdb, 0xd5, 0x5d, 0x13, 0xd6, 0x77, 0xf6, 0x32, 0x97}, input.Digest) createCalled = true return nil }) diff --git a/flyteadmin/pkg/manager/impl/node_execution_manager.go b/flyteadmin/pkg/manager/impl/node_execution_manager.go index d618a1784f..5b20f6103c 100644 --- a/flyteadmin/pkg/manager/impl/node_execution_manager.go +++ b/flyteadmin/pkg/manager/impl/node_execution_manager.go @@ -535,8 +535,10 @@ func (m *NodeExecutionManager) GetNodeExecutionData( response := &admin.NodeExecutionGetDataResponse{ Inputs: inputURLBlob, Outputs: outputURLBlob, - FullInputs: inputs, - FullOutputs: outputs, + FullInputs: inputs.GetInputs(), + FullOutputs: outputs.GetOutputs(), + InputData: inputs, + OutputData: outputs, FlyteUrls: common.FlyteURLsFromNodeExecutionID(*request.Id, nodeExecution.GetClosure() != nil && nodeExecution.GetClosure().GetDeckUri() != ""), } diff --git a/flyteadmin/pkg/manager/impl/node_execution_manager_test.go b/flyteadmin/pkg/manager/impl/node_execution_manager_test.go index 279b2ac416..6193655bfa 100644 --- a/flyteadmin/pkg/manager/impl/node_execution_manager_test.go +++ b/flyteadmin/pkg/manager/impl/node_execution_manager_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "google.golang.org/grpc/status" "testing" "time" @@ -12,11 +13,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" + protoV2 "google.golang.org/protobuf/proto" eventWriterMocks "github.com/flyteorg/flyte/flyteadmin/pkg/async/events/mocks" "github.com/flyteorg/flyte/flyteadmin/pkg/common" commonMocks "github.com/flyteorg/flyte/flyteadmin/pkg/common/mocks" + commonTestUtils "github.com/flyteorg/flyte/flyteadmin/pkg/common/testutils" dataMocks "github.com/flyteorg/flyte/flyteadmin/pkg/data/mocks" flyteAdminErrors "github.com/flyteorg/flyte/flyteadmin/pkg/errors" "github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/testutils" @@ -1282,16 +1284,13 @@ func TestGetNodeExecutionData(t *testing.T) { ctx context.Context, reference storage.DataReference, msg proto.Message) error { if reference.String() == "input uri" { marshalled, _ := proto.Marshal(fullInputs) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } else if reference.String() == util.OutputsFile { marshalled, _ := proto.Marshal(fullOutputs) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } else if reference.String() == dynamicWorkflowClosureRef { marshalled, _ := proto.Marshal(&dynamicWorkflowClosure) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } return fmt.Errorf("unexpected call to find value in storage [%v]", reference.String()) } @@ -1300,7 +1299,7 @@ func TestGetNodeExecutionData(t *testing.T) { Id: &nodeExecutionIdentifier, }) assert.NoError(t, err) - assert.True(t, proto.Equal(&admin.NodeExecutionGetDataResponse{ + commonTestUtils.AssertProtoEqual(t, &admin.NodeExecutionGetDataResponse{ Inputs: &admin.UrlBlob{ Url: "inputs", Bytes: 100, @@ -1311,6 +1310,10 @@ func TestGetNodeExecutionData(t *testing.T) { }, FullInputs: fullInputs, FullOutputs: fullOutputs, + InputData: migrateInputData(nil, fullInputs), + OutputData: &core.OutputData{ + Outputs: fullOutputs, + }, DynamicWorkflow: &admin.DynamicWorkflowNodeMetadata{ Id: dynamicWorkflowClosure.Primary.Template.Id, CompiledWorkflow: &dynamicWorkflowClosure, @@ -1320,7 +1323,7 @@ func TestGetNodeExecutionData(t *testing.T) { Outputs: "flyte://v1/project/domain/name/node id/o", Deck: "flyte://v1/project/domain/name/node id/d", }, - }, dataResponse)) + }, dataResponse) } func Test_GetDynamicNodeWorkflow_Success(t *testing.T) { diff --git a/flyteadmin/pkg/manager/impl/task_execution_manager.go b/flyteadmin/pkg/manager/impl/task_execution_manager.go index 61d94a086f..6d7c0a3d8c 100644 --- a/flyteadmin/pkg/manager/impl/task_execution_manager.go +++ b/flyteadmin/pkg/manager/impl/task_execution_manager.go @@ -324,8 +324,10 @@ func (m *TaskExecutionManager) GetTaskExecutionData( response := &admin.TaskExecutionGetDataResponse{ Inputs: inputURLBlob, Outputs: outputURLBlob, - FullInputs: inputs, - FullOutputs: outputs, + FullInputs: inputs.GetInputs(), + FullOutputs: outputs.GetOutputs(), + InputData: inputs, + OutputData: outputs, FlyteUrls: common.FlyteURLsFromTaskExecutionID(*request.Id, false), } diff --git a/flyteadmin/pkg/manager/impl/task_execution_manager_test.go b/flyteadmin/pkg/manager/impl/task_execution_manager_test.go index 278201c6eb..e5641d3196 100644 --- a/flyteadmin/pkg/manager/impl/task_execution_manager_test.go +++ b/flyteadmin/pkg/manager/impl/task_execution_manager_test.go @@ -11,9 +11,11 @@ import ( "github.com/golang/protobuf/ptypes" "github.com/stretchr/testify/assert" "google.golang.org/grpc/codes" + protoV2 "google.golang.org/protobuf/proto" "github.com/flyteorg/flyte/flyteadmin/pkg/common" commonMocks "github.com/flyteorg/flyte/flyteadmin/pkg/common/mocks" + commonTestUtils "github.com/flyteorg/flyte/flyteadmin/pkg/common/testutils" dataMocks "github.com/flyteorg/flyte/flyteadmin/pkg/data/mocks" flyteAdminErrors "github.com/flyteorg/flyte/flyteadmin/pkg/errors" "github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/testutils" @@ -928,12 +930,10 @@ func TestGetTaskExecutionData(t *testing.T) { ctx context.Context, reference storage.DataReference, msg proto.Message) error { if reference.String() == "input-uri.pb" { marshalled, _ := proto.Marshal(fullInputs) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } else if reference.String() == "test-output.pb" { marshalled, _ := proto.Marshal(fullOutputs) - _ = proto.Unmarshal(marshalled, msg) - return nil + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } return fmt.Errorf("unexpected call to find value in storage [%v]", reference.String()) } @@ -947,7 +947,7 @@ func TestGetTaskExecutionData(t *testing.T) { }) assert.Nil(t, err) assert.True(t, getTaskCalled) - assert.True(t, proto.Equal(&admin.TaskExecutionGetDataResponse{ + commonTestUtils.AssertProtoEqual(t, &admin.TaskExecutionGetDataResponse{ Inputs: &admin.UrlBlob{ Url: "inputs", Bytes: 100, @@ -957,11 +957,15 @@ func TestGetTaskExecutionData(t *testing.T) { Bytes: 200, }, FullInputs: fullInputs, + InputData: migrateInputData(nil, fullInputs), FullOutputs: fullOutputs, + OutputData: &core.OutputData{ + Outputs: fullOutputs, + }, FlyteUrls: &admin.FlyteURLs{ Inputs: "flyte://v1/project/domain/name/node-id/1/i", Outputs: "flyte://v1/project/domain/name/node-id/1/o", - Deck: "", + //Deck: "", }, - }, dataResponse)) + }, dataResponse) } diff --git a/flyteadmin/pkg/manager/impl/testutils/mock_requests.go b/flyteadmin/pkg/manager/impl/testutils/mock_requests.go index e6ff69eab8..92d64dae26 100644 --- a/flyteadmin/pkg/manager/impl/testutils/mock_requests.go +++ b/flyteadmin/pkg/manager/impl/testutils/mock_requests.go @@ -160,6 +160,13 @@ func GetLaunchPlanRequest() admin.LaunchPlanCreateRequest { "bar": coreutils.MustMakeLiteral("bar-value"), }, }, + FixedInputData: &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "bar": coreutils.MustMakeLiteral("bar-value"), + }, + }, + }, }, } } @@ -243,6 +250,13 @@ func GetExecutionRequest() admin.ExecutionCreateRequest { "foo": coreutils.MustMakeLiteral("foo-value-1"), }, }, + InputData: &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("foo-value-1"), + }, + }, + }, } } diff --git a/flyteadmin/pkg/manager/impl/util/data.go b/flyteadmin/pkg/manager/impl/util/data.go index 5921cc83ac..a011e08df4 100644 --- a/flyteadmin/pkg/manager/impl/util/data.go +++ b/flyteadmin/pkg/manager/impl/util/data.go @@ -31,9 +31,9 @@ func shouldFetchOutputData(config *runtimeInterfaces.RemoteDataConfig, urlBlob a // GetInputs returns an inputs URL blob and if config settings permit, inline inputs data for an execution. func GetInputs(ctx context.Context, urlData dataInterfaces.RemoteURLInterface, remoteDataConfig *runtimeInterfaces.RemoteDataConfig, storageClient *storage.DataStore, inputURI string) ( - *core.LiteralMap, *admin.UrlBlob, error) { + *core.InputData, *admin.UrlBlob, error) { var inputsURLBlob admin.UrlBlob - var fullInputs core.LiteralMap + var fullInputs core.InputData if len(inputURI) == 0 { return &fullInputs, &inputsURLBlob, nil @@ -48,20 +48,63 @@ func GetInputs(ctx context.Context, urlData dataInterfaces.RemoteURLInterface, } if shouldFetchData(remoteDataConfig, inputsURLBlob) { - err = storageClient.ReadProtobuf(ctx, storage.DataReference(inputURI), &fullInputs) + oldInputs := &core.LiteralMap{} + msgIndex, err := storageClient.ReadProtobufAny(ctx, storage.DataReference(inputURI), &fullInputs, oldInputs) if err != nil { // If we fail to read the protobuf from the remote store, we shouldn't fail the request altogether. // Instead we return the signed URL blob so that the client can use that to fetch the input data. logger.Warningf(ctx, "Failed to read inputs from URI [%s] with err: %v", inputURI, err) + } else if msgIndex == 1 { + fullInputs = core.InputData{ + Inputs: oldInputs, + } } } + return &fullInputs, &inputsURLBlob, nil } +// GetOutputData returns an output URL blob and if config settings permit, inline outputs data for an execution. +func GetOutputData(ctx context.Context, urlData dataInterfaces.RemoteURLInterface, + remoteDataConfig *runtimeInterfaces.RemoteDataConfig, storageClient *storage.DataStore, outputURI string) ( + *core.OutputData, *admin.UrlBlob, error) { + var outputsURLBlob admin.UrlBlob + var fullOutputs core.OutputData + + if len(outputURI) == 0 { + return &fullOutputs, &outputsURLBlob, nil + } + + var err error + if remoteDataConfig.SignedURL.Enabled { + outputsURLBlob, err = urlData.Get(ctx, outputURI) + if err != nil { + return nil, nil, err + } + } + + if shouldFetchData(remoteDataConfig, outputsURLBlob) { + oldOutputs := &core.LiteralMap{} + msgIndex, err := storageClient.ReadProtobufAny(ctx, storage.DataReference(outputURI), &fullOutputs, oldOutputs) + if err != nil { + // If we fail to read the protobuf from the remote store, we shouldn't fail the request altogether. + // Instead we return the signed URL blob so that the client can use that to fetch the input data. + logger.Warningf(ctx, "Failed to read outputs from URI [%s] with err: %v", outputURI, err) + } else if msgIndex == 1 { + fullOutputs = core.OutputData{ + Outputs: oldOutputs, + } + } + } + + return &fullOutputs, &outputsURLBlob, nil +} + // ExecutionClosure defines common methods in NodeExecutionClosure and TaskExecutionClosure used to return output data. type ExecutionClosure interface { GetOutputUri() string //nolint GetOutputData() *core.LiteralMap + GetFullOutputs() *core.OutputData } // Wrapper around an admin.ExecutionClosure object which conforms to the output interface @@ -86,6 +129,20 @@ func (c workflowExecutionClosure) GetOutputData() *core.LiteralMap { return c.ExecutionClosure.GetOutputData() } +func (c workflowExecutionClosure) GetFullOutputs() *core.OutputData { + if c.ExecutionClosure.GetOutputs() != nil && c.ExecutionClosure.GetOutputs().GetValues() != nil { + return &core.OutputData{ + Outputs: c.ExecutionClosure.GetOutputs().GetValues(), + } + } else if oldOutputs := c.ExecutionClosure.GetOutputData(); oldOutputs != nil { + return &core.OutputData{ + Outputs: oldOutputs, + } + } + + return c.ExecutionClosure.GetFullOutputs() +} + // ToExecutionClosureInterface converts a workflow execution closure to an implementation of the ExecutionClosure // interface for use in producing execution output data. func ToExecutionClosureInterface(closure *admin.ExecutionClosure) ExecutionClosure { @@ -97,9 +154,9 @@ func ToExecutionClosureInterface(closure *admin.ExecutionClosure) ExecutionClosu // GetOutputs returns an outputs URL blob and if config settings permit, inline outputs data for an execution. func GetOutputs(ctx context.Context, urlData dataInterfaces.RemoteURLInterface, remoteDataConfig *runtimeInterfaces.RemoteDataConfig, storageClient *storage.DataStore, closure ExecutionClosure) ( - *core.LiteralMap, *admin.UrlBlob, error) { + *core.OutputData, *admin.UrlBlob, error) { var outputsURLBlob admin.UrlBlob - var fullOutputs = &core.LiteralMap{} + var fullOutputs = &core.OutputData{} if closure == nil { return fullOutputs, &outputsURLBlob, nil } @@ -112,18 +169,31 @@ func GetOutputs(ctx context.Context, urlData dataInterfaces.RemoteURLInterface, } } - if closure.GetOutputData() != nil { + if closure.GetFullOutputs() != nil { + if int64(proto.Size(closure.GetFullOutputs())) < remoteDataConfig.MaxSizeInBytes { + fullOutputs = closure.GetFullOutputs() + } else { + logger.Debugf(ctx, "execution closure contains output data that exceeds max data size for responses") + } + } else if closure.GetOutputData() != nil { if int64(proto.Size(closure.GetOutputData())) < remoteDataConfig.MaxSizeInBytes { - fullOutputs = closure.GetOutputData() + fullOutputs = &core.OutputData{ + Outputs: closure.GetOutputData(), + } } else { logger.Debugf(ctx, "execution closure contains output data that exceeds max data size for responses") } } else if shouldFetchOutputData(remoteDataConfig, outputsURLBlob, closure.GetOutputUri()) { - err := storageClient.ReadProtobuf(ctx, storage.DataReference(closure.GetOutputUri()), fullOutputs) + oldOutputs := &core.LiteralMap{} + msgIndex, err := storageClient.ReadProtobufAny(ctx, storage.DataReference(closure.GetOutputUri()), fullOutputs, oldOutputs) if err != nil { // If we fail to read the protobuf from the remote store, we shouldn't fail the request altogether. // Instead we return the signed URL blob so that the client can use that to fetch the output data. logger.Warningf(ctx, "Failed to read outputs from URI [%s] with err: %v", closure.GetOutputUri(), err) + } else if msgIndex == 1 { + fullOutputs = &core.OutputData{ + Outputs: oldOutputs, + } } } diff --git a/flyteadmin/pkg/manager/impl/util/data_test.go b/flyteadmin/pkg/manager/impl/util/data_test.go index e447b1883c..bf621d4ce5 100644 --- a/flyteadmin/pkg/manager/impl/util/data_test.go +++ b/flyteadmin/pkg/manager/impl/util/data_test.go @@ -6,9 +6,11 @@ import ( "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" + protoV2 "google.golang.org/protobuf/proto" "github.com/flyteorg/flyte/flyteadmin/pkg/common" commonMocks "github.com/flyteorg/flyte/flyteadmin/pkg/common/mocks" + commonTestUtils "github.com/flyteorg/flyte/flyteadmin/pkg/common/testutils" urlMocks "github.com/flyteorg/flyte/flyteadmin/pkg/data/mocks" "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/interfaces" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" @@ -17,9 +19,19 @@ import ( "github.com/flyteorg/flyte/flytestdlib/storage" ) -var testLiteralMap = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo-1": coreutils.MustMakeLiteral("foo-value-1"), +var testInputData = &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo-1": coreutils.MustMakeLiteral("foo-value-1"), + }, + }, +} + +var testOutputData = &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo-1": coreutils.MustMakeLiteral("foo-value-1"), + }, }, } @@ -131,19 +143,19 @@ func TestGetInputs(t *testing.T) { mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).ReadProtobufCb = func( ctx context.Context, reference storage.DataReference, msg proto.Message) error { assert.Equal(t, inputsURI, reference.String()) - marshalled, _ := proto.Marshal(testLiteralMap) - _ = proto.Unmarshal(marshalled, msg) - return nil + marshalled, _ := proto.Marshal(testInputData) + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } t.Run("should sign URL", func(t *testing.T) { remoteDataConfig.SignedURL = interfaces.SignedURL{ Enabled: true, } + fullInputs, inputURLBlob, err := GetInputs(context.TODO(), mockRemoteURL, &remoteDataConfig, mockStorage, inputsURI) assert.NoError(t, err) - assert.True(t, proto.Equal(fullInputs, testLiteralMap)) - assert.True(t, proto.Equal(inputURLBlob, &expectedURLBlob)) + commonTestUtils.AssertProtoEqual(t, testInputData, fullInputs) + commonTestUtils.AssertProtoEqual(t, &expectedURLBlob, inputURLBlob) }) t.Run("should not sign URL", func(t *testing.T) { remoteDataConfig.SignedURL = interfaces.SignedURL{ @@ -151,7 +163,7 @@ func TestGetInputs(t *testing.T) { } fullInputs, inputURLBlob, err := GetInputs(context.TODO(), mockRemoteURL, &remoteDataConfig, mockStorage, inputsURI) assert.NoError(t, err) - assert.True(t, proto.Equal(fullInputs, testLiteralMap)) + assert.True(t, proto.Equal(fullInputs, testInputData)) assert.Empty(t, inputURLBlob) }) } @@ -175,10 +187,10 @@ func TestGetOutputs(t *testing.T) { mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).ReadProtobufCb = func( ctx context.Context, reference storage.DataReference, msg proto.Message) error { assert.Equal(t, testOutputsURI, reference.String()) - marshalled, _ := proto.Marshal(testLiteralMap) - _ = proto.Unmarshal(marshalled, msg) - return nil + marshalled, _ := proto.Marshal(testOutputData) + return protoV2.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(marshalled, proto.MessageV2(msg)) } + closure := &admin.NodeExecutionClosure{ OutputResult: &admin.NodeExecutionClosure_OutputUri{ OutputUri: testOutputsURI, @@ -191,8 +203,8 @@ func TestGetOutputs(t *testing.T) { fullOutputs, outputURLBlob, err := GetOutputs(context.TODO(), mockRemoteURL, &remoteDataConfig, mockStorage, closure) assert.NoError(t, err) - assert.True(t, proto.Equal(fullOutputs, testLiteralMap)) - assert.True(t, proto.Equal(outputURLBlob, &expectedURLBlob)) + commonTestUtils.AssertProtoEqual(t, testOutputData, fullOutputs) + commonTestUtils.AssertProtoEqual(t, &expectedURLBlob, outputURLBlob) }) t.Run("offloaded outputs without signed URL", func(t *testing.T) { remoteDataConfig.SignedURL = interfaces.SignedURL{ @@ -201,7 +213,7 @@ func TestGetOutputs(t *testing.T) { fullOutputs, outputURLBlob, err := GetOutputs(context.TODO(), mockRemoteURL, &remoteDataConfig, mockStorage, closure) assert.NoError(t, err) - assert.True(t, proto.Equal(fullOutputs, testLiteralMap)) + commonTestUtils.AssertProtoEqual(t, fullOutputs, testOutputData) assert.Empty(t, outputURLBlob) }) t.Run("inline outputs", func(t *testing.T) { @@ -220,14 +232,14 @@ func TestGetOutputs(t *testing.T) { return nil } closure := &admin.NodeExecutionClosure{ - OutputResult: &admin.NodeExecutionClosure_OutputData{ - OutputData: testLiteralMap, + OutputResult: &admin.NodeExecutionClosure_FullOutputs{ + FullOutputs: testOutputData, }, } fullOutputs, outputURLBlob, err := GetOutputs(context.TODO(), mockRemoteURL, &remoteDataConfig, mockStorage, closure) assert.NoError(t, err) - assert.True(t, proto.Equal(fullOutputs, testLiteralMap)) + assert.True(t, proto.Equal(fullOutputs, testOutputData)) assert.Empty(t, outputURLBlob) }) } @@ -248,26 +260,26 @@ func TestWorkflowExecutionClosure(t *testing.T) { }) t.Run("outputs inline", func(t *testing.T) { workflowExecutionClosure := admin.ExecutionClosure{ - OutputResult: &admin.ExecutionClosure_OutputData{ - OutputData: testLiteralMap, + OutputResult: &admin.ExecutionClosure_FullOutputs{ + FullOutputs: testOutputData, }, } closureImpl := ToExecutionClosureInterface(&workflowExecutionClosure) assert.Empty(t, closureImpl.GetOutputUri()) - assert.True(t, proto.Equal(testLiteralMap, closureImpl.GetOutputData())) + commonTestUtils.AssertProtoEqual(t, testOutputData, closureImpl.GetFullOutputs()) }) t.Run("outputs inline - historical/deprecated format", func(t *testing.T) { workflowExecutionClosure := admin.ExecutionClosure{ OutputResult: &admin.ExecutionClosure_Outputs{ Outputs: &admin.LiteralMapBlob{ Data: &admin.LiteralMapBlob_Values{ - Values: testLiteralMap, + Values: testOutputData.GetOutputs(), }, }, }, } closureImpl := ToExecutionClosureInterface(&workflowExecutionClosure) assert.Empty(t, closureImpl.GetOutputUri()) - assert.True(t, proto.Equal(testLiteralMap, closureImpl.GetOutputData())) + commonTestUtils.AssertProtoEqual(t, testOutputData, closureImpl.GetFullOutputs()) }) } diff --git a/flyteadmin/pkg/manager/impl/validation/execution_validator.go b/flyteadmin/pkg/manager/impl/validation/execution_validator.go index b01e878b5b..c7580623fa 100644 --- a/flyteadmin/pkg/manager/impl/validation/execution_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/execution_validator.go @@ -72,7 +72,9 @@ func ValidateExecutionRequest(ctx context.Context, request admin.ExecutionCreate } func CheckAndFetchInputsForExecution( - userInputs *core.LiteralMap, fixedInputs *core.LiteralMap, expectedInputs *core.ParameterMap) (*core.LiteralMap, error) { + userInputsData *core.InputData, userInputs *core.LiteralMap, + fixedInputsData *core.InputData, fixedInputs *core.LiteralMap, + expectedInputs *core.ParameterMap) (*core.InputData, error) { executionInputMap := map[string]*core.Literal{} expectedInputMap := map[string]*core.Parameter{} @@ -81,11 +83,21 @@ func CheckAndFetchInputsForExecution( expectedInputMap = expectedInputs.GetParameters() } - if userInputs != nil && len(userInputs.GetLiterals()) > 0 { + if literals := userInputsData.GetInputs().GetLiterals(); len(literals) > 0 { + for name, value := range literals { + if _, ok := expectedInputMap[name]; !ok { + return nil, errors.NewFlyteAdminErrorf(codes.InvalidArgument, "invalid input %s", name) + } + + executionInputMap[name] = value + } + // DEPRECATED: Remove this block once the deprecated field is removed from the API. + } else if userInputs != nil && len(userInputs.GetLiterals()) > 0 { for name, value := range userInputs.GetLiterals() { if _, ok := expectedInputMap[name]; !ok { return nil, errors.NewFlyteAdminErrorf(codes.InvalidArgument, "invalid input %s", name) } + executionInputMap[name] = value } } @@ -104,7 +116,15 @@ func CheckAndFetchInputsForExecution( } } - if fixedInputs != nil && len(fixedInputs.GetLiterals()) > 0 { + if literals := fixedInputsData.GetInputs().GetLiterals(); len(literals) > 0 { + for name, fixedInput := range literals { + if _, ok := executionInputMap[name]; ok { + return nil, errors.NewFlyteAdminErrorf(codes.InvalidArgument, "%s %s cannot be overridden", shared.FixedInputs, name) + } + executionInputMap[name] = fixedInput + } + // DEPRECATED: Remove this block once the deprecated field is removed from the API. + } else if fixedInputs != nil && len(fixedInputs.GetLiterals()) > 0 { for name, fixedInput := range fixedInputs.GetLiterals() { if _, ok := executionInputMap[name]; ok { return nil, errors.NewFlyteAdminErrorf(codes.InvalidArgument, "%s %s cannot be overridden", shared.FixedInputs, name) @@ -113,8 +133,10 @@ func CheckAndFetchInputsForExecution( } } - return &core.LiteralMap{ - Literals: executionInputMap, + return &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: executionInputMap, + }, }, nil } @@ -140,7 +162,15 @@ func ValidateCreateWorkflowEventRequest(request admin.WorkflowExecutionEventRequ return errors.NewFlyteAdminErrorf(codes.InvalidArgument, "Workflow event handler request event doesn't have an execution id - %v", request.Event) } - if err := ValidateOutputData(request.Event.GetOutputData(), maxOutputSizeInBytes); err != nil { + + outputData := request.GetEvent().GetOutputData() + if outputData == nil { + outputData = &core.OutputData{ + Outputs: request.GetEvent().GetDeprecatedOutputData(), + } + } + + if err := ValidateOutputData(outputData, maxOutputSizeInBytes); err != nil { return err } return nil diff --git a/flyteadmin/pkg/manager/impl/validation/execution_validator_test.go b/flyteadmin/pkg/manager/impl/validation/execution_validator_test.go index 3029ce6dc4..f1561312d9 100644 --- a/flyteadmin/pkg/manager/impl/validation/execution_validator_test.go +++ b/flyteadmin/pkg/manager/impl/validation/execution_validator_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/assert" + commonTestUtils "github.com/flyteorg/flyte/flyteadmin/pkg/common/testutils" "github.com/flyteorg/flyte/flyteadmin/pkg/manager/impl/testutils" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" @@ -71,19 +72,23 @@ func TestGetExecutionInputs(t *testing.T) { lpRequest := testutils.GetLaunchPlanRequest() actualInputs, err := CheckAndFetchInputsForExecution( - executionRequest.Inputs, - lpRequest.Spec.FixedInputs, + executionRequest.GetInputData(), + executionRequest.GetInputs(), + lpRequest.Spec.GetFixedInputData(), + lpRequest.Spec.GetFixedInputs(), lpRequest.Spec.DefaultInputs, ) - expectedMap := core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("foo-value-1"), - "bar": coreutils.MustMakeLiteral("bar-value"), + expectedMap := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("foo-value-1"), + "bar": coreutils.MustMakeLiteral("bar-value"), + }, }, } assert.Nil(t, err) assert.NotNil(t, actualInputs) - assert.EqualValues(t, expectedMap, *actualInputs) + commonTestUtils.AssertProtoEqual(t, expectedMap, actualInputs) } func TestValidateExecInputsWrongType(t *testing.T) { @@ -94,11 +99,18 @@ func TestValidateExecInputsWrongType(t *testing.T) { "foo": coreutils.MustMakeLiteral(1), }, } + executionRequest.InputData = &core.InputData{ + Inputs: executionRequest.Inputs, + } + _, err := CheckAndFetchInputsForExecution( - executionRequest.Inputs, - lpRequest.Spec.FixedInputs, + executionRequest.GetInputData(), + executionRequest.GetInputs(), + lpRequest.Spec.GetFixedInputData(), + lpRequest.Spec.GetFixedInputs(), lpRequest.Spec.DefaultInputs, ) + utils.AssertEqualWithSanitizedRegex(t, "invalid foo input wrong type. Expected simple:STRING, but got simple:INTEGER", err.Error()) } @@ -111,9 +123,15 @@ func TestValidateExecInputsExtraInputs(t *testing.T) { "foo-extra": coreutils.MustMakeLiteral("foo-value-1"), }, } + executionRequest.InputData = &core.InputData{ + Inputs: executionRequest.Inputs, + } + _, err := CheckAndFetchInputsForExecution( - executionRequest.Inputs, - lpRequest.Spec.FixedInputs, + executionRequest.GetInputData(), + executionRequest.GetInputs(), + lpRequest.Spec.GetFixedInputData(), + lpRequest.Spec.GetFixedInputs(), lpRequest.Spec.DefaultInputs, ) assert.EqualError(t, err, "invalid input foo-extra") @@ -128,9 +146,15 @@ func TestValidateExecInputsOverrideFixed(t *testing.T) { "bar": coreutils.MustMakeLiteral("bar-value"), }, } + executionRequest.InputData = &core.InputData{ + Inputs: executionRequest.Inputs, + } + _, err := CheckAndFetchInputsForExecution( - executionRequest.Inputs, - lpRequest.Spec.FixedInputs, + executionRequest.GetInputData(), + executionRequest.GetInputs(), + lpRequest.Spec.GetFixedInputData(), + lpRequest.Spec.GetFixedInputs(), lpRequest.Spec.DefaultInputs, ) assert.EqualError(t, err, "invalid input bar") @@ -140,20 +164,27 @@ func TestValidateExecEmptyInputs(t *testing.T) { executionRequest := testutils.GetExecutionRequest() lpRequest := testutils.GetLaunchPlanRequest() executionRequest.Inputs = nil + executionRequest.InputData = nil actualInputs, err := CheckAndFetchInputsForExecution( - executionRequest.Inputs, - lpRequest.Spec.FixedInputs, + executionRequest.GetInputData(), + executionRequest.GetInputs(), + lpRequest.Spec.GetFixedInputData(), + lpRequest.Spec.GetFixedInputs(), lpRequest.Spec.DefaultInputs, ) - expectedMap := core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("foo-value"), - "bar": coreutils.MustMakeLiteral("bar-value"), + + expectedMap := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("foo-value"), + "bar": coreutils.MustMakeLiteral("bar-value"), + }, }, } + assert.Nil(t, err) assert.NotNil(t, actualInputs) - assert.EqualValues(t, expectedMap, *actualInputs) + commonTestUtils.AssertProtoEqual(t, expectedMap, actualInputs) } func TestValidExecutionId(t *testing.T) { diff --git a/flyteadmin/pkg/manager/impl/validation/node_execution_validator.go b/flyteadmin/pkg/manager/impl/validation/node_execution_validator.go index fe0b311d2e..a7b19d94b7 100644 --- a/flyteadmin/pkg/manager/impl/validation/node_execution_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/node_execution_validator.go @@ -50,7 +50,15 @@ func ValidateNodeExecutionEventRequest(request *admin.NodeExecutionEventRequest, return err } } - if err := ValidateOutputData(request.Event.GetOutputData(), maxOutputSizeInBytes); err != nil { + + outputData := request.GetEvent().GetOutputData() + if outputData == nil { + outputData = &core.OutputData{ + Outputs: request.GetEvent().GetDeprecatedOutputData(), + } + } + + if err := ValidateOutputData(outputData, maxOutputSizeInBytes); err != nil { return err } return nil diff --git a/flyteadmin/pkg/manager/impl/validation/task_execution_validator.go b/flyteadmin/pkg/manager/impl/validation/task_execution_validator.go index 81011ca5da..e4f4db4212 100644 --- a/flyteadmin/pkg/manager/impl/validation/task_execution_validator.go +++ b/flyteadmin/pkg/manager/impl/validation/task_execution_validator.go @@ -14,7 +14,15 @@ func ValidateTaskExecutionRequest(request admin.TaskExecutionEventRequest, maxOu if request.Event.OccurredAt == nil { return shared.GetMissingArgumentError(shared.OccurredAt) } - if err := ValidateOutputData(request.Event.GetOutputData(), maxOutputSizeInBytes); err != nil { + + outputData := request.GetEvent().GetOutputData() + if outputData == nil { + outputData = &core.OutputData{ + Outputs: request.GetEvent().GetDeprecatedOutputData(), + } + } + + if err := ValidateOutputData(outputData, maxOutputSizeInBytes); err != nil { return err } diff --git a/flyteadmin/pkg/manager/impl/validation/validation.go b/flyteadmin/pkg/manager/impl/validation/validation.go index 1958f25021..d48753435a 100644 --- a/flyteadmin/pkg/manager/impl/validation/validation.go +++ b/flyteadmin/pkg/manager/impl/validation/validation.go @@ -320,7 +320,7 @@ func ValidateLimit(limit uint32) error { return nil } -func ValidateOutputData(outputData *core.LiteralMap, maxSizeInBytes int64) error { +func ValidateOutputData(outputData *core.OutputData, maxSizeInBytes int64) error { if outputData == nil { return nil } @@ -329,6 +329,7 @@ func ValidateOutputData(outputData *core.LiteralMap, maxSizeInBytes int64) error if outputSizeInBytes <= maxSizeInBytes { return nil } + return errors.NewFlyteAdminErrorf(codes.ResourceExhausted, "Output data size exceeds platform configured threshold (%+v > %v)", outputSizeInBytes, maxSizeInBytes) } diff --git a/flyteadmin/pkg/manager/impl/validation/validation_test.go b/flyteadmin/pkg/manager/impl/validation/validation_test.go index a9fed38ee9..d4511acfc6 100644 --- a/flyteadmin/pkg/manager/impl/validation/validation_test.go +++ b/flyteadmin/pkg/manager/impl/validation/validation_test.go @@ -419,15 +419,17 @@ func TestValidateOutputData(t *testing.T) { t.Run("no output data", func(t *testing.T) { assert.NoError(t, ValidateOutputData(nil, 100)) }) - outputData := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, + outputData := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, diff --git a/flyteadmin/pkg/repositories/transformers/execution.go b/flyteadmin/pkg/repositories/transformers/execution.go index 1d4e317ad8..767c7bf6bf 100644 --- a/flyteadmin/pkg/repositories/transformers/execution.go +++ b/flyteadmin/pkg/repositories/transformers/execution.go @@ -262,16 +262,41 @@ func UpdateExecutionModelState( }, }, } - } else if request.Event.GetOutputData() != nil { + } else if outputData := request.Event.GetOutputData(); outputData != nil { switch inlineEventDataPolicy { case interfaces.InlineEventDataPolicyStoreInline: - executionClosure.OutputResult = &admin.ExecutionClosure_OutputData{ - OutputData: request.Event.GetOutputData(), + executionClosure.OutputResult = &admin.ExecutionClosure_FullOutputs{ + FullOutputs: outputData, } default: logger.Debugf(ctx, "Offloading outputs per InlineEventDataPolicy") - uri, err := common.OffloadLiteralMap(ctx, storageClient, request.Event.GetOutputData(), - request.Event.ExecutionId.Project, request.Event.ExecutionId.Domain, request.Event.ExecutionId.Name, OutputsObjectSuffix) + uri, err := common.OffloadData(ctx, storageClient, outputData, + request.GetEvent().GetExecutionId().GetProject(), request.GetEvent().GetExecutionId().GetDomain(), + request.GetEvent().GetExecutionId().GetName(), OutputsObjectSuffix) + if err != nil { + return err + } + executionClosure.OutputResult = &admin.ExecutionClosure_Outputs{ + Outputs: &admin.LiteralMapBlob{ + Data: &admin.LiteralMapBlob_Uri{ + Uri: uri.String(), + }, + }, + } + } + } else if deprecatedOutputData := request.GetEvent().GetDeprecatedOutputData(); deprecatedOutputData != nil { + switch inlineEventDataPolicy { + case interfaces.InlineEventDataPolicyStoreInline: + executionClosure.OutputResult = &admin.ExecutionClosure_FullOutputs{ + FullOutputs: &core.OutputData{ + Outputs: deprecatedOutputData, + }, + } + default: + logger.Debugf(ctx, "Offloading outputs per InlineEventDataPolicy") + uri, err := common.OffloadData(ctx, storageClient, &core.OutputData{Outputs: deprecatedOutputData}, + request.GetEvent().GetExecutionId().GetProject(), request.GetEvent().GetExecutionId().GetDomain(), + request.GetEvent().GetExecutionId().GetName(), OutputsObjectSuffix) if err != nil { return err } diff --git a/flyteadmin/pkg/repositories/transformers/execution_test.go b/flyteadmin/pkg/repositories/transformers/execution_test.go index e9d12807f5..1bf151140e 100644 --- a/flyteadmin/pkg/repositories/transformers/execution_test.go +++ b/flyteadmin/pkg/repositories/transformers/execution_test.go @@ -534,15 +534,17 @@ func TestUpdateModelState_RunningToSuccess(t *testing.T) { assert.EqualValues(t, expectedModel, executionModel) }) t.Run("output data set", func(t *testing.T) { - outputData := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, + outputData := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, @@ -551,6 +553,7 @@ func TestUpdateModelState_RunningToSuccess(t *testing.T) { }, }, } + err := UpdateExecutionModelState(context.TODO(), &executionModel, admin.WorkflowExecutionEventRequest{ Event: &event.WorkflowExecutionEvent{ Phase: core.WorkflowExecution_SUCCEEDED, @@ -572,8 +575,8 @@ func TestUpdateModelState_RunningToSuccess(t *testing.T) { StartedAt: startedAtProto, UpdatedAt: occurredAtProto, Duration: durationProto, - OutputResult: &admin.ExecutionClosure_OutputData{ - OutputData: outputData, + OutputResult: &admin.ExecutionClosure_FullOutputs{ + FullOutputs: outputData, }, } closureBytes, _ := proto.Marshal(&expectedClosure) @@ -581,15 +584,17 @@ func TestUpdateModelState_RunningToSuccess(t *testing.T) { assert.EqualValues(t, expectedModel, executionModel) }) t.Run("output data offloaded", func(t *testing.T) { - outputData := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, + outputData := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, @@ -598,6 +603,7 @@ func TestUpdateModelState_RunningToSuccess(t *testing.T) { }, }, } + mockStorage := commonMocks.GetMockStorageClient() mockStorage.ComposedProtobufStore.(*commonMocks.TestDataStore).WriteProtobufCb = func(ctx context.Context, reference storage.DataReference, opts storage.Options, msg proto.Message) error { assert.Equal(t, reference.String(), "s3://bucket/metadata/project/domain/name/offloaded_outputs") diff --git a/flyteadmin/pkg/repositories/transformers/node_execution.go b/flyteadmin/pkg/repositories/transformers/node_execution.go index 817f53290a..af6b8a4384 100644 --- a/flyteadmin/pkg/repositories/transformers/node_execution.go +++ b/flyteadmin/pkg/repositories/transformers/node_execution.go @@ -66,15 +66,21 @@ func addTerminalState( closure.OutputResult = &admin.NodeExecutionClosure_OutputUri{ OutputUri: request.Event.GetOutputUri(), } - } else if request.Event.GetOutputData() != nil { + } else if outputData := request.Event.GetOutputData(); outputData != nil || request.Event.GetDeprecatedOutputData() != nil { + if outputData == nil { + outputData = &core.OutputData{ + Outputs: request.Event.GetDeprecatedOutputData(), + } + } + switch inlineEventDataPolicy { case interfaces.InlineEventDataPolicyStoreInline: - closure.OutputResult = &admin.NodeExecutionClosure_OutputData{ - OutputData: request.Event.GetOutputData(), + closure.OutputResult = &admin.NodeExecutionClosure_FullOutputs{ + FullOutputs: outputData, } default: logger.Debugf(ctx, "Offloading outputs per InlineEventDataPolicy") - uri, err := common.OffloadLiteralMap(ctx, storageClient, request.Event.GetOutputData(), + uri, err := common.OffloadData(ctx, storageClient, outputData, request.Event.Id.ExecutionId.Project, request.Event.Id.ExecutionId.Domain, request.Event.Id.ExecutionId.Name, request.Event.Id.NodeId, OutputsObjectSuffix) if err != nil { @@ -385,7 +391,7 @@ func handleNodeExecutionInputs(ctx context.Context, logger.Debugf(ctx, "saving node execution input URI [%s]", request.Event.GetInputUri()) nodeExecutionModel.InputURI = request.Event.GetInputUri() case *event.NodeExecutionEvent_InputData: - uri, err := common.OffloadLiteralMap(ctx, storageClient, request.Event.GetInputData(), + uri, err := common.OffloadData(ctx, storageClient, request.Event.GetInputData(), request.Event.Id.ExecutionId.Project, request.Event.Id.ExecutionId.Domain, request.Event.Id.ExecutionId.Name, request.Event.Id.NodeId, InputsObjectSuffix) if err != nil { diff --git a/flyteadmin/pkg/repositories/transformers/node_execution_test.go b/flyteadmin/pkg/repositories/transformers/node_execution_test.go index a52c8e76a3..d4043edccb 100644 --- a/flyteadmin/pkg/repositories/transformers/node_execution_test.go +++ b/flyteadmin/pkg/repositories/transformers/node_execution_test.go @@ -11,6 +11,7 @@ import ( "google.golang.org/grpc/codes" commonMocks "github.com/flyteorg/flyte/flyteadmin/pkg/common/mocks" + commonTestUtils "github.com/flyteorg/flyte/flyteadmin/pkg/common/testutils" flyteAdminErrors "github.com/flyteorg/flyte/flyteadmin/pkg/errors" genModel "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/gen/models" "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models" @@ -52,9 +53,11 @@ const dynamicWorkflowClosureRef = "s3://bucket/admin/metadata/workflow" const testInputURI = "fake://bucket/inputs.pb" -var testInputs = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("bar"), +var testInputs = &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("bar"), + }, }, } @@ -102,15 +105,17 @@ func TestAddTerminalState_OutputURI(t *testing.T) { } func TestAddTerminalState_OutputData(t *testing.T) { - outputData := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, + outputData := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, @@ -119,6 +124,7 @@ func TestAddTerminalState_OutputData(t *testing.T) { }, }, } + request := admin.NodeExecutionEventRequest{ Event: &event.NodeExecutionEvent{ Id: &core.NodeExecutionIdentifier{ @@ -148,7 +154,7 @@ func TestAddTerminalState_OutputData(t *testing.T) { err := addTerminalState(context.TODO(), &request, &nodeExecutionModel, &closure, interfaces.InlineEventDataPolicyStoreInline, commonMocks.GetMockStorageClient()) assert.Nil(t, err) - assert.EqualValues(t, outputData, closure.GetOutputData()) + commonTestUtils.AssertProtoEqual(t, outputData, closure.GetFullOutputs()) assert.Equal(t, time.Minute, nodeExecutionModel.Duration) }) t.Run("output data stored offloaded", func(t *testing.T) { @@ -670,10 +676,10 @@ func TestHandleNodeExecutionInputs(t *testing.T) { assert.NoError(t, err) expectedOffloadedInputsLocation := "/metadata/project/domain/name/node-id/offloaded_inputs" assert.Equal(t, nodeExecutionModel.InputURI, expectedOffloadedInputsLocation) - actualInputs := &core.LiteralMap{} + actualInputs := &core.InputData{} err = ds.ReadProtobuf(ctx, storage.DataReference(expectedOffloadedInputsLocation), actualInputs) assert.NoError(t, err) - assert.True(t, proto.Equal(actualInputs, testInputs)) + commonTestUtils.AssertProtoEqual(t, testInputs, actualInputs) }) t.Run("read event input uri", func(t *testing.T) { nodeExecutionModel := models.NodeExecution{} diff --git a/flyteadmin/pkg/repositories/transformers/task_execution.go b/flyteadmin/pkg/repositories/transformers/task_execution.go index 9f24ed2aa4..68a5bb6a4a 100644 --- a/flyteadmin/pkg/repositories/transformers/task_execution.go +++ b/flyteadmin/pkg/repositories/transformers/task_execution.go @@ -74,15 +74,21 @@ func addTaskTerminalState( closure.OutputResult = &admin.TaskExecutionClosure_OutputUri{ OutputUri: request.Event.GetOutputUri(), } - } else if request.Event.GetOutputData() != nil { + } else if outputData := request.Event.GetOutputData(); outputData != nil || request.Event.GetDeprecatedOutputData() != nil { + if outputData == nil { + outputData = &core.OutputData{ + Outputs: request.Event.GetDeprecatedOutputData(), + } + } + switch inlineEventDataPolicy { case interfaces.InlineEventDataPolicyStoreInline: - closure.OutputResult = &admin.TaskExecutionClosure_OutputData{ - OutputData: request.Event.GetOutputData(), + closure.OutputResult = &admin.TaskExecutionClosure_FullOutputs{ + FullOutputs: outputData, } default: logger.Debugf(ctx, "Offloading outputs per InlineEventDataPolicy") - uri, err := common.OffloadLiteralMap(ctx, storageClient, request.Event.GetOutputData(), + uri, err := common.OffloadData(ctx, storageClient, outputData, request.Event.ParentNodeExecutionId.ExecutionId.Project, request.Event.ParentNodeExecutionId.ExecutionId.Domain, request.Event.ParentNodeExecutionId.ExecutionId.Name, request.Event.ParentNodeExecutionId.NodeId, request.Event.TaskId.Project, request.Event.TaskId.Domain, request.Event.TaskId.Name, request.Event.TaskId.Version, @@ -555,7 +561,7 @@ func handleTaskExecutionInputs(ctx context.Context, taskExecutionModel *models.T case *event.TaskExecutionEvent_InputUri: taskExecutionModel.InputURI = request.GetEvent().GetInputUri() case *event.TaskExecutionEvent_InputData: - uri, err := common.OffloadLiteralMap(ctx, storageClient, request.GetEvent().GetInputData(), + uri, err := common.OffloadData(ctx, storageClient, request.GetEvent().GetInputData(), request.Event.ParentNodeExecutionId.ExecutionId.Project, request.Event.ParentNodeExecutionId.ExecutionId.Domain, request.Event.ParentNodeExecutionId.ExecutionId.Name, request.Event.ParentNodeExecutionId.NodeId, request.Event.TaskId.Project, request.Event.TaskId.Domain, request.Event.TaskId.Name, request.Event.TaskId.Version, diff --git a/flyteadmin/pkg/repositories/transformers/task_execution_test.go b/flyteadmin/pkg/repositories/transformers/task_execution_test.go index e1e0fd973e..0d868d4b48 100644 --- a/flyteadmin/pkg/repositories/transformers/task_execution_test.go +++ b/flyteadmin/pkg/repositories/transformers/task_execution_test.go @@ -15,6 +15,7 @@ import ( "google.golang.org/protobuf/types/known/structpb" commonMocks "github.com/flyteorg/flyte/flyteadmin/pkg/common/mocks" + commonTestUtils "github.com/flyteorg/flyte/flyteadmin/pkg/common/testutils" "github.com/flyteorg/flyte/flyteadmin/pkg/repositories/models" "github.com/flyteorg/flyte/flyteadmin/pkg/runtime/interfaces" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin" @@ -176,15 +177,17 @@ func TestAddTaskTerminalState_OutputURI(t *testing.T) { } func TestAddTaskTerminalState_OutputData(t *testing.T) { - outputData := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, + outputData := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, @@ -193,6 +196,7 @@ func TestAddTaskTerminalState_OutputData(t *testing.T) { }, }, } + request := admin.TaskExecutionEventRequest{ Event: &event.TaskExecutionEvent{ TaskId: &core.Identifier{ @@ -231,8 +235,8 @@ func TestAddTaskTerminalState_OutputData(t *testing.T) { duration, err := ptypes.Duration(closure.GetDuration()) assert.Nil(t, err) - assert.EqualValues(t, request.Event.OutputResult, closure.OutputResult) - assert.True(t, proto.Equal(outputData, closure.GetOutputData())) + assert.EqualValues(t, request.Event.GetOutputData(), closure.GetFullOutputs()) + commonTestUtils.AssertProtoEqual(t, outputData, closure.GetFullOutputs()) assert.EqualValues(t, time.Minute, duration) }) t.Run("output data stored offloaded", func(t *testing.T) { @@ -1917,10 +1921,10 @@ func TestHandleTaskExecutionInputs(t *testing.T) { assert.NoError(t, err) expectedOffloadedInputsLocation := "/metadata/project/domain/name/node-id/project/domain/task-id/task-v/1/offloaded_inputs" assert.Equal(t, taskExecutionModel.InputURI, expectedOffloadedInputsLocation) - actualInputs := &core.LiteralMap{} + actualInputs := &core.InputData{} err = ds.ReadProtobuf(ctx, storage.DataReference(expectedOffloadedInputsLocation), actualInputs) assert.NoError(t, err) - assert.True(t, proto.Equal(actualInputs, testInputs)) + commonTestUtils.AssertProtoEqual(t, testInputs, actualInputs) }) t.Run("read event input uri", func(t *testing.T) { taskExecutionModel := models.TaskExecution{} diff --git a/flyteadmin/pkg/runtime/application_config_provider.go b/flyteadmin/pkg/runtime/application_config_provider.go index e754858b3c..6cc769a204 100644 --- a/flyteadmin/pkg/runtime/application_config_provider.go +++ b/flyteadmin/pkg/runtime/application_config_provider.go @@ -28,7 +28,7 @@ var flyteAdminConfig = config.MustRegisterSection(flyteAdmin, &interfaces.Applic contextutils.TaskTypeKey.String(), common.RuntimeTypeKey.String(), common.RuntimeVersionKey.String(), contextutils.AppNameKey.String()}, MetadataStoragePrefix: []string{"metadata", "admin"}, - EventVersion: 2, + EventVersion: 3, AsyncEventsBufferSize: 100, MaxParallelism: 25, K8SServiceAccount: "", diff --git a/flyteadmin/pkg/workflowengine/impl/k8s_executor.go b/flyteadmin/pkg/workflowengine/impl/k8s_executor.go index 163a58cab3..0136386fef 100644 --- a/flyteadmin/pkg/workflowengine/impl/k8s_executor.go +++ b/flyteadmin/pkg/workflowengine/impl/k8s_executor.go @@ -34,7 +34,7 @@ func (e K8sWorkflowExecutor) ID() string { } func (e K8sWorkflowExecutor) Execute(ctx context.Context, data interfaces.ExecutionData) (interfaces.ExecutionResponse, error) { - flyteWf, err := e.workflowBuilder.Build(data.WorkflowClosure, data.ExecutionParameters.Inputs, data.ExecutionID, data.Namespace) + flyteWf, err := e.workflowBuilder.Build(data.WorkflowClosure, data.ExecutionParameters.InputData, data.ExecutionID, data.Namespace) if err != nil { logger.Infof(ctx, "failed to build the workflow [%+v] %v", data.WorkflowClosure.Primary.Template.Id, err) diff --git a/flyteadmin/pkg/workflowengine/impl/k8s_executor_test.go b/flyteadmin/pkg/workflowengine/impl/k8s_executor_test.go index b384ebbcaf..2791ecf7d5 100644 --- a/flyteadmin/pkg/workflowengine/impl/k8s_executor_test.go +++ b/flyteadmin/pkg/workflowengine/impl/k8s_executor_test.go @@ -90,15 +90,17 @@ var flyteWf = &v1alpha1.FlyteWorkflow{ }, } -var testInputs = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, +var testInputs = &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, @@ -157,7 +159,7 @@ func TestExecute(t *testing.T) { } mockBuilder.OnBuildMatch(mock.MatchedBy(func(wfClosure *core.CompiledWorkflowClosure) bool { return proto.Equal(wfClosure, &workflowClosure) - }), mock.MatchedBy(func(inputs *core.LiteralMap) bool { + }), mock.MatchedBy(func(inputs *core.InputData) bool { return proto.Equal(inputs, testInputs) }), mock.MatchedBy(func(executionID *core.WorkflowExecutionIdentifier) bool { return proto.Equal(executionID, execID) @@ -175,7 +177,7 @@ func TestExecute(t *testing.T) { ReferenceLaunchPlanName: "ref_lp_name", WorkflowClosure: &workflowClosure, ExecutionParameters: interfaces.ExecutionParameters{ - Inputs: testInputs, + InputData: testInputs, ExecutionConfig: &admin.WorkflowExecutionConfig{ SecurityContext: &core.SecurityContext{ RunAs: &core.Identity{ @@ -377,7 +379,7 @@ func TestExecute_OffloadWorkflowClosure(t *testing.T) { } mockBuilder.OnBuildMatch(mock.MatchedBy(func(wfClosure *core.CompiledWorkflowClosure) bool { return proto.Equal(wfClosure, &workflowClosure) - }), mock.MatchedBy(func(inputs *core.LiteralMap) bool { + }), mock.MatchedBy(func(inputs *core.InputData) bool { return proto.Equal(inputs, testInputs) }), mock.MatchedBy(func(executionID *core.WorkflowExecutionIdentifier) bool { return proto.Equal(executionID, execID) @@ -399,7 +401,7 @@ func TestExecute_OffloadWorkflowClosure(t *testing.T) { ReferenceLaunchPlanName: "ref_lp_name", WorkflowClosure: &workflowClosure, ExecutionParameters: interfaces.ExecutionParameters{ - Inputs: testInputs, + InputData: testInputs, ExecutionConfig: &admin.WorkflowExecutionConfig{ SecurityContext: &core.SecurityContext{ RunAs: &core.Identity{ diff --git a/flyteadmin/pkg/workflowengine/impl/workflow_builder.go b/flyteadmin/pkg/workflowengine/impl/workflow_builder.go index 536ed07620..f75a199405 100644 --- a/flyteadmin/pkg/workflowengine/impl/workflow_builder.go +++ b/flyteadmin/pkg/workflowengine/impl/workflow_builder.go @@ -22,7 +22,7 @@ type flyteWorkflowBuilder struct { } func (b *flyteWorkflowBuilder) Build( - wfClosure *core.CompiledWorkflowClosure, inputs *core.LiteralMap, executionID *core.WorkflowExecutionIdentifier, + wfClosure *core.CompiledWorkflowClosure, inputs *core.InputData, executionID *core.WorkflowExecutionIdentifier, namespace string) (*v1alpha1.FlyteWorkflow, error) { flyteWorkflow, err := k8s.BuildFlyteWorkflow(wfClosure, inputs, executionID, namespace) if err != nil { diff --git a/flyteadmin/pkg/workflowengine/interfaces/builder.go b/flyteadmin/pkg/workflowengine/interfaces/builder.go index 7fee0ba131..9f1a97bbbc 100644 --- a/flyteadmin/pkg/workflowengine/interfaces/builder.go +++ b/flyteadmin/pkg/workflowengine/interfaces/builder.go @@ -10,6 +10,6 @@ import ( // FlyteWorkflowBuilder produces a v1alpha1.FlyteWorkflow definition from a compiled workflow closure and execution inputs type FlyteWorkflowBuilder interface { Build( - wfClosure *core.CompiledWorkflowClosure, inputs *core.LiteralMap, executionID *core.WorkflowExecutionIdentifier, + wfClosure *core.CompiledWorkflowClosure, inputs *core.InputData, executionID *core.WorkflowExecutionIdentifier, namespace string) (*v1alpha1.FlyteWorkflow, error) } diff --git a/flyteadmin/pkg/workflowengine/interfaces/executor.go b/flyteadmin/pkg/workflowengine/interfaces/executor.go index 181986c2c3..dd40d5cdba 100644 --- a/flyteadmin/pkg/workflowengine/interfaces/executor.go +++ b/flyteadmin/pkg/workflowengine/interfaces/executor.go @@ -18,7 +18,7 @@ type TaskResources struct { } type ExecutionParameters struct { - Inputs *core.LiteralMap + InputData *core.InputData AcceptedAt time.Time Labels map[string]string Annotations map[string]string diff --git a/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go b/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go index 5738f0f774..a8392a9b1a 100644 --- a/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go +++ b/flyteadmin/pkg/workflowengine/mocks/flyte_workflow_builder.go @@ -23,7 +23,7 @@ func (_m FlyteWorkflowBuilder_Build) Return(_a0 *v1alpha1.FlyteWorkflow, _a1 err return &FlyteWorkflowBuilder_Build{Call: _m.Call.Return(_a0, _a1)} } -func (_m *FlyteWorkflowBuilder) OnBuild(wfClosure *core.CompiledWorkflowClosure, inputs *core.LiteralMap, executionID *core.WorkflowExecutionIdentifier, namespace string) *FlyteWorkflowBuilder_Build { +func (_m *FlyteWorkflowBuilder) OnBuild(wfClosure *core.CompiledWorkflowClosure, inputs *core.InputData, executionID *core.WorkflowExecutionIdentifier, namespace string) *FlyteWorkflowBuilder_Build { c_call := _m.On("Build", wfClosure, inputs, executionID, namespace) return &FlyteWorkflowBuilder_Build{Call: c_call} } @@ -34,11 +34,11 @@ func (_m *FlyteWorkflowBuilder) OnBuildMatch(matchers ...interface{}) *FlyteWork } // Build provides a mock function with given fields: wfClosure, inputs, executionID, namespace -func (_m *FlyteWorkflowBuilder) Build(wfClosure *core.CompiledWorkflowClosure, inputs *core.LiteralMap, executionID *core.WorkflowExecutionIdentifier, namespace string) (*v1alpha1.FlyteWorkflow, error) { +func (_m *FlyteWorkflowBuilder) Build(wfClosure *core.CompiledWorkflowClosure, inputs *core.InputData, executionID *core.WorkflowExecutionIdentifier, namespace string) (*v1alpha1.FlyteWorkflow, error) { ret := _m.Called(wfClosure, inputs, executionID, namespace) var r0 *v1alpha1.FlyteWorkflow - if rf, ok := ret.Get(0).(func(*core.CompiledWorkflowClosure, *core.LiteralMap, *core.WorkflowExecutionIdentifier, string) *v1alpha1.FlyteWorkflow); ok { + if rf, ok := ret.Get(0).(func(*core.CompiledWorkflowClosure, *core.InputData, *core.WorkflowExecutionIdentifier, string) *v1alpha1.FlyteWorkflow); ok { r0 = rf(wfClosure, inputs, executionID, namespace) } else { if ret.Get(0) != nil { @@ -47,7 +47,7 @@ func (_m *FlyteWorkflowBuilder) Build(wfClosure *core.CompiledWorkflowClosure, i } var r1 error - if rf, ok := ret.Get(1).(func(*core.CompiledWorkflowClosure, *core.LiteralMap, *core.WorkflowExecutionIdentifier, string) error); ok { + if rf, ok := ret.Get(1).(func(*core.CompiledWorkflowClosure, *core.InputData, *core.WorkflowExecutionIdentifier, string) error); ok { r1 = rf(wfClosure, inputs, executionID, namespace) } else { r1 = ret.Error(1) diff --git a/flytecopilot/Makefile b/flytecopilot/Makefile index 8a21a884ff..db8f2b8bbf 100755 --- a/flytecopilot/Makefile +++ b/flytecopilot/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=flytecopilot -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/docker_build/Makefile include ../boilerplate/flyte/golang_test_targets/Makefile diff --git a/flytectl/Makefile b/flytectl/Makefile index 17c8b5f2bc..240523f346 100644 --- a/flytectl/Makefile +++ b/flytectl/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=flytectl -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/docker_build/Makefile include ../boilerplate/flyte/golang_test_targets/Makefile include ../boilerplate/flyte/end2end/Makefile diff --git a/flyteidl/Makefile b/flyteidl/Makefile index aad8a5c6b5..ffeb7dcbfb 100644 --- a/flyteidl/Makefile +++ b/flyteidl/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=flyteidl -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/golang_test_targets/Makefile define PIP_COMPILE diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 4854a4e895..0fd1f8be8d 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -4769,6 +4769,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "Raw output data produced by this execution.\nDEPRECATED. Use GetExecutionData to fetch output data instead." }, + "full_outputs": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this execution.\nDEPRECATED. Use GetExecutionData to fetch output data instead." + }, "computed_inputs": { "$ref": "#/definitions/coreLiteralMap", "title": "Inputs computed and passed for execution.\ncomputed_inputs depends on inputs in ExecutionSpec, fixed and default inputs in launch plan" @@ -4845,11 +4849,15 @@ }, "inputs": { "$ref": "#/definitions/coreLiteralMap", - "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" + "description": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional\nDeprecated: Please use input_data instead." }, "org": { "type": "string", "description": "Optional, org key applied to the resource." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" } }, "description": "Request to launch an execution with the given project, domain and optionally-assigned name." @@ -5289,7 +5297,7 @@ }, "fixed_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Fixed, non-overridable inputs for the Launch Plan.\nThese can not be overridden when an execution is created with this launch plan." + "title": "Fixed, non-overridable inputs for the Launch Plan.\nThese can not be overridden when an execution is created with this launch plan.\nDeprecated: Please use fixec_input_data instead" }, "role": { "type": "string", @@ -5346,6 +5354,10 @@ "$ref": "#/definitions/coreExecutionEnvAssignment" }, "description": "Execution environment assignments to be set for the execution." + }, + "fixed_input_data": { + "$ref": "#/definitions/coreInputData", + "description": "Fixed, non-overridable inputs for the Launch Plan.\nThese can not be overridden when an execution is created with this launch plan." } }, "description": "User-provided launch plan definition and configuration values." @@ -5578,6 +5590,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "Raw output data produced by this node execution.\nDEPRECATED. Use GetNodeExecutionData to fetch output data instead." }, + "full_outputs": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this node execution." + }, "phase": { "$ref": "#/definitions/coreNodeExecutionPhase", "description": "The last recorded phase for this node execution." @@ -5649,11 +5665,19 @@ }, "full_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_inputs will only be populated if they are under a configured size threshold." + "description": "Full_inputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use input_data instead." }, "full_outputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_outputs will only be populated if they are under a configured size threshold." + "description": "Full_outputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use output_data instead." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData will only be populated if they are under a configured size threshold." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData will only be populated if they are under a configured size threshold." }, "dynamic_workflow": { "$ref": "#/definitions/flyteidladminDynamicWorkflowNodeMetadata", @@ -6073,6 +6097,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "Raw output data produced by this task execution.\nDEPRECATED. Use GetTaskExecutionData to fetch output data instead." }, + "full_outputs": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this task execution." + }, "phase": { "$ref": "#/definitions/coreTaskExecutionPhase", "description": "The last recorded phase for this task execution." @@ -6167,11 +6195,19 @@ }, "full_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_inputs will only be populated if they are under a configured size threshold." + "description": "Full_inputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use input_data instead." }, "full_outputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_outputs will only be populated if they are under a configured size threshold." + "description": "Full_outputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use output_data instead." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData will only be populated if they are under a configured size threshold." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData will only be populated if they are under a configured size threshold." }, "flyte_urls": { "$ref": "#/definitions/adminFlyteURLs", @@ -6451,11 +6487,19 @@ }, "full_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_inputs will only be populated if they are under a configured size threshold." + "description": "Full_inputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use input_data instead." }, "full_outputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_outputs will only be populated if they are under a configured size threshold." + "description": "Full_outputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use output_data instead." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData will only be populated if they are under a configured size threshold." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData will only be populated if they are under a configured size threshold." } }, "description": "Response structure for WorkflowExecutionGetDataRequest which contains inputs and outputs for an execution." @@ -7310,6 +7354,16 @@ } } }, + "coreInputData": { + "type": "object", + "properties": { + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of input variables to their values." + } + }, + "description": "InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to\ntheir values." + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -7675,6 +7729,16 @@ }, "description": "Defines an operand to a comparison expression." }, + "coreOutputData": { + "type": "object", + "properties": { + "outputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of output variables to their values." + } + }, + "description": "OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to\ntheir values." + }, "coreOutputReference": { "type": "object", "properties": { @@ -8642,8 +8706,12 @@ "input_uri": { "type": "string" }, - "input_data": { + "deprecated_input_data": { "$ref": "#/definitions/coreLiteralMap", + "title": "Raw input data consumed by this node execution.\nDeprecated: please use input_data instead" + }, + "input_data": { + "$ref": "#/definitions/coreInputData", "description": "Raw input data consumed by this node execution." }, "output_uri": { @@ -8654,9 +8722,13 @@ "$ref": "#/definitions/coreExecutionError", "title": "Error information for the execution" }, - "output_data": { + "deprecated_output_data": { "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this node execution." + "title": "Raw output data produced by this workflow execution.\nDeprecated: please use output_data instead" + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this workflow execution." }, "workflow_node_metadata": { "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" @@ -8791,9 +8863,13 @@ "type": "string", "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." }, - "input_data": { + "deprecated_input_data": { "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this task execution." + "title": "Raw input data consumed by this node execution.\nDeprecated: please use input_data instead" + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "Raw input data consumed by this node execution." }, "output_uri": { "type": "string", @@ -8803,9 +8879,13 @@ "$ref": "#/definitions/coreExecutionError", "title": "Error information for the execution" }, - "output_data": { + "deprecated_output_data": { "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this task execution." + "title": "Raw output data produced by this workflow execution.\nDeprecated: please use output_data instead" + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this workflow execution." }, "custom_info": { "type": "object", @@ -8876,9 +8956,17 @@ "$ref": "#/definitions/coreExecutionError", "title": "Error information for the execution" }, - "output_data": { + "deprecated_output_data": { "$ref": "#/definitions/coreLiteralMap", + "title": "Raw output data produced by this workflow execution.\nDeprecated: please use output_data instead" + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", "description": "Raw output data produced by this workflow execution." + }, + "event_version": { + "type": "integer", + "format": "int32" } } }, diff --git a/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts index f9f6c37564..4fbf24d0ec 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/agent_pb.ts @@ -8,7 +8,7 @@ import { Duration, Message, proto3, protoInt64, Struct, Timestamp } from "@bufbu import { TaskExecutionIdentifier } from "../core/identifier_pb.js"; import { TaskNodeOverrides } from "../core/workflow_pb.js"; import { Identity } from "../core/security_pb.js"; -import { LiteralMap } from "../core/literals_pb.js"; +import { InputData, LiteralMap, OutputData } from "../core/literals_pb.js"; import { TaskTemplate } from "../core/tasks_pb.js"; import { TaskExecution_Phase, TaskLog } from "../core/execution_pb.js"; import { ExecutionMetricResult } from "../core/metrics_pb.js"; @@ -190,10 +190,12 @@ export class CreateTaskRequest extends Message { * The inputs required to start the execution. All required inputs must be * included in this map. If not required and not provided, defaults apply. * +optional + * Deprecated: Use inputs instead. * - * @generated from field: flyteidl.core.LiteralMap inputs = 1; + * @generated from field: flyteidl.core.LiteralMap deprecated_inputs = 1 [deprecated = true]; + * @deprecated */ - inputs?: LiteralMap; + deprecatedInputs?: LiteralMap; /** * Template of the task that encapsulates all the metadata of the task. @@ -216,6 +218,15 @@ export class CreateTaskRequest extends Message { */ taskExecutionMetadata?: TaskExecutionMetadata; + /** + * Inputs are the inputs required to start the execution. All required inputs must be + * included in this map. If not required and not provided, defaults apply. + * +optional + * + * @generated from field: flyteidl.core.InputData inputs = 5; + */ + inputs?: InputData; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -224,10 +235,11 @@ export class CreateTaskRequest extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.admin.CreateTaskRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "inputs", kind: "message", T: LiteralMap }, + { no: 1, name: "deprecated_inputs", kind: "message", T: LiteralMap }, { no: 2, name: "template", kind: "message", T: TaskTemplate }, { no: 3, name: "output_prefix", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 4, name: "task_execution_metadata", kind: "message", T: TaskExecutionMetadata }, + { no: 5, name: "inputs", kind: "message", T: InputData }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): CreateTaskRequest { @@ -604,10 +616,12 @@ export class Resource extends Message { * The outputs of the execution. It's typically used by sql task. Agent service will create a * Structured dataset pointing to the query result table. * +optional + * Deprecated: Use outputs instead. * - * @generated from field: flyteidl.core.LiteralMap outputs = 2; + * @generated from field: flyteidl.core.LiteralMap deprecated_outputs = 2 [deprecated = true]; + * @deprecated */ - outputs?: LiteralMap; + deprecatedOutputs?: LiteralMap; /** * A descriptive message for the current state. e.g. waiting for cluster. @@ -637,6 +651,15 @@ export class Resource extends Message { */ customInfo?: Struct; + /** + * The outputs of the execution. It's typically used by sql task. Agent service will create a + * Structured dataset pointing to the query result table. + * +optional + * + * @generated from field: flyteidl.core.OutputData outputs = 7; + */ + outputs?: OutputData; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -646,11 +669,12 @@ export class Resource extends Message { static readonly typeName = "flyteidl.admin.Resource"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "state", kind: "enum", T: proto3.getEnumType(State) }, - { no: 2, name: "outputs", kind: "message", T: LiteralMap }, + { no: 2, name: "deprecated_outputs", kind: "message", T: LiteralMap }, { no: 3, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 4, name: "log_links", kind: "message", T: TaskLog, repeated: true }, { no: 5, name: "phase", kind: "enum", T: proto3.getEnumType(TaskExecution_Phase) }, { no: 6, name: "custom_info", kind: "message", T: Struct }, + { no: 7, name: "outputs", kind: "message", T: OutputData }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Resource { diff --git a/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts index 5ba9f62ca6..0eecede0ea 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/execution_pb.ts @@ -5,7 +5,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { BoolValue, Duration, Message, proto3, Timestamp } from "@bufbuild/protobuf"; -import { LiteralMap } from "../core/literals_pb.js"; +import { InputData, LiteralMap, OutputData } from "../core/literals_pb.js"; import { Identifier, NodeExecutionIdentifier, WorkflowExecutionIdentifier } from "../core/identifier_pb.js"; import { ExecutionError, QualityOfService, WorkflowExecution_Phase } from "../core/execution_pb.js"; import { Annotations, AuthRole, Envs, Labels, Notification, RawOutputDataConfig, UrlBlob } from "./common_pb.js"; @@ -86,8 +86,10 @@ export class ExecutionCreateRequest extends Message { * The inputs required to start the execution. All required inputs must be * included in this map. If not required and not provided, defaults apply. * +optional + * Deprecated: Please use input_data instead. * - * @generated from field: flyteidl.core.LiteralMap inputs = 5; + * @generated from field: flyteidl.core.LiteralMap inputs = 5 [deprecated = true]; + * @deprecated */ inputs?: LiteralMap; @@ -98,6 +100,15 @@ export class ExecutionCreateRequest extends Message { */ org = ""; + /** + * The inputs required to start the execution. All required inputs must be + * included in this map. If not required and not provided, defaults apply. + * +optional + * + * @generated from field: flyteidl.core.InputData input_data = 7; + */ + inputData?: InputData; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -112,6 +123,7 @@ export class ExecutionCreateRequest extends Message { { no: 4, name: "spec", kind: "message", T: ExecutionSpec }, { no: 5, name: "inputs", kind: "message", T: LiteralMap }, { no: 6, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "input_data", kind: "message", T: InputData }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ExecutionCreateRequest { @@ -605,6 +617,15 @@ export class ExecutionClosure extends Message { */ value: LiteralMap; case: "outputData"; + } | { + /** + * Raw output data produced by this execution. + * DEPRECATED. Use GetExecutionData to fetch output data instead. + * + * @generated from field: flyteidl.core.OutputData full_outputs = 15; + */ + value: OutputData; + case: "fullOutputs"; } | { case: undefined; value?: undefined } = { case: undefined }; /** @@ -687,6 +708,7 @@ export class ExecutionClosure extends Message { { no: 10, name: "abort_cause", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output_result" }, { no: 12, name: "abort_metadata", kind: "message", T: AbortMetadata, oneof: "output_result" }, { no: 13, name: "output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 15, name: "full_outputs", kind: "message", T: OutputData, oneof: "output_result" }, { no: 3, name: "computed_inputs", kind: "message", T: LiteralMap }, { no: 4, name: "phase", kind: "enum", T: proto3.getEnumType(WorkflowExecution_Phase) }, { no: 5, name: "started_at", kind: "message", T: Timestamp }, @@ -1332,18 +1354,36 @@ export class WorkflowExecutionGetDataResponse extends Message) { super(); proto3.util.initPartial(data, this); @@ -1356,6 +1396,8 @@ export class WorkflowExecutionGetDataResponse extends Message): WorkflowExecutionGetDataResponse { diff --git a/flyteidl/gen/pb-es/flyteidl/admin/launch_plan_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/launch_plan_pb.ts index 6e70237958..c19e415e51 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/launch_plan_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/launch_plan_pb.ts @@ -7,7 +7,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM import { Any, BoolValue, Message, proto3, Timestamp } from "@bufbuild/protobuf"; import { Identifier } from "../core/identifier_pb.js"; import { ParameterMap, VariableMap } from "../core/interface_pb.js"; -import { LiteralMap } from "../core/literals_pb.js"; +import { InputData, LiteralMap } from "../core/literals_pb.js"; import { Annotations, AuthRole, Envs, Labels, NamedEntityIdentifier, Notification, RawOutputDataConfig, Sort } from "./common_pb.js"; import { SecurityContext } from "../core/security_pb.js"; import { QualityOfService } from "../core/execution_pb.js"; @@ -316,8 +316,10 @@ export class LaunchPlanSpec extends Message { /** * Fixed, non-overridable inputs for the Launch Plan. * These can not be overridden when an execution is created with this launch plan. + * Deprecated: Please use fixec_input_data instead * - * @generated from field: flyteidl.core.LiteralMap fixed_inputs = 4; + * @generated from field: flyteidl.core.LiteralMap fixed_inputs = 4 [deprecated = true]; + * @deprecated */ fixedInputs?: LiteralMap; @@ -420,6 +422,14 @@ export class LaunchPlanSpec extends Message { */ executionEnvAssignments: ExecutionEnvAssignment[] = []; + /** + * Fixed, non-overridable inputs for the Launch Plan. + * These can not be overridden when an execution is created with this launch plan. + * + * @generated from field: flyteidl.core.InputData fixed_input_data = 23; + */ + fixedInputData?: InputData; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -445,6 +455,7 @@ export class LaunchPlanSpec extends Message { { no: 20, name: "overwrite_cache", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 21, name: "envs", kind: "message", T: Envs }, { no: 22, name: "execution_env_assignments", kind: "message", T: ExecutionEnvAssignment, repeated: true }, + { no: 23, name: "fixed_input_data", kind: "message", T: InputData }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): LaunchPlanSpec { diff --git a/flyteidl/gen/pb-es/flyteidl/admin/node_execution_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/node_execution_pb.ts index 97b89426fe..012810bf76 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/node_execution_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/node_execution_pb.ts @@ -8,7 +8,7 @@ import { Duration, Message, proto3, Timestamp } from "@bufbuild/protobuf"; import { Identifier, NodeExecutionIdentifier, TaskExecutionIdentifier, WorkflowExecutionIdentifier } from "../core/identifier_pb.js"; import { FlyteURLs, Sort, UrlBlob } from "./common_pb.js"; import { ExecutionError, NodeExecution_Phase } from "../core/execution_pb.js"; -import { LiteralMap } from "../core/literals_pb.js"; +import { InputData, LiteralMap, OutputData } from "../core/literals_pb.js"; import { CatalogCacheStatus, CatalogMetadata } from "../core/catalog_pb.js"; import { CompiledWorkflowClosure } from "../core/compiler_pb.js"; @@ -457,6 +457,14 @@ export class NodeExecutionClosure extends Message { */ value: LiteralMap; case: "outputData"; + } | { + /** + * Raw output data produced by this node execution. + * + * @generated from field: flyteidl.core.OutputData full_outputs = 13; + */ + value: OutputData; + case: "fullOutputs"; } | { case: undefined; value?: undefined } = { case: undefined }; /** @@ -541,6 +549,7 @@ export class NodeExecutionClosure extends Message { { no: 1, name: "output_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output_result" }, { no: 2, name: "error", kind: "message", T: ExecutionError, oneof: "output_result" }, { no: 10, name: "output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 13, name: "full_outputs", kind: "message", T: OutputData, oneof: "output_result" }, { no: 3, name: "phase", kind: "enum", T: proto3.getEnumType(NodeExecution_Phase) }, { no: 4, name: "started_at", kind: "message", T: Timestamp }, { no: 5, name: "duration", kind: "message", T: Duration }, @@ -793,18 +802,36 @@ export class NodeExecutionGetDataResponse extends Message { */ value: LiteralMap; case: "outputData"; + } | { + /** + * Raw output data produced by this task execution. + * + * @generated from field: flyteidl.core.OutputData full_outputs = 19; + */ + value: OutputData; + case: "fullOutputs"; } | { case: undefined; value?: undefined } = { case: undefined }; /** @@ -389,6 +397,7 @@ export class TaskExecutionClosure extends Message { { no: 1, name: "output_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output_result" }, { no: 2, name: "error", kind: "message", T: ExecutionError, oneof: "output_result" }, { no: 12, name: "output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 19, name: "full_outputs", kind: "message", T: OutputData, oneof: "output_result" }, { no: 3, name: "phase", kind: "enum", T: proto3.getEnumType(TaskExecution_Phase) }, { no: 4, name: "logs", kind: "message", T: TaskLog, repeated: true }, { no: 5, name: "started_at", kind: "message", T: Timestamp }, @@ -538,18 +547,36 @@ export class TaskExecutionGetDataResponse extends Message { } } +/** + * InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to + * their values. + * + * @generated from message flyteidl.core.InputData + */ +export class InputData extends Message { + /** + * A map of input variables to their values. + * + * @generated from field: flyteidl.core.LiteralMap inputs = 1; + */ + inputs?: LiteralMap; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.InputData"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "inputs", kind: "message", T: LiteralMap }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): InputData { + return new InputData().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): InputData { + return new InputData().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): InputData { + return new InputData().fromJsonString(jsonString, options); + } + + static equals(a: InputData | PlainMessage | undefined, b: InputData | PlainMessage | undefined): boolean { + return proto3.util.equals(InputData, a, b); + } +} + +/** + * OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to + * their values. + * + * @generated from message flyteidl.core.OutputData + */ +export class OutputData extends Message { + /** + * A map of output variables to their values. + * + * @generated from field: flyteidl.core.LiteralMap outputs = 1; + */ + outputs?: LiteralMap; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.OutputData"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "outputs", kind: "message", T: LiteralMap }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): OutputData { + return new OutputData().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): OutputData { + return new OutputData().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): OutputData { + return new OutputData().fromJsonString(jsonString, options); + } + + static equals(a: OutputData | PlainMessage | undefined, b: OutputData | PlainMessage | undefined): boolean { + return proto3.util.equals(OutputData, a, b); + } +} + /** * A collection of BindingData items. * diff --git a/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts b/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts index 9e5fd39c1d..2f82c03caf 100644 --- a/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/event/event_pb.ts @@ -7,7 +7,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM import { Message, proto3, Struct, Timestamp } from "@bufbuild/protobuf"; import { Identifier, NodeExecutionIdentifier, TaskExecutionIdentifier, WorkflowExecutionIdentifier } from "../core/identifier_pb.js"; import { ExecutionError, NodeExecution_Phase, TaskExecution_Phase, TaskLog, WorkflowExecution_Phase } from "../core/execution_pb.js"; -import { LiteralMap } from "../core/literals_pb.js"; +import { InputData, LiteralMap, OutputData } from "../core/literals_pb.js"; import { CatalogCacheStatus, CatalogMetadata, CatalogReservation_Status } from "../core/catalog_pb.js"; import { CompiledWorkflowClosure } from "../core/compiler_pb.js"; @@ -65,13 +65,28 @@ export class WorkflowExecutionEvent extends Message { } | { /** * Raw output data produced by this workflow execution. + * Deprecated: please use output_data instead * - * @generated from field: flyteidl.core.LiteralMap output_data = 7; + * @generated from field: flyteidl.core.LiteralMap deprecated_output_data = 7 [deprecated = true]; + * @deprecated */ value: LiteralMap; + case: "deprecatedOutputData"; + } | { + /** + * Raw output data produced by this workflow execution. + * + * @generated from field: flyteidl.core.OutputData output_data = 8; + */ + value: OutputData; case: "outputData"; } | { case: undefined; value?: undefined } = { case: undefined }; + /** + * @generated from field: int32 event_version = 9; + */ + eventVersion = 0; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -86,7 +101,9 @@ export class WorkflowExecutionEvent extends Message { { no: 4, name: "occurred_at", kind: "message", T: Timestamp }, { no: 5, name: "output_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output_result" }, { no: 6, name: "error", kind: "message", T: ExecutionError, oneof: "output_result" }, - { no: 7, name: "output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 7, name: "deprecated_output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 8, name: "output_data", kind: "message", T: OutputData, oneof: "output_result" }, + { no: 9, name: "event_version", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): WorkflowExecutionEvent { @@ -149,10 +166,20 @@ export class NodeExecutionEvent extends Message { } | { /** * Raw input data consumed by this node execution. + * Deprecated: please use input_data instead * - * @generated from field: flyteidl.core.LiteralMap input_data = 20; + * @generated from field: flyteidl.core.LiteralMap deprecated_input_data = 20 [deprecated = true]; + * @deprecated */ value: LiteralMap; + case: "deprecatedInputData"; + } | { + /** + * Raw input data consumed by this node execution. + * + * @generated from field: flyteidl.core.InputData input_data = 25; + */ + value: InputData; case: "inputData"; } | { case: undefined; value?: undefined } = { case: undefined }; @@ -178,11 +205,21 @@ export class NodeExecutionEvent extends Message { case: "error"; } | { /** - * Raw output data produced by this node execution. + * Raw output data produced by this workflow execution. + * Deprecated: please use output_data instead * - * @generated from field: flyteidl.core.LiteralMap output_data = 15; + * @generated from field: flyteidl.core.LiteralMap deprecated_output_data = 15 [deprecated = true]; + * @deprecated */ value: LiteralMap; + case: "deprecatedOutputData"; + } | { + /** + * Raw output data produced by this workflow execution. + * + * @generated from field: flyteidl.core.OutputData output_data = 26; + */ + value: OutputData; case: "outputData"; } | { case: undefined; value?: undefined } = { case: undefined }; @@ -320,10 +357,12 @@ export class NodeExecutionEvent extends Message { { no: 3, name: "phase", kind: "enum", T: proto3.getEnumType(NodeExecution_Phase) }, { no: 4, name: "occurred_at", kind: "message", T: Timestamp }, { no: 5, name: "input_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "input_value" }, - { no: 20, name: "input_data", kind: "message", T: LiteralMap, oneof: "input_value" }, + { no: 20, name: "deprecated_input_data", kind: "message", T: LiteralMap, oneof: "input_value" }, + { no: 25, name: "input_data", kind: "message", T: InputData, oneof: "input_value" }, { no: 6, name: "output_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output_result" }, { no: 7, name: "error", kind: "message", T: ExecutionError, oneof: "output_result" }, - { no: 15, name: "output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 15, name: "deprecated_output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 26, name: "output_data", kind: "message", T: OutputData, oneof: "output_result" }, { no: 8, name: "workflow_node_metadata", kind: "message", T: WorkflowNodeMetadata, oneof: "target_metadata" }, { no: 14, name: "task_node_metadata", kind: "message", T: TaskNodeMetadata, oneof: "target_metadata" }, { no: 9, name: "parent_task_metadata", kind: "message", T: ParentTaskExecutionMetadata }, @@ -722,11 +761,21 @@ export class TaskExecutionEvent extends Message { case: "inputUri"; } | { /** - * Raw input data consumed by this task execution. + * Raw input data consumed by this node execution. + * Deprecated: please use input_data instead * - * @generated from field: flyteidl.core.LiteralMap input_data = 19; + * @generated from field: flyteidl.core.LiteralMap deprecated_input_data = 19 [deprecated = true]; + * @deprecated */ value: LiteralMap; + case: "deprecatedInputData"; + } | { + /** + * Raw input data consumed by this node execution. + * + * @generated from field: flyteidl.core.InputData input_data = 23; + */ + value: InputData; case: "inputData"; } | { case: undefined; value?: undefined } = { case: undefined }; @@ -752,11 +801,21 @@ export class TaskExecutionEvent extends Message { case: "error"; } | { /** - * Raw output data produced by this task execution. + * Raw output data produced by this workflow execution. + * Deprecated: please use output_data instead * - * @generated from field: flyteidl.core.LiteralMap output_data = 17; + * @generated from field: flyteidl.core.LiteralMap deprecated_output_data = 17 [deprecated = true]; + * @deprecated */ value: LiteralMap; + case: "deprecatedOutputData"; + } | { + /** + * Raw output data produced by this workflow execution. + * + * @generated from field: flyteidl.core.OutputData output_data = 22; + */ + value: OutputData; case: "outputData"; } | { case: undefined; value?: undefined } = { case: undefined }; @@ -844,10 +903,12 @@ export class TaskExecutionEvent extends Message { { no: 6, name: "logs", kind: "message", T: TaskLog, repeated: true }, { no: 7, name: "occurred_at", kind: "message", T: Timestamp }, { no: 8, name: "input_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "input_value" }, - { no: 19, name: "input_data", kind: "message", T: LiteralMap, oneof: "input_value" }, + { no: 19, name: "deprecated_input_data", kind: "message", T: LiteralMap, oneof: "input_value" }, + { no: 23, name: "input_data", kind: "message", T: InputData, oneof: "input_value" }, { no: 9, name: "output_uri", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output_result" }, { no: 10, name: "error", kind: "message", T: ExecutionError, oneof: "output_result" }, - { no: 17, name: "output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 17, name: "deprecated_output_data", kind: "message", T: LiteralMap, oneof: "output_result" }, + { no: 22, name: "output_data", kind: "message", T: OutputData, oneof: "output_result" }, { no: 11, name: "custom_info", kind: "message", T: Struct }, { no: 12, name: "phase_version", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, { no: 13, name: "reason", kind: "scalar", T: 9 /* ScalarType.STRING */ }, diff --git a/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts b/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts index 3ccbc50892..2215f34bbe 100644 --- a/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/service/dataproxy_pb.ts @@ -6,7 +6,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Duration, Message, proto3, Timestamp } from "@bufbuild/protobuf"; import { NodeExecutionIdentifier } from "../core/identifier_pb.js"; -import { Literal, LiteralMap } from "../core/literals_pb.js"; +import { InputData, Literal, LiteralMap, OutputData } from "../core/literals_pb.js"; /** * ArtifactType @@ -562,6 +562,22 @@ export class GetDataResponse extends Message { */ value: Literal; case: "literal"; + } | { + /** + * InputData is returned when the user/url requests the input data for an execution. + * + * @generated from field: flyteidl.core.InputData input_data = 4; + */ + value: InputData; + case: "inputData"; + } | { + /** + * OutputData is returned when the user/url requests the output data for an execution. + * + * @generated from field: flyteidl.core.OutputData output_data = 5; + */ + value: OutputData; + case: "outputData"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -575,6 +591,8 @@ export class GetDataResponse extends Message { { no: 1, name: "literal_map", kind: "message", T: LiteralMap, oneof: "data" }, { no: 2, name: "pre_signed_urls", kind: "message", T: PreSignedURLs, oneof: "data" }, { no: 3, name: "literal", kind: "message", T: Literal, oneof: "data" }, + { no: 4, name: "input_data", kind: "message", T: InputData, oneof: "data" }, + { no: 5, name: "output_data", kind: "message", T: OutputData, oneof: "data" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetDataResponse { diff --git a/flyteidl/gen/pb-es/flyteidl/service/external_plugin_service_pb.ts b/flyteidl/gen/pb-es/flyteidl/service/external_plugin_service_pb.ts index 2a3e022be7..367d7da04d 100644 --- a/flyteidl/gen/pb-es/flyteidl/service/external_plugin_service_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/service/external_plugin_service_pb.ts @@ -5,7 +5,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3 } from "@bufbuild/protobuf"; -import { LiteralMap } from "../core/literals_pb.js"; +import { InputData, LiteralMap, OutputData } from "../core/literals_pb.js"; import { TaskTemplate } from "../core/tasks_pb.js"; /** @@ -60,10 +60,12 @@ export class TaskCreateRequest extends Message { * The inputs required to start the execution. All required inputs must be * included in this map. If not required and not provided, defaults apply. * +optional + * Deprecated: please use inputs instead. * - * @generated from field: flyteidl.core.LiteralMap inputs = 1; + * @generated from field: flyteidl.core.LiteralMap deprecated_inputs = 1 [deprecated = true]; + * @deprecated */ - inputs?: LiteralMap; + deprecatedInputs?: LiteralMap; /** * Template of the task that encapsulates all the metadata of the task. @@ -79,6 +81,15 @@ export class TaskCreateRequest extends Message { */ outputPrefix = ""; + /** + * The inputs required to start the execution. All required inputs must be + * included in this map. If not required and not provided, defaults apply. + * +optional + * + * @generated from field: flyteidl.core.InputData inputs = 4; + */ + inputs?: InputData; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -87,9 +98,10 @@ export class TaskCreateRequest extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.service.TaskCreateRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "inputs", kind: "message", T: LiteralMap }, + { no: 1, name: "deprecated_inputs", kind: "message", T: LiteralMap }, { no: 2, name: "template", kind: "message", T: TaskTemplate }, { no: 3, name: "output_prefix", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "inputs", kind: "message", T: InputData }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): TaskCreateRequest { @@ -213,14 +225,24 @@ export class TaskGetResponse extends Message { */ state = State.RETRYABLE_FAILURE; + /** + * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + * Structured dataset pointing to the query result table. + * +optional + * Deprecated: Please use outputs instead + * + * @generated from field: flyteidl.core.LiteralMap deprecated_outputs = 2; + */ + deprecatedOutputs?: LiteralMap; + /** * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a * Structured dataset pointing to the query result table. * +optional * - * @generated from field: flyteidl.core.LiteralMap outputs = 2; + * @generated from field: flyteidl.core.OutputData outputs = 3; */ - outputs?: LiteralMap; + outputs?: OutputData; constructor(data?: PartialMessage) { super(); @@ -231,7 +253,8 @@ export class TaskGetResponse extends Message { static readonly typeName = "flyteidl.service.TaskGetResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "state", kind: "enum", T: proto3.getEnumType(State) }, - { no: 2, name: "outputs", kind: "message", T: LiteralMap }, + { no: 2, name: "deprecated_outputs", kind: "message", T: LiteralMap }, + { no: 3, name: "outputs", kind: "message", T: OutputData }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): TaskGetResponse { diff --git a/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go index 653fce6266..b47a335342 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/agent.pb.go @@ -234,13 +234,20 @@ type CreateTaskRequest struct { // The inputs required to start the execution. All required inputs must be // included in this map. If not required and not provided, defaults apply. // +optional - Inputs *core.LiteralMap `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` + // Deprecated: Use inputs instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. + DeprecatedInputs *core.LiteralMap `protobuf:"bytes,1,opt,name=deprecated_inputs,json=deprecatedInputs,proto3" json:"deprecated_inputs,omitempty"` // Template of the task that encapsulates all the metadata of the task. Template *core.TaskTemplate `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) OutputPrefix string `protobuf:"bytes,3,opt,name=output_prefix,json=outputPrefix,proto3" json:"output_prefix,omitempty"` // subset of runtime task execution metadata. TaskExecutionMetadata *TaskExecutionMetadata `protobuf:"bytes,4,opt,name=task_execution_metadata,json=taskExecutionMetadata,proto3" json:"task_execution_metadata,omitempty"` + // Inputs are the inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + Inputs *core.InputData `protobuf:"bytes,5,opt,name=inputs,proto3" json:"inputs,omitempty"` } func (x *CreateTaskRequest) Reset() { @@ -275,9 +282,10 @@ func (*CreateTaskRequest) Descriptor() ([]byte, []int) { return file_flyteidl_admin_agent_proto_rawDescGZIP(), []int{1} } -func (x *CreateTaskRequest) GetInputs() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. +func (x *CreateTaskRequest) GetDeprecatedInputs() *core.LiteralMap { if x != nil { - return x.Inputs + return x.DeprecatedInputs } return nil } @@ -303,6 +311,13 @@ func (x *CreateTaskRequest) GetTaskExecutionMetadata() *TaskExecutionMetadata { return nil } +func (x *CreateTaskRequest) GetInputs() *core.InputData { + if x != nil { + return x.Inputs + } + return nil +} + // Represents a create response structure. type CreateTaskResponse struct { state protoimpl.MessageState @@ -769,7 +784,10 @@ type Resource struct { // The outputs of the execution. It's typically used by sql task. Agent service will create a // Structured dataset pointing to the query result table. // +optional - Outputs *core.LiteralMap `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` + // Deprecated: Use outputs instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. + DeprecatedOutputs *core.LiteralMap `protobuf:"bytes,2,opt,name=deprecated_outputs,json=deprecatedOutputs,proto3" json:"deprecated_outputs,omitempty"` // A descriptive message for the current state. e.g. waiting for cluster. Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` // log information for the task execution. @@ -778,6 +796,10 @@ type Resource struct { Phase core.TaskExecution_Phase `protobuf:"varint,5,opt,name=phase,proto3,enum=flyteidl.core.TaskExecution_Phase" json:"phase,omitempty"` // Custom data specific to the agent. CustomInfo *structpb.Struct `protobuf:"bytes,6,opt,name=custom_info,json=customInfo,proto3" json:"custom_info,omitempty"` + // The outputs of the execution. It's typically used by sql task. Agent service will create a + // Structured dataset pointing to the query result table. + // +optional + Outputs *core.OutputData `protobuf:"bytes,7,opt,name=outputs,proto3" json:"outputs,omitempty"` } func (x *Resource) Reset() { @@ -820,9 +842,10 @@ func (x *Resource) GetState() State { return State_RETRYABLE_FAILURE } -func (x *Resource) GetOutputs() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/admin/agent.proto. +func (x *Resource) GetDeprecatedOutputs() *core.LiteralMap { if x != nil { - return x.Outputs + return x.DeprecatedOutputs } return nil } @@ -855,6 +878,13 @@ func (x *Resource) GetCustomInfo() *structpb.Struct { return nil } +func (x *Resource) GetOutputs() *core.OutputData { + if x != nil { + return x.Outputs + } + return nil +} + // A message used to delete a task. type DeleteTaskRequest struct { state protoimpl.MessageState @@ -1794,218 +1824,227 @@ var file_flyteidl_admin_agent_proto_rawDesc = []byte{ 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x02, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xce, 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x06, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x12, 0x5d, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x15, 0x74, 0x61, - 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x22, 0x87, - 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x12, 0x5d, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x15, 0x74, 0x61, - 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, - 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x33, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, - 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x70, 0x61, 0x72, 0x74, 0x22, - 0x55, 0x0a, 0x1d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x79, - 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, - 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x72, 0x65, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x47, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xb3, - 0x02, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x07, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, + 0x37, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x5d, 0x0a, + 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x15, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x39, + 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x22, 0x87, 0x02, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x37, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x5d, 0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x15, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x33, + 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, + 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, + 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, + 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6c, - 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x6b, 0x73, - 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, - 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x05, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x17, 0x0a, - 0x07, 0x69, 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x69, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x58, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, - 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x25, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0xdb, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x41, 0x0a, 0x0d, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x70, 0x61, 0x72, 0x74, 0x22, 0x55, 0x0a, 0x1d, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, + 0x61, 0x70, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x42, 0x05, 0x0a, + 0x03, 0x72, 0x65, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, + 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x41, 0x0a, + 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x22, 0x47, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x81, 0x03, 0x0a, 0x08, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x33, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, + 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x38, + 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x9c, 0x01, + 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c, + 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x14, 0x0a, 0x12, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x34, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x54, 0x61, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x12, + 0x58, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x58, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x22, 0x31, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, - 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x33, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, - 0x64, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa1, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x04, 0x62, 0x6f, 0x64, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, - 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x70, 0x61, 0x72, 0x74, - 0x2a, 0x62, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, - 0x52, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x00, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, - 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, - 0x1a, 0x02, 0x18, 0x01, 0x42, 0xb6, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0a, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, - 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x61, 0x73, + 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x25, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3f, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, + 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdb, 0x02, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x58, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, + 0x69, 0x6e, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, + 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x31, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x33, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, + 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x42, 0x06, 0x0a, 0x04, 0x70, 0x61, 0x72, 0x74, 0x2a, 0x62, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x52, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, + 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, + 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, + 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x1a, 0x02, 0x18, 0x01, 0x42, 0xb6, 0x01, + 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, + 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, + 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, + 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2056,12 +2095,14 @@ var file_flyteidl_admin_agent_proto_goTypes = []interface{}{ (*core.Identity)(nil), // 30: flyteidl.core.Identity (*core.LiteralMap)(nil), // 31: flyteidl.core.LiteralMap (*core.TaskTemplate)(nil), // 32: flyteidl.core.TaskTemplate - (*core.TaskLog)(nil), // 33: flyteidl.core.TaskLog - (core.TaskExecution_Phase)(0), // 34: flyteidl.core.TaskExecution.Phase - (*structpb.Struct)(nil), // 35: google.protobuf.Struct - (*timestamppb.Timestamp)(nil), // 36: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 37: google.protobuf.Duration - (*core.ExecutionMetricResult)(nil), // 38: flyteidl.core.ExecutionMetricResult + (*core.InputData)(nil), // 33: flyteidl.core.InputData + (*core.TaskLog)(nil), // 34: flyteidl.core.TaskLog + (core.TaskExecution_Phase)(0), // 35: flyteidl.core.TaskExecution.Phase + (*structpb.Struct)(nil), // 36: google.protobuf.Struct + (*core.OutputData)(nil), // 37: flyteidl.core.OutputData + (*timestamppb.Timestamp)(nil), // 38: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 39: google.protobuf.Duration + (*core.ExecutionMetricResult)(nil), // 40: flyteidl.core.ExecutionMetricResult } var file_flyteidl_admin_agent_proto_depIdxs = []int32{ 28, // 0: flyteidl.admin.TaskExecutionMetadata.task_execution_id:type_name -> flyteidl.core.TaskExecutionIdentifier @@ -2070,40 +2111,42 @@ var file_flyteidl_admin_agent_proto_depIdxs = []int32{ 27, // 3: flyteidl.admin.TaskExecutionMetadata.environment_variables:type_name -> flyteidl.admin.TaskExecutionMetadata.EnvironmentVariablesEntry 29, // 4: flyteidl.admin.TaskExecutionMetadata.overrides:type_name -> flyteidl.core.TaskNodeOverrides 30, // 5: flyteidl.admin.TaskExecutionMetadata.identity:type_name -> flyteidl.core.Identity - 31, // 6: flyteidl.admin.CreateTaskRequest.inputs:type_name -> flyteidl.core.LiteralMap + 31, // 6: flyteidl.admin.CreateTaskRequest.deprecated_inputs:type_name -> flyteidl.core.LiteralMap 32, // 7: flyteidl.admin.CreateTaskRequest.template:type_name -> flyteidl.core.TaskTemplate 1, // 8: flyteidl.admin.CreateTaskRequest.task_execution_metadata:type_name -> flyteidl.admin.TaskExecutionMetadata - 32, // 9: flyteidl.admin.CreateRequestHeader.template:type_name -> flyteidl.core.TaskTemplate - 1, // 10: flyteidl.admin.CreateRequestHeader.task_execution_metadata:type_name -> flyteidl.admin.TaskExecutionMetadata - 4, // 11: flyteidl.admin.ExecuteTaskSyncRequest.header:type_name -> flyteidl.admin.CreateRequestHeader - 31, // 12: flyteidl.admin.ExecuteTaskSyncRequest.inputs:type_name -> flyteidl.core.LiteralMap - 10, // 13: flyteidl.admin.ExecuteTaskSyncResponseHeader.resource:type_name -> flyteidl.admin.Resource - 6, // 14: flyteidl.admin.ExecuteTaskSyncResponse.header:type_name -> flyteidl.admin.ExecuteTaskSyncResponseHeader - 31, // 15: flyteidl.admin.ExecuteTaskSyncResponse.outputs:type_name -> flyteidl.core.LiteralMap - 14, // 16: flyteidl.admin.GetTaskRequest.task_category:type_name -> flyteidl.admin.TaskCategory - 10, // 17: flyteidl.admin.GetTaskResponse.resource:type_name -> flyteidl.admin.Resource - 0, // 18: flyteidl.admin.Resource.state:type_name -> flyteidl.admin.State - 31, // 19: flyteidl.admin.Resource.outputs:type_name -> flyteidl.core.LiteralMap - 33, // 20: flyteidl.admin.Resource.log_links:type_name -> flyteidl.core.TaskLog - 34, // 21: flyteidl.admin.Resource.phase:type_name -> flyteidl.core.TaskExecution.Phase - 35, // 22: flyteidl.admin.Resource.custom_info:type_name -> google.protobuf.Struct - 14, // 23: flyteidl.admin.DeleteTaskRequest.task_category:type_name -> flyteidl.admin.TaskCategory - 14, // 24: flyteidl.admin.Agent.supported_task_categories:type_name -> flyteidl.admin.TaskCategory - 13, // 25: flyteidl.admin.GetAgentResponse.agent:type_name -> flyteidl.admin.Agent - 13, // 26: flyteidl.admin.ListAgentsResponse.agents:type_name -> flyteidl.admin.Agent - 36, // 27: flyteidl.admin.GetTaskMetricsRequest.start_time:type_name -> google.protobuf.Timestamp - 36, // 28: flyteidl.admin.GetTaskMetricsRequest.end_time:type_name -> google.protobuf.Timestamp - 37, // 29: flyteidl.admin.GetTaskMetricsRequest.step:type_name -> google.protobuf.Duration - 14, // 30: flyteidl.admin.GetTaskMetricsRequest.task_category:type_name -> flyteidl.admin.TaskCategory - 38, // 31: flyteidl.admin.GetTaskMetricsResponse.results:type_name -> flyteidl.core.ExecutionMetricResult - 14, // 32: flyteidl.admin.GetTaskLogsRequest.task_category:type_name -> flyteidl.admin.TaskCategory - 22, // 33: flyteidl.admin.GetTaskLogsResponse.header:type_name -> flyteidl.admin.GetTaskLogsResponseHeader - 23, // 34: flyteidl.admin.GetTaskLogsResponse.body:type_name -> flyteidl.admin.GetTaskLogsResponseBody - 35, // [35:35] is the sub-list for method output_type - 35, // [35:35] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 33, // 9: flyteidl.admin.CreateTaskRequest.inputs:type_name -> flyteidl.core.InputData + 32, // 10: flyteidl.admin.CreateRequestHeader.template:type_name -> flyteidl.core.TaskTemplate + 1, // 11: flyteidl.admin.CreateRequestHeader.task_execution_metadata:type_name -> flyteidl.admin.TaskExecutionMetadata + 4, // 12: flyteidl.admin.ExecuteTaskSyncRequest.header:type_name -> flyteidl.admin.CreateRequestHeader + 31, // 13: flyteidl.admin.ExecuteTaskSyncRequest.inputs:type_name -> flyteidl.core.LiteralMap + 10, // 14: flyteidl.admin.ExecuteTaskSyncResponseHeader.resource:type_name -> flyteidl.admin.Resource + 6, // 15: flyteidl.admin.ExecuteTaskSyncResponse.header:type_name -> flyteidl.admin.ExecuteTaskSyncResponseHeader + 31, // 16: flyteidl.admin.ExecuteTaskSyncResponse.outputs:type_name -> flyteidl.core.LiteralMap + 14, // 17: flyteidl.admin.GetTaskRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 10, // 18: flyteidl.admin.GetTaskResponse.resource:type_name -> flyteidl.admin.Resource + 0, // 19: flyteidl.admin.Resource.state:type_name -> flyteidl.admin.State + 31, // 20: flyteidl.admin.Resource.deprecated_outputs:type_name -> flyteidl.core.LiteralMap + 34, // 21: flyteidl.admin.Resource.log_links:type_name -> flyteidl.core.TaskLog + 35, // 22: flyteidl.admin.Resource.phase:type_name -> flyteidl.core.TaskExecution.Phase + 36, // 23: flyteidl.admin.Resource.custom_info:type_name -> google.protobuf.Struct + 37, // 24: flyteidl.admin.Resource.outputs:type_name -> flyteidl.core.OutputData + 14, // 25: flyteidl.admin.DeleteTaskRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 14, // 26: flyteidl.admin.Agent.supported_task_categories:type_name -> flyteidl.admin.TaskCategory + 13, // 27: flyteidl.admin.GetAgentResponse.agent:type_name -> flyteidl.admin.Agent + 13, // 28: flyteidl.admin.ListAgentsResponse.agents:type_name -> flyteidl.admin.Agent + 38, // 29: flyteidl.admin.GetTaskMetricsRequest.start_time:type_name -> google.protobuf.Timestamp + 38, // 30: flyteidl.admin.GetTaskMetricsRequest.end_time:type_name -> google.protobuf.Timestamp + 39, // 31: flyteidl.admin.GetTaskMetricsRequest.step:type_name -> google.protobuf.Duration + 14, // 32: flyteidl.admin.GetTaskMetricsRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 40, // 33: flyteidl.admin.GetTaskMetricsResponse.results:type_name -> flyteidl.core.ExecutionMetricResult + 14, // 34: flyteidl.admin.GetTaskLogsRequest.task_category:type_name -> flyteidl.admin.TaskCategory + 22, // 35: flyteidl.admin.GetTaskLogsResponse.header:type_name -> flyteidl.admin.GetTaskLogsResponseHeader + 23, // 36: flyteidl.admin.GetTaskLogsResponse.body:type_name -> flyteidl.admin.GetTaskLogsResponseBody + 37, // [37:37] is the sub-list for method output_type + 37, // [37:37] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } func init() { file_flyteidl_admin_agent_proto_init() } diff --git a/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go index 1b878ceeb6..28dd85f242 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/execution.pb.go @@ -165,9 +165,16 @@ type ExecutionCreateRequest struct { // The inputs required to start the execution. All required inputs must be // included in this map. If not required and not provided, defaults apply. // +optional + // Deprecated: Please use input_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. Inputs *core.LiteralMap `protobuf:"bytes,5,opt,name=inputs,proto3" json:"inputs,omitempty"` // Optional, org key applied to the resource. Org string `protobuf:"bytes,6,opt,name=org,proto3" json:"org,omitempty"` + // The inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + InputData *core.InputData `protobuf:"bytes,7,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"` } func (x *ExecutionCreateRequest) Reset() { @@ -230,6 +237,7 @@ func (x *ExecutionCreateRequest) GetSpec() *ExecutionSpec { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. func (x *ExecutionCreateRequest) GetInputs() *core.LiteralMap { if x != nil { return x.Inputs @@ -244,6 +252,13 @@ func (x *ExecutionCreateRequest) GetOrg() string { return "" } +func (x *ExecutionCreateRequest) GetInputData() *core.InputData { + if x != nil { + return x.InputData + } + return nil +} + // Request to relaunch the referenced execution. type ExecutionRelaunchRequest struct { state protoimpl.MessageState @@ -773,6 +788,7 @@ type ExecutionClosure struct { // *ExecutionClosure_AbortCause // *ExecutionClosure_AbortMetadata // *ExecutionClosure_OutputData + // *ExecutionClosure_FullOutputs OutputResult isExecutionClosure_OutputResult `protobuf_oneof:"output_result"` // Inputs computed and passed for execution. // computed_inputs depends on inputs in ExecutionSpec, fixed and default inputs in launch plan @@ -876,6 +892,13 @@ func (x *ExecutionClosure) GetOutputData() *core.LiteralMap { return nil } +func (x *ExecutionClosure) GetFullOutputs() *core.OutputData { + if x, ok := x.GetOutputResult().(*ExecutionClosure_FullOutputs); ok { + return x.FullOutputs + } + return nil +} + // Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. func (x *ExecutionClosure) GetComputedInputs() *core.LiteralMap { if x != nil { @@ -977,6 +1000,12 @@ type ExecutionClosure_OutputData struct { OutputData *core.LiteralMap `protobuf:"bytes,13,opt,name=output_data,json=outputData,proto3,oneof"` } +type ExecutionClosure_FullOutputs struct { + // Raw output data produced by this execution. + // DEPRECATED. Use GetExecutionData to fetch output data instead. + FullOutputs *core.OutputData `protobuf:"bytes,15,opt,name=full_outputs,json=fullOutputs,proto3,oneof"` +} + func (*ExecutionClosure_Outputs) isExecutionClosure_OutputResult() {} func (*ExecutionClosure_Error) isExecutionClosure_OutputResult() {} @@ -987,6 +1016,8 @@ func (*ExecutionClosure_AbortMetadata) isExecutionClosure_OutputResult() {} func (*ExecutionClosure_OutputData) isExecutionClosure_OutputResult() {} +func (*ExecutionClosure_FullOutputs) isExecutionClosure_OutputResult() {} + // Represents system, rather than user-facing, metadata about an execution. type SystemMetadata struct { state protoimpl.MessageState @@ -1637,9 +1668,19 @@ type WorkflowExecutionGetDataResponse struct { // Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. Inputs *UrlBlob `protobuf:"bytes,2,opt,name=inputs,proto3" json:"inputs,omitempty"` // Full_inputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use input_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. FullInputs *core.LiteralMap `protobuf:"bytes,3,opt,name=full_inputs,json=fullInputs,proto3" json:"full_inputs,omitempty"` // Full_outputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use output_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. FullOutputs *core.LiteralMap `protobuf:"bytes,4,opt,name=full_outputs,json=fullOutputs,proto3" json:"full_outputs,omitempty"` + // InputData will only be populated if they are under a configured size threshold. + InputData *core.InputData `protobuf:"bytes,5,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"` + // OutputData will only be populated if they are under a configured size threshold. + OutputData *core.OutputData `protobuf:"bytes,6,opt,name=output_data,json=outputData,proto3" json:"output_data,omitempty"` } func (x *WorkflowExecutionGetDataResponse) Reset() { @@ -1690,6 +1731,7 @@ func (x *WorkflowExecutionGetDataResponse) GetInputs() *UrlBlob { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. func (x *WorkflowExecutionGetDataResponse) GetFullInputs() *core.LiteralMap { if x != nil { return x.FullInputs @@ -1697,6 +1739,7 @@ func (x *WorkflowExecutionGetDataResponse) GetFullInputs() *core.LiteralMap { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/execution.proto. func (x *WorkflowExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { if x != nil { return x.FullOutputs @@ -1704,6 +1747,20 @@ func (x *WorkflowExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { return nil } +func (x *WorkflowExecutionGetDataResponse) GetInputData() *core.InputData { + if x != nil { + return x.InputData + } + return nil +} + +func (x *WorkflowExecutionGetDataResponse) GetOutputData() *core.OutputData { + if x != nil { + return x.OutputData + } + return nil +} + type ExecutionUpdateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2005,7 +2062,7 @@ var file_flyteidl_admin_execution_proto_rawDesc = []byte{ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x01, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x02, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, @@ -2015,340 +2072,355 @@ var file_flyteidl_admin_execution_proto_rawDesc = []byte{ 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x12, 0x31, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x63, 0x12, 0x35, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x06, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0x99, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6f, 0x76, - 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x22, 0xa8, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, - 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x1b, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, - 0xb6, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x07, - 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x52, - 0x07, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x22, 0x60, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x37, 0x0a, 0x0a, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x22, 0x99, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, + 0xa8, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x65, 0x0a, 0x0e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x37, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x43, 0x0a, 0x0d, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, - 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x98, 0x07, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x02, 0x18, 0x01, - 0x48, 0x00, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x75, 0x73, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x61, - 0x62, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x61, 0x62, 0x6f, - 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, - 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x5f, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, - 0x70, 0x75, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x05, 0x70, - 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, - 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x17, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x59, 0x0a, 0x1b, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb6, 0x01, 0x0a, + 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x07, 0x63, 0x6c, 0x6f, + 0x73, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x52, 0x07, 0x63, 0x6c, + 0x6f, 0x73, 0x75, 0x72, 0x65, 0x22, 0x60, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x65, 0x0a, 0x0e, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x43, + 0x0a, 0x0d, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, + 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x22, 0xd8, 0x07, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x25, 0x0a, 0x0b, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x62, 0x6f, 0x72, + 0x74, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, + 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, + 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, + 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x3e, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, + 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, - 0x64, 0x12, 0x5d, 0x0a, 0x14, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x12, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x5b, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x85, - 0x05, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, - 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x5a, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x13, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x49, 0x44, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x73, - 0x22, 0x74, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, - 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4c, 0x41, - 0x55, 0x4e, 0x43, 0x48, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, - 0x57, 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, - 0x43, 0x4f, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x52, 0x49, - 0x47, 0x47, 0x45, 0x52, 0x10, 0x06, 0x22, 0x56, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd6, - 0x09, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x3a, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x35, 0x0a, 0x06, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x48, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0b, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x6c, 0x12, - 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, - 0x3d, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, - 0x0a, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, - 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, - 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x10, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, - 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, - 0x78, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x12, 0x58, 0x0a, 0x16, - 0x72, 0x61, 0x77, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x61, - 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x13, 0x72, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, + 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x5d, + 0x0a, 0x14, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x12, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x0f, 0x0a, + 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x5b, + 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x85, 0x05, 0x0a, 0x11, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x43, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3d, + 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5a, 0x0a, + 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x52, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x13, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x3c, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x44, + 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x73, 0x22, 0x74, 0x0a, + 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0a, + 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4c, 0x41, 0x55, 0x4e, 0x43, + 0x48, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x4f, 0x52, + 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x43, 0x4f, 0x56, + 0x45, 0x52, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, + 0x52, 0x10, 0x06, 0x22, 0x56, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd6, 0x09, 0x0a, 0x0d, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, + 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x6c, + 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x76, - 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x16, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x5d, 0x0a, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x15, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x12, 0x61, 0x0a, 0x19, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x76, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x17, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x41, 0x73, 0x73, 0x69, - 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x6d, 0x0a, 0x19, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x48, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x2e, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52, + 0x6f, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x52, 0x6f, 0x6c, + 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x66, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x10, + 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, + 0x69, 0x73, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x50, 0x61, + 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x12, 0x58, 0x0a, 0x16, 0x72, 0x61, 0x77, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x61, 0x77, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, + 0x72, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, + 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, + 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x12, 0x28, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x12, 0x5d, 0x0a, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x15, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x61, 0x0a, 0x19, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x76, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x1a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x76, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x4a, 0x04, + 0x08, 0x04, 0x10, 0x05, 0x22, 0x6d, 0x0a, 0x19, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x61, + 0x75, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x5d, 0x0a, 0x1f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x1f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x22, 0x85, 0x03, 0x0a, 0x20, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x72, 0x6c, 0x42, 0x6c, 0x6f, 0x62, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x72, + 0x6c, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, + 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, + 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0b, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x34, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x1b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, + 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x76, 0x0a, 0x22, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x20, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x72, 0x6c, 0x42, 0x6c, - 0x6f, 0x62, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, - 0x33, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x55, 0x72, 0x6c, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, - 0x70, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x8a, - 0x01, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x1b, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x19, 0x0a, 0x17, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x0a, 0x22, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x70, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, - 0x4e, 0x0a, 0x23, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x2a, - 0x3e, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x58, 0x45, 0x43, 0x55, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x01, 0x42, - 0xba, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0x4e, 0x0a, 0x23, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, + 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x2a, 0x3e, 0x0a, 0x0e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x45, + 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x01, 0x42, 0xba, 0x01, 0x0a, 0x12, 0x63, 0x6f, + 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x42, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, + 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, + 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, + 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2392,94 +2464,100 @@ var file_flyteidl_admin_execution_proto_goTypes = []interface{}{ (*WorkflowExecutionGetMetricsRequest)(nil), // 23: flyteidl.admin.WorkflowExecutionGetMetricsRequest (*WorkflowExecutionGetMetricsResponse)(nil), // 24: flyteidl.admin.WorkflowExecutionGetMetricsResponse (*core.LiteralMap)(nil), // 25: flyteidl.core.LiteralMap - (*core.WorkflowExecutionIdentifier)(nil), // 26: flyteidl.core.WorkflowExecutionIdentifier - (*core.ExecutionError)(nil), // 27: flyteidl.core.ExecutionError - (core.WorkflowExecution_Phase)(0), // 28: flyteidl.core.WorkflowExecution.Phase - (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 30: google.protobuf.Duration - (*Notification)(nil), // 31: flyteidl.admin.Notification - (*core.Identifier)(nil), // 32: flyteidl.core.Identifier - (*core.NodeExecutionIdentifier)(nil), // 33: flyteidl.core.NodeExecutionIdentifier - (*core.ArtifactID)(nil), // 34: flyteidl.core.ArtifactID - (*Labels)(nil), // 35: flyteidl.admin.Labels - (*Annotations)(nil), // 36: flyteidl.admin.Annotations - (*core.SecurityContext)(nil), // 37: flyteidl.core.SecurityContext - (*AuthRole)(nil), // 38: flyteidl.admin.AuthRole - (*core.QualityOfService)(nil), // 39: flyteidl.core.QualityOfService - (*RawOutputDataConfig)(nil), // 40: flyteidl.admin.RawOutputDataConfig - (*ClusterAssignment)(nil), // 41: flyteidl.admin.ClusterAssignment - (*wrapperspb.BoolValue)(nil), // 42: google.protobuf.BoolValue - (*Envs)(nil), // 43: flyteidl.admin.Envs - (*ExecutionClusterLabel)(nil), // 44: flyteidl.admin.ExecutionClusterLabel - (*core.ExecutionEnvAssignment)(nil), // 45: flyteidl.core.ExecutionEnvAssignment - (*UrlBlob)(nil), // 46: flyteidl.admin.UrlBlob - (*core.Span)(nil), // 47: flyteidl.core.Span + (*core.InputData)(nil), // 26: flyteidl.core.InputData + (*core.WorkflowExecutionIdentifier)(nil), // 27: flyteidl.core.WorkflowExecutionIdentifier + (*core.ExecutionError)(nil), // 28: flyteidl.core.ExecutionError + (*core.OutputData)(nil), // 29: flyteidl.core.OutputData + (core.WorkflowExecution_Phase)(0), // 30: flyteidl.core.WorkflowExecution.Phase + (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 32: google.protobuf.Duration + (*Notification)(nil), // 33: flyteidl.admin.Notification + (*core.Identifier)(nil), // 34: flyteidl.core.Identifier + (*core.NodeExecutionIdentifier)(nil), // 35: flyteidl.core.NodeExecutionIdentifier + (*core.ArtifactID)(nil), // 36: flyteidl.core.ArtifactID + (*Labels)(nil), // 37: flyteidl.admin.Labels + (*Annotations)(nil), // 38: flyteidl.admin.Annotations + (*core.SecurityContext)(nil), // 39: flyteidl.core.SecurityContext + (*AuthRole)(nil), // 40: flyteidl.admin.AuthRole + (*core.QualityOfService)(nil), // 41: flyteidl.core.QualityOfService + (*RawOutputDataConfig)(nil), // 42: flyteidl.admin.RawOutputDataConfig + (*ClusterAssignment)(nil), // 43: flyteidl.admin.ClusterAssignment + (*wrapperspb.BoolValue)(nil), // 44: google.protobuf.BoolValue + (*Envs)(nil), // 45: flyteidl.admin.Envs + (*ExecutionClusterLabel)(nil), // 46: flyteidl.admin.ExecutionClusterLabel + (*core.ExecutionEnvAssignment)(nil), // 47: flyteidl.core.ExecutionEnvAssignment + (*UrlBlob)(nil), // 48: flyteidl.admin.UrlBlob + (*core.Span)(nil), // 49: flyteidl.core.Span } var file_flyteidl_admin_execution_proto_depIdxs = []int32{ 15, // 0: flyteidl.admin.ExecutionCreateRequest.spec:type_name -> flyteidl.admin.ExecutionSpec 25, // 1: flyteidl.admin.ExecutionCreateRequest.inputs:type_name -> flyteidl.core.LiteralMap - 26, // 2: flyteidl.admin.ExecutionRelaunchRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 26, // 3: flyteidl.admin.ExecutionRecoverRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 13, // 4: flyteidl.admin.ExecutionRecoverRequest.metadata:type_name -> flyteidl.admin.ExecutionMetadata - 26, // 5: flyteidl.admin.ExecutionCreateResponse.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 26, // 6: flyteidl.admin.WorkflowExecutionGetRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 26, // 7: flyteidl.admin.Execution.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 15, // 8: flyteidl.admin.Execution.spec:type_name -> flyteidl.admin.ExecutionSpec - 11, // 9: flyteidl.admin.Execution.closure:type_name -> flyteidl.admin.ExecutionClosure - 7, // 10: flyteidl.admin.ExecutionList.executions:type_name -> flyteidl.admin.Execution - 25, // 11: flyteidl.admin.LiteralMapBlob.values:type_name -> flyteidl.core.LiteralMap - 9, // 12: flyteidl.admin.ExecutionClosure.outputs:type_name -> flyteidl.admin.LiteralMapBlob - 27, // 13: flyteidl.admin.ExecutionClosure.error:type_name -> flyteidl.core.ExecutionError - 10, // 14: flyteidl.admin.ExecutionClosure.abort_metadata:type_name -> flyteidl.admin.AbortMetadata - 25, // 15: flyteidl.admin.ExecutionClosure.output_data:type_name -> flyteidl.core.LiteralMap - 25, // 16: flyteidl.admin.ExecutionClosure.computed_inputs:type_name -> flyteidl.core.LiteralMap - 28, // 17: flyteidl.admin.ExecutionClosure.phase:type_name -> flyteidl.core.WorkflowExecution.Phase - 29, // 18: flyteidl.admin.ExecutionClosure.started_at:type_name -> google.protobuf.Timestamp - 30, // 19: flyteidl.admin.ExecutionClosure.duration:type_name -> google.protobuf.Duration - 29, // 20: flyteidl.admin.ExecutionClosure.created_at:type_name -> google.protobuf.Timestamp - 29, // 21: flyteidl.admin.ExecutionClosure.updated_at:type_name -> google.protobuf.Timestamp - 31, // 22: flyteidl.admin.ExecutionClosure.notifications:type_name -> flyteidl.admin.Notification - 32, // 23: flyteidl.admin.ExecutionClosure.workflow_id:type_name -> flyteidl.core.Identifier - 21, // 24: flyteidl.admin.ExecutionClosure.state_change_details:type_name -> flyteidl.admin.ExecutionStateChangeDetails - 1, // 25: flyteidl.admin.ExecutionMetadata.mode:type_name -> flyteidl.admin.ExecutionMetadata.ExecutionMode - 29, // 26: flyteidl.admin.ExecutionMetadata.scheduled_at:type_name -> google.protobuf.Timestamp - 33, // 27: flyteidl.admin.ExecutionMetadata.parent_node_execution:type_name -> flyteidl.core.NodeExecutionIdentifier - 26, // 28: flyteidl.admin.ExecutionMetadata.reference_execution:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 12, // 29: flyteidl.admin.ExecutionMetadata.system_metadata:type_name -> flyteidl.admin.SystemMetadata - 34, // 30: flyteidl.admin.ExecutionMetadata.artifact_ids:type_name -> flyteidl.core.ArtifactID - 31, // 31: flyteidl.admin.NotificationList.notifications:type_name -> flyteidl.admin.Notification - 32, // 32: flyteidl.admin.ExecutionSpec.launch_plan:type_name -> flyteidl.core.Identifier - 25, // 33: flyteidl.admin.ExecutionSpec.inputs:type_name -> flyteidl.core.LiteralMap - 13, // 34: flyteidl.admin.ExecutionSpec.metadata:type_name -> flyteidl.admin.ExecutionMetadata - 14, // 35: flyteidl.admin.ExecutionSpec.notifications:type_name -> flyteidl.admin.NotificationList - 35, // 36: flyteidl.admin.ExecutionSpec.labels:type_name -> flyteidl.admin.Labels - 36, // 37: flyteidl.admin.ExecutionSpec.annotations:type_name -> flyteidl.admin.Annotations - 37, // 38: flyteidl.admin.ExecutionSpec.security_context:type_name -> flyteidl.core.SecurityContext - 38, // 39: flyteidl.admin.ExecutionSpec.auth_role:type_name -> flyteidl.admin.AuthRole - 39, // 40: flyteidl.admin.ExecutionSpec.quality_of_service:type_name -> flyteidl.core.QualityOfService - 40, // 41: flyteidl.admin.ExecutionSpec.raw_output_data_config:type_name -> flyteidl.admin.RawOutputDataConfig - 41, // 42: flyteidl.admin.ExecutionSpec.cluster_assignment:type_name -> flyteidl.admin.ClusterAssignment - 42, // 43: flyteidl.admin.ExecutionSpec.interruptible:type_name -> google.protobuf.BoolValue - 43, // 44: flyteidl.admin.ExecutionSpec.envs:type_name -> flyteidl.admin.Envs - 44, // 45: flyteidl.admin.ExecutionSpec.execution_cluster_label:type_name -> flyteidl.admin.ExecutionClusterLabel - 45, // 46: flyteidl.admin.ExecutionSpec.execution_env_assignments:type_name -> flyteidl.core.ExecutionEnvAssignment - 26, // 47: flyteidl.admin.ExecutionTerminateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 26, // 48: flyteidl.admin.WorkflowExecutionGetDataRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 46, // 49: flyteidl.admin.WorkflowExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob - 46, // 50: flyteidl.admin.WorkflowExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob - 25, // 51: flyteidl.admin.WorkflowExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap - 25, // 52: flyteidl.admin.WorkflowExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap - 26, // 53: flyteidl.admin.ExecutionUpdateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 0, // 54: flyteidl.admin.ExecutionUpdateRequest.state:type_name -> flyteidl.admin.ExecutionState - 0, // 55: flyteidl.admin.ExecutionStateChangeDetails.state:type_name -> flyteidl.admin.ExecutionState - 29, // 56: flyteidl.admin.ExecutionStateChangeDetails.occurred_at:type_name -> google.protobuf.Timestamp - 26, // 57: flyteidl.admin.WorkflowExecutionGetMetricsRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 47, // 58: flyteidl.admin.WorkflowExecutionGetMetricsResponse.span:type_name -> flyteidl.core.Span - 59, // [59:59] is the sub-list for method output_type - 59, // [59:59] is the sub-list for method input_type - 59, // [59:59] is the sub-list for extension type_name - 59, // [59:59] is the sub-list for extension extendee - 0, // [0:59] is the sub-list for field type_name + 26, // 2: flyteidl.admin.ExecutionCreateRequest.input_data:type_name -> flyteidl.core.InputData + 27, // 3: flyteidl.admin.ExecutionRelaunchRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 27, // 4: flyteidl.admin.ExecutionRecoverRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 13, // 5: flyteidl.admin.ExecutionRecoverRequest.metadata:type_name -> flyteidl.admin.ExecutionMetadata + 27, // 6: flyteidl.admin.ExecutionCreateResponse.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 27, // 7: flyteidl.admin.WorkflowExecutionGetRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 27, // 8: flyteidl.admin.Execution.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 15, // 9: flyteidl.admin.Execution.spec:type_name -> flyteidl.admin.ExecutionSpec + 11, // 10: flyteidl.admin.Execution.closure:type_name -> flyteidl.admin.ExecutionClosure + 7, // 11: flyteidl.admin.ExecutionList.executions:type_name -> flyteidl.admin.Execution + 25, // 12: flyteidl.admin.LiteralMapBlob.values:type_name -> flyteidl.core.LiteralMap + 9, // 13: flyteidl.admin.ExecutionClosure.outputs:type_name -> flyteidl.admin.LiteralMapBlob + 28, // 14: flyteidl.admin.ExecutionClosure.error:type_name -> flyteidl.core.ExecutionError + 10, // 15: flyteidl.admin.ExecutionClosure.abort_metadata:type_name -> flyteidl.admin.AbortMetadata + 25, // 16: flyteidl.admin.ExecutionClosure.output_data:type_name -> flyteidl.core.LiteralMap + 29, // 17: flyteidl.admin.ExecutionClosure.full_outputs:type_name -> flyteidl.core.OutputData + 25, // 18: flyteidl.admin.ExecutionClosure.computed_inputs:type_name -> flyteidl.core.LiteralMap + 30, // 19: flyteidl.admin.ExecutionClosure.phase:type_name -> flyteidl.core.WorkflowExecution.Phase + 31, // 20: flyteidl.admin.ExecutionClosure.started_at:type_name -> google.protobuf.Timestamp + 32, // 21: flyteidl.admin.ExecutionClosure.duration:type_name -> google.protobuf.Duration + 31, // 22: flyteidl.admin.ExecutionClosure.created_at:type_name -> google.protobuf.Timestamp + 31, // 23: flyteidl.admin.ExecutionClosure.updated_at:type_name -> google.protobuf.Timestamp + 33, // 24: flyteidl.admin.ExecutionClosure.notifications:type_name -> flyteidl.admin.Notification + 34, // 25: flyteidl.admin.ExecutionClosure.workflow_id:type_name -> flyteidl.core.Identifier + 21, // 26: flyteidl.admin.ExecutionClosure.state_change_details:type_name -> flyteidl.admin.ExecutionStateChangeDetails + 1, // 27: flyteidl.admin.ExecutionMetadata.mode:type_name -> flyteidl.admin.ExecutionMetadata.ExecutionMode + 31, // 28: flyteidl.admin.ExecutionMetadata.scheduled_at:type_name -> google.protobuf.Timestamp + 35, // 29: flyteidl.admin.ExecutionMetadata.parent_node_execution:type_name -> flyteidl.core.NodeExecutionIdentifier + 27, // 30: flyteidl.admin.ExecutionMetadata.reference_execution:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 12, // 31: flyteidl.admin.ExecutionMetadata.system_metadata:type_name -> flyteidl.admin.SystemMetadata + 36, // 32: flyteidl.admin.ExecutionMetadata.artifact_ids:type_name -> flyteidl.core.ArtifactID + 33, // 33: flyteidl.admin.NotificationList.notifications:type_name -> flyteidl.admin.Notification + 34, // 34: flyteidl.admin.ExecutionSpec.launch_plan:type_name -> flyteidl.core.Identifier + 25, // 35: flyteidl.admin.ExecutionSpec.inputs:type_name -> flyteidl.core.LiteralMap + 13, // 36: flyteidl.admin.ExecutionSpec.metadata:type_name -> flyteidl.admin.ExecutionMetadata + 14, // 37: flyteidl.admin.ExecutionSpec.notifications:type_name -> flyteidl.admin.NotificationList + 37, // 38: flyteidl.admin.ExecutionSpec.labels:type_name -> flyteidl.admin.Labels + 38, // 39: flyteidl.admin.ExecutionSpec.annotations:type_name -> flyteidl.admin.Annotations + 39, // 40: flyteidl.admin.ExecutionSpec.security_context:type_name -> flyteidl.core.SecurityContext + 40, // 41: flyteidl.admin.ExecutionSpec.auth_role:type_name -> flyteidl.admin.AuthRole + 41, // 42: flyteidl.admin.ExecutionSpec.quality_of_service:type_name -> flyteidl.core.QualityOfService + 42, // 43: flyteidl.admin.ExecutionSpec.raw_output_data_config:type_name -> flyteidl.admin.RawOutputDataConfig + 43, // 44: flyteidl.admin.ExecutionSpec.cluster_assignment:type_name -> flyteidl.admin.ClusterAssignment + 44, // 45: flyteidl.admin.ExecutionSpec.interruptible:type_name -> google.protobuf.BoolValue + 45, // 46: flyteidl.admin.ExecutionSpec.envs:type_name -> flyteidl.admin.Envs + 46, // 47: flyteidl.admin.ExecutionSpec.execution_cluster_label:type_name -> flyteidl.admin.ExecutionClusterLabel + 47, // 48: flyteidl.admin.ExecutionSpec.execution_env_assignments:type_name -> flyteidl.core.ExecutionEnvAssignment + 27, // 49: flyteidl.admin.ExecutionTerminateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 27, // 50: flyteidl.admin.WorkflowExecutionGetDataRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 48, // 51: flyteidl.admin.WorkflowExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob + 48, // 52: flyteidl.admin.WorkflowExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob + 25, // 53: flyteidl.admin.WorkflowExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap + 25, // 54: flyteidl.admin.WorkflowExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap + 26, // 55: flyteidl.admin.WorkflowExecutionGetDataResponse.input_data:type_name -> flyteidl.core.InputData + 29, // 56: flyteidl.admin.WorkflowExecutionGetDataResponse.output_data:type_name -> flyteidl.core.OutputData + 27, // 57: flyteidl.admin.ExecutionUpdateRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 0, // 58: flyteidl.admin.ExecutionUpdateRequest.state:type_name -> flyteidl.admin.ExecutionState + 0, // 59: flyteidl.admin.ExecutionStateChangeDetails.state:type_name -> flyteidl.admin.ExecutionState + 31, // 60: flyteidl.admin.ExecutionStateChangeDetails.occurred_at:type_name -> google.protobuf.Timestamp + 27, // 61: flyteidl.admin.WorkflowExecutionGetMetricsRequest.id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 49, // 62: flyteidl.admin.WorkflowExecutionGetMetricsResponse.span:type_name -> flyteidl.core.Span + 63, // [63:63] is the sub-list for method output_type + 63, // [63:63] is the sub-list for method input_type + 63, // [63:63] is the sub-list for extension type_name + 63, // [63:63] is the sub-list for extension extendee + 0, // [0:63] is the sub-list for field type_name } func init() { file_flyteidl_admin_execution_proto_init() } @@ -2778,6 +2856,7 @@ func file_flyteidl_admin_execution_proto_init() { (*ExecutionClosure_AbortCause)(nil), (*ExecutionClosure_AbortMetadata)(nil), (*ExecutionClosure_OutputData)(nil), + (*ExecutionClosure_FullOutputs)(nil), } file_flyteidl_admin_execution_proto_msgTypes[13].OneofWrappers = []interface{}{ (*ExecutionSpec_Notifications)(nil), diff --git a/flyteidl/gen/pb-go/flyteidl/admin/launch_plan.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/launch_plan.pb.go index eb72b91044..a49ec8f573 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/launch_plan.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/launch_plan.pb.go @@ -379,6 +379,9 @@ type LaunchPlanSpec struct { DefaultInputs *core.ParameterMap `protobuf:"bytes,3,opt,name=default_inputs,json=defaultInputs,proto3" json:"default_inputs,omitempty"` // Fixed, non-overridable inputs for the Launch Plan. // These can not be overridden when an execution is created with this launch plan. + // Deprecated: Please use fixec_input_data instead + // + // Deprecated: Marked as deprecated in flyteidl/admin/launch_plan.proto. FixedInputs *core.LiteralMap `protobuf:"bytes,4,opt,name=fixed_inputs,json=fixedInputs,proto3" json:"fixed_inputs,omitempty"` // String to indicate the role to use to execute the workflow underneath // @@ -417,6 +420,9 @@ type LaunchPlanSpec struct { Envs *Envs `protobuf:"bytes,21,opt,name=envs,proto3" json:"envs,omitempty"` // Execution environment assignments to be set for the execution. ExecutionEnvAssignments []*core.ExecutionEnvAssignment `protobuf:"bytes,22,rep,name=execution_env_assignments,json=executionEnvAssignments,proto3" json:"execution_env_assignments,omitempty"` + // Fixed, non-overridable inputs for the Launch Plan. + // These can not be overridden when an execution is created with this launch plan. + FixedInputData *core.InputData `protobuf:"bytes,23,opt,name=fixed_input_data,json=fixedInputData,proto3" json:"fixed_input_data,omitempty"` } func (x *LaunchPlanSpec) Reset() { @@ -472,6 +478,7 @@ func (x *LaunchPlanSpec) GetDefaultInputs() *core.ParameterMap { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/launch_plan.proto. func (x *LaunchPlanSpec) GetFixedInputs() *core.LiteralMap { if x != nil { return x.FixedInputs @@ -573,6 +580,13 @@ func (x *LaunchPlanSpec) GetExecutionEnvAssignments() []*core.ExecutionEnvAssign return nil } +func (x *LaunchPlanSpec) GetFixedInputData() *core.InputData { + if x != nil { + return x.FixedInputData + } + return nil +} + // Values computed by the flyte platform after launch plan registration. // These include expected_inputs required to be present in a CreateExecutionRequest // to launch the reference workflow as well timestamp values associated with the launch plan. @@ -1040,7 +1054,7 @@ var file_flyteidl_admin_launch_plan_proto_rawDesc = []byte{ 0x65, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xa0, 0x08, 0x0a, 0x0e, 0x4c, 0x61, 0x75, + 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xe8, 0x08, 0x0a, 0x0e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, @@ -1054,135 +1068,140 @@ var file_flyteidl_admin_launch_plan_proto_rawDesc = []byte{ 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x69, 0x78, 0x65, + 0x6c, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2e, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3d, - 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, - 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x61, 0x75, - 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x66, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x51, 0x75, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x10, - 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x58, 0x0a, 0x16, 0x72, 0x61, 0x77, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x52, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x72, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, - 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, - 0x69, 0x73, 0x6d, 0x12, 0x40, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, - 0x69, 0x62, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, - 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x28, - 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x6e, - 0x76, 0x73, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x61, 0x0a, 0x19, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, - 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xcd, 0x02, 0x0a, 0x11, - 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, - 0x65, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x52, 0x0e, - 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x45, - 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x4d, 0x61, 0x70, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xd1, 0x01, 0x0a, 0x12, - 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x34, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x11, - 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x10, 0x6c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x7b, 0x0a, 0x17, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x1a, 0x0a, 0x18, - 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x17, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, - 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x2a, 0x2b, 0x0a, 0x0f, 0x4c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x0a, 0x08, - 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x42, 0xbb, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0f, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, - 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2c, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x12, + 0x39, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x10, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x16, 0x72, 0x61, 0x77, 0x5f, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x72, 0x61, 0x77, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, + 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, + 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x12, 0x40, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, + 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x61, 0x0a, 0x19, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x61, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x76, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x42, 0x0a, 0x10, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0e, 0x66, 0x69, 0x78, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x22, 0xcd, 0x02, 0x0a, 0x11, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, + 0x61, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x44, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x0f, 0x65, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, + 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x08, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x12, 0x42, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7b, 0x0a, 0x17, 0x4c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, + 0x61, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x50, 0x0a, 0x17, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, + 0x69, 0x64, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, + 0x67, 0x2a, 0x2b, 0x0a, 0x0f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x42, 0xbb, + 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6c, 0x61, + 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, + 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1225,13 +1244,14 @@ var file_flyteidl_admin_launch_plan_proto_goTypes = []interface{}{ (*wrapperspb.BoolValue)(nil), // 22: google.protobuf.BoolValue (*Envs)(nil), // 23: flyteidl.admin.Envs (*core.ExecutionEnvAssignment)(nil), // 24: flyteidl.core.ExecutionEnvAssignment - (*core.VariableMap)(nil), // 25: flyteidl.core.VariableMap - (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp - (*Schedule)(nil), // 27: flyteidl.admin.Schedule - (*Notification)(nil), // 28: flyteidl.admin.Notification - (*anypb.Any)(nil), // 29: google.protobuf.Any - (*NamedEntityIdentifier)(nil), // 30: flyteidl.admin.NamedEntityIdentifier - (*Sort)(nil), // 31: flyteidl.admin.Sort + (*core.InputData)(nil), // 25: flyteidl.core.InputData + (*core.VariableMap)(nil), // 26: flyteidl.core.VariableMap + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (*Schedule)(nil), // 28: flyteidl.admin.Schedule + (*Notification)(nil), // 29: flyteidl.admin.Notification + (*anypb.Any)(nil), // 30: google.protobuf.Any + (*NamedEntityIdentifier)(nil), // 31: flyteidl.admin.NamedEntityIdentifier + (*Sort)(nil), // 32: flyteidl.admin.Sort } var file_flyteidl_admin_launch_plan_proto_depIdxs = []int32{ 13, // 0: flyteidl.admin.LaunchPlanCreateRequest.id:type_name -> flyteidl.core.Identifier @@ -1254,23 +1274,24 @@ var file_flyteidl_admin_launch_plan_proto_depIdxs = []int32{ 22, // 17: flyteidl.admin.LaunchPlanSpec.interruptible:type_name -> google.protobuf.BoolValue 23, // 18: flyteidl.admin.LaunchPlanSpec.envs:type_name -> flyteidl.admin.Envs 24, // 19: flyteidl.admin.LaunchPlanSpec.execution_env_assignments:type_name -> flyteidl.core.ExecutionEnvAssignment - 0, // 20: flyteidl.admin.LaunchPlanClosure.state:type_name -> flyteidl.admin.LaunchPlanState - 14, // 21: flyteidl.admin.LaunchPlanClosure.expected_inputs:type_name -> flyteidl.core.ParameterMap - 25, // 22: flyteidl.admin.LaunchPlanClosure.expected_outputs:type_name -> flyteidl.core.VariableMap - 26, // 23: flyteidl.admin.LaunchPlanClosure.created_at:type_name -> google.protobuf.Timestamp - 26, // 24: flyteidl.admin.LaunchPlanClosure.updated_at:type_name -> google.protobuf.Timestamp - 27, // 25: flyteidl.admin.LaunchPlanMetadata.schedule:type_name -> flyteidl.admin.Schedule - 28, // 26: flyteidl.admin.LaunchPlanMetadata.notifications:type_name -> flyteidl.admin.Notification - 29, // 27: flyteidl.admin.LaunchPlanMetadata.launch_conditions:type_name -> google.protobuf.Any - 13, // 28: flyteidl.admin.LaunchPlanUpdateRequest.id:type_name -> flyteidl.core.Identifier - 0, // 29: flyteidl.admin.LaunchPlanUpdateRequest.state:type_name -> flyteidl.admin.LaunchPlanState - 30, // 30: flyteidl.admin.ActiveLaunchPlanRequest.id:type_name -> flyteidl.admin.NamedEntityIdentifier - 31, // 31: flyteidl.admin.ActiveLaunchPlanListRequest.sort_by:type_name -> flyteidl.admin.Sort - 32, // [32:32] is the sub-list for method output_type - 32, // [32:32] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name + 25, // 20: flyteidl.admin.LaunchPlanSpec.fixed_input_data:type_name -> flyteidl.core.InputData + 0, // 21: flyteidl.admin.LaunchPlanClosure.state:type_name -> flyteidl.admin.LaunchPlanState + 14, // 22: flyteidl.admin.LaunchPlanClosure.expected_inputs:type_name -> flyteidl.core.ParameterMap + 26, // 23: flyteidl.admin.LaunchPlanClosure.expected_outputs:type_name -> flyteidl.core.VariableMap + 27, // 24: flyteidl.admin.LaunchPlanClosure.created_at:type_name -> google.protobuf.Timestamp + 27, // 25: flyteidl.admin.LaunchPlanClosure.updated_at:type_name -> google.protobuf.Timestamp + 28, // 26: flyteidl.admin.LaunchPlanMetadata.schedule:type_name -> flyteidl.admin.Schedule + 29, // 27: flyteidl.admin.LaunchPlanMetadata.notifications:type_name -> flyteidl.admin.Notification + 30, // 28: flyteidl.admin.LaunchPlanMetadata.launch_conditions:type_name -> google.protobuf.Any + 13, // 29: flyteidl.admin.LaunchPlanUpdateRequest.id:type_name -> flyteidl.core.Identifier + 0, // 30: flyteidl.admin.LaunchPlanUpdateRequest.state:type_name -> flyteidl.admin.LaunchPlanState + 31, // 31: flyteidl.admin.ActiveLaunchPlanRequest.id:type_name -> flyteidl.admin.NamedEntityIdentifier + 32, // 32: flyteidl.admin.ActiveLaunchPlanListRequest.sort_by:type_name -> flyteidl.admin.Sort + 33, // [33:33] is the sub-list for method output_type + 33, // [33:33] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_flyteidl_admin_launch_plan_proto_init() } diff --git a/flyteidl/gen/pb-go/flyteidl/admin/node_execution.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/node_execution.pb.go index b4d9cb8c89..65508713e1 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/node_execution.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/node_execution.pb.go @@ -509,6 +509,7 @@ type NodeExecutionClosure struct { // *NodeExecutionClosure_OutputUri // *NodeExecutionClosure_Error // *NodeExecutionClosure_OutputData + // *NodeExecutionClosure_FullOutputs OutputResult isNodeExecutionClosure_OutputResult `protobuf_oneof:"output_result"` // The last recorded phase for this node execution. Phase core.NodeExecution_Phase `protobuf:"varint,3,opt,name=phase,proto3,enum=flyteidl.core.NodeExecution_Phase" json:"phase,omitempty"` @@ -598,6 +599,13 @@ func (x *NodeExecutionClosure) GetOutputData() *core.LiteralMap { return nil } +func (x *NodeExecutionClosure) GetFullOutputs() *core.OutputData { + if x, ok := x.GetOutputResult().(*NodeExecutionClosure_FullOutputs); ok { + return x.FullOutputs + } + return nil +} + func (x *NodeExecutionClosure) GetPhase() core.NodeExecution_Phase { if x != nil { return x.Phase @@ -693,12 +701,19 @@ type NodeExecutionClosure_OutputData struct { OutputData *core.LiteralMap `protobuf:"bytes,10,opt,name=output_data,json=outputData,proto3,oneof"` } +type NodeExecutionClosure_FullOutputs struct { + // Raw output data produced by this node execution. + FullOutputs *core.OutputData `protobuf:"bytes,13,opt,name=full_outputs,json=fullOutputs,proto3,oneof"` +} + func (*NodeExecutionClosure_OutputUri) isNodeExecutionClosure_OutputResult() {} func (*NodeExecutionClosure_Error) isNodeExecutionClosure_OutputResult() {} func (*NodeExecutionClosure_OutputData) isNodeExecutionClosure_OutputResult() {} +func (*NodeExecutionClosure_FullOutputs) isNodeExecutionClosure_OutputResult() {} + type isNodeExecutionClosure_TargetMetadata interface { isNodeExecutionClosure_TargetMetadata() } @@ -966,9 +981,19 @@ type NodeExecutionGetDataResponse struct { // Deprecated: Marked as deprecated in flyteidl/admin/node_execution.proto. Outputs *UrlBlob `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` // Full_inputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use input_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/node_execution.proto. FullInputs *core.LiteralMap `protobuf:"bytes,3,opt,name=full_inputs,json=fullInputs,proto3" json:"full_inputs,omitempty"` // Full_outputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use output_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/node_execution.proto. FullOutputs *core.LiteralMap `protobuf:"bytes,4,opt,name=full_outputs,json=fullOutputs,proto3" json:"full_outputs,omitempty"` + // InputData will only be populated if they are under a configured size threshold. + InputData *core.InputData `protobuf:"bytes,5,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"` + // OutputData will only be populated if they are under a configured size threshold. + OutputData *core.OutputData `protobuf:"bytes,6,opt,name=output_data,json=outputData,proto3" json:"output_data,omitempty"` // Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. DynamicWorkflow *DynamicWorkflowNodeMetadata `protobuf:"bytes,16,opt,name=dynamic_workflow,json=dynamicWorkflow,proto3" json:"dynamic_workflow,omitempty"` FlyteUrls *FlyteURLs `protobuf:"bytes,17,opt,name=flyte_urls,json=flyteUrls,proto3" json:"flyte_urls,omitempty"` @@ -1022,6 +1047,7 @@ func (x *NodeExecutionGetDataResponse) GetOutputs() *UrlBlob { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/node_execution.proto. func (x *NodeExecutionGetDataResponse) GetFullInputs() *core.LiteralMap { if x != nil { return x.FullInputs @@ -1029,6 +1055,7 @@ func (x *NodeExecutionGetDataResponse) GetFullInputs() *core.LiteralMap { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/node_execution.proto. func (x *NodeExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { if x != nil { return x.FullOutputs @@ -1036,6 +1063,20 @@ func (x *NodeExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { return nil } +func (x *NodeExecutionGetDataResponse) GetInputData() *core.InputData { + if x != nil { + return x.InputData + } + return nil +} + +func (x *NodeExecutionGetDataResponse) GetOutputData() *core.OutputData { + if x != nil { + return x.OutputData + } + return nil +} + func (x *NodeExecutionGetDataResponse) GetDynamicWorkflow() *DynamicWorkflowNodeMetadata { if x != nil { return x.DynamicWorkflow @@ -1237,7 +1278,7 @@ var file_flyteidl_admin_node_execution_proto_rawDesc = []byte{ 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0xf6, 0x05, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x6e, 0x22, 0xb6, 0x06, 0x0a, 0x14, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, @@ -1248,7 +1289,11 @@ var file_flyteidl_admin_node_execution_proto_rawDesc = []byte{ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, + 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x66, 0x75, 0x6c, + 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, @@ -1321,7 +1366,7 @@ var file_flyteidl_admin_node_execution_proto_rawDesc = []byte{ 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0x96, 0x03, 0x0a, 0x1c, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0x93, 0x04, 0x0a, 0x1c, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, @@ -1330,49 +1375,57 @@ var file_flyteidl_admin_node_execution_proto_rawDesc = []byte{ 0x73, 0x12, 0x35, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x72, 0x6c, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x09, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x55, 0x72, 0x6c, 0x73, 0x22, 0x57, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0x72, 0x0a, - 0x1b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x11, - 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x52, - 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x42, 0xbe, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, - 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x66, 0x75, + 0x6c, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x66, + 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x56, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x09, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x55, 0x72, 0x6c, + 0x73, 0x22, 0x57, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4e, + 0x6f, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0x72, 0x0a, 0x1b, 0x44, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x11, 0x63, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x52, 0x10, 0x63, 0x6f, + 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0xbe, + 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, + 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, + 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, + 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, + 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1409,15 +1462,17 @@ var file_flyteidl_admin_node_execution_proto_goTypes = []interface{}{ (*core.TaskExecutionIdentifier)(nil), // 17: flyteidl.core.TaskExecutionIdentifier (*core.ExecutionError)(nil), // 18: flyteidl.core.ExecutionError (*core.LiteralMap)(nil), // 19: flyteidl.core.LiteralMap - (core.NodeExecution_Phase)(0), // 20: flyteidl.core.NodeExecution.Phase - (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 22: google.protobuf.Duration - (core.CatalogCacheStatus)(0), // 23: flyteidl.core.CatalogCacheStatus - (*core.CatalogMetadata)(nil), // 24: flyteidl.core.CatalogMetadata - (*core.Identifier)(nil), // 25: flyteidl.core.Identifier - (*core.CompiledWorkflowClosure)(nil), // 26: flyteidl.core.CompiledWorkflowClosure - (*UrlBlob)(nil), // 27: flyteidl.admin.UrlBlob - (*FlyteURLs)(nil), // 28: flyteidl.admin.FlyteURLs + (*core.OutputData)(nil), // 20: flyteidl.core.OutputData + (core.NodeExecution_Phase)(0), // 21: flyteidl.core.NodeExecution.Phase + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 23: google.protobuf.Duration + (core.CatalogCacheStatus)(0), // 24: flyteidl.core.CatalogCacheStatus + (*core.CatalogMetadata)(nil), // 25: flyteidl.core.CatalogMetadata + (*core.Identifier)(nil), // 26: flyteidl.core.Identifier + (*core.CompiledWorkflowClosure)(nil), // 27: flyteidl.core.CompiledWorkflowClosure + (*UrlBlob)(nil), // 28: flyteidl.admin.UrlBlob + (*core.InputData)(nil), // 29: flyteidl.core.InputData + (*FlyteURLs)(nil), // 30: flyteidl.admin.FlyteURLs } var file_flyteidl_admin_node_execution_proto_depIdxs = []int32{ 14, // 0: flyteidl.admin.NodeExecutionGetRequest.id:type_name -> flyteidl.core.NodeExecutionIdentifier @@ -1431,32 +1486,35 @@ var file_flyteidl_admin_node_execution_proto_depIdxs = []int32{ 3, // 8: flyteidl.admin.NodeExecutionList.node_executions:type_name -> flyteidl.admin.NodeExecution 18, // 9: flyteidl.admin.NodeExecutionClosure.error:type_name -> flyteidl.core.ExecutionError 19, // 10: flyteidl.admin.NodeExecutionClosure.output_data:type_name -> flyteidl.core.LiteralMap - 20, // 11: flyteidl.admin.NodeExecutionClosure.phase:type_name -> flyteidl.core.NodeExecution.Phase - 21, // 12: flyteidl.admin.NodeExecutionClosure.started_at:type_name -> google.protobuf.Timestamp - 22, // 13: flyteidl.admin.NodeExecutionClosure.duration:type_name -> google.protobuf.Duration - 21, // 14: flyteidl.admin.NodeExecutionClosure.created_at:type_name -> google.protobuf.Timestamp - 21, // 15: flyteidl.admin.NodeExecutionClosure.updated_at:type_name -> google.protobuf.Timestamp - 7, // 16: flyteidl.admin.NodeExecutionClosure.workflow_node_metadata:type_name -> flyteidl.admin.WorkflowNodeMetadata - 8, // 17: flyteidl.admin.NodeExecutionClosure.task_node_metadata:type_name -> flyteidl.admin.TaskNodeMetadata - 15, // 18: flyteidl.admin.WorkflowNodeMetadata.executionId:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 23, // 19: flyteidl.admin.TaskNodeMetadata.cache_status:type_name -> flyteidl.core.CatalogCacheStatus - 24, // 20: flyteidl.admin.TaskNodeMetadata.catalog_key:type_name -> flyteidl.core.CatalogMetadata - 25, // 21: flyteidl.admin.DynamicWorkflowNodeMetadata.id:type_name -> flyteidl.core.Identifier - 26, // 22: flyteidl.admin.DynamicWorkflowNodeMetadata.compiled_workflow:type_name -> flyteidl.core.CompiledWorkflowClosure - 14, // 23: flyteidl.admin.NodeExecutionGetDataRequest.id:type_name -> flyteidl.core.NodeExecutionIdentifier - 27, // 24: flyteidl.admin.NodeExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob - 27, // 25: flyteidl.admin.NodeExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob - 19, // 26: flyteidl.admin.NodeExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap - 19, // 27: flyteidl.admin.NodeExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap - 9, // 28: flyteidl.admin.NodeExecutionGetDataResponse.dynamic_workflow:type_name -> flyteidl.admin.DynamicWorkflowNodeMetadata - 28, // 29: flyteidl.admin.NodeExecutionGetDataResponse.flyte_urls:type_name -> flyteidl.admin.FlyteURLs - 14, // 30: flyteidl.admin.GetDynamicNodeWorkflowRequest.id:type_name -> flyteidl.core.NodeExecutionIdentifier - 26, // 31: flyteidl.admin.DynamicNodeWorkflowResponse.compiled_workflow:type_name -> flyteidl.core.CompiledWorkflowClosure - 32, // [32:32] is the sub-list for method output_type - 32, // [32:32] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name + 20, // 11: flyteidl.admin.NodeExecutionClosure.full_outputs:type_name -> flyteidl.core.OutputData + 21, // 12: flyteidl.admin.NodeExecutionClosure.phase:type_name -> flyteidl.core.NodeExecution.Phase + 22, // 13: flyteidl.admin.NodeExecutionClosure.started_at:type_name -> google.protobuf.Timestamp + 23, // 14: flyteidl.admin.NodeExecutionClosure.duration:type_name -> google.protobuf.Duration + 22, // 15: flyteidl.admin.NodeExecutionClosure.created_at:type_name -> google.protobuf.Timestamp + 22, // 16: flyteidl.admin.NodeExecutionClosure.updated_at:type_name -> google.protobuf.Timestamp + 7, // 17: flyteidl.admin.NodeExecutionClosure.workflow_node_metadata:type_name -> flyteidl.admin.WorkflowNodeMetadata + 8, // 18: flyteidl.admin.NodeExecutionClosure.task_node_metadata:type_name -> flyteidl.admin.TaskNodeMetadata + 15, // 19: flyteidl.admin.WorkflowNodeMetadata.executionId:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 24, // 20: flyteidl.admin.TaskNodeMetadata.cache_status:type_name -> flyteidl.core.CatalogCacheStatus + 25, // 21: flyteidl.admin.TaskNodeMetadata.catalog_key:type_name -> flyteidl.core.CatalogMetadata + 26, // 22: flyteidl.admin.DynamicWorkflowNodeMetadata.id:type_name -> flyteidl.core.Identifier + 27, // 23: flyteidl.admin.DynamicWorkflowNodeMetadata.compiled_workflow:type_name -> flyteidl.core.CompiledWorkflowClosure + 14, // 24: flyteidl.admin.NodeExecutionGetDataRequest.id:type_name -> flyteidl.core.NodeExecutionIdentifier + 28, // 25: flyteidl.admin.NodeExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob + 28, // 26: flyteidl.admin.NodeExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob + 19, // 27: flyteidl.admin.NodeExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap + 19, // 28: flyteidl.admin.NodeExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap + 29, // 29: flyteidl.admin.NodeExecutionGetDataResponse.input_data:type_name -> flyteidl.core.InputData + 20, // 30: flyteidl.admin.NodeExecutionGetDataResponse.output_data:type_name -> flyteidl.core.OutputData + 9, // 31: flyteidl.admin.NodeExecutionGetDataResponse.dynamic_workflow:type_name -> flyteidl.admin.DynamicWorkflowNodeMetadata + 30, // 32: flyteidl.admin.NodeExecutionGetDataResponse.flyte_urls:type_name -> flyteidl.admin.FlyteURLs + 14, // 33: flyteidl.admin.GetDynamicNodeWorkflowRequest.id:type_name -> flyteidl.core.NodeExecutionIdentifier + 27, // 34: flyteidl.admin.DynamicNodeWorkflowResponse.compiled_workflow:type_name -> flyteidl.core.CompiledWorkflowClosure + 35, // [35:35] is the sub-list for method output_type + 35, // [35:35] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_flyteidl_admin_node_execution_proto_init() } @@ -1639,6 +1697,7 @@ func file_flyteidl_admin_node_execution_proto_init() { (*NodeExecutionClosure_OutputUri)(nil), (*NodeExecutionClosure_Error)(nil), (*NodeExecutionClosure_OutputData)(nil), + (*NodeExecutionClosure_FullOutputs)(nil), (*NodeExecutionClosure_WorkflowNodeMetadata)(nil), (*NodeExecutionClosure_TaskNodeMetadata)(nil), } diff --git a/flyteidl/gen/pb-go/flyteidl/admin/task_execution.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/task_execution.pb.go index f32269ae0f..d8abee12a8 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/task_execution.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/task_execution.pb.go @@ -317,6 +317,7 @@ type TaskExecutionClosure struct { // *TaskExecutionClosure_OutputUri // *TaskExecutionClosure_Error // *TaskExecutionClosure_OutputData + // *TaskExecutionClosure_FullOutputs OutputResult isTaskExecutionClosure_OutputResult `protobuf_oneof:"output_result"` // The last recorded phase for this task execution. Phase core.TaskExecution_Phase `protobuf:"varint,3,opt,name=phase,proto3,enum=flyteidl.core.TaskExecution_Phase" json:"phase,omitempty"` @@ -410,6 +411,13 @@ func (x *TaskExecutionClosure) GetOutputData() *core.LiteralMap { return nil } +func (x *TaskExecutionClosure) GetFullOutputs() *core.OutputData { + if x, ok := x.GetOutputResult().(*TaskExecutionClosure_FullOutputs); ok { + return x.FullOutputs + } + return nil +} + func (x *TaskExecutionClosure) GetPhase() core.TaskExecution_Phase { if x != nil { return x.Phase @@ -519,12 +527,19 @@ type TaskExecutionClosure_OutputData struct { OutputData *core.LiteralMap `protobuf:"bytes,12,opt,name=output_data,json=outputData,proto3,oneof"` } +type TaskExecutionClosure_FullOutputs struct { + // Raw output data produced by this task execution. + FullOutputs *core.OutputData `protobuf:"bytes,19,opt,name=full_outputs,json=fullOutputs,proto3,oneof"` +} + func (*TaskExecutionClosure_OutputUri) isTaskExecutionClosure_OutputResult() {} func (*TaskExecutionClosure_Error) isTaskExecutionClosure_OutputResult() {} func (*TaskExecutionClosure_OutputData) isTaskExecutionClosure_OutputResult() {} +func (*TaskExecutionClosure_FullOutputs) isTaskExecutionClosure_OutputResult() {} + // Reason is a single message annotated with a timestamp to indicate the instant the reason occurred. type Reason struct { state protoimpl.MessageState @@ -651,9 +666,19 @@ type TaskExecutionGetDataResponse struct { // Deprecated: Marked as deprecated in flyteidl/admin/task_execution.proto. Outputs *UrlBlob `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` // Full_inputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use input_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/task_execution.proto. FullInputs *core.LiteralMap `protobuf:"bytes,3,opt,name=full_inputs,json=fullInputs,proto3" json:"full_inputs,omitempty"` // Full_outputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use output_data instead. + // + // Deprecated: Marked as deprecated in flyteidl/admin/task_execution.proto. FullOutputs *core.LiteralMap `protobuf:"bytes,4,opt,name=full_outputs,json=fullOutputs,proto3" json:"full_outputs,omitempty"` + // InputData will only be populated if they are under a configured size threshold. + InputData *core.InputData `protobuf:"bytes,6,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"` + // OutputData will only be populated if they are under a configured size threshold. + OutputData *core.OutputData `protobuf:"bytes,7,opt,name=output_data,json=outputData,proto3" json:"output_data,omitempty"` // flyte tiny url to fetch a core.LiteralMap of task execution's IO // Deck will be empty for task FlyteUrls *FlyteURLs `protobuf:"bytes,5,opt,name=flyte_urls,json=flyteUrls,proto3" json:"flyte_urls,omitempty"` @@ -707,6 +732,7 @@ func (x *TaskExecutionGetDataResponse) GetOutputs() *UrlBlob { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/task_execution.proto. func (x *TaskExecutionGetDataResponse) GetFullInputs() *core.LiteralMap { if x != nil { return x.FullInputs @@ -714,6 +740,7 @@ func (x *TaskExecutionGetDataResponse) GetFullInputs() *core.LiteralMap { return nil } +// Deprecated: Marked as deprecated in flyteidl/admin/task_execution.proto. func (x *TaskExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { if x != nil { return x.FullOutputs @@ -721,6 +748,20 @@ func (x *TaskExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { return nil } +func (x *TaskExecutionGetDataResponse) GetInputData() *core.InputData { + if x != nil { + return x.InputData + } + return nil +} + +func (x *TaskExecutionGetDataResponse) GetOutputData() *core.OutputData { + if x != nil { + return x.OutputData + } + return nil +} + func (x *TaskExecutionGetDataResponse) GetFlyteUrls() *FlyteURLs { if x != nil { return x.FlyteUrls @@ -788,7 +829,7 @@ var file_flyteidl_admin_task_execution_proto_rawDesc = []byte{ 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9c, 0x06, 0x0a, 0x14, 0x54, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xdc, 0x06, 0x0a, 0x14, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x6f, @@ -800,7 +841,11 @@ var file_flyteidl_admin_task_execution_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x61, 0x12, 0x3e, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6c, @@ -850,7 +895,7 @@ var file_flyteidl_admin_task_execution_proto_rawDesc = []byte{ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, - 0x64, 0x22, 0xbe, 0x02, 0x0a, 0x1c, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x64, 0x22, 0xbb, 0x03, 0x0a, 0x1c, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, @@ -858,31 +903,39 @@ var file_flyteidl_admin_task_execution_proto_rawDesc = []byte{ 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x72, 0x6c, 0x42, 0x6c, 0x6f, - 0x62, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3a, + 0x62, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0a, - 0x66, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x66, 0x75, - 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0b, 0x66, 0x75, 0x6c, - 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x09, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x55, 0x72, - 0x6c, 0x73, 0x42, 0xbe, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, - 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x40, + 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x37, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0b, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x5f, 0x75, + 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x55, 0x52, 0x4c, 0x73, 0x52, 0x09, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x42, + 0xbe, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, + 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, + 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -912,14 +965,16 @@ var file_flyteidl_admin_task_execution_proto_goTypes = []interface{}{ (*Sort)(nil), // 10: flyteidl.admin.Sort (*core.ExecutionError)(nil), // 11: flyteidl.core.ExecutionError (*core.LiteralMap)(nil), // 12: flyteidl.core.LiteralMap - (core.TaskExecution_Phase)(0), // 13: flyteidl.core.TaskExecution.Phase - (*core.TaskLog)(nil), // 14: flyteidl.core.TaskLog - (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 16: google.protobuf.Duration - (*structpb.Struct)(nil), // 17: google.protobuf.Struct - (*event.TaskExecutionMetadata)(nil), // 18: flyteidl.event.TaskExecutionMetadata - (*UrlBlob)(nil), // 19: flyteidl.admin.UrlBlob - (*FlyteURLs)(nil), // 20: flyteidl.admin.FlyteURLs + (*core.OutputData)(nil), // 13: flyteidl.core.OutputData + (core.TaskExecution_Phase)(0), // 14: flyteidl.core.TaskExecution.Phase + (*core.TaskLog)(nil), // 15: flyteidl.core.TaskLog + (*timestamppb.Timestamp)(nil), // 16: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 17: google.protobuf.Duration + (*structpb.Struct)(nil), // 18: google.protobuf.Struct + (*event.TaskExecutionMetadata)(nil), // 19: flyteidl.event.TaskExecutionMetadata + (*UrlBlob)(nil), // 20: flyteidl.admin.UrlBlob + (*core.InputData)(nil), // 21: flyteidl.core.InputData + (*FlyteURLs)(nil), // 22: flyteidl.admin.FlyteURLs } var file_flyteidl_admin_task_execution_proto_depIdxs = []int32{ 8, // 0: flyteidl.admin.TaskExecutionGetRequest.id:type_name -> flyteidl.core.TaskExecutionIdentifier @@ -930,27 +985,30 @@ var file_flyteidl_admin_task_execution_proto_depIdxs = []int32{ 2, // 5: flyteidl.admin.TaskExecutionList.task_executions:type_name -> flyteidl.admin.TaskExecution 11, // 6: flyteidl.admin.TaskExecutionClosure.error:type_name -> flyteidl.core.ExecutionError 12, // 7: flyteidl.admin.TaskExecutionClosure.output_data:type_name -> flyteidl.core.LiteralMap - 13, // 8: flyteidl.admin.TaskExecutionClosure.phase:type_name -> flyteidl.core.TaskExecution.Phase - 14, // 9: flyteidl.admin.TaskExecutionClosure.logs:type_name -> flyteidl.core.TaskLog - 15, // 10: flyteidl.admin.TaskExecutionClosure.started_at:type_name -> google.protobuf.Timestamp - 16, // 11: flyteidl.admin.TaskExecutionClosure.duration:type_name -> google.protobuf.Duration - 15, // 12: flyteidl.admin.TaskExecutionClosure.created_at:type_name -> google.protobuf.Timestamp - 15, // 13: flyteidl.admin.TaskExecutionClosure.updated_at:type_name -> google.protobuf.Timestamp - 17, // 14: flyteidl.admin.TaskExecutionClosure.custom_info:type_name -> google.protobuf.Struct - 18, // 15: flyteidl.admin.TaskExecutionClosure.metadata:type_name -> flyteidl.event.TaskExecutionMetadata - 5, // 16: flyteidl.admin.TaskExecutionClosure.reasons:type_name -> flyteidl.admin.Reason - 15, // 17: flyteidl.admin.Reason.occurred_at:type_name -> google.protobuf.Timestamp - 8, // 18: flyteidl.admin.TaskExecutionGetDataRequest.id:type_name -> flyteidl.core.TaskExecutionIdentifier - 19, // 19: flyteidl.admin.TaskExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob - 19, // 20: flyteidl.admin.TaskExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob - 12, // 21: flyteidl.admin.TaskExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap - 12, // 22: flyteidl.admin.TaskExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap - 20, // 23: flyteidl.admin.TaskExecutionGetDataResponse.flyte_urls:type_name -> flyteidl.admin.FlyteURLs - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 13, // 8: flyteidl.admin.TaskExecutionClosure.full_outputs:type_name -> flyteidl.core.OutputData + 14, // 9: flyteidl.admin.TaskExecutionClosure.phase:type_name -> flyteidl.core.TaskExecution.Phase + 15, // 10: flyteidl.admin.TaskExecutionClosure.logs:type_name -> flyteidl.core.TaskLog + 16, // 11: flyteidl.admin.TaskExecutionClosure.started_at:type_name -> google.protobuf.Timestamp + 17, // 12: flyteidl.admin.TaskExecutionClosure.duration:type_name -> google.protobuf.Duration + 16, // 13: flyteidl.admin.TaskExecutionClosure.created_at:type_name -> google.protobuf.Timestamp + 16, // 14: flyteidl.admin.TaskExecutionClosure.updated_at:type_name -> google.protobuf.Timestamp + 18, // 15: flyteidl.admin.TaskExecutionClosure.custom_info:type_name -> google.protobuf.Struct + 19, // 16: flyteidl.admin.TaskExecutionClosure.metadata:type_name -> flyteidl.event.TaskExecutionMetadata + 5, // 17: flyteidl.admin.TaskExecutionClosure.reasons:type_name -> flyteidl.admin.Reason + 16, // 18: flyteidl.admin.Reason.occurred_at:type_name -> google.protobuf.Timestamp + 8, // 19: flyteidl.admin.TaskExecutionGetDataRequest.id:type_name -> flyteidl.core.TaskExecutionIdentifier + 20, // 20: flyteidl.admin.TaskExecutionGetDataResponse.inputs:type_name -> flyteidl.admin.UrlBlob + 20, // 21: flyteidl.admin.TaskExecutionGetDataResponse.outputs:type_name -> flyteidl.admin.UrlBlob + 12, // 22: flyteidl.admin.TaskExecutionGetDataResponse.full_inputs:type_name -> flyteidl.core.LiteralMap + 12, // 23: flyteidl.admin.TaskExecutionGetDataResponse.full_outputs:type_name -> flyteidl.core.LiteralMap + 21, // 24: flyteidl.admin.TaskExecutionGetDataResponse.input_data:type_name -> flyteidl.core.InputData + 13, // 25: flyteidl.admin.TaskExecutionGetDataResponse.output_data:type_name -> flyteidl.core.OutputData + 22, // 26: flyteidl.admin.TaskExecutionGetDataResponse.flyte_urls:type_name -> flyteidl.admin.FlyteURLs + 27, // [27:27] is the sub-list for method output_type + 27, // [27:27] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_flyteidl_admin_task_execution_proto_init() } @@ -1061,6 +1119,7 @@ func file_flyteidl_admin_task_execution_proto_init() { (*TaskExecutionClosure_OutputUri)(nil), (*TaskExecutionClosure_Error)(nil), (*TaskExecutionClosure_OutputData)(nil), + (*TaskExecutionClosure_FullOutputs)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go index 40b24e30a5..f28564b256 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go @@ -982,6 +982,106 @@ func (x *LiteralMap) GetLiterals() map[string]*Literal { return nil } +// InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to +// their values. +type InputData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A map of input variables to their values. + Inputs *LiteralMap `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` +} + +func (x *InputData) Reset() { + *x = InputData{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_literals_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InputData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InputData) ProtoMessage() {} + +func (x *InputData) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_literals_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InputData.ProtoReflect.Descriptor instead. +func (*InputData) Descriptor() ([]byte, []int) { + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{13} +} + +func (x *InputData) GetInputs() *LiteralMap { + if x != nil { + return x.Inputs + } + return nil +} + +// OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to +// their values. +type OutputData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A map of output variables to their values. + Outputs *LiteralMap `protobuf:"bytes,1,opt,name=outputs,proto3" json:"outputs,omitempty"` +} + +func (x *OutputData) Reset() { + *x = OutputData{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_literals_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutputData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutputData) ProtoMessage() {} + +func (x *OutputData) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_literals_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutputData.ProtoReflect.Descriptor instead. +func (*OutputData) Descriptor() ([]byte, []int) { + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{14} +} + +func (x *OutputData) GetOutputs() *LiteralMap { + if x != nil { + return x.Outputs + } + return nil +} + // A collection of BindingData items. type BindingDataCollection struct { state protoimpl.MessageState @@ -994,7 +1094,7 @@ type BindingDataCollection struct { func (x *BindingDataCollection) Reset() { *x = BindingDataCollection{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[13] + mi := &file_flyteidl_core_literals_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1007,7 +1107,7 @@ func (x *BindingDataCollection) String() string { func (*BindingDataCollection) ProtoMessage() {} func (x *BindingDataCollection) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[13] + mi := &file_flyteidl_core_literals_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1020,7 +1120,7 @@ func (x *BindingDataCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingDataCollection.ProtoReflect.Descriptor instead. func (*BindingDataCollection) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{13} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{15} } func (x *BindingDataCollection) GetBindings() []*BindingData { @@ -1042,7 +1142,7 @@ type BindingDataMap struct { func (x *BindingDataMap) Reset() { *x = BindingDataMap{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[14] + mi := &file_flyteidl_core_literals_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1055,7 +1155,7 @@ func (x *BindingDataMap) String() string { func (*BindingDataMap) ProtoMessage() {} func (x *BindingDataMap) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[14] + mi := &file_flyteidl_core_literals_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1068,7 +1168,7 @@ func (x *BindingDataMap) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingDataMap.ProtoReflect.Descriptor instead. func (*BindingDataMap) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{14} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{16} } func (x *BindingDataMap) GetBindings() map[string]*BindingData { @@ -1089,7 +1189,7 @@ type UnionInfo struct { func (x *UnionInfo) Reset() { *x = UnionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[15] + mi := &file_flyteidl_core_literals_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1102,7 +1202,7 @@ func (x *UnionInfo) String() string { func (*UnionInfo) ProtoMessage() {} func (x *UnionInfo) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[15] + mi := &file_flyteidl_core_literals_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1115,7 +1215,7 @@ func (x *UnionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UnionInfo.ProtoReflect.Descriptor instead. func (*UnionInfo) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{15} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{17} } func (x *UnionInfo) GetTargetType() *LiteralType { @@ -1144,7 +1244,7 @@ type BindingData struct { func (x *BindingData) Reset() { *x = BindingData{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[16] + mi := &file_flyteidl_core_literals_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1257,7 @@ func (x *BindingData) String() string { func (*BindingData) ProtoMessage() {} func (x *BindingData) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[16] + mi := &file_flyteidl_core_literals_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1270,7 @@ func (x *BindingData) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingData.ProtoReflect.Descriptor instead. func (*BindingData) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{16} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{18} } func (m *BindingData) GetValue() isBindingData_Value { @@ -1263,7 +1363,7 @@ type Binding struct { func (x *Binding) Reset() { *x = Binding{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[17] + mi := &file_flyteidl_core_literals_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1276,7 +1376,7 @@ func (x *Binding) String() string { func (*Binding) ProtoMessage() {} func (x *Binding) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[17] + mi := &file_flyteidl_core_literals_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1289,7 +1389,7 @@ func (x *Binding) ProtoReflect() protoreflect.Message { // Deprecated: Use Binding.ProtoReflect.Descriptor instead. func (*Binding) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{17} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{19} } func (x *Binding) GetVar() string { @@ -1321,7 +1421,7 @@ type KeyValuePair struct { func (x *KeyValuePair) Reset() { *x = KeyValuePair{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[18] + mi := &file_flyteidl_core_literals_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1334,7 +1434,7 @@ func (x *KeyValuePair) String() string { func (*KeyValuePair) ProtoMessage() {} func (x *KeyValuePair) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[18] + mi := &file_flyteidl_core_literals_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1347,7 +1447,7 @@ func (x *KeyValuePair) ProtoReflect() protoreflect.Message { // Deprecated: Use KeyValuePair.ProtoReflect.Descriptor instead. func (*KeyValuePair) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{18} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{20} } func (x *KeyValuePair) GetKey() string { @@ -1378,7 +1478,7 @@ type RetryStrategy struct { func (x *RetryStrategy) Reset() { *x = RetryStrategy{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[19] + mi := &file_flyteidl_core_literals_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1391,7 +1491,7 @@ func (x *RetryStrategy) String() string { func (*RetryStrategy) ProtoMessage() {} func (x *RetryStrategy) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[19] + mi := &file_flyteidl_core_literals_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1404,7 +1504,7 @@ func (x *RetryStrategy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryStrategy.ProtoReflect.Descriptor instead. func (*RetryStrategy) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{19} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{21} } func (x *RetryStrategy) GetRetries() uint32 { @@ -1549,70 +1649,78 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, - 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a, 0x09, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x41, 0x0a, 0x0a, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, + 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, + 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x47, 0x0a, 0x09, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, + 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, + 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, + 0x03, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, - 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, + 0x12, 0x2e, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, + 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, - 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, - 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, - 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, - 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x61, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, + 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, + 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, + 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, + 0x72, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, + 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1627,7 +1735,7 @@ func file_flyteidl_core_literals_proto_rawDescGZIP() []byte { return file_flyteidl_core_literals_proto_rawDescData } -var file_flyteidl_core_literals_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_flyteidl_core_literals_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_flyteidl_core_literals_proto_goTypes = []interface{}{ (*Primitive)(nil), // 0: flyteidl.core.Primitive (*Void)(nil), // 1: flyteidl.core.Void @@ -1642,67 +1750,71 @@ var file_flyteidl_core_literals_proto_goTypes = []interface{}{ (*Literal)(nil), // 10: flyteidl.core.Literal (*LiteralCollection)(nil), // 11: flyteidl.core.LiteralCollection (*LiteralMap)(nil), // 12: flyteidl.core.LiteralMap - (*BindingDataCollection)(nil), // 13: flyteidl.core.BindingDataCollection - (*BindingDataMap)(nil), // 14: flyteidl.core.BindingDataMap - (*UnionInfo)(nil), // 15: flyteidl.core.UnionInfo - (*BindingData)(nil), // 16: flyteidl.core.BindingData - (*Binding)(nil), // 17: flyteidl.core.Binding - (*KeyValuePair)(nil), // 18: flyteidl.core.KeyValuePair - (*RetryStrategy)(nil), // 19: flyteidl.core.RetryStrategy - nil, // 20: flyteidl.core.Literal.MetadataEntry - nil, // 21: flyteidl.core.LiteralMap.LiteralsEntry - nil, // 22: flyteidl.core.BindingDataMap.BindingsEntry - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*BlobType)(nil), // 25: flyteidl.core.BlobType - (*SchemaType)(nil), // 26: flyteidl.core.SchemaType - (*LiteralType)(nil), // 27: flyteidl.core.LiteralType - (*StructuredDatasetType)(nil), // 28: flyteidl.core.StructuredDatasetType - (*Error)(nil), // 29: flyteidl.core.Error - (*structpb.Struct)(nil), // 30: google.protobuf.Struct - (*OutputReference)(nil), // 31: flyteidl.core.OutputReference + (*InputData)(nil), // 13: flyteidl.core.InputData + (*OutputData)(nil), // 14: flyteidl.core.OutputData + (*BindingDataCollection)(nil), // 15: flyteidl.core.BindingDataCollection + (*BindingDataMap)(nil), // 16: flyteidl.core.BindingDataMap + (*UnionInfo)(nil), // 17: flyteidl.core.UnionInfo + (*BindingData)(nil), // 18: flyteidl.core.BindingData + (*Binding)(nil), // 19: flyteidl.core.Binding + (*KeyValuePair)(nil), // 20: flyteidl.core.KeyValuePair + (*RetryStrategy)(nil), // 21: flyteidl.core.RetryStrategy + nil, // 22: flyteidl.core.Literal.MetadataEntry + nil, // 23: flyteidl.core.LiteralMap.LiteralsEntry + nil, // 24: flyteidl.core.BindingDataMap.BindingsEntry + (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 26: google.protobuf.Duration + (*BlobType)(nil), // 27: flyteidl.core.BlobType + (*SchemaType)(nil), // 28: flyteidl.core.SchemaType + (*LiteralType)(nil), // 29: flyteidl.core.LiteralType + (*StructuredDatasetType)(nil), // 30: flyteidl.core.StructuredDatasetType + (*Error)(nil), // 31: flyteidl.core.Error + (*structpb.Struct)(nil), // 32: google.protobuf.Struct + (*OutputReference)(nil), // 33: flyteidl.core.OutputReference } var file_flyteidl_core_literals_proto_depIdxs = []int32{ - 23, // 0: flyteidl.core.Primitive.datetime:type_name -> google.protobuf.Timestamp - 24, // 1: flyteidl.core.Primitive.duration:type_name -> google.protobuf.Duration + 25, // 0: flyteidl.core.Primitive.datetime:type_name -> google.protobuf.Timestamp + 26, // 1: flyteidl.core.Primitive.duration:type_name -> google.protobuf.Duration 3, // 2: flyteidl.core.Blob.metadata:type_name -> flyteidl.core.BlobMetadata - 25, // 3: flyteidl.core.BlobMetadata.type:type_name -> flyteidl.core.BlobType - 26, // 4: flyteidl.core.Schema.type:type_name -> flyteidl.core.SchemaType + 27, // 3: flyteidl.core.BlobMetadata.type:type_name -> flyteidl.core.BlobType + 28, // 4: flyteidl.core.Schema.type:type_name -> flyteidl.core.SchemaType 10, // 5: flyteidl.core.Union.value:type_name -> flyteidl.core.Literal - 27, // 6: flyteidl.core.Union.type:type_name -> flyteidl.core.LiteralType - 28, // 7: flyteidl.core.StructuredDatasetMetadata.structured_dataset_type:type_name -> flyteidl.core.StructuredDatasetType + 29, // 6: flyteidl.core.Union.type:type_name -> flyteidl.core.LiteralType + 30, // 7: flyteidl.core.StructuredDatasetMetadata.structured_dataset_type:type_name -> flyteidl.core.StructuredDatasetType 7, // 8: flyteidl.core.StructuredDataset.metadata:type_name -> flyteidl.core.StructuredDatasetMetadata 0, // 9: flyteidl.core.Scalar.primitive:type_name -> flyteidl.core.Primitive 2, // 10: flyteidl.core.Scalar.blob:type_name -> flyteidl.core.Blob 4, // 11: flyteidl.core.Scalar.binary:type_name -> flyteidl.core.Binary 5, // 12: flyteidl.core.Scalar.schema:type_name -> flyteidl.core.Schema 1, // 13: flyteidl.core.Scalar.none_type:type_name -> flyteidl.core.Void - 29, // 14: flyteidl.core.Scalar.error:type_name -> flyteidl.core.Error - 30, // 15: flyteidl.core.Scalar.generic:type_name -> google.protobuf.Struct + 31, // 14: flyteidl.core.Scalar.error:type_name -> flyteidl.core.Error + 32, // 15: flyteidl.core.Scalar.generic:type_name -> google.protobuf.Struct 8, // 16: flyteidl.core.Scalar.structured_dataset:type_name -> flyteidl.core.StructuredDataset 6, // 17: flyteidl.core.Scalar.union:type_name -> flyteidl.core.Union 9, // 18: flyteidl.core.Literal.scalar:type_name -> flyteidl.core.Scalar 11, // 19: flyteidl.core.Literal.collection:type_name -> flyteidl.core.LiteralCollection 12, // 20: flyteidl.core.Literal.map:type_name -> flyteidl.core.LiteralMap - 20, // 21: flyteidl.core.Literal.metadata:type_name -> flyteidl.core.Literal.MetadataEntry + 22, // 21: flyteidl.core.Literal.metadata:type_name -> flyteidl.core.Literal.MetadataEntry 10, // 22: flyteidl.core.LiteralCollection.literals:type_name -> flyteidl.core.Literal - 21, // 23: flyteidl.core.LiteralMap.literals:type_name -> flyteidl.core.LiteralMap.LiteralsEntry - 16, // 24: flyteidl.core.BindingDataCollection.bindings:type_name -> flyteidl.core.BindingData - 22, // 25: flyteidl.core.BindingDataMap.bindings:type_name -> flyteidl.core.BindingDataMap.BindingsEntry - 27, // 26: flyteidl.core.UnionInfo.targetType:type_name -> flyteidl.core.LiteralType - 9, // 27: flyteidl.core.BindingData.scalar:type_name -> flyteidl.core.Scalar - 13, // 28: flyteidl.core.BindingData.collection:type_name -> flyteidl.core.BindingDataCollection - 31, // 29: flyteidl.core.BindingData.promise:type_name -> flyteidl.core.OutputReference - 14, // 30: flyteidl.core.BindingData.map:type_name -> flyteidl.core.BindingDataMap - 15, // 31: flyteidl.core.BindingData.union:type_name -> flyteidl.core.UnionInfo - 16, // 32: flyteidl.core.Binding.binding:type_name -> flyteidl.core.BindingData - 10, // 33: flyteidl.core.LiteralMap.LiteralsEntry.value:type_name -> flyteidl.core.Literal - 16, // 34: flyteidl.core.BindingDataMap.BindingsEntry.value:type_name -> flyteidl.core.BindingData - 35, // [35:35] is the sub-list for method output_type - 35, // [35:35] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 23, // 23: flyteidl.core.LiteralMap.literals:type_name -> flyteidl.core.LiteralMap.LiteralsEntry + 12, // 24: flyteidl.core.InputData.inputs:type_name -> flyteidl.core.LiteralMap + 12, // 25: flyteidl.core.OutputData.outputs:type_name -> flyteidl.core.LiteralMap + 18, // 26: flyteidl.core.BindingDataCollection.bindings:type_name -> flyteidl.core.BindingData + 24, // 27: flyteidl.core.BindingDataMap.bindings:type_name -> flyteidl.core.BindingDataMap.BindingsEntry + 29, // 28: flyteidl.core.UnionInfo.targetType:type_name -> flyteidl.core.LiteralType + 9, // 29: flyteidl.core.BindingData.scalar:type_name -> flyteidl.core.Scalar + 15, // 30: flyteidl.core.BindingData.collection:type_name -> flyteidl.core.BindingDataCollection + 33, // 31: flyteidl.core.BindingData.promise:type_name -> flyteidl.core.OutputReference + 16, // 32: flyteidl.core.BindingData.map:type_name -> flyteidl.core.BindingDataMap + 17, // 33: flyteidl.core.BindingData.union:type_name -> flyteidl.core.UnionInfo + 18, // 34: flyteidl.core.Binding.binding:type_name -> flyteidl.core.BindingData + 10, // 35: flyteidl.core.LiteralMap.LiteralsEntry.value:type_name -> flyteidl.core.Literal + 18, // 36: flyteidl.core.BindingDataMap.BindingsEntry.value:type_name -> flyteidl.core.BindingData + 37, // [37:37] is the sub-list for method output_type + 37, // [37:37] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } func init() { file_flyteidl_core_literals_proto_init() } @@ -1869,7 +1981,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingDataCollection); i { + switch v := v.(*InputData); i { case 0: return &v.state case 1: @@ -1881,7 +1993,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingDataMap); i { + switch v := v.(*OutputData); i { case 0: return &v.state case 1: @@ -1893,7 +2005,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnionInfo); i { + switch v := v.(*BindingDataCollection); i { case 0: return &v.state case 1: @@ -1905,7 +2017,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingData); i { + switch v := v.(*BindingDataMap); i { case 0: return &v.state case 1: @@ -1917,7 +2029,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Binding); i { + switch v := v.(*UnionInfo); i { case 0: return &v.state case 1: @@ -1929,7 +2041,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyValuePair); i { + switch v := v.(*BindingData); i { case 0: return &v.state case 1: @@ -1941,6 +2053,30 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Binding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_literals_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeyValuePair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_literals_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetryStrategy); i { case 0: return &v.state @@ -1977,7 +2113,7 @@ func file_flyteidl_core_literals_proto_init() { (*Literal_Collection)(nil), (*Literal_Map)(nil), } - file_flyteidl_core_literals_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_flyteidl_core_literals_proto_msgTypes[18].OneofWrappers = []interface{}{ (*BindingData_Scalar)(nil), (*BindingData_Collection)(nil), (*BindingData_Promise)(nil), @@ -1989,7 +2125,7 @@ func file_flyteidl_core_literals_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_core_literals_proto_rawDesc, NumEnums: 0, - NumMessages: 23, + NumMessages: 25, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb-go/flyteidl/event/event.pb.go b/flyteidl/gen/pb-go/flyteidl/event/event.pb.go index 963ed02ff6..c8b87cee44 100644 --- a/flyteidl/gen/pb-go/flyteidl/event/event.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/event/event.pb.go @@ -89,8 +89,10 @@ type WorkflowExecutionEvent struct { // // *WorkflowExecutionEvent_OutputUri // *WorkflowExecutionEvent_Error + // *WorkflowExecutionEvent_DeprecatedOutputData // *WorkflowExecutionEvent_OutputData OutputResult isWorkflowExecutionEvent_OutputResult `protobuf_oneof:"output_result"` + EventVersion int32 `protobuf:"varint,9,opt,name=event_version,json=eventVersion,proto3" json:"event_version,omitempty"` } func (x *WorkflowExecutionEvent) Reset() { @@ -174,13 +176,28 @@ func (x *WorkflowExecutionEvent) GetError() *core.ExecutionError { return nil } -func (x *WorkflowExecutionEvent) GetOutputData() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/event/event.proto. +func (x *WorkflowExecutionEvent) GetDeprecatedOutputData() *core.LiteralMap { + if x, ok := x.GetOutputResult().(*WorkflowExecutionEvent_DeprecatedOutputData); ok { + return x.DeprecatedOutputData + } + return nil +} + +func (x *WorkflowExecutionEvent) GetOutputData() *core.OutputData { if x, ok := x.GetOutputResult().(*WorkflowExecutionEvent_OutputData); ok { return x.OutputData } return nil } +func (x *WorkflowExecutionEvent) GetEventVersion() int32 { + if x != nil { + return x.EventVersion + } + return 0 +} + type isWorkflowExecutionEvent_OutputResult interface { isWorkflowExecutionEvent_OutputResult() } @@ -196,15 +213,25 @@ type WorkflowExecutionEvent_Error struct { Error *core.ExecutionError `protobuf:"bytes,6,opt,name=error,proto3,oneof"` } +type WorkflowExecutionEvent_DeprecatedOutputData struct { + // Raw output data produced by this workflow execution. + // Deprecated: please use output_data instead + // + // Deprecated: Marked as deprecated in flyteidl/event/event.proto. + DeprecatedOutputData *core.LiteralMap `protobuf:"bytes,7,opt,name=deprecated_output_data,json=deprecatedOutputData,proto3,oneof"` +} + type WorkflowExecutionEvent_OutputData struct { // Raw output data produced by this workflow execution. - OutputData *core.LiteralMap `protobuf:"bytes,7,opt,name=output_data,json=outputData,proto3,oneof"` + OutputData *core.OutputData `protobuf:"bytes,8,opt,name=output_data,json=outputData,proto3,oneof"` } func (*WorkflowExecutionEvent_OutputUri) isWorkflowExecutionEvent_OutputResult() {} func (*WorkflowExecutionEvent_Error) isWorkflowExecutionEvent_OutputResult() {} +func (*WorkflowExecutionEvent_DeprecatedOutputData) isWorkflowExecutionEvent_OutputResult() {} + func (*WorkflowExecutionEvent_OutputData) isWorkflowExecutionEvent_OutputResult() {} type NodeExecutionEvent struct { @@ -223,12 +250,14 @@ type NodeExecutionEvent struct { // Types that are assignable to InputValue: // // *NodeExecutionEvent_InputUri + // *NodeExecutionEvent_DeprecatedInputData // *NodeExecutionEvent_InputData InputValue isNodeExecutionEvent_InputValue `protobuf_oneof:"input_value"` // Types that are assignable to OutputResult: // // *NodeExecutionEvent_OutputUri // *NodeExecutionEvent_Error + // *NodeExecutionEvent_DeprecatedOutputData // *NodeExecutionEvent_OutputData OutputResult isNodeExecutionEvent_OutputResult `protobuf_oneof:"output_result"` // Additional metadata to do with this event's node target based @@ -352,7 +381,15 @@ func (x *NodeExecutionEvent) GetInputUri() string { return "" } -func (x *NodeExecutionEvent) GetInputData() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/event/event.proto. +func (x *NodeExecutionEvent) GetDeprecatedInputData() *core.LiteralMap { + if x, ok := x.GetInputValue().(*NodeExecutionEvent_DeprecatedInputData); ok { + return x.DeprecatedInputData + } + return nil +} + +func (x *NodeExecutionEvent) GetInputData() *core.InputData { if x, ok := x.GetInputValue().(*NodeExecutionEvent_InputData); ok { return x.InputData } @@ -380,7 +417,15 @@ func (x *NodeExecutionEvent) GetError() *core.ExecutionError { return nil } -func (x *NodeExecutionEvent) GetOutputData() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/event/event.proto. +func (x *NodeExecutionEvent) GetDeprecatedOutputData() *core.LiteralMap { + if x, ok := x.GetOutputResult().(*NodeExecutionEvent_DeprecatedOutputData); ok { + return x.DeprecatedOutputData + } + return nil +} + +func (x *NodeExecutionEvent) GetOutputData() *core.OutputData { if x, ok := x.GetOutputResult().(*NodeExecutionEvent_OutputData); ok { return x.OutputData } @@ -507,13 +552,23 @@ type NodeExecutionEvent_InputUri struct { InputUri string `protobuf:"bytes,5,opt,name=input_uri,json=inputUri,proto3,oneof"` } +type NodeExecutionEvent_DeprecatedInputData struct { + // Raw input data consumed by this node execution. + // Deprecated: please use input_data instead + // + // Deprecated: Marked as deprecated in flyteidl/event/event.proto. + DeprecatedInputData *core.LiteralMap `protobuf:"bytes,20,opt,name=deprecated_input_data,json=deprecatedInputData,proto3,oneof"` +} + type NodeExecutionEvent_InputData struct { // Raw input data consumed by this node execution. - InputData *core.LiteralMap `protobuf:"bytes,20,opt,name=input_data,json=inputData,proto3,oneof"` + InputData *core.InputData `protobuf:"bytes,25,opt,name=input_data,json=inputData,proto3,oneof"` } func (*NodeExecutionEvent_InputUri) isNodeExecutionEvent_InputValue() {} +func (*NodeExecutionEvent_DeprecatedInputData) isNodeExecutionEvent_InputValue() {} + func (*NodeExecutionEvent_InputData) isNodeExecutionEvent_InputValue() {} type isNodeExecutionEvent_OutputResult interface { @@ -531,15 +586,25 @@ type NodeExecutionEvent_Error struct { Error *core.ExecutionError `protobuf:"bytes,7,opt,name=error,proto3,oneof"` } +type NodeExecutionEvent_DeprecatedOutputData struct { + // Raw output data produced by this workflow execution. + // Deprecated: please use output_data instead + // + // Deprecated: Marked as deprecated in flyteidl/event/event.proto. + DeprecatedOutputData *core.LiteralMap `protobuf:"bytes,15,opt,name=deprecated_output_data,json=deprecatedOutputData,proto3,oneof"` +} + type NodeExecutionEvent_OutputData struct { - // Raw output data produced by this node execution. - OutputData *core.LiteralMap `protobuf:"bytes,15,opt,name=output_data,json=outputData,proto3,oneof"` + // Raw output data produced by this workflow execution. + OutputData *core.OutputData `protobuf:"bytes,26,opt,name=output_data,json=outputData,proto3,oneof"` } func (*NodeExecutionEvent_OutputUri) isNodeExecutionEvent_OutputResult() {} func (*NodeExecutionEvent_Error) isNodeExecutionEvent_OutputResult() {} +func (*NodeExecutionEvent_DeprecatedOutputData) isNodeExecutionEvent_OutputResult() {} + func (*NodeExecutionEvent_OutputData) isNodeExecutionEvent_OutputResult() {} type isNodeExecutionEvent_TargetMetadata interface { @@ -937,12 +1002,14 @@ type TaskExecutionEvent struct { // Types that are assignable to InputValue: // // *TaskExecutionEvent_InputUri + // *TaskExecutionEvent_DeprecatedInputData // *TaskExecutionEvent_InputData InputValue isTaskExecutionEvent_InputValue `protobuf_oneof:"input_value"` // Types that are assignable to OutputResult: // // *TaskExecutionEvent_OutputUri // *TaskExecutionEvent_Error + // *TaskExecutionEvent_DeprecatedOutputData // *TaskExecutionEvent_OutputData OutputResult isTaskExecutionEvent_OutputResult `protobuf_oneof:"output_result"` // Custom data that the task plugin sends back. This is extensible to allow various plugins in the system. @@ -1071,7 +1138,15 @@ func (x *TaskExecutionEvent) GetInputUri() string { return "" } -func (x *TaskExecutionEvent) GetInputData() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/event/event.proto. +func (x *TaskExecutionEvent) GetDeprecatedInputData() *core.LiteralMap { + if x, ok := x.GetInputValue().(*TaskExecutionEvent_DeprecatedInputData); ok { + return x.DeprecatedInputData + } + return nil +} + +func (x *TaskExecutionEvent) GetInputData() *core.InputData { if x, ok := x.GetInputValue().(*TaskExecutionEvent_InputData); ok { return x.InputData } @@ -1099,7 +1174,15 @@ func (x *TaskExecutionEvent) GetError() *core.ExecutionError { return nil } -func (x *TaskExecutionEvent) GetOutputData() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/event/event.proto. +func (x *TaskExecutionEvent) GetDeprecatedOutputData() *core.LiteralMap { + if x, ok := x.GetOutputResult().(*TaskExecutionEvent_DeprecatedOutputData); ok { + return x.DeprecatedOutputData + } + return nil +} + +func (x *TaskExecutionEvent) GetOutputData() *core.OutputData { if x, ok := x.GetOutputResult().(*TaskExecutionEvent_OutputData); ok { return x.OutputData } @@ -1173,13 +1256,23 @@ type TaskExecutionEvent_InputUri struct { InputUri string `protobuf:"bytes,8,opt,name=input_uri,json=inputUri,proto3,oneof"` } +type TaskExecutionEvent_DeprecatedInputData struct { + // Raw input data consumed by this node execution. + // Deprecated: please use input_data instead + // + // Deprecated: Marked as deprecated in flyteidl/event/event.proto. + DeprecatedInputData *core.LiteralMap `protobuf:"bytes,19,opt,name=deprecated_input_data,json=deprecatedInputData,proto3,oneof"` +} + type TaskExecutionEvent_InputData struct { - // Raw input data consumed by this task execution. - InputData *core.LiteralMap `protobuf:"bytes,19,opt,name=input_data,json=inputData,proto3,oneof"` + // Raw input data consumed by this node execution. + InputData *core.InputData `protobuf:"bytes,23,opt,name=input_data,json=inputData,proto3,oneof"` } func (*TaskExecutionEvent_InputUri) isTaskExecutionEvent_InputValue() {} +func (*TaskExecutionEvent_DeprecatedInputData) isTaskExecutionEvent_InputValue() {} + func (*TaskExecutionEvent_InputData) isTaskExecutionEvent_InputValue() {} type isTaskExecutionEvent_OutputResult interface { @@ -1197,15 +1290,25 @@ type TaskExecutionEvent_Error struct { Error *core.ExecutionError `protobuf:"bytes,10,opt,name=error,proto3,oneof"` } +type TaskExecutionEvent_DeprecatedOutputData struct { + // Raw output data produced by this workflow execution. + // Deprecated: please use output_data instead + // + // Deprecated: Marked as deprecated in flyteidl/event/event.proto. + DeprecatedOutputData *core.LiteralMap `protobuf:"bytes,17,opt,name=deprecated_output_data,json=deprecatedOutputData,proto3,oneof"` +} + type TaskExecutionEvent_OutputData struct { - // Raw output data produced by this task execution. - OutputData *core.LiteralMap `protobuf:"bytes,17,opt,name=output_data,json=outputData,proto3,oneof"` + // Raw output data produced by this workflow execution. + OutputData *core.OutputData `protobuf:"bytes,22,opt,name=output_data,json=outputData,proto3,oneof"` } func (*TaskExecutionEvent_OutputUri) isTaskExecutionEvent_OutputResult() {} func (*TaskExecutionEvent_Error) isTaskExecutionEvent_OutputResult() {} +func (*TaskExecutionEvent_DeprecatedOutputData) isTaskExecutionEvent_OutputResult() {} + func (*TaskExecutionEvent_OutputData) isTaskExecutionEvent_OutputResult() {} // This message contains metadata about external resources produced or used by a specific task execution. @@ -1470,7 +1573,7 @@ var file_flyteidl_event_event_proto_rawDesc = []byte{ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x03, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x04, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, @@ -1492,279 +1595,308 @@ var file_flyteidl_event_event_proto_rawDesc = []byte{ 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, - 0x70, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x99, 0x0a, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, - 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x5f, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x3a, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, + 0x72, 0x12, 0x55, 0x0a, 0x16, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, + 0x48, 0x00, 0x52, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc4, 0x0b, 0x0a, + 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x05, + 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, + 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x55, + 0x72, 0x69, 0x12, 0x53, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, + 0x48, 0x00, 0x52, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x48, 0x01, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x16, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, - 0x52, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x12, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x10, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x74, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x5f, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x70, 0x65, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, - 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, - 0x73, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x69, 0x73, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, - 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, - 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x6b, 0x5f, - 0x75, 0x72, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x63, 0x6b, 0x55, - 0x72, 0x69, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x3e, 0x0a, 0x0d, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x69, 0x73, - 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x49, 0x6e, 0x44, 0x79, 0x6e, - 0x61, 0x6d, 0x69, 0x63, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x14, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0xf1, 0x02, 0x0a, 0x10, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, - 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4b, 0x65, 0x79, 0x12, - 0x57, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x11, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x72, 0x69, 0x12, - 0x56, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x44, 0x79, 0x6e, 0x61, - 0x6d, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x53, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6c, - 0x6f, 0x73, 0x75, 0x72, 0x65, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x2f, 0x0a, 0x14, 0x64, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x69, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4a, 0x6f, - 0x62, 0x53, 0x70, 0x65, 0x63, 0x55, 0x72, 0x69, 0x22, 0x55, 0x0a, 0x1b, 0x50, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x36, 0x0a, 0x1b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, - 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3b, - 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0x97, 0x08, 0x0a, 0x12, - 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x06, - 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x5f, 0x0a, 0x18, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, + 0x72, 0x48, 0x01, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x55, 0x0a, 0x16, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x01, 0x52, 0x14, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x5c, 0x0a, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, + 0x12, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, + 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x10, 0x74, + 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x5d, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5d, + 0x0a, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, + 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, + 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x70, 0x65, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x19, + 0x0a, 0x08, 0x64, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x64, 0x65, 0x63, 0x6b, 0x55, 0x72, 0x69, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x3e, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x69, 0x73, 0x49, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x42, 0x11, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, + 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0c, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0b, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xf1, 0x02, 0x0a, 0x10, 0x54, + 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x44, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x57, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x11, 0x72, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x75, 0x72, + 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x55, 0x72, 0x69, 0x12, 0x56, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0xce, + 0x01, 0x0a, 0x1b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x53, 0x0a, 0x11, 0x63, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x52, 0x10, 0x63, 0x6f, + 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x2f, + 0x0a, 0x14, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x55, 0x72, 0x69, 0x22, + 0x55, 0x0a, 0x1b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x22, 0x36, 0x0a, 0x1b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x62, + 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, + 0x41, 0x74, 0x22, 0xc2, 0x09, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x5f, 0x0a, + 0x18, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x53, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, + 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x75, 0x72, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x55, + 0x0a, 0x16, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x01, 0x52, + 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x35, + 0x0a, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9e, 0x02, 0x0a, 0x14, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, - 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x6c, - 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, - 0x3a, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, - 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x35, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x4d, 0x61, 0x70, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x70, - 0x68, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x07, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9e, 0x02, 0x0a, 0x14, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, - 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, - 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x68, - 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, - 0x68, 0x61, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x6f, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x6f, 0x67, - 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x5b, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0x9d, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, - 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x12, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, - 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x22, 0x2f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, - 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x49, 0x42, 0x4c, - 0x45, 0x10, 0x01, 0x42, 0xb6, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0xa2, 0x02, 0x03, 0x46, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0e, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x1a, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x04, + 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4c, + 0x6f, 0x67, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x5b, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x10, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x9d, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x12, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x11, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x22, 0x2f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x49, + 0x42, 0x4c, 0x45, 0x10, 0x01, 0x42, 0xb6, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0a, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, + 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0xa2, 0x02, 0x03, 0x46, 0x45, 0x58, 0xaa, 0x02, 0x0e, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0xca, 0x02, + 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0xe2, + 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1800,68 +1932,75 @@ var file_flyteidl_event_event_proto_goTypes = []interface{}{ (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp (*core.ExecutionError)(nil), // 16: flyteidl.core.ExecutionError (*core.LiteralMap)(nil), // 17: flyteidl.core.LiteralMap - (*core.NodeExecutionIdentifier)(nil), // 18: flyteidl.core.NodeExecutionIdentifier - (core.NodeExecution_Phase)(0), // 19: flyteidl.core.NodeExecution.Phase - (*core.Identifier)(nil), // 20: flyteidl.core.Identifier - (core.CatalogCacheStatus)(0), // 21: flyteidl.core.CatalogCacheStatus - (*core.CatalogMetadata)(nil), // 22: flyteidl.core.CatalogMetadata - (core.CatalogReservation_Status)(0), // 23: flyteidl.core.CatalogReservation.Status - (*core.CompiledWorkflowClosure)(nil), // 24: flyteidl.core.CompiledWorkflowClosure - (*core.TaskExecutionIdentifier)(nil), // 25: flyteidl.core.TaskExecutionIdentifier - (core.TaskExecution_Phase)(0), // 26: flyteidl.core.TaskExecution.Phase - (*core.TaskLog)(nil), // 27: flyteidl.core.TaskLog - (*structpb.Struct)(nil), // 28: google.protobuf.Struct + (*core.OutputData)(nil), // 18: flyteidl.core.OutputData + (*core.NodeExecutionIdentifier)(nil), // 19: flyteidl.core.NodeExecutionIdentifier + (core.NodeExecution_Phase)(0), // 20: flyteidl.core.NodeExecution.Phase + (*core.InputData)(nil), // 21: flyteidl.core.InputData + (*core.Identifier)(nil), // 22: flyteidl.core.Identifier + (core.CatalogCacheStatus)(0), // 23: flyteidl.core.CatalogCacheStatus + (*core.CatalogMetadata)(nil), // 24: flyteidl.core.CatalogMetadata + (core.CatalogReservation_Status)(0), // 25: flyteidl.core.CatalogReservation.Status + (*core.CompiledWorkflowClosure)(nil), // 26: flyteidl.core.CompiledWorkflowClosure + (*core.TaskExecutionIdentifier)(nil), // 27: flyteidl.core.TaskExecutionIdentifier + (core.TaskExecution_Phase)(0), // 28: flyteidl.core.TaskExecution.Phase + (*core.TaskLog)(nil), // 29: flyteidl.core.TaskLog + (*structpb.Struct)(nil), // 30: google.protobuf.Struct } var file_flyteidl_event_event_proto_depIdxs = []int32{ 13, // 0: flyteidl.event.WorkflowExecutionEvent.execution_id:type_name -> flyteidl.core.WorkflowExecutionIdentifier 14, // 1: flyteidl.event.WorkflowExecutionEvent.phase:type_name -> flyteidl.core.WorkflowExecution.Phase 15, // 2: flyteidl.event.WorkflowExecutionEvent.occurred_at:type_name -> google.protobuf.Timestamp 16, // 3: flyteidl.event.WorkflowExecutionEvent.error:type_name -> flyteidl.core.ExecutionError - 17, // 4: flyteidl.event.WorkflowExecutionEvent.output_data:type_name -> flyteidl.core.LiteralMap - 18, // 5: flyteidl.event.NodeExecutionEvent.id:type_name -> flyteidl.core.NodeExecutionIdentifier - 19, // 6: flyteidl.event.NodeExecutionEvent.phase:type_name -> flyteidl.core.NodeExecution.Phase - 15, // 7: flyteidl.event.NodeExecutionEvent.occurred_at:type_name -> google.protobuf.Timestamp - 17, // 8: flyteidl.event.NodeExecutionEvent.input_data:type_name -> flyteidl.core.LiteralMap - 16, // 9: flyteidl.event.NodeExecutionEvent.error:type_name -> flyteidl.core.ExecutionError - 17, // 10: flyteidl.event.NodeExecutionEvent.output_data:type_name -> flyteidl.core.LiteralMap - 3, // 11: flyteidl.event.NodeExecutionEvent.workflow_node_metadata:type_name -> flyteidl.event.WorkflowNodeMetadata - 4, // 12: flyteidl.event.NodeExecutionEvent.task_node_metadata:type_name -> flyteidl.event.TaskNodeMetadata - 6, // 13: flyteidl.event.NodeExecutionEvent.parent_task_metadata:type_name -> flyteidl.event.ParentTaskExecutionMetadata - 7, // 14: flyteidl.event.NodeExecutionEvent.parent_node_metadata:type_name -> flyteidl.event.ParentNodeExecutionMetadata - 15, // 15: flyteidl.event.NodeExecutionEvent.reported_at:type_name -> google.protobuf.Timestamp - 20, // 16: flyteidl.event.NodeExecutionEvent.target_entity:type_name -> flyteidl.core.Identifier - 13, // 17: flyteidl.event.WorkflowNodeMetadata.execution_id:type_name -> flyteidl.core.WorkflowExecutionIdentifier - 21, // 18: flyteidl.event.TaskNodeMetadata.cache_status:type_name -> flyteidl.core.CatalogCacheStatus - 22, // 19: flyteidl.event.TaskNodeMetadata.catalog_key:type_name -> flyteidl.core.CatalogMetadata - 23, // 20: flyteidl.event.TaskNodeMetadata.reservation_status:type_name -> flyteidl.core.CatalogReservation.Status - 5, // 21: flyteidl.event.TaskNodeMetadata.dynamic_workflow:type_name -> flyteidl.event.DynamicWorkflowNodeMetadata - 20, // 22: flyteidl.event.DynamicWorkflowNodeMetadata.id:type_name -> flyteidl.core.Identifier - 24, // 23: flyteidl.event.DynamicWorkflowNodeMetadata.compiled_workflow:type_name -> flyteidl.core.CompiledWorkflowClosure - 25, // 24: flyteidl.event.ParentTaskExecutionMetadata.id:type_name -> flyteidl.core.TaskExecutionIdentifier - 15, // 25: flyteidl.event.EventReason.occurred_at:type_name -> google.protobuf.Timestamp - 20, // 26: flyteidl.event.TaskExecutionEvent.task_id:type_name -> flyteidl.core.Identifier - 18, // 27: flyteidl.event.TaskExecutionEvent.parent_node_execution_id:type_name -> flyteidl.core.NodeExecutionIdentifier - 26, // 28: flyteidl.event.TaskExecutionEvent.phase:type_name -> flyteidl.core.TaskExecution.Phase - 27, // 29: flyteidl.event.TaskExecutionEvent.logs:type_name -> flyteidl.core.TaskLog - 15, // 30: flyteidl.event.TaskExecutionEvent.occurred_at:type_name -> google.protobuf.Timestamp - 17, // 31: flyteidl.event.TaskExecutionEvent.input_data:type_name -> flyteidl.core.LiteralMap - 16, // 32: flyteidl.event.TaskExecutionEvent.error:type_name -> flyteidl.core.ExecutionError - 17, // 33: flyteidl.event.TaskExecutionEvent.output_data:type_name -> flyteidl.core.LiteralMap - 28, // 34: flyteidl.event.TaskExecutionEvent.custom_info:type_name -> google.protobuf.Struct - 8, // 35: flyteidl.event.TaskExecutionEvent.reasons:type_name -> flyteidl.event.EventReason - 12, // 36: flyteidl.event.TaskExecutionEvent.metadata:type_name -> flyteidl.event.TaskExecutionMetadata - 15, // 37: flyteidl.event.TaskExecutionEvent.reported_at:type_name -> google.protobuf.Timestamp - 26, // 38: flyteidl.event.ExternalResourceInfo.phase:type_name -> flyteidl.core.TaskExecution.Phase - 21, // 39: flyteidl.event.ExternalResourceInfo.cache_status:type_name -> flyteidl.core.CatalogCacheStatus - 27, // 40: flyteidl.event.ExternalResourceInfo.logs:type_name -> flyteidl.core.TaskLog - 10, // 41: flyteidl.event.TaskExecutionMetadata.external_resources:type_name -> flyteidl.event.ExternalResourceInfo - 11, // 42: flyteidl.event.TaskExecutionMetadata.resource_pool_info:type_name -> flyteidl.event.ResourcePoolInfo - 0, // 43: flyteidl.event.TaskExecutionMetadata.instance_class:type_name -> flyteidl.event.TaskExecutionMetadata.InstanceClass - 44, // [44:44] is the sub-list for method output_type - 44, // [44:44] is the sub-list for method input_type - 44, // [44:44] is the sub-list for extension type_name - 44, // [44:44] is the sub-list for extension extendee - 0, // [0:44] is the sub-list for field type_name + 17, // 4: flyteidl.event.WorkflowExecutionEvent.deprecated_output_data:type_name -> flyteidl.core.LiteralMap + 18, // 5: flyteidl.event.WorkflowExecutionEvent.output_data:type_name -> flyteidl.core.OutputData + 19, // 6: flyteidl.event.NodeExecutionEvent.id:type_name -> flyteidl.core.NodeExecutionIdentifier + 20, // 7: flyteidl.event.NodeExecutionEvent.phase:type_name -> flyteidl.core.NodeExecution.Phase + 15, // 8: flyteidl.event.NodeExecutionEvent.occurred_at:type_name -> google.protobuf.Timestamp + 17, // 9: flyteidl.event.NodeExecutionEvent.deprecated_input_data:type_name -> flyteidl.core.LiteralMap + 21, // 10: flyteidl.event.NodeExecutionEvent.input_data:type_name -> flyteidl.core.InputData + 16, // 11: flyteidl.event.NodeExecutionEvent.error:type_name -> flyteidl.core.ExecutionError + 17, // 12: flyteidl.event.NodeExecutionEvent.deprecated_output_data:type_name -> flyteidl.core.LiteralMap + 18, // 13: flyteidl.event.NodeExecutionEvent.output_data:type_name -> flyteidl.core.OutputData + 3, // 14: flyteidl.event.NodeExecutionEvent.workflow_node_metadata:type_name -> flyteidl.event.WorkflowNodeMetadata + 4, // 15: flyteidl.event.NodeExecutionEvent.task_node_metadata:type_name -> flyteidl.event.TaskNodeMetadata + 6, // 16: flyteidl.event.NodeExecutionEvent.parent_task_metadata:type_name -> flyteidl.event.ParentTaskExecutionMetadata + 7, // 17: flyteidl.event.NodeExecutionEvent.parent_node_metadata:type_name -> flyteidl.event.ParentNodeExecutionMetadata + 15, // 18: flyteidl.event.NodeExecutionEvent.reported_at:type_name -> google.protobuf.Timestamp + 22, // 19: flyteidl.event.NodeExecutionEvent.target_entity:type_name -> flyteidl.core.Identifier + 13, // 20: flyteidl.event.WorkflowNodeMetadata.execution_id:type_name -> flyteidl.core.WorkflowExecutionIdentifier + 23, // 21: flyteidl.event.TaskNodeMetadata.cache_status:type_name -> flyteidl.core.CatalogCacheStatus + 24, // 22: flyteidl.event.TaskNodeMetadata.catalog_key:type_name -> flyteidl.core.CatalogMetadata + 25, // 23: flyteidl.event.TaskNodeMetadata.reservation_status:type_name -> flyteidl.core.CatalogReservation.Status + 5, // 24: flyteidl.event.TaskNodeMetadata.dynamic_workflow:type_name -> flyteidl.event.DynamicWorkflowNodeMetadata + 22, // 25: flyteidl.event.DynamicWorkflowNodeMetadata.id:type_name -> flyteidl.core.Identifier + 26, // 26: flyteidl.event.DynamicWorkflowNodeMetadata.compiled_workflow:type_name -> flyteidl.core.CompiledWorkflowClosure + 27, // 27: flyteidl.event.ParentTaskExecutionMetadata.id:type_name -> flyteidl.core.TaskExecutionIdentifier + 15, // 28: flyteidl.event.EventReason.occurred_at:type_name -> google.protobuf.Timestamp + 22, // 29: flyteidl.event.TaskExecutionEvent.task_id:type_name -> flyteidl.core.Identifier + 19, // 30: flyteidl.event.TaskExecutionEvent.parent_node_execution_id:type_name -> flyteidl.core.NodeExecutionIdentifier + 28, // 31: flyteidl.event.TaskExecutionEvent.phase:type_name -> flyteidl.core.TaskExecution.Phase + 29, // 32: flyteidl.event.TaskExecutionEvent.logs:type_name -> flyteidl.core.TaskLog + 15, // 33: flyteidl.event.TaskExecutionEvent.occurred_at:type_name -> google.protobuf.Timestamp + 17, // 34: flyteidl.event.TaskExecutionEvent.deprecated_input_data:type_name -> flyteidl.core.LiteralMap + 21, // 35: flyteidl.event.TaskExecutionEvent.input_data:type_name -> flyteidl.core.InputData + 16, // 36: flyteidl.event.TaskExecutionEvent.error:type_name -> flyteidl.core.ExecutionError + 17, // 37: flyteidl.event.TaskExecutionEvent.deprecated_output_data:type_name -> flyteidl.core.LiteralMap + 18, // 38: flyteidl.event.TaskExecutionEvent.output_data:type_name -> flyteidl.core.OutputData + 30, // 39: flyteidl.event.TaskExecutionEvent.custom_info:type_name -> google.protobuf.Struct + 8, // 40: flyteidl.event.TaskExecutionEvent.reasons:type_name -> flyteidl.event.EventReason + 12, // 41: flyteidl.event.TaskExecutionEvent.metadata:type_name -> flyteidl.event.TaskExecutionMetadata + 15, // 42: flyteidl.event.TaskExecutionEvent.reported_at:type_name -> google.protobuf.Timestamp + 28, // 43: flyteidl.event.ExternalResourceInfo.phase:type_name -> flyteidl.core.TaskExecution.Phase + 23, // 44: flyteidl.event.ExternalResourceInfo.cache_status:type_name -> flyteidl.core.CatalogCacheStatus + 29, // 45: flyteidl.event.ExternalResourceInfo.logs:type_name -> flyteidl.core.TaskLog + 10, // 46: flyteidl.event.TaskExecutionMetadata.external_resources:type_name -> flyteidl.event.ExternalResourceInfo + 11, // 47: flyteidl.event.TaskExecutionMetadata.resource_pool_info:type_name -> flyteidl.event.ResourcePoolInfo + 0, // 48: flyteidl.event.TaskExecutionMetadata.instance_class:type_name -> flyteidl.event.TaskExecutionMetadata.InstanceClass + 49, // [49:49] is the sub-list for method output_type + 49, // [49:49] is the sub-list for method input_type + 49, // [49:49] is the sub-list for extension type_name + 49, // [49:49] is the sub-list for extension extendee + 0, // [0:49] is the sub-list for field type_name } func init() { file_flyteidl_event_event_proto_init() } @@ -2018,22 +2157,27 @@ func file_flyteidl_event_event_proto_init() { file_flyteidl_event_event_proto_msgTypes[0].OneofWrappers = []interface{}{ (*WorkflowExecutionEvent_OutputUri)(nil), (*WorkflowExecutionEvent_Error)(nil), + (*WorkflowExecutionEvent_DeprecatedOutputData)(nil), (*WorkflowExecutionEvent_OutputData)(nil), } file_flyteidl_event_event_proto_msgTypes[1].OneofWrappers = []interface{}{ (*NodeExecutionEvent_InputUri)(nil), + (*NodeExecutionEvent_DeprecatedInputData)(nil), (*NodeExecutionEvent_InputData)(nil), (*NodeExecutionEvent_OutputUri)(nil), (*NodeExecutionEvent_Error)(nil), + (*NodeExecutionEvent_DeprecatedOutputData)(nil), (*NodeExecutionEvent_OutputData)(nil), (*NodeExecutionEvent_WorkflowNodeMetadata)(nil), (*NodeExecutionEvent_TaskNodeMetadata)(nil), } file_flyteidl_event_event_proto_msgTypes[8].OneofWrappers = []interface{}{ (*TaskExecutionEvent_InputUri)(nil), + (*TaskExecutionEvent_DeprecatedInputData)(nil), (*TaskExecutionEvent_InputData)(nil), (*TaskExecutionEvent_OutputUri)(nil), (*TaskExecutionEvent_Error)(nil), + (*TaskExecutionEvent_DeprecatedOutputData)(nil), (*TaskExecutionEvent_OutputData)(nil), } type x struct{} diff --git a/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go b/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go index 7459726a60..8dcf63997e 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/dataproxy.pb.go @@ -683,6 +683,8 @@ type GetDataResponse struct { // *GetDataResponse_LiteralMap // *GetDataResponse_PreSignedUrls // *GetDataResponse_Literal + // *GetDataResponse_InputData + // *GetDataResponse_OutputData Data isGetDataResponse_Data `protobuf_oneof:"data"` } @@ -746,6 +748,20 @@ func (x *GetDataResponse) GetLiteral() *core.Literal { return nil } +func (x *GetDataResponse) GetInputData() *core.InputData { + if x, ok := x.GetData().(*GetDataResponse_InputData); ok { + return x.InputData + } + return nil +} + +func (x *GetDataResponse) GetOutputData() *core.OutputData { + if x, ok := x.GetData().(*GetDataResponse_OutputData); ok { + return x.OutputData + } + return nil +} + type isGetDataResponse_Data interface { isGetDataResponse_Data() } @@ -766,12 +782,26 @@ type GetDataResponse_Literal struct { Literal *core.Literal `protobuf:"bytes,3,opt,name=literal,proto3,oneof"` } +type GetDataResponse_InputData struct { + // InputData is returned when the user/url requests the input data for an execution. + InputData *core.InputData `protobuf:"bytes,4,opt,name=input_data,json=inputData,proto3,oneof"` +} + +type GetDataResponse_OutputData struct { + // OutputData is returned when the user/url requests the output data for an execution. + OutputData *core.OutputData `protobuf:"bytes,5,opt,name=output_data,json=outputData,proto3,oneof"` +} + func (*GetDataResponse_LiteralMap) isGetDataResponse_Data() {} func (*GetDataResponse_PreSignedUrls) isGetDataResponse_Data() {} func (*GetDataResponse_Literal) isGetDataResponse_Data() {} +func (*GetDataResponse_InputData) isGetDataResponse_Data() {} + +func (*GetDataResponse_OutputData) isGetDataResponse_Data() {} + var File_flyteidl_service_dataproxy_proto protoreflect.FileDescriptor var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ @@ -883,7 +913,7 @@ var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x2d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x61, + 0x79, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x22, 0xcf, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, @@ -896,81 +926,89 @@ var file_flyteidl_service_dataproxy_proto_rawDesc = []byte{ 0x72, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, - 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x2a, - 0x43, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1b, 0x0a, 0x17, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, - 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, - 0x43, 0x4b, 0x10, 0x01, 0x32, 0x84, 0x07, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xf0, 0x01, 0x0a, 0x14, 0x43, 0x72, + 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x2a, 0x43, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x52, 0x54, 0x49, + 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x32, 0x84, 0x07, + 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0xf0, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x92, 0x41, 0x4d, 0x1a, + 0x4b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x12, 0xa9, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x79, 0x92, 0x41, 0x4d, 0x1a, 0x4b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, - 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, - 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, - 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x12, 0xa9, 0x02, 0x0a, - 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xab, 0x01, 0x92, 0x41, 0x7f, 0x1a, 0x7d, 0x44, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x20, 0x50, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x20, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, + 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, + 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x61, 0x74, 0x20, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x88, 0x02, + 0x01, 0x12, 0xea, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xab, 0x01, 0x92, 0x41, 0x7f, - 0x1a, 0x7d, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x20, 0x50, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x65, 0x61, 0x64, 0x2e, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, - 0x73, 0x6b, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x88, 0x02, 0x01, 0x12, 0xea, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, - 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, - 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x92, 0x41, 0x4c, 0x1a, - 0x4a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2d, - 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, - 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x64, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x42, 0xc6, 0x01, 0x0a, 0x14, - 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, - 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x53, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xca, 0x02, - 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x11, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x79, 0x92, 0x41, 0x4c, 0x1a, 0x4a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x64, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x42, 0xc6, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0e, 0x44, + 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xa2, 0x02, + 0x03, 0x46, 0x53, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x46, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1004,6 +1042,8 @@ var file_flyteidl_service_dataproxy_proto_goTypes = []interface{}{ (*core.NodeExecutionIdentifier)(nil), // 13: flyteidl.core.NodeExecutionIdentifier (*core.LiteralMap)(nil), // 14: flyteidl.core.LiteralMap (*core.Literal)(nil), // 15: flyteidl.core.Literal + (*core.InputData)(nil), // 16: flyteidl.core.InputData + (*core.OutputData)(nil), // 17: flyteidl.core.OutputData } var file_flyteidl_service_dataproxy_proto_depIdxs = []int32{ 11, // 0: flyteidl.service.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp @@ -1020,19 +1060,21 @@ var file_flyteidl_service_dataproxy_proto_depIdxs = []int32{ 14, // 11: flyteidl.service.GetDataResponse.literal_map:type_name -> flyteidl.core.LiteralMap 7, // 12: flyteidl.service.GetDataResponse.pre_signed_urls:type_name -> flyteidl.service.PreSignedURLs 15, // 13: flyteidl.service.GetDataResponse.literal:type_name -> flyteidl.core.Literal - 2, // 14: flyteidl.service.DataProxyService.CreateUploadLocation:input_type -> flyteidl.service.CreateUploadLocationRequest - 3, // 15: flyteidl.service.DataProxyService.CreateDownloadLocation:input_type -> flyteidl.service.CreateDownloadLocationRequest - 5, // 16: flyteidl.service.DataProxyService.CreateDownloadLink:input_type -> flyteidl.service.CreateDownloadLinkRequest - 8, // 17: flyteidl.service.DataProxyService.GetData:input_type -> flyteidl.service.GetDataRequest - 1, // 18: flyteidl.service.DataProxyService.CreateUploadLocation:output_type -> flyteidl.service.CreateUploadLocationResponse - 4, // 19: flyteidl.service.DataProxyService.CreateDownloadLocation:output_type -> flyteidl.service.CreateDownloadLocationResponse - 6, // 20: flyteidl.service.DataProxyService.CreateDownloadLink:output_type -> flyteidl.service.CreateDownloadLinkResponse - 9, // 21: flyteidl.service.DataProxyService.GetData:output_type -> flyteidl.service.GetDataResponse - 18, // [18:22] is the sub-list for method output_type - 14, // [14:18] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 16, // 14: flyteidl.service.GetDataResponse.input_data:type_name -> flyteidl.core.InputData + 17, // 15: flyteidl.service.GetDataResponse.output_data:type_name -> flyteidl.core.OutputData + 2, // 16: flyteidl.service.DataProxyService.CreateUploadLocation:input_type -> flyteidl.service.CreateUploadLocationRequest + 3, // 17: flyteidl.service.DataProxyService.CreateDownloadLocation:input_type -> flyteidl.service.CreateDownloadLocationRequest + 5, // 18: flyteidl.service.DataProxyService.CreateDownloadLink:input_type -> flyteidl.service.CreateDownloadLinkRequest + 8, // 19: flyteidl.service.DataProxyService.GetData:input_type -> flyteidl.service.GetDataRequest + 1, // 20: flyteidl.service.DataProxyService.CreateUploadLocation:output_type -> flyteidl.service.CreateUploadLocationResponse + 4, // 21: flyteidl.service.DataProxyService.CreateDownloadLocation:output_type -> flyteidl.service.CreateDownloadLocationResponse + 6, // 22: flyteidl.service.DataProxyService.CreateDownloadLink:output_type -> flyteidl.service.CreateDownloadLinkResponse + 9, // 23: flyteidl.service.DataProxyService.GetData:output_type -> flyteidl.service.GetDataResponse + 20, // [20:24] is the sub-list for method output_type + 16, // [16:20] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_flyteidl_service_dataproxy_proto_init() } @@ -1157,6 +1199,8 @@ func file_flyteidl_service_dataproxy_proto_init() { (*GetDataResponse_LiteralMap)(nil), (*GetDataResponse_PreSignedUrls)(nil), (*GetDataResponse_Literal)(nil), + (*GetDataResponse_InputData)(nil), + (*GetDataResponse_OutputData)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/flyteidl/gen/pb-go/flyteidl/service/external_plugin_service.pb.go b/flyteidl/gen/pb-go/flyteidl/service/external_plugin_service.pb.go index d0dc517425..0302ef9104 100644 --- a/flyteidl/gen/pb-go/flyteidl/service/external_plugin_service.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/service/external_plugin_service.pb.go @@ -90,11 +90,18 @@ type TaskCreateRequest struct { // The inputs required to start the execution. All required inputs must be // included in this map. If not required and not provided, defaults apply. // +optional - Inputs *core.LiteralMap `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` + // Deprecated: please use inputs instead. + // + // Deprecated: Marked as deprecated in flyteidl/service/external_plugin_service.proto. + DeprecatedInputs *core.LiteralMap `protobuf:"bytes,1,opt,name=deprecated_inputs,json=deprecatedInputs,proto3" json:"deprecated_inputs,omitempty"` // Template of the task that encapsulates all the metadata of the task. Template *core.TaskTemplate `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) OutputPrefix string `protobuf:"bytes,3,opt,name=output_prefix,json=outputPrefix,proto3" json:"output_prefix,omitempty"` + // The inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + Inputs *core.InputData `protobuf:"bytes,4,opt,name=inputs,proto3" json:"inputs,omitempty"` } func (x *TaskCreateRequest) Reset() { @@ -129,9 +136,10 @@ func (*TaskCreateRequest) Descriptor() ([]byte, []int) { return file_flyteidl_service_external_plugin_service_proto_rawDescGZIP(), []int{0} } -func (x *TaskCreateRequest) GetInputs() *core.LiteralMap { +// Deprecated: Marked as deprecated in flyteidl/service/external_plugin_service.proto. +func (x *TaskCreateRequest) GetDeprecatedInputs() *core.LiteralMap { if x != nil { - return x.Inputs + return x.DeprecatedInputs } return nil } @@ -150,6 +158,13 @@ func (x *TaskCreateRequest) GetOutputPrefix() string { return "" } +func (x *TaskCreateRequest) GetInputs() *core.InputData { + if x != nil { + return x.Inputs + } + return nil +} + // Represents a create response structure. // // Deprecated: Marked as deprecated in flyteidl/service/external_plugin_service.proto. @@ -273,7 +288,12 @@ type TaskGetResponse struct { // The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a // Structured dataset pointing to the query result table. // +optional - Outputs *core.LiteralMap `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` + // Deprecated: Please use outputs instead + DeprecatedOutputs *core.LiteralMap `protobuf:"bytes,2,opt,name=deprecated_outputs,json=deprecatedOutputs,proto3" json:"deprecated_outputs,omitempty"` + // The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + // Structured dataset pointing to the query result table. + // +optional + Outputs *core.OutputData `protobuf:"bytes,3,opt,name=outputs,proto3" json:"outputs,omitempty"` } func (x *TaskGetResponse) Reset() { @@ -315,7 +335,14 @@ func (x *TaskGetResponse) GetState() State { return State_RETRYABLE_FAILURE } -func (x *TaskGetResponse) GetOutputs() *core.LiteralMap { +func (x *TaskGetResponse) GetDeprecatedOutputs() *core.LiteralMap { + if x != nil { + return x.DeprecatedOutputs + } + return nil +} + +func (x *TaskGetResponse) GetOutputs() *core.OutputData { if x != nil { return x.Outputs } @@ -433,78 +460,88 @@ var file_flyteidl_service_external_plugin_service_proto_rawDesc = []byte{ 0x63, 0x65, 0x1a, 0x1c, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x01, 0x0a, 0x11, + 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x31, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x06, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x2f, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, - 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, - 0x62, 0x49, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x48, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, - 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x3a, 0x02, 0x18, - 0x01, 0x22, 0x79, 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, - 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x4b, 0x0a, 0x11, - 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, - 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x18, 0x0a, 0x12, 0x54, 0x61, 0x73, - 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, - 0x02, 0x18, 0x01, 0x2a, 0x62, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, - 0x52, 0x45, 0x54, 0x52, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, - 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, - 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, - 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, - 0x44, 0x10, 0x04, 0x1a, 0x02, 0x18, 0x01, 0x32, 0xa8, 0x02, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x5c, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, - 0x53, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x12, 0x4a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x37, 0x0a, + 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x30, 0x0a, 0x06, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x02, 0x18, + 0x01, 0x22, 0x2f, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x3a, 0x02, + 0x18, 0x01, 0x22, 0x48, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xc3, 0x01, 0x0a, + 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x48, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x02, + 0x18, 0x01, 0x22, 0x4b, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, + 0x18, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x02, 0x18, 0x01, 0x2a, 0x62, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x52, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, + 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, + 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, + 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x1a, 0x02, 0x18, 0x01, 0x32, 0xa8, 0x02, + 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x88, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, - 0x02, 0x01, 0x42, 0xd2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x1a, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x53, 0x58, 0xaa, 0x02, - 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x53, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x42, 0xd2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x42, 0x1a, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xa2, 0x02, + 0x03, 0x46, 0x53, 0x58, 0xaa, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xca, 0x02, 0x10, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xe2, 0x02, 0x1c, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x46, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -531,23 +568,27 @@ var file_flyteidl_service_external_plugin_service_proto_goTypes = []interface{}{ (*TaskDeleteResponse)(nil), // 6: flyteidl.service.TaskDeleteResponse (*core.LiteralMap)(nil), // 7: flyteidl.core.LiteralMap (*core.TaskTemplate)(nil), // 8: flyteidl.core.TaskTemplate + (*core.InputData)(nil), // 9: flyteidl.core.InputData + (*core.OutputData)(nil), // 10: flyteidl.core.OutputData } var file_flyteidl_service_external_plugin_service_proto_depIdxs = []int32{ - 7, // 0: flyteidl.service.TaskCreateRequest.inputs:type_name -> flyteidl.core.LiteralMap - 8, // 1: flyteidl.service.TaskCreateRequest.template:type_name -> flyteidl.core.TaskTemplate - 0, // 2: flyteidl.service.TaskGetResponse.state:type_name -> flyteidl.service.State - 7, // 3: flyteidl.service.TaskGetResponse.outputs:type_name -> flyteidl.core.LiteralMap - 1, // 4: flyteidl.service.ExternalPluginService.CreateTask:input_type -> flyteidl.service.TaskCreateRequest - 3, // 5: flyteidl.service.ExternalPluginService.GetTask:input_type -> flyteidl.service.TaskGetRequest - 5, // 6: flyteidl.service.ExternalPluginService.DeleteTask:input_type -> flyteidl.service.TaskDeleteRequest - 2, // 7: flyteidl.service.ExternalPluginService.CreateTask:output_type -> flyteidl.service.TaskCreateResponse - 4, // 8: flyteidl.service.ExternalPluginService.GetTask:output_type -> flyteidl.service.TaskGetResponse - 6, // 9: flyteidl.service.ExternalPluginService.DeleteTask:output_type -> flyteidl.service.TaskDeleteResponse - 7, // [7:10] is the sub-list for method output_type - 4, // [4:7] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 7, // 0: flyteidl.service.TaskCreateRequest.deprecated_inputs:type_name -> flyteidl.core.LiteralMap + 8, // 1: flyteidl.service.TaskCreateRequest.template:type_name -> flyteidl.core.TaskTemplate + 9, // 2: flyteidl.service.TaskCreateRequest.inputs:type_name -> flyteidl.core.InputData + 0, // 3: flyteidl.service.TaskGetResponse.state:type_name -> flyteidl.service.State + 7, // 4: flyteidl.service.TaskGetResponse.deprecated_outputs:type_name -> flyteidl.core.LiteralMap + 10, // 5: flyteidl.service.TaskGetResponse.outputs:type_name -> flyteidl.core.OutputData + 1, // 6: flyteidl.service.ExternalPluginService.CreateTask:input_type -> flyteidl.service.TaskCreateRequest + 3, // 7: flyteidl.service.ExternalPluginService.GetTask:input_type -> flyteidl.service.TaskGetRequest + 5, // 8: flyteidl.service.ExternalPluginService.DeleteTask:input_type -> flyteidl.service.TaskDeleteRequest + 2, // 9: flyteidl.service.ExternalPluginService.CreateTask:output_type -> flyteidl.service.TaskCreateResponse + 4, // 10: flyteidl.service.ExternalPluginService.GetTask:output_type -> flyteidl.service.TaskGetResponse + 6, // 11: flyteidl.service.ExternalPluginService.DeleteTask:output_type -> flyteidl.service.TaskDeleteResponse + 9, // [9:12] is the sub-list for method output_type + 6, // [6:9] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_flyteidl_service_external_plugin_service_proto_init() } diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json index 4854a4e895..0fd1f8be8d 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4769,6 +4769,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "Raw output data produced by this execution.\nDEPRECATED. Use GetExecutionData to fetch output data instead." }, + "full_outputs": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this execution.\nDEPRECATED. Use GetExecutionData to fetch output data instead." + }, "computed_inputs": { "$ref": "#/definitions/coreLiteralMap", "title": "Inputs computed and passed for execution.\ncomputed_inputs depends on inputs in ExecutionSpec, fixed and default inputs in launch plan" @@ -4845,11 +4849,15 @@ }, "inputs": { "$ref": "#/definitions/coreLiteralMap", - "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" + "description": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional\nDeprecated: Please use input_data instead." }, "org": { "type": "string", "description": "Optional, org key applied to the resource." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" } }, "description": "Request to launch an execution with the given project, domain and optionally-assigned name." @@ -5289,7 +5297,7 @@ }, "fixed_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Fixed, non-overridable inputs for the Launch Plan.\nThese can not be overridden when an execution is created with this launch plan." + "title": "Fixed, non-overridable inputs for the Launch Plan.\nThese can not be overridden when an execution is created with this launch plan.\nDeprecated: Please use fixec_input_data instead" }, "role": { "type": "string", @@ -5346,6 +5354,10 @@ "$ref": "#/definitions/coreExecutionEnvAssignment" }, "description": "Execution environment assignments to be set for the execution." + }, + "fixed_input_data": { + "$ref": "#/definitions/coreInputData", + "description": "Fixed, non-overridable inputs for the Launch Plan.\nThese can not be overridden when an execution is created with this launch plan." } }, "description": "User-provided launch plan definition and configuration values." @@ -5578,6 +5590,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "Raw output data produced by this node execution.\nDEPRECATED. Use GetNodeExecutionData to fetch output data instead." }, + "full_outputs": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this node execution." + }, "phase": { "$ref": "#/definitions/coreNodeExecutionPhase", "description": "The last recorded phase for this node execution." @@ -5649,11 +5665,19 @@ }, "full_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_inputs will only be populated if they are under a configured size threshold." + "description": "Full_inputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use input_data instead." }, "full_outputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_outputs will only be populated if they are under a configured size threshold." + "description": "Full_outputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use output_data instead." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData will only be populated if they are under a configured size threshold." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData will only be populated if they are under a configured size threshold." }, "dynamic_workflow": { "$ref": "#/definitions/flyteidladminDynamicWorkflowNodeMetadata", @@ -6073,6 +6097,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "Raw output data produced by this task execution.\nDEPRECATED. Use GetTaskExecutionData to fetch output data instead." }, + "full_outputs": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this task execution." + }, "phase": { "$ref": "#/definitions/coreTaskExecutionPhase", "description": "The last recorded phase for this task execution." @@ -6167,11 +6195,19 @@ }, "full_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_inputs will only be populated if they are under a configured size threshold." + "description": "Full_inputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use input_data instead." }, "full_outputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_outputs will only be populated if they are under a configured size threshold." + "description": "Full_outputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use output_data instead." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData will only be populated if they are under a configured size threshold." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData will only be populated if they are under a configured size threshold." }, "flyte_urls": { "$ref": "#/definitions/adminFlyteURLs", @@ -6451,11 +6487,19 @@ }, "full_inputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_inputs will only be populated if they are under a configured size threshold." + "description": "Full_inputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use input_data instead." }, "full_outputs": { "$ref": "#/definitions/coreLiteralMap", - "description": "Full_outputs will only be populated if they are under a configured size threshold." + "description": "Full_outputs will only be populated if they are under a configured size threshold.\nDeprecated: Please use output_data instead." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData will only be populated if they are under a configured size threshold." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData will only be populated if they are under a configured size threshold." } }, "description": "Response structure for WorkflowExecutionGetDataRequest which contains inputs and outputs for an execution." @@ -7310,6 +7354,16 @@ } } }, + "coreInputData": { + "type": "object", + "properties": { + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of input variables to their values." + } + }, + "description": "InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to\ntheir values." + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -7675,6 +7729,16 @@ }, "description": "Defines an operand to a comparison expression." }, + "coreOutputData": { + "type": "object", + "properties": { + "outputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of output variables to their values." + } + }, + "description": "OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to\ntheir values." + }, "coreOutputReference": { "type": "object", "properties": { @@ -8642,8 +8706,12 @@ "input_uri": { "type": "string" }, - "input_data": { + "deprecated_input_data": { "$ref": "#/definitions/coreLiteralMap", + "title": "Raw input data consumed by this node execution.\nDeprecated: please use input_data instead" + }, + "input_data": { + "$ref": "#/definitions/coreInputData", "description": "Raw input data consumed by this node execution." }, "output_uri": { @@ -8654,9 +8722,13 @@ "$ref": "#/definitions/coreExecutionError", "title": "Error information for the execution" }, - "output_data": { + "deprecated_output_data": { "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this node execution." + "title": "Raw output data produced by this workflow execution.\nDeprecated: please use output_data instead" + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this workflow execution." }, "workflow_node_metadata": { "$ref": "#/definitions/flyteidleventWorkflowNodeMetadata" @@ -8791,9 +8863,13 @@ "type": "string", "description": "URI of the input file, it encodes all the information\nincluding Cloud source provider. ie., s3://..." }, - "input_data": { + "deprecated_input_data": { "$ref": "#/definitions/coreLiteralMap", - "description": "Raw input data consumed by this task execution." + "title": "Raw input data consumed by this node execution.\nDeprecated: please use input_data instead" + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "Raw input data consumed by this node execution." }, "output_uri": { "type": "string", @@ -8803,9 +8879,13 @@ "$ref": "#/definitions/coreExecutionError", "title": "Error information for the execution" }, - "output_data": { + "deprecated_output_data": { "$ref": "#/definitions/coreLiteralMap", - "description": "Raw output data produced by this task execution." + "title": "Raw output data produced by this workflow execution.\nDeprecated: please use output_data instead" + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "Raw output data produced by this workflow execution." }, "custom_info": { "type": "object", @@ -8876,9 +8956,17 @@ "$ref": "#/definitions/coreExecutionError", "title": "Error information for the execution" }, - "output_data": { + "deprecated_output_data": { "$ref": "#/definitions/coreLiteralMap", + "title": "Raw output data produced by this workflow execution.\nDeprecated: please use output_data instead" + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", "description": "Raw output data produced by this workflow execution." + }, + "event_version": { + "type": "integer", + "format": "int32" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json index a0e8cfed39..9764e5301e 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -645,9 +645,9 @@ "adminCreateTaskRequest": { "type": "object", "properties": { - "inputs": { + "deprecated_inputs": { "$ref": "#/definitions/coreLiteralMap", - "title": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" + "description": "The inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional\nDeprecated: Use inputs instead." }, "template": { "$ref": "#/definitions/coreTaskTemplate", @@ -660,6 +660,10 @@ "task_execution_metadata": { "$ref": "#/definitions/flyteidladminTaskExecutionMetadata", "description": "subset of runtime task execution metadata." + }, + "inputs": { + "$ref": "#/definitions/coreInputData", + "title": "Inputs are the inputs required to start the execution. All required inputs must be\nincluded in this map. If not required and not provided, defaults apply.\n+optional" } }, "description": "Represents a request structure to create task." @@ -794,9 +798,9 @@ "$ref": "#/definitions/flyteidladminState", "description": "DEPRECATED. The state of the execution is used to control its visibility in the UI/CLI." }, - "outputs": { + "deprecated_outputs": { "$ref": "#/definitions/coreLiteralMap", - "title": "The outputs of the execution. It's typically used by sql task. Agent service will create a\nStructured dataset pointing to the query result table.\n+optional" + "description": "The outputs of the execution. It's typically used by sql task. Agent service will create a\nStructured dataset pointing to the query result table.\n+optional\nDeprecated: Use outputs instead." }, "message": { "type": "string", @@ -817,6 +821,10 @@ "custom_info": { "type": "object", "description": "Custom data specific to the agent." + }, + "outputs": { + "$ref": "#/definitions/coreOutputData", + "title": "The outputs of the execution. It's typically used by sql task. Agent service will create a\nStructured dataset pointing to the query result table.\n+optional" } } }, @@ -1179,6 +1187,16 @@ } } }, + "coreInputData": { + "type": "object", + "properties": { + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of input variables to their values." + } + }, + "description": "InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to\ntheir values." + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -1404,6 +1422,16 @@ "default": "CLIENT_CREDENTIALS", "description": "Type of the token requested.\n\n - CLIENT_CREDENTIALS: CLIENT_CREDENTIALS indicates a 2-legged OAuth token requested using client credentials." }, + "coreOutputData": { + "type": "object", + "properties": { + "outputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of output variables to their values." + } + }, + "description": "OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to\ntheir values." + }, "corePartitions": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json index 4798fc6c2d..ff21b08e3b 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -262,6 +262,16 @@ }, "description": "Represents an error thrown from a node." }, + "coreInputData": { + "type": "object", + "properties": { + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of input variables to their values." + } + }, + "description": "InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to\ntheir values." + }, "coreLiteral": { "type": "object", "properties": { @@ -378,6 +388,16 @@ }, "description": "Encapsulation of fields that identify a Flyte node execution entity." }, + "coreOutputData": { + "type": "object", + "properties": { + "outputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of output variables to their values." + } + }, + "description": "OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to\ntheir values." + }, "corePrimitive": { "type": "object", "properties": { @@ -799,6 +819,14 @@ "literal": { "$ref": "#/definitions/coreLiteral", "description": "Single literal will be returned. This is returned when the user/url requests a specific output or input\nby name. See the o3 example above." + }, + "input_data": { + "$ref": "#/definitions/coreInputData", + "description": "InputData is returned when the user/url requests the input data for an execution." + }, + "output_data": { + "$ref": "#/definitions/coreOutputData", + "description": "OutputData is returned when the user/url requests the output data for an execution." } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json index f488a49c00..d1e11e8bed 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json @@ -495,6 +495,16 @@ } } }, + "coreInputData": { + "type": "object", + "properties": { + "inputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of input variables to their values." + } + }, + "description": "InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to\ntheir values." + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -708,6 +718,16 @@ "default": "CLIENT_CREDENTIALS", "description": "Type of the token requested.\n\n - CLIENT_CREDENTIALS: CLIENT_CREDENTIALS indicates a 2-legged OAuth token requested using client credentials." }, + "coreOutputData": { + "type": "object", + "properties": { + "outputs": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of output variables to their values." + } + }, + "description": "OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to\ntheir values." + }, "corePartitions": { "type": "object", "properties": { @@ -1339,8 +1359,12 @@ "$ref": "#/definitions/flyteidlserviceState", "description": "The state of the execution is used to control its visibility in the UI/CLI." }, - "outputs": { + "deprecated_outputs": { "$ref": "#/definitions/coreLiteralMap", + "title": "The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a\nStructured dataset pointing to the query result table.\n+optional\nDeprecated: Please use outputs instead" + }, + "outputs": { + "$ref": "#/definitions/coreOutputData", "title": "The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a\nStructured dataset pointing to the query result table.\n+optional" } }, diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index db54ecb73b..82cc68c027 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -3556,6 +3556,110 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of an InputData. */ + interface IInputData { + + /** InputData inputs */ + inputs?: (flyteidl.core.ILiteralMap|null); + } + + /** Represents an InputData. */ + class InputData implements IInputData { + + /** + * Constructs a new InputData. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.IInputData); + + /** InputData inputs. */ + public inputs?: (flyteidl.core.ILiteralMap|null); + + /** + * Creates a new InputData instance using the specified properties. + * @param [properties] Properties to set + * @returns InputData instance + */ + public static create(properties?: flyteidl.core.IInputData): flyteidl.core.InputData; + + /** + * Encodes the specified InputData message. Does not implicitly {@link flyteidl.core.InputData.verify|verify} messages. + * @param message InputData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.IInputData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an InputData message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns InputData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.InputData; + + /** + * Verifies an InputData message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of an OutputData. */ + interface IOutputData { + + /** OutputData outputs */ + outputs?: (flyteidl.core.ILiteralMap|null); + } + + /** Represents an OutputData. */ + class OutputData implements IOutputData { + + /** + * Constructs a new OutputData. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.IOutputData); + + /** OutputData outputs. */ + public outputs?: (flyteidl.core.ILiteralMap|null); + + /** + * Creates a new OutputData instance using the specified properties. + * @param [properties] Properties to set + * @returns OutputData instance + */ + public static create(properties?: flyteidl.core.IOutputData): flyteidl.core.OutputData; + + /** + * Encodes the specified OutputData message. Does not implicitly {@link flyteidl.core.OutputData.verify|verify} messages. + * @param message OutputData message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.IOutputData, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OutputData message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OutputData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.OutputData; + + /** + * Verifies an OutputData message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Properties of a BindingDataCollection. */ interface IBindingDataCollection { @@ -8260,8 +8364,14 @@ export namespace flyteidl { /** WorkflowExecutionEvent error */ error?: (flyteidl.core.IExecutionError|null); + /** WorkflowExecutionEvent deprecatedOutputData */ + deprecatedOutputData?: (flyteidl.core.ILiteralMap|null); + /** WorkflowExecutionEvent outputData */ - outputData?: (flyteidl.core.ILiteralMap|null); + outputData?: (flyteidl.core.IOutputData|null); + + /** WorkflowExecutionEvent eventVersion */ + eventVersion?: (number|null); } /** Represents a WorkflowExecutionEvent. */ @@ -8291,11 +8401,17 @@ export namespace flyteidl { /** WorkflowExecutionEvent error. */ public error?: (flyteidl.core.IExecutionError|null); + /** WorkflowExecutionEvent deprecatedOutputData. */ + public deprecatedOutputData?: (flyteidl.core.ILiteralMap|null); + /** WorkflowExecutionEvent outputData. */ - public outputData?: (flyteidl.core.ILiteralMap|null); + public outputData?: (flyteidl.core.IOutputData|null); + + /** WorkflowExecutionEvent eventVersion. */ + public eventVersion: number; /** WorkflowExecutionEvent outputResult. */ - public outputResult?: ("outputUri"|"error"|"outputData"); + public outputResult?: ("outputUri"|"error"|"deprecatedOutputData"|"outputData"); /** * Creates a new WorkflowExecutionEvent instance using the specified properties. @@ -8348,8 +8464,11 @@ export namespace flyteidl { /** NodeExecutionEvent inputUri */ inputUri?: (string|null); + /** NodeExecutionEvent deprecatedInputData */ + deprecatedInputData?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionEvent inputData */ - inputData?: (flyteidl.core.ILiteralMap|null); + inputData?: (flyteidl.core.IInputData|null); /** NodeExecutionEvent outputUri */ outputUri?: (string|null); @@ -8357,8 +8476,11 @@ export namespace flyteidl { /** NodeExecutionEvent error */ error?: (flyteidl.core.IExecutionError|null); + /** NodeExecutionEvent deprecatedOutputData */ + deprecatedOutputData?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionEvent outputData */ - outputData?: (flyteidl.core.ILiteralMap|null); + outputData?: (flyteidl.core.IOutputData|null); /** NodeExecutionEvent workflowNodeMetadata */ workflowNodeMetadata?: (flyteidl.event.IWorkflowNodeMetadata|null); @@ -8430,8 +8552,11 @@ export namespace flyteidl { /** NodeExecutionEvent inputUri. */ public inputUri: string; + /** NodeExecutionEvent deprecatedInputData. */ + public deprecatedInputData?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionEvent inputData. */ - public inputData?: (flyteidl.core.ILiteralMap|null); + public inputData?: (flyteidl.core.IInputData|null); /** NodeExecutionEvent outputUri. */ public outputUri: string; @@ -8439,8 +8564,11 @@ export namespace flyteidl { /** NodeExecutionEvent error. */ public error?: (flyteidl.core.IExecutionError|null); + /** NodeExecutionEvent deprecatedOutputData. */ + public deprecatedOutputData?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionEvent outputData. */ - public outputData?: (flyteidl.core.ILiteralMap|null); + public outputData?: (flyteidl.core.IOutputData|null); /** NodeExecutionEvent workflowNodeMetadata. */ public workflowNodeMetadata?: (flyteidl.event.IWorkflowNodeMetadata|null); @@ -8488,10 +8616,10 @@ export namespace flyteidl { public isInDynamicChain: boolean; /** NodeExecutionEvent inputValue. */ - public inputValue?: ("inputUri"|"inputData"); + public inputValue?: ("inputUri"|"deprecatedInputData"|"inputData"); /** NodeExecutionEvent outputResult. */ - public outputResult?: ("outputUri"|"error"|"outputData"); + public outputResult?: ("outputUri"|"error"|"deprecatedOutputData"|"outputData"); /** NodeExecutionEvent targetMetadata. */ public targetMetadata?: ("workflowNodeMetadata"|"taskNodeMetadata"); @@ -8910,8 +9038,11 @@ export namespace flyteidl { /** TaskExecutionEvent inputUri */ inputUri?: (string|null); + /** TaskExecutionEvent deprecatedInputData */ + deprecatedInputData?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionEvent inputData */ - inputData?: (flyteidl.core.ILiteralMap|null); + inputData?: (flyteidl.core.IInputData|null); /** TaskExecutionEvent outputUri */ outputUri?: (string|null); @@ -8919,8 +9050,11 @@ export namespace flyteidl { /** TaskExecutionEvent error */ error?: (flyteidl.core.IExecutionError|null); + /** TaskExecutionEvent deprecatedOutputData */ + deprecatedOutputData?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionEvent outputData */ - outputData?: (flyteidl.core.ILiteralMap|null); + outputData?: (flyteidl.core.IOutputData|null); /** TaskExecutionEvent customInfo */ customInfo?: (google.protobuf.IStruct|null); @@ -8980,8 +9114,11 @@ export namespace flyteidl { /** TaskExecutionEvent inputUri. */ public inputUri: string; + /** TaskExecutionEvent deprecatedInputData. */ + public deprecatedInputData?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionEvent inputData. */ - public inputData?: (flyteidl.core.ILiteralMap|null); + public inputData?: (flyteidl.core.IInputData|null); /** TaskExecutionEvent outputUri. */ public outputUri: string; @@ -8989,8 +9126,11 @@ export namespace flyteidl { /** TaskExecutionEvent error. */ public error?: (flyteidl.core.IExecutionError|null); + /** TaskExecutionEvent deprecatedOutputData. */ + public deprecatedOutputData?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionEvent outputData. */ - public outputData?: (flyteidl.core.ILiteralMap|null); + public outputData?: (flyteidl.core.IOutputData|null); /** TaskExecutionEvent customInfo. */ public customInfo?: (google.protobuf.IStruct|null); @@ -9017,10 +9157,10 @@ export namespace flyteidl { public reportedAt?: (google.protobuf.ITimestamp|null); /** TaskExecutionEvent inputValue. */ - public inputValue?: ("inputUri"|"inputData"); + public inputValue?: ("inputUri"|"deprecatedInputData"|"inputData"); /** TaskExecutionEvent outputResult. */ - public outputResult?: ("outputUri"|"error"|"outputData"); + public outputResult?: ("outputUri"|"error"|"deprecatedOutputData"|"outputData"); /** * Creates a new TaskExecutionEvent instance using the specified properties. @@ -9408,8 +9548,8 @@ export namespace flyteidl { /** Properties of a CreateTaskRequest. */ interface ICreateTaskRequest { - /** CreateTaskRequest inputs */ - inputs?: (flyteidl.core.ILiteralMap|null); + /** CreateTaskRequest deprecatedInputs */ + deprecatedInputs?: (flyteidl.core.ILiteralMap|null); /** CreateTaskRequest template */ template?: (flyteidl.core.ITaskTemplate|null); @@ -9419,6 +9559,9 @@ export namespace flyteidl { /** CreateTaskRequest taskExecutionMetadata */ taskExecutionMetadata?: (flyteidl.admin.ITaskExecutionMetadata|null); + + /** CreateTaskRequest inputs */ + inputs?: (flyteidl.core.IInputData|null); } /** Represents a CreateTaskRequest. */ @@ -9430,8 +9573,8 @@ export namespace flyteidl { */ constructor(properties?: flyteidl.admin.ICreateTaskRequest); - /** CreateTaskRequest inputs. */ - public inputs?: (flyteidl.core.ILiteralMap|null); + /** CreateTaskRequest deprecatedInputs. */ + public deprecatedInputs?: (flyteidl.core.ILiteralMap|null); /** CreateTaskRequest template. */ public template?: (flyteidl.core.ITaskTemplate|null); @@ -9442,6 +9585,9 @@ export namespace flyteidl { /** CreateTaskRequest taskExecutionMetadata. */ public taskExecutionMetadata?: (flyteidl.admin.ITaskExecutionMetadata|null); + /** CreateTaskRequest inputs. */ + public inputs?: (flyteidl.core.IInputData|null); + /** * Creates a new CreateTaskRequest instance using the specified properties. * @param [properties] Properties to set @@ -9893,8 +10039,8 @@ export namespace flyteidl { /** Resource state */ state?: (flyteidl.admin.State|null); - /** Resource outputs */ - outputs?: (flyteidl.core.ILiteralMap|null); + /** Resource deprecatedOutputs */ + deprecatedOutputs?: (flyteidl.core.ILiteralMap|null); /** Resource message */ message?: (string|null); @@ -9907,6 +10053,9 @@ export namespace flyteidl { /** Resource customInfo */ customInfo?: (google.protobuf.IStruct|null); + + /** Resource outputs */ + outputs?: (flyteidl.core.IOutputData|null); } /** Represents a Resource. */ @@ -9921,8 +10070,8 @@ export namespace flyteidl { /** Resource state. */ public state: flyteidl.admin.State; - /** Resource outputs. */ - public outputs?: (flyteidl.core.ILiteralMap|null); + /** Resource deprecatedOutputs. */ + public deprecatedOutputs?: (flyteidl.core.ILiteralMap|null); /** Resource message. */ public message: string; @@ -9936,6 +10085,9 @@ export namespace flyteidl { /** Resource customInfo. */ public customInfo?: (google.protobuf.IStruct|null); + /** Resource outputs. */ + public outputs?: (flyteidl.core.IOutputData|null); + /** * Creates a new Resource instance using the specified properties. * @param [properties] Properties to set @@ -13165,6 +13317,9 @@ export namespace flyteidl { /** ExecutionCreateRequest org */ org?: (string|null); + + /** ExecutionCreateRequest inputData */ + inputData?: (flyteidl.core.IInputData|null); } /** Represents an ExecutionCreateRequest. */ @@ -13194,6 +13349,9 @@ export namespace flyteidl { /** ExecutionCreateRequest org. */ public org: string; + /** ExecutionCreateRequest inputData. */ + public inputData?: (flyteidl.core.IInputData|null); + /** * Creates a new ExecutionCreateRequest instance using the specified properties. * @param [properties] Properties to set @@ -13718,6 +13876,9 @@ export namespace flyteidl { /** ExecutionClosure outputData */ outputData?: (flyteidl.core.ILiteralMap|null); + /** ExecutionClosure fullOutputs */ + fullOutputs?: (flyteidl.core.IOutputData|null); + /** ExecutionClosure computedInputs */ computedInputs?: (flyteidl.core.ILiteralMap|null); @@ -13770,6 +13931,9 @@ export namespace flyteidl { /** ExecutionClosure outputData. */ public outputData?: (flyteidl.core.ILiteralMap|null); + /** ExecutionClosure fullOutputs. */ + public fullOutputs?: (flyteidl.core.IOutputData|null); + /** ExecutionClosure computedInputs. */ public computedInputs?: (flyteidl.core.ILiteralMap|null); @@ -13798,7 +13962,7 @@ export namespace flyteidl { public stateChangeDetails?: (flyteidl.admin.IExecutionStateChangeDetails|null); /** ExecutionClosure outputResult. */ - public outputResult?: ("outputs"|"error"|"abortCause"|"abortMetadata"|"outputData"); + public outputResult?: ("outputs"|"error"|"abortCause"|"abortMetadata"|"outputData"|"fullOutputs"); /** * Creates a new ExecutionClosure instance using the specified properties. @@ -14384,6 +14548,12 @@ export namespace flyteidl { /** WorkflowExecutionGetDataResponse fullOutputs */ fullOutputs?: (flyteidl.core.ILiteralMap|null); + + /** WorkflowExecutionGetDataResponse inputData */ + inputData?: (flyteidl.core.IInputData|null); + + /** WorkflowExecutionGetDataResponse outputData */ + outputData?: (flyteidl.core.IOutputData|null); } /** Represents a WorkflowExecutionGetDataResponse. */ @@ -14407,6 +14577,12 @@ export namespace flyteidl { /** WorkflowExecutionGetDataResponse fullOutputs. */ public fullOutputs?: (flyteidl.core.ILiteralMap|null); + /** WorkflowExecutionGetDataResponse inputData. */ + public inputData?: (flyteidl.core.IInputData|null); + + /** WorkflowExecutionGetDataResponse outputData. */ + public outputData?: (flyteidl.core.IOutputData|null); + /** * Creates a new WorkflowExecutionGetDataResponse instance using the specified properties. * @param [properties] Properties to set @@ -15883,6 +16059,9 @@ export namespace flyteidl { /** LaunchPlanSpec executionEnvAssignments */ executionEnvAssignments?: (flyteidl.core.IExecutionEnvAssignment[]|null); + + /** LaunchPlanSpec fixedInputData */ + fixedInputData?: (flyteidl.core.IInputData|null); } /** Represents a LaunchPlanSpec. */ @@ -15945,6 +16124,9 @@ export namespace flyteidl { /** LaunchPlanSpec executionEnvAssignments. */ public executionEnvAssignments: flyteidl.core.IExecutionEnvAssignment[]; + /** LaunchPlanSpec fixedInputData. */ + public fixedInputData?: (flyteidl.core.IInputData|null); + /** * Creates a new LaunchPlanSpec instance using the specified properties. * @param [properties] Properties to set @@ -16978,6 +17160,9 @@ export namespace flyteidl { /** NodeExecutionClosure outputData */ outputData?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionClosure fullOutputs */ + fullOutputs?: (flyteidl.core.IOutputData|null); + /** NodeExecutionClosure phase */ phase?: (flyteidl.core.NodeExecution.Phase|null); @@ -17024,6 +17209,9 @@ export namespace flyteidl { /** NodeExecutionClosure outputData. */ public outputData?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionClosure fullOutputs. */ + public fullOutputs?: (flyteidl.core.IOutputData|null); + /** NodeExecutionClosure phase. */ public phase: flyteidl.core.NodeExecution.Phase; @@ -17052,7 +17240,7 @@ export namespace flyteidl { public dynamicJobSpecUri: string; /** NodeExecutionClosure outputResult. */ - public outputResult?: ("outputUri"|"error"|"outputData"); + public outputResult?: ("outputUri"|"error"|"outputData"|"fullOutputs"); /** NodeExecutionClosure targetMetadata. */ public targetMetadata?: ("workflowNodeMetadata"|"taskNodeMetadata"); @@ -17337,6 +17525,12 @@ export namespace flyteidl { /** NodeExecutionGetDataResponse fullOutputs */ fullOutputs?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionGetDataResponse inputData */ + inputData?: (flyteidl.core.IInputData|null); + + /** NodeExecutionGetDataResponse outputData */ + outputData?: (flyteidl.core.IOutputData|null); + /** NodeExecutionGetDataResponse dynamicWorkflow */ dynamicWorkflow?: (flyteidl.admin.IDynamicWorkflowNodeMetadata|null); @@ -17365,6 +17559,12 @@ export namespace flyteidl { /** NodeExecutionGetDataResponse fullOutputs. */ public fullOutputs?: (flyteidl.core.ILiteralMap|null); + /** NodeExecutionGetDataResponse inputData. */ + public inputData?: (flyteidl.core.IInputData|null); + + /** NodeExecutionGetDataResponse outputData. */ + public outputData?: (flyteidl.core.IOutputData|null); + /** NodeExecutionGetDataResponse dynamicWorkflow. */ public dynamicWorkflow?: (flyteidl.admin.IDynamicWorkflowNodeMetadata|null); @@ -19932,6 +20132,9 @@ export namespace flyteidl { /** TaskExecutionClosure outputData */ outputData?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionClosure fullOutputs */ + fullOutputs?: (flyteidl.core.IOutputData|null); + /** TaskExecutionClosure phase */ phase?: (flyteidl.core.TaskExecution.Phase|null); @@ -19987,6 +20190,9 @@ export namespace flyteidl { /** TaskExecutionClosure outputData. */ public outputData?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionClosure fullOutputs. */ + public fullOutputs?: (flyteidl.core.IOutputData|null); + /** TaskExecutionClosure phase. */ public phase: flyteidl.core.TaskExecution.Phase; @@ -20024,7 +20230,7 @@ export namespace flyteidl { public reasons: flyteidl.admin.IReason[]; /** TaskExecutionClosure outputResult. */ - public outputResult?: ("outputUri"|"error"|"outputData"); + public outputResult?: ("outputUri"|"error"|"outputData"|"fullOutputs"); /** * Creates a new TaskExecutionClosure instance using the specified properties. @@ -20184,6 +20390,12 @@ export namespace flyteidl { /** TaskExecutionGetDataResponse fullOutputs */ fullOutputs?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionGetDataResponse inputData */ + inputData?: (flyteidl.core.IInputData|null); + + /** TaskExecutionGetDataResponse outputData */ + outputData?: (flyteidl.core.IOutputData|null); + /** TaskExecutionGetDataResponse flyteUrls */ flyteUrls?: (flyteidl.admin.IFlyteURLs|null); } @@ -20209,6 +20421,12 @@ export namespace flyteidl { /** TaskExecutionGetDataResponse fullOutputs. */ public fullOutputs?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionGetDataResponse inputData. */ + public inputData?: (flyteidl.core.IInputData|null); + + /** TaskExecutionGetDataResponse outputData. */ + public outputData?: (flyteidl.core.IOutputData|null); + /** TaskExecutionGetDataResponse flyteUrls. */ public flyteUrls?: (flyteidl.admin.IFlyteURLs|null); @@ -23672,6 +23890,12 @@ export namespace flyteidl { /** GetDataResponse literal */ literal?: (flyteidl.core.ILiteral|null); + + /** GetDataResponse inputData */ + inputData?: (flyteidl.core.IInputData|null); + + /** GetDataResponse outputData */ + outputData?: (flyteidl.core.IOutputData|null); } /** Represents a GetDataResponse. */ @@ -23692,8 +23916,14 @@ export namespace flyteidl { /** GetDataResponse literal. */ public literal?: (flyteidl.core.ILiteral|null); + /** GetDataResponse inputData. */ + public inputData?: (flyteidl.core.IInputData|null); + + /** GetDataResponse outputData. */ + public outputData?: (flyteidl.core.IOutputData|null); + /** GetDataResponse data. */ - public data?: ("literalMap"|"preSignedUrls"|"literal"); + public data?: ("literalMap"|"preSignedUrls"|"literal"|"inputData"|"outputData"); /** * Creates a new GetDataResponse instance using the specified properties. @@ -23935,14 +24165,17 @@ export namespace flyteidl { /** Properties of a TaskCreateRequest. */ interface ITaskCreateRequest { - /** TaskCreateRequest inputs */ - inputs?: (flyteidl.core.ILiteralMap|null); + /** TaskCreateRequest deprecatedInputs */ + deprecatedInputs?: (flyteidl.core.ILiteralMap|null); /** TaskCreateRequest template */ template?: (flyteidl.core.ITaskTemplate|null); /** TaskCreateRequest outputPrefix */ outputPrefix?: (string|null); + + /** TaskCreateRequest inputs */ + inputs?: (flyteidl.core.IInputData|null); } /** Represents a TaskCreateRequest. */ @@ -23954,8 +24187,8 @@ export namespace flyteidl { */ constructor(properties?: flyteidl.service.ITaskCreateRequest); - /** TaskCreateRequest inputs. */ - public inputs?: (flyteidl.core.ILiteralMap|null); + /** TaskCreateRequest deprecatedInputs. */ + public deprecatedInputs?: (flyteidl.core.ILiteralMap|null); /** TaskCreateRequest template. */ public template?: (flyteidl.core.ITaskTemplate|null); @@ -23963,6 +24196,9 @@ export namespace flyteidl { /** TaskCreateRequest outputPrefix. */ public outputPrefix: string; + /** TaskCreateRequest inputs. */ + public inputs?: (flyteidl.core.IInputData|null); + /** * Creates a new TaskCreateRequest instance using the specified properties. * @param [properties] Properties to set @@ -24112,8 +24348,11 @@ export namespace flyteidl { /** TaskGetResponse state */ state?: (flyteidl.service.State|null); + /** TaskGetResponse deprecatedOutputs */ + deprecatedOutputs?: (flyteidl.core.ILiteralMap|null); + /** TaskGetResponse outputs */ - outputs?: (flyteidl.core.ILiteralMap|null); + outputs?: (flyteidl.core.IOutputData|null); } /** Represents a TaskGetResponse. */ @@ -24128,8 +24367,11 @@ export namespace flyteidl { /** TaskGetResponse state. */ public state: flyteidl.service.State; + /** TaskGetResponse deprecatedOutputs. */ + public deprecatedOutputs?: (flyteidl.core.ILiteralMap|null); + /** TaskGetResponse outputs. */ - public outputs?: (flyteidl.core.ILiteralMap|null); + public outputs?: (flyteidl.core.IOutputData|null); /** * Creates a new TaskGetResponse instance using the specified properties. diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index b2c41b9bb6..6d8b5c9d25 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -8564,6 +8564,230 @@ return LiteralMap; })(); + core.InputData = (function() { + + /** + * Properties of an InputData. + * @memberof flyteidl.core + * @interface IInputData + * @property {flyteidl.core.ILiteralMap|null} [inputs] InputData inputs + */ + + /** + * Constructs a new InputData. + * @memberof flyteidl.core + * @classdesc Represents an InputData. + * @implements IInputData + * @constructor + * @param {flyteidl.core.IInputData=} [properties] Properties to set + */ + function InputData(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * InputData inputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} inputs + * @memberof flyteidl.core.InputData + * @instance + */ + InputData.prototype.inputs = null; + + /** + * Creates a new InputData instance using the specified properties. + * @function create + * @memberof flyteidl.core.InputData + * @static + * @param {flyteidl.core.IInputData=} [properties] Properties to set + * @returns {flyteidl.core.InputData} InputData instance + */ + InputData.create = function create(properties) { + return new InputData(properties); + }; + + /** + * Encodes the specified InputData message. Does not implicitly {@link flyteidl.core.InputData.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.InputData + * @static + * @param {flyteidl.core.IInputData} message InputData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + InputData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.inputs != null && message.hasOwnProperty("inputs")) + $root.flyteidl.core.LiteralMap.encode(message.inputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Decodes an InputData message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.InputData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.InputData} InputData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + InputData.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.InputData(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies an InputData message. + * @function verify + * @memberof flyteidl.core.InputData + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + InputData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.inputs != null && message.hasOwnProperty("inputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.inputs); + if (error) + return "inputs." + error; + } + return null; + }; + + return InputData; + })(); + + core.OutputData = (function() { + + /** + * Properties of an OutputData. + * @memberof flyteidl.core + * @interface IOutputData + * @property {flyteidl.core.ILiteralMap|null} [outputs] OutputData outputs + */ + + /** + * Constructs a new OutputData. + * @memberof flyteidl.core + * @classdesc Represents an OutputData. + * @implements IOutputData + * @constructor + * @param {flyteidl.core.IOutputData=} [properties] Properties to set + */ + function OutputData(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OutputData outputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} outputs + * @memberof flyteidl.core.OutputData + * @instance + */ + OutputData.prototype.outputs = null; + + /** + * Creates a new OutputData instance using the specified properties. + * @function create + * @memberof flyteidl.core.OutputData + * @static + * @param {flyteidl.core.IOutputData=} [properties] Properties to set + * @returns {flyteidl.core.OutputData} OutputData instance + */ + OutputData.create = function create(properties) { + return new OutputData(properties); + }; + + /** + * Encodes the specified OutputData message. Does not implicitly {@link flyteidl.core.OutputData.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.OutputData + * @static + * @param {flyteidl.core.IOutputData} message OutputData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OutputData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.outputs != null && message.hasOwnProperty("outputs")) + $root.flyteidl.core.LiteralMap.encode(message.outputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Decodes an OutputData message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.OutputData + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.OutputData} OutputData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OutputData.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.OutputData(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.outputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies an OutputData message. + * @function verify + * @memberof flyteidl.core.OutputData + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + OutputData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.outputs != null && message.hasOwnProperty("outputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.outputs); + if (error) + return "outputs." + error; + } + return null; + }; + + return OutputData; + })(); + core.BindingDataCollection = (function() { /** @@ -20022,7 +20246,9 @@ * @property {google.protobuf.ITimestamp|null} [occurredAt] WorkflowExecutionEvent occurredAt * @property {string|null} [outputUri] WorkflowExecutionEvent outputUri * @property {flyteidl.core.IExecutionError|null} [error] WorkflowExecutionEvent error - * @property {flyteidl.core.ILiteralMap|null} [outputData] WorkflowExecutionEvent outputData + * @property {flyteidl.core.ILiteralMap|null} [deprecatedOutputData] WorkflowExecutionEvent deprecatedOutputData + * @property {flyteidl.core.IOutputData|null} [outputData] WorkflowExecutionEvent outputData + * @property {number|null} [eventVersion] WorkflowExecutionEvent eventVersion */ /** @@ -20088,25 +20314,41 @@ */ WorkflowExecutionEvent.prototype.error = null; + /** + * WorkflowExecutionEvent deprecatedOutputData. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedOutputData + * @memberof flyteidl.event.WorkflowExecutionEvent + * @instance + */ + WorkflowExecutionEvent.prototype.deprecatedOutputData = null; + /** * WorkflowExecutionEvent outputData. - * @member {flyteidl.core.ILiteralMap|null|undefined} outputData + * @member {flyteidl.core.IOutputData|null|undefined} outputData * @memberof flyteidl.event.WorkflowExecutionEvent * @instance */ WorkflowExecutionEvent.prototype.outputData = null; + /** + * WorkflowExecutionEvent eventVersion. + * @member {number} eventVersion + * @memberof flyteidl.event.WorkflowExecutionEvent + * @instance + */ + WorkflowExecutionEvent.prototype.eventVersion = 0; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * WorkflowExecutionEvent outputResult. - * @member {"outputUri"|"error"|"outputData"|undefined} outputResult + * @member {"outputUri"|"error"|"deprecatedOutputData"|"outputData"|undefined} outputResult * @memberof flyteidl.event.WorkflowExecutionEvent * @instance */ Object.defineProperty(WorkflowExecutionEvent.prototype, "outputResult", { - get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData"]), + get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "deprecatedOutputData", "outputData"]), set: $util.oneOfSetter($oneOfFields) }); @@ -20146,8 +20388,12 @@ writer.uint32(/* id 5, wireType 2 =*/42).string(message.outputUri); if (message.error != null && message.hasOwnProperty("error")) $root.flyteidl.core.ExecutionError.encode(message.error, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.deprecatedOutputData != null && message.hasOwnProperty("deprecatedOutputData")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedOutputData, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); if (message.outputData != null && message.hasOwnProperty("outputData")) - $root.flyteidl.core.LiteralMap.encode(message.outputData, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.eventVersion != null && message.hasOwnProperty("eventVersion")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.eventVersion); return writer; }; @@ -20188,7 +20434,13 @@ message.error = $root.flyteidl.core.ExecutionError.decode(reader, reader.uint32()); break; case 7: - message.outputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedOutputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 8: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; + case 9: + message.eventVersion = reader.int32(); break; default: reader.skipType(tag & 7); @@ -20254,16 +20506,29 @@ return "error." + error; } } + if (message.deprecatedOutputData != null && message.hasOwnProperty("deprecatedOutputData")) { + if (properties.outputResult === 1) + return "outputResult: multiple values"; + properties.outputResult = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedOutputData); + if (error) + return "deprecatedOutputData." + error; + } + } if (message.outputData != null && message.hasOwnProperty("outputData")) { if (properties.outputResult === 1) return "outputResult: multiple values"; properties.outputResult = 1; { - var error = $root.flyteidl.core.LiteralMap.verify(message.outputData); + var error = $root.flyteidl.core.OutputData.verify(message.outputData); if (error) return "outputData." + error; } } + if (message.eventVersion != null && message.hasOwnProperty("eventVersion")) + if (!$util.isInteger(message.eventVersion)) + return "eventVersion: integer expected"; return null; }; @@ -20281,10 +20546,12 @@ * @property {flyteidl.core.NodeExecution.Phase|null} [phase] NodeExecutionEvent phase * @property {google.protobuf.ITimestamp|null} [occurredAt] NodeExecutionEvent occurredAt * @property {string|null} [inputUri] NodeExecutionEvent inputUri - * @property {flyteidl.core.ILiteralMap|null} [inputData] NodeExecutionEvent inputData + * @property {flyteidl.core.ILiteralMap|null} [deprecatedInputData] NodeExecutionEvent deprecatedInputData + * @property {flyteidl.core.IInputData|null} [inputData] NodeExecutionEvent inputData * @property {string|null} [outputUri] NodeExecutionEvent outputUri * @property {flyteidl.core.IExecutionError|null} [error] NodeExecutionEvent error - * @property {flyteidl.core.ILiteralMap|null} [outputData] NodeExecutionEvent outputData + * @property {flyteidl.core.ILiteralMap|null} [deprecatedOutputData] NodeExecutionEvent deprecatedOutputData + * @property {flyteidl.core.IOutputData|null} [outputData] NodeExecutionEvent outputData * @property {flyteidl.event.IWorkflowNodeMetadata|null} [workflowNodeMetadata] NodeExecutionEvent workflowNodeMetadata * @property {flyteidl.event.ITaskNodeMetadata|null} [taskNodeMetadata] NodeExecutionEvent taskNodeMetadata * @property {flyteidl.event.IParentTaskExecutionMetadata|null} [parentTaskMetadata] NodeExecutionEvent parentTaskMetadata @@ -20357,9 +20624,17 @@ */ NodeExecutionEvent.prototype.inputUri = ""; + /** + * NodeExecutionEvent deprecatedInputData. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedInputData + * @memberof flyteidl.event.NodeExecutionEvent + * @instance + */ + NodeExecutionEvent.prototype.deprecatedInputData = null; + /** * NodeExecutionEvent inputData. - * @member {flyteidl.core.ILiteralMap|null|undefined} inputData + * @member {flyteidl.core.IInputData|null|undefined} inputData * @memberof flyteidl.event.NodeExecutionEvent * @instance */ @@ -20381,9 +20656,17 @@ */ NodeExecutionEvent.prototype.error = null; + /** + * NodeExecutionEvent deprecatedOutputData. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedOutputData + * @memberof flyteidl.event.NodeExecutionEvent + * @instance + */ + NodeExecutionEvent.prototype.deprecatedOutputData = null; + /** * NodeExecutionEvent outputData. - * @member {flyteidl.core.ILiteralMap|null|undefined} outputData + * @member {flyteidl.core.IOutputData|null|undefined} outputData * @memberof flyteidl.event.NodeExecutionEvent * @instance */ @@ -20514,23 +20797,23 @@ /** * NodeExecutionEvent inputValue. - * @member {"inputUri"|"inputData"|undefined} inputValue + * @member {"inputUri"|"deprecatedInputData"|"inputData"|undefined} inputValue * @memberof flyteidl.event.NodeExecutionEvent * @instance */ Object.defineProperty(NodeExecutionEvent.prototype, "inputValue", { - get: $util.oneOfGetter($oneOfFields = ["inputUri", "inputData"]), + get: $util.oneOfGetter($oneOfFields = ["inputUri", "deprecatedInputData", "inputData"]), set: $util.oneOfSetter($oneOfFields) }); /** * NodeExecutionEvent outputResult. - * @member {"outputUri"|"error"|"outputData"|undefined} outputResult + * @member {"outputUri"|"error"|"deprecatedOutputData"|"outputData"|undefined} outputResult * @memberof flyteidl.event.NodeExecutionEvent * @instance */ Object.defineProperty(NodeExecutionEvent.prototype, "outputResult", { - get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData"]), + get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "deprecatedOutputData", "outputData"]), set: $util.oneOfSetter($oneOfFields) }); @@ -20597,8 +20880,8 @@ writer.uint32(/* id 13, wireType 2 =*/106).string(message.nodeName); if (message.taskNodeMetadata != null && message.hasOwnProperty("taskNodeMetadata")) $root.flyteidl.event.TaskNodeMetadata.encode(message.taskNodeMetadata, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim(); - if (message.outputData != null && message.hasOwnProperty("outputData")) - $root.flyteidl.core.LiteralMap.encode(message.outputData, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim(); + if (message.deprecatedOutputData != null && message.hasOwnProperty("deprecatedOutputData")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedOutputData, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim(); if (message.eventVersion != null && message.hasOwnProperty("eventVersion")) writer.uint32(/* id 16, wireType 0 =*/128).int32(message.eventVersion); if (message.isParent != null && message.hasOwnProperty("isParent")) @@ -20607,8 +20890,8 @@ writer.uint32(/* id 18, wireType 0 =*/144).bool(message.isDynamic); if (message.deckUri != null && message.hasOwnProperty("deckUri")) writer.uint32(/* id 19, wireType 2 =*/154).string(message.deckUri); - if (message.inputData != null && message.hasOwnProperty("inputData")) - $root.flyteidl.core.LiteralMap.encode(message.inputData, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); + if (message.deprecatedInputData != null && message.hasOwnProperty("deprecatedInputData")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedInputData, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); if (message.reportedAt != null && message.hasOwnProperty("reportedAt")) $root.google.protobuf.Timestamp.encode(message.reportedAt, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); if (message.isArray != null && message.hasOwnProperty("isArray")) @@ -20617,6 +20900,10 @@ $root.flyteidl.core.Identifier.encode(message.targetEntity, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim(); if (message.isInDynamicChain != null && message.hasOwnProperty("isInDynamicChain")) writer.uint32(/* id 24, wireType 0 =*/192).bool(message.isInDynamicChain); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim(); + if (message.outputData != null && message.hasOwnProperty("outputData")) + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim(); return writer; }; @@ -20654,7 +20941,10 @@ message.inputUri = reader.string(); break; case 20: - message.inputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedInputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 25: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); break; case 6: message.outputUri = reader.string(); @@ -20663,7 +20953,10 @@ message.error = $root.flyteidl.core.ExecutionError.decode(reader, reader.uint32()); break; case 15: - message.outputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedOutputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 26: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); break; case 8: message.workflowNodeMetadata = $root.flyteidl.event.WorkflowNodeMetadata.decode(reader, reader.uint32()); @@ -20765,12 +21058,22 @@ if (!$util.isString(message.inputUri)) return "inputUri: string expected"; } + if (message.deprecatedInputData != null && message.hasOwnProperty("deprecatedInputData")) { + if (properties.inputValue === 1) + return "inputValue: multiple values"; + properties.inputValue = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedInputData); + if (error) + return "deprecatedInputData." + error; + } + } if (message.inputData != null && message.hasOwnProperty("inputData")) { if (properties.inputValue === 1) return "inputValue: multiple values"; properties.inputValue = 1; { - var error = $root.flyteidl.core.LiteralMap.verify(message.inputData); + var error = $root.flyteidl.core.InputData.verify(message.inputData); if (error) return "inputData." + error; } @@ -20790,12 +21093,22 @@ return "error." + error; } } + if (message.deprecatedOutputData != null && message.hasOwnProperty("deprecatedOutputData")) { + if (properties.outputResult === 1) + return "outputResult: multiple values"; + properties.outputResult = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedOutputData); + if (error) + return "deprecatedOutputData." + error; + } + } if (message.outputData != null && message.hasOwnProperty("outputData")) { if (properties.outputResult === 1) return "outputResult: multiple values"; properties.outputResult = 1; { - var error = $root.flyteidl.core.LiteralMap.verify(message.outputData); + var error = $root.flyteidl.core.OutputData.verify(message.outputData); if (error) return "outputData." + error; } @@ -21697,10 +22010,12 @@ * @property {Array.|null} [logs] TaskExecutionEvent logs * @property {google.protobuf.ITimestamp|null} [occurredAt] TaskExecutionEvent occurredAt * @property {string|null} [inputUri] TaskExecutionEvent inputUri - * @property {flyteidl.core.ILiteralMap|null} [inputData] TaskExecutionEvent inputData + * @property {flyteidl.core.ILiteralMap|null} [deprecatedInputData] TaskExecutionEvent deprecatedInputData + * @property {flyteidl.core.IInputData|null} [inputData] TaskExecutionEvent inputData * @property {string|null} [outputUri] TaskExecutionEvent outputUri * @property {flyteidl.core.IExecutionError|null} [error] TaskExecutionEvent error - * @property {flyteidl.core.ILiteralMap|null} [outputData] TaskExecutionEvent outputData + * @property {flyteidl.core.ILiteralMap|null} [deprecatedOutputData] TaskExecutionEvent deprecatedOutputData + * @property {flyteidl.core.IOutputData|null} [outputData] TaskExecutionEvent outputData * @property {google.protobuf.IStruct|null} [customInfo] TaskExecutionEvent customInfo * @property {number|null} [phaseVersion] TaskExecutionEvent phaseVersion * @property {string|null} [reason] TaskExecutionEvent reason @@ -21792,9 +22107,17 @@ */ TaskExecutionEvent.prototype.inputUri = ""; + /** + * TaskExecutionEvent deprecatedInputData. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedInputData + * @memberof flyteidl.event.TaskExecutionEvent + * @instance + */ + TaskExecutionEvent.prototype.deprecatedInputData = null; + /** * TaskExecutionEvent inputData. - * @member {flyteidl.core.ILiteralMap|null|undefined} inputData + * @member {flyteidl.core.IInputData|null|undefined} inputData * @memberof flyteidl.event.TaskExecutionEvent * @instance */ @@ -21816,9 +22139,17 @@ */ TaskExecutionEvent.prototype.error = null; + /** + * TaskExecutionEvent deprecatedOutputData. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedOutputData + * @memberof flyteidl.event.TaskExecutionEvent + * @instance + */ + TaskExecutionEvent.prototype.deprecatedOutputData = null; + /** * TaskExecutionEvent outputData. - * @member {flyteidl.core.ILiteralMap|null|undefined} outputData + * @member {flyteidl.core.IOutputData|null|undefined} outputData * @memberof flyteidl.event.TaskExecutionEvent * @instance */ @@ -21893,23 +22224,23 @@ /** * TaskExecutionEvent inputValue. - * @member {"inputUri"|"inputData"|undefined} inputValue + * @member {"inputUri"|"deprecatedInputData"|"inputData"|undefined} inputValue * @memberof flyteidl.event.TaskExecutionEvent * @instance */ Object.defineProperty(TaskExecutionEvent.prototype, "inputValue", { - get: $util.oneOfGetter($oneOfFields = ["inputUri", "inputData"]), + get: $util.oneOfGetter($oneOfFields = ["inputUri", "deprecatedInputData", "inputData"]), set: $util.oneOfSetter($oneOfFields) }); /** * TaskExecutionEvent outputResult. - * @member {"outputUri"|"error"|"outputData"|undefined} outputResult + * @member {"outputUri"|"error"|"deprecatedOutputData"|"outputData"|undefined} outputResult * @memberof flyteidl.event.TaskExecutionEvent * @instance */ Object.defineProperty(TaskExecutionEvent.prototype, "outputResult", { - get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData"]), + get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "deprecatedOutputData", "outputData"]), set: $util.oneOfSetter($oneOfFields) }); @@ -21968,17 +22299,21 @@ writer.uint32(/* id 14, wireType 2 =*/114).string(message.taskType); if (message.metadata != null && message.hasOwnProperty("metadata")) $root.flyteidl.event.TaskExecutionMetadata.encode(message.metadata, writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); - if (message.outputData != null && message.hasOwnProperty("outputData")) - $root.flyteidl.core.LiteralMap.encode(message.outputData, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + if (message.deprecatedOutputData != null && message.hasOwnProperty("deprecatedOutputData")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedOutputData, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); if (message.eventVersion != null && message.hasOwnProperty("eventVersion")) writer.uint32(/* id 18, wireType 0 =*/144).int32(message.eventVersion); - if (message.inputData != null && message.hasOwnProperty("inputData")) - $root.flyteidl.core.LiteralMap.encode(message.inputData, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + if (message.deprecatedInputData != null && message.hasOwnProperty("deprecatedInputData")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedInputData, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); if (message.reportedAt != null && message.hasOwnProperty("reportedAt")) $root.google.protobuf.Timestamp.encode(message.reportedAt, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); if (message.reasons != null && message.reasons.length) for (var i = 0; i < message.reasons.length; ++i) $root.flyteidl.event.EventReason.encode(message.reasons[i], writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + if (message.outputData != null && message.hasOwnProperty("outputData")) + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim(); return writer; }; @@ -22027,7 +22362,10 @@ message.inputUri = reader.string(); break; case 19: - message.inputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedInputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 23: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); break; case 9: message.outputUri = reader.string(); @@ -22036,7 +22374,10 @@ message.error = $root.flyteidl.core.ExecutionError.decode(reader, reader.uint32()); break; case 17: - message.outputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedOutputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 22: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); break; case 11: message.customInfo = $root.google.protobuf.Struct.decode(reader, reader.uint32()); @@ -22133,12 +22474,22 @@ if (!$util.isString(message.inputUri)) return "inputUri: string expected"; } + if (message.deprecatedInputData != null && message.hasOwnProperty("deprecatedInputData")) { + if (properties.inputValue === 1) + return "inputValue: multiple values"; + properties.inputValue = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedInputData); + if (error) + return "deprecatedInputData." + error; + } + } if (message.inputData != null && message.hasOwnProperty("inputData")) { if (properties.inputValue === 1) return "inputValue: multiple values"; properties.inputValue = 1; { - var error = $root.flyteidl.core.LiteralMap.verify(message.inputData); + var error = $root.flyteidl.core.InputData.verify(message.inputData); if (error) return "inputData." + error; } @@ -22158,12 +22509,22 @@ return "error." + error; } } + if (message.deprecatedOutputData != null && message.hasOwnProperty("deprecatedOutputData")) { + if (properties.outputResult === 1) + return "outputResult: multiple values"; + properties.outputResult = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedOutputData); + if (error) + return "deprecatedOutputData." + error; + } + } if (message.outputData != null && message.hasOwnProperty("outputData")) { if (properties.outputResult === 1) return "outputResult: multiple values"; properties.outputResult = 1; { - var error = $root.flyteidl.core.LiteralMap.verify(message.outputData); + var error = $root.flyteidl.core.OutputData.verify(message.outputData); if (error) return "outputData." + error; } @@ -23141,10 +23502,11 @@ * Properties of a CreateTaskRequest. * @memberof flyteidl.admin * @interface ICreateTaskRequest - * @property {flyteidl.core.ILiteralMap|null} [inputs] CreateTaskRequest inputs + * @property {flyteidl.core.ILiteralMap|null} [deprecatedInputs] CreateTaskRequest deprecatedInputs * @property {flyteidl.core.ITaskTemplate|null} [template] CreateTaskRequest template * @property {string|null} [outputPrefix] CreateTaskRequest outputPrefix * @property {flyteidl.admin.ITaskExecutionMetadata|null} [taskExecutionMetadata] CreateTaskRequest taskExecutionMetadata + * @property {flyteidl.core.IInputData|null} [inputs] CreateTaskRequest inputs */ /** @@ -23163,12 +23525,12 @@ } /** - * CreateTaskRequest inputs. - * @member {flyteidl.core.ILiteralMap|null|undefined} inputs + * CreateTaskRequest deprecatedInputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedInputs * @memberof flyteidl.admin.CreateTaskRequest * @instance */ - CreateTaskRequest.prototype.inputs = null; + CreateTaskRequest.prototype.deprecatedInputs = null; /** * CreateTaskRequest template. @@ -23194,6 +23556,14 @@ */ CreateTaskRequest.prototype.taskExecutionMetadata = null; + /** + * CreateTaskRequest inputs. + * @member {flyteidl.core.IInputData|null|undefined} inputs + * @memberof flyteidl.admin.CreateTaskRequest + * @instance + */ + CreateTaskRequest.prototype.inputs = null; + /** * Creates a new CreateTaskRequest instance using the specified properties. * @function create @@ -23218,14 +23588,16 @@ CreateTaskRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.inputs != null && message.hasOwnProperty("inputs")) - $root.flyteidl.core.LiteralMap.encode(message.inputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.deprecatedInputs != null && message.hasOwnProperty("deprecatedInputs")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedInputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.template != null && message.hasOwnProperty("template")) $root.flyteidl.core.TaskTemplate.encode(message.template, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputPrefix); if (message.taskExecutionMetadata != null && message.hasOwnProperty("taskExecutionMetadata")) $root.flyteidl.admin.TaskExecutionMetadata.encode(message.taskExecutionMetadata, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.inputs != null && message.hasOwnProperty("inputs")) + $root.flyteidl.core.InputData.encode(message.inputs, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -23248,7 +23620,7 @@ var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedInputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; case 2: message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); @@ -23259,6 +23631,9 @@ case 4: message.taskExecutionMetadata = $root.flyteidl.admin.TaskExecutionMetadata.decode(reader, reader.uint32()); break; + case 5: + message.inputs = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -23278,10 +23653,10 @@ CreateTaskRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.inputs != null && message.hasOwnProperty("inputs")) { - var error = $root.flyteidl.core.LiteralMap.verify(message.inputs); + if (message.deprecatedInputs != null && message.hasOwnProperty("deprecatedInputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedInputs); if (error) - return "inputs." + error; + return "deprecatedInputs." + error; } if (message.template != null && message.hasOwnProperty("template")) { var error = $root.flyteidl.core.TaskTemplate.verify(message.template); @@ -23296,6 +23671,11 @@ if (error) return "taskExecutionMetadata." + error; } + if (message.inputs != null && message.hasOwnProperty("inputs")) { + var error = $root.flyteidl.core.InputData.verify(message.inputs); + if (error) + return "inputs." + error; + } return null; }; @@ -24262,11 +24642,12 @@ * @memberof flyteidl.admin * @interface IResource * @property {flyteidl.admin.State|null} [state] Resource state - * @property {flyteidl.core.ILiteralMap|null} [outputs] Resource outputs + * @property {flyteidl.core.ILiteralMap|null} [deprecatedOutputs] Resource deprecatedOutputs * @property {string|null} [message] Resource message * @property {Array.|null} [logLinks] Resource logLinks * @property {flyteidl.core.TaskExecution.Phase|null} [phase] Resource phase * @property {google.protobuf.IStruct|null} [customInfo] Resource customInfo + * @property {flyteidl.core.IOutputData|null} [outputs] Resource outputs */ /** @@ -24294,12 +24675,12 @@ Resource.prototype.state = 0; /** - * Resource outputs. - * @member {flyteidl.core.ILiteralMap|null|undefined} outputs + * Resource deprecatedOutputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedOutputs * @memberof flyteidl.admin.Resource * @instance */ - Resource.prototype.outputs = null; + Resource.prototype.deprecatedOutputs = null; /** * Resource message. @@ -24333,6 +24714,14 @@ */ Resource.prototype.customInfo = null; + /** + * Resource outputs. + * @member {flyteidl.core.IOutputData|null|undefined} outputs + * @memberof flyteidl.admin.Resource + * @instance + */ + Resource.prototype.outputs = null; + /** * Creates a new Resource instance using the specified properties. * @function create @@ -24359,8 +24748,8 @@ writer = $Writer.create(); if (message.state != null && message.hasOwnProperty("state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); - if (message.outputs != null && message.hasOwnProperty("outputs")) - $root.flyteidl.core.LiteralMap.encode(message.outputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.deprecatedOutputs != null && message.hasOwnProperty("deprecatedOutputs")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedOutputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.message != null && message.hasOwnProperty("message")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.message); if (message.logLinks != null && message.logLinks.length) @@ -24370,6 +24759,8 @@ writer.uint32(/* id 5, wireType 0 =*/40).int32(message.phase); if (message.customInfo != null && message.hasOwnProperty("customInfo")) $root.google.protobuf.Struct.encode(message.customInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.outputs != null && message.hasOwnProperty("outputs")) + $root.flyteidl.core.OutputData.encode(message.outputs, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -24395,7 +24786,7 @@ message.state = reader.int32(); break; case 2: - message.outputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedOutputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; case 3: message.message = reader.string(); @@ -24411,6 +24802,9 @@ case 6: message.customInfo = $root.google.protobuf.Struct.decode(reader, reader.uint32()); break; + case 7: + message.outputs = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -24441,10 +24835,10 @@ case 4: break; } - if (message.outputs != null && message.hasOwnProperty("outputs")) { - var error = $root.flyteidl.core.LiteralMap.verify(message.outputs); + if (message.deprecatedOutputs != null && message.hasOwnProperty("deprecatedOutputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedOutputs); if (error) - return "outputs." + error; + return "deprecatedOutputs." + error; } if (message.message != null && message.hasOwnProperty("message")) if (!$util.isString(message.message)) @@ -24477,6 +24871,11 @@ if (error) return "customInfo." + error; } + if (message.outputs != null && message.hasOwnProperty("outputs")) { + var error = $root.flyteidl.core.OutputData.verify(message.outputs); + if (error) + return "outputs." + error; + } return null; }; @@ -31857,6 +32256,7 @@ * @property {flyteidl.admin.IExecutionSpec|null} [spec] ExecutionCreateRequest spec * @property {flyteidl.core.ILiteralMap|null} [inputs] ExecutionCreateRequest inputs * @property {string|null} [org] ExecutionCreateRequest org + * @property {flyteidl.core.IInputData|null} [inputData] ExecutionCreateRequest inputData */ /** @@ -31922,6 +32322,14 @@ */ ExecutionCreateRequest.prototype.org = ""; + /** + * ExecutionCreateRequest inputData. + * @member {flyteidl.core.IInputData|null|undefined} inputData + * @memberof flyteidl.admin.ExecutionCreateRequest + * @instance + */ + ExecutionCreateRequest.prototype.inputData = null; + /** * Creates a new ExecutionCreateRequest instance using the specified properties. * @function create @@ -31958,6 +32366,8 @@ $root.flyteidl.core.LiteralMap.encode(message.inputs, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.org != null && message.hasOwnProperty("org")) writer.uint32(/* id 6, wireType 2 =*/50).string(message.org); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -31997,6 +32407,9 @@ case 6: message.org = reader.string(); break; + case 7: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -32038,6 +32451,11 @@ if (message.org != null && message.hasOwnProperty("org")) if (!$util.isString(message.org)) return "org: string expected"; + if (message.inputData != null && message.hasOwnProperty("inputData")) { + var error = $root.flyteidl.core.InputData.verify(message.inputData); + if (error) + return "inputData." + error; + } return null; }; @@ -33138,6 +33556,7 @@ * @property {string|null} [abortCause] ExecutionClosure abortCause * @property {flyteidl.admin.IAbortMetadata|null} [abortMetadata] ExecutionClosure abortMetadata * @property {flyteidl.core.ILiteralMap|null} [outputData] ExecutionClosure outputData + * @property {flyteidl.core.IOutputData|null} [fullOutputs] ExecutionClosure fullOutputs * @property {flyteidl.core.ILiteralMap|null} [computedInputs] ExecutionClosure computedInputs * @property {flyteidl.core.WorkflowExecution.Phase|null} [phase] ExecutionClosure phase * @property {google.protobuf.ITimestamp|null} [startedAt] ExecutionClosure startedAt @@ -33205,6 +33624,14 @@ */ ExecutionClosure.prototype.outputData = null; + /** + * ExecutionClosure fullOutputs. + * @member {flyteidl.core.IOutputData|null|undefined} fullOutputs + * @memberof flyteidl.admin.ExecutionClosure + * @instance + */ + ExecutionClosure.prototype.fullOutputs = null; + /** * ExecutionClosure computedInputs. * @member {flyteidl.core.ILiteralMap|null|undefined} computedInputs @@ -33282,12 +33709,12 @@ /** * ExecutionClosure outputResult. - * @member {"outputs"|"error"|"abortCause"|"abortMetadata"|"outputData"|undefined} outputResult + * @member {"outputs"|"error"|"abortCause"|"abortMetadata"|"outputData"|"fullOutputs"|undefined} outputResult * @memberof flyteidl.admin.ExecutionClosure * @instance */ Object.defineProperty(ExecutionClosure.prototype, "outputResult", { - get: $util.oneOfGetter($oneOfFields = ["outputs", "error", "abortCause", "abortMetadata", "outputData"]), + get: $util.oneOfGetter($oneOfFields = ["outputs", "error", "abortCause", "abortMetadata", "outputData", "fullOutputs"]), set: $util.oneOfSetter($oneOfFields) }); @@ -33344,6 +33771,8 @@ $root.flyteidl.core.LiteralMap.encode(message.outputData, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); if (message.stateChangeDetails != null && message.hasOwnProperty("stateChangeDetails")) $root.flyteidl.admin.ExecutionStateChangeDetails.encode(message.stateChangeDetails, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim(); + if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) + $root.flyteidl.core.OutputData.encode(message.fullOutputs, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim(); return writer; }; @@ -33380,6 +33809,9 @@ case 13: message.outputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 15: + message.fullOutputs = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; case 3: message.computedInputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; @@ -33474,6 +33906,16 @@ return "outputData." + error; } } + if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) { + if (properties.outputResult === 1) + return "outputResult: multiple values"; + properties.outputResult = 1; + { + var error = $root.flyteidl.core.OutputData.verify(message.fullOutputs); + if (error) + return "fullOutputs." + error; + } + } if (message.computedInputs != null && message.hasOwnProperty("computedInputs")) { var error = $root.flyteidl.core.LiteralMap.verify(message.computedInputs); if (error) @@ -34896,6 +35338,8 @@ * @property {flyteidl.admin.IUrlBlob|null} [inputs] WorkflowExecutionGetDataResponse inputs * @property {flyteidl.core.ILiteralMap|null} [fullInputs] WorkflowExecutionGetDataResponse fullInputs * @property {flyteidl.core.ILiteralMap|null} [fullOutputs] WorkflowExecutionGetDataResponse fullOutputs + * @property {flyteidl.core.IInputData|null} [inputData] WorkflowExecutionGetDataResponse inputData + * @property {flyteidl.core.IOutputData|null} [outputData] WorkflowExecutionGetDataResponse outputData */ /** @@ -34945,6 +35389,22 @@ */ WorkflowExecutionGetDataResponse.prototype.fullOutputs = null; + /** + * WorkflowExecutionGetDataResponse inputData. + * @member {flyteidl.core.IInputData|null|undefined} inputData + * @memberof flyteidl.admin.WorkflowExecutionGetDataResponse + * @instance + */ + WorkflowExecutionGetDataResponse.prototype.inputData = null; + + /** + * WorkflowExecutionGetDataResponse outputData. + * @member {flyteidl.core.IOutputData|null|undefined} outputData + * @memberof flyteidl.admin.WorkflowExecutionGetDataResponse + * @instance + */ + WorkflowExecutionGetDataResponse.prototype.outputData = null; + /** * Creates a new WorkflowExecutionGetDataResponse instance using the specified properties. * @function create @@ -34977,6 +35437,10 @@ $root.flyteidl.core.LiteralMap.encode(message.fullInputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) $root.flyteidl.core.LiteralMap.encode(message.fullOutputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.outputData != null && message.hasOwnProperty("outputData")) + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -35010,6 +35474,12 @@ case 4: message.fullOutputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 5: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; + case 6: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -35049,6 +35519,16 @@ if (error) return "fullOutputs." + error; } + if (message.inputData != null && message.hasOwnProperty("inputData")) { + var error = $root.flyteidl.core.InputData.verify(message.inputData); + if (error) + return "inputData." + error; + } + if (message.outputData != null && message.hasOwnProperty("outputData")) { + var error = $root.flyteidl.core.OutputData.verify(message.outputData); + if (error) + return "outputData." + error; + } return null; }; @@ -38360,6 +38840,7 @@ * @property {boolean|null} [overwriteCache] LaunchPlanSpec overwriteCache * @property {flyteidl.admin.IEnvs|null} [envs] LaunchPlanSpec envs * @property {Array.|null} [executionEnvAssignments] LaunchPlanSpec executionEnvAssignments + * @property {flyteidl.core.IInputData|null} [fixedInputData] LaunchPlanSpec fixedInputData */ /** @@ -38514,6 +38995,14 @@ */ LaunchPlanSpec.prototype.executionEnvAssignments = $util.emptyArray; + /** + * LaunchPlanSpec fixedInputData. + * @member {flyteidl.core.IInputData|null|undefined} fixedInputData + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.fixedInputData = null; + /** * Creates a new LaunchPlanSpec instance using the specified properties. * @function create @@ -38573,6 +39062,8 @@ if (message.executionEnvAssignments != null && message.executionEnvAssignments.length) for (var i = 0; i < message.executionEnvAssignments.length; ++i) $root.flyteidl.core.ExecutionEnvAssignment.encode(message.executionEnvAssignments[i], writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); + if (message.fixedInputData != null && message.hasOwnProperty("fixedInputData")) + $root.flyteidl.core.InputData.encode(message.fixedInputData, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim(); return writer; }; @@ -38647,6 +39138,9 @@ message.executionEnvAssignments = []; message.executionEnvAssignments.push($root.flyteidl.core.ExecutionEnvAssignment.decode(reader, reader.uint32())); break; + case 23: + message.fixedInputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -38749,6 +39243,11 @@ return "executionEnvAssignments." + error; } } + if (message.fixedInputData != null && message.hasOwnProperty("fixedInputData")) { + var error = $root.flyteidl.core.InputData.verify(message.fixedInputData); + if (error) + return "fixedInputData." + error; + } return null; }; @@ -41092,6 +41591,7 @@ * @property {string|null} [outputUri] NodeExecutionClosure outputUri * @property {flyteidl.core.IExecutionError|null} [error] NodeExecutionClosure error * @property {flyteidl.core.ILiteralMap|null} [outputData] NodeExecutionClosure outputData + * @property {flyteidl.core.IOutputData|null} [fullOutputs] NodeExecutionClosure fullOutputs * @property {flyteidl.core.NodeExecution.Phase|null} [phase] NodeExecutionClosure phase * @property {google.protobuf.ITimestamp|null} [startedAt] NodeExecutionClosure startedAt * @property {google.protobuf.IDuration|null} [duration] NodeExecutionClosure duration @@ -41142,6 +41642,14 @@ */ NodeExecutionClosure.prototype.outputData = null; + /** + * NodeExecutionClosure fullOutputs. + * @member {flyteidl.core.IOutputData|null|undefined} fullOutputs + * @memberof flyteidl.admin.NodeExecutionClosure + * @instance + */ + NodeExecutionClosure.prototype.fullOutputs = null; + /** * NodeExecutionClosure phase. * @member {flyteidl.core.NodeExecution.Phase} phase @@ -41219,12 +41727,12 @@ /** * NodeExecutionClosure outputResult. - * @member {"outputUri"|"error"|"outputData"|undefined} outputResult + * @member {"outputUri"|"error"|"outputData"|"fullOutputs"|undefined} outputResult * @memberof flyteidl.admin.NodeExecutionClosure * @instance */ Object.defineProperty(NodeExecutionClosure.prototype, "outputResult", { - get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData"]), + get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData", "fullOutputs"]), set: $util.oneOfSetter($oneOfFields) }); @@ -41287,6 +41795,8 @@ writer.uint32(/* id 11, wireType 2 =*/90).string(message.deckUri); if (message.dynamicJobSpecUri != null && message.hasOwnProperty("dynamicJobSpecUri")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.dynamicJobSpecUri); + if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) + $root.flyteidl.core.OutputData.encode(message.fullOutputs, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); return writer; }; @@ -41317,6 +41827,9 @@ case 10: message.outputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 13: + message.fullOutputs = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; case 3: message.phase = reader.int32(); break; @@ -41389,6 +41902,16 @@ return "outputData." + error; } } + if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) { + if (properties.outputResult === 1) + return "outputResult: multiple values"; + properties.outputResult = 1; + { + var error = $root.flyteidl.core.OutputData.verify(message.fullOutputs); + if (error) + return "fullOutputs." + error; + } + } if (message.phase != null && message.hasOwnProperty("phase")) switch (message.phase) { default: @@ -41995,6 +42518,8 @@ * @property {flyteidl.admin.IUrlBlob|null} [outputs] NodeExecutionGetDataResponse outputs * @property {flyteidl.core.ILiteralMap|null} [fullInputs] NodeExecutionGetDataResponse fullInputs * @property {flyteidl.core.ILiteralMap|null} [fullOutputs] NodeExecutionGetDataResponse fullOutputs + * @property {flyteidl.core.IInputData|null} [inputData] NodeExecutionGetDataResponse inputData + * @property {flyteidl.core.IOutputData|null} [outputData] NodeExecutionGetDataResponse outputData * @property {flyteidl.admin.IDynamicWorkflowNodeMetadata|null} [dynamicWorkflow] NodeExecutionGetDataResponse dynamicWorkflow * @property {flyteidl.admin.IFlyteURLs|null} [flyteUrls] NodeExecutionGetDataResponse flyteUrls */ @@ -42046,6 +42571,22 @@ */ NodeExecutionGetDataResponse.prototype.fullOutputs = null; + /** + * NodeExecutionGetDataResponse inputData. + * @member {flyteidl.core.IInputData|null|undefined} inputData + * @memberof flyteidl.admin.NodeExecutionGetDataResponse + * @instance + */ + NodeExecutionGetDataResponse.prototype.inputData = null; + + /** + * NodeExecutionGetDataResponse outputData. + * @member {flyteidl.core.IOutputData|null|undefined} outputData + * @memberof flyteidl.admin.NodeExecutionGetDataResponse + * @instance + */ + NodeExecutionGetDataResponse.prototype.outputData = null; + /** * NodeExecutionGetDataResponse dynamicWorkflow. * @member {flyteidl.admin.IDynamicWorkflowNodeMetadata|null|undefined} dynamicWorkflow @@ -42094,6 +42635,10 @@ $root.flyteidl.core.LiteralMap.encode(message.fullInputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) $root.flyteidl.core.LiteralMap.encode(message.fullOutputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.outputData != null && message.hasOwnProperty("outputData")) + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); if (message.dynamicWorkflow != null && message.hasOwnProperty("dynamicWorkflow")) $root.flyteidl.admin.DynamicWorkflowNodeMetadata.encode(message.dynamicWorkflow, writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) @@ -42131,6 +42676,12 @@ case 4: message.fullOutputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 5: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; + case 6: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; case 16: message.dynamicWorkflow = $root.flyteidl.admin.DynamicWorkflowNodeMetadata.decode(reader, reader.uint32()); break; @@ -42176,6 +42727,16 @@ if (error) return "fullOutputs." + error; } + if (message.inputData != null && message.hasOwnProperty("inputData")) { + var error = $root.flyteidl.core.InputData.verify(message.inputData); + if (error) + return "inputData." + error; + } + if (message.outputData != null && message.hasOwnProperty("outputData")) { + var error = $root.flyteidl.core.OutputData.verify(message.outputData); + if (error) + return "outputData." + error; + } if (message.dynamicWorkflow != null && message.hasOwnProperty("dynamicWorkflow")) { var error = $root.flyteidl.admin.DynamicWorkflowNodeMetadata.verify(message.dynamicWorkflow); if (error) @@ -47896,6 +48457,7 @@ * @property {string|null} [outputUri] TaskExecutionClosure outputUri * @property {flyteidl.core.IExecutionError|null} [error] TaskExecutionClosure error * @property {flyteidl.core.ILiteralMap|null} [outputData] TaskExecutionClosure outputData + * @property {flyteidl.core.IOutputData|null} [fullOutputs] TaskExecutionClosure fullOutputs * @property {flyteidl.core.TaskExecution.Phase|null} [phase] TaskExecutionClosure phase * @property {Array.|null} [logs] TaskExecutionClosure logs * @property {google.protobuf.ITimestamp|null} [startedAt] TaskExecutionClosure startedAt @@ -47951,6 +48513,14 @@ */ TaskExecutionClosure.prototype.outputData = null; + /** + * TaskExecutionClosure fullOutputs. + * @member {flyteidl.core.IOutputData|null|undefined} fullOutputs + * @memberof flyteidl.admin.TaskExecutionClosure + * @instance + */ + TaskExecutionClosure.prototype.fullOutputs = null; + /** * TaskExecutionClosure phase. * @member {flyteidl.core.TaskExecution.Phase} phase @@ -48052,12 +48622,12 @@ /** * TaskExecutionClosure outputResult. - * @member {"outputUri"|"error"|"outputData"|undefined} outputResult + * @member {"outputUri"|"error"|"outputData"|"fullOutputs"|undefined} outputResult * @memberof flyteidl.admin.TaskExecutionClosure * @instance */ Object.defineProperty(TaskExecutionClosure.prototype, "outputResult", { - get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData"]), + get: $util.oneOfGetter($oneOfFields = ["outputUri", "error", "outputData", "fullOutputs"]), set: $util.oneOfSetter($oneOfFields) }); @@ -48117,6 +48687,8 @@ if (message.reasons != null && message.reasons.length) for (var i = 0; i < message.reasons.length; ++i) $root.flyteidl.admin.Reason.encode(message.reasons[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim(); + if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) + $root.flyteidl.core.OutputData.encode(message.fullOutputs, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); return writer; }; @@ -48147,6 +48719,9 @@ case 12: message.outputData = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 19: + message.fullOutputs = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; case 3: message.phase = reader.int32(); break; @@ -48232,6 +48807,16 @@ return "outputData." + error; } } + if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) { + if (properties.outputResult === 1) + return "outputResult: multiple values"; + properties.outputResult = 1; + { + var error = $root.flyteidl.core.OutputData.verify(message.fullOutputs); + if (error) + return "fullOutputs." + error; + } + } if (message.phase != null && message.hasOwnProperty("phase")) switch (message.phase) { default: @@ -48560,6 +49145,8 @@ * @property {flyteidl.admin.IUrlBlob|null} [outputs] TaskExecutionGetDataResponse outputs * @property {flyteidl.core.ILiteralMap|null} [fullInputs] TaskExecutionGetDataResponse fullInputs * @property {flyteidl.core.ILiteralMap|null} [fullOutputs] TaskExecutionGetDataResponse fullOutputs + * @property {flyteidl.core.IInputData|null} [inputData] TaskExecutionGetDataResponse inputData + * @property {flyteidl.core.IOutputData|null} [outputData] TaskExecutionGetDataResponse outputData * @property {flyteidl.admin.IFlyteURLs|null} [flyteUrls] TaskExecutionGetDataResponse flyteUrls */ @@ -48610,6 +49197,22 @@ */ TaskExecutionGetDataResponse.prototype.fullOutputs = null; + /** + * TaskExecutionGetDataResponse inputData. + * @member {flyteidl.core.IInputData|null|undefined} inputData + * @memberof flyteidl.admin.TaskExecutionGetDataResponse + * @instance + */ + TaskExecutionGetDataResponse.prototype.inputData = null; + + /** + * TaskExecutionGetDataResponse outputData. + * @member {flyteidl.core.IOutputData|null|undefined} outputData + * @memberof flyteidl.admin.TaskExecutionGetDataResponse + * @instance + */ + TaskExecutionGetDataResponse.prototype.outputData = null; + /** * TaskExecutionGetDataResponse flyteUrls. * @member {flyteidl.admin.IFlyteURLs|null|undefined} flyteUrls @@ -48652,6 +49255,10 @@ $root.flyteidl.core.LiteralMap.encode(message.fullOutputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) $root.flyteidl.admin.FlyteURLs.encode(message.flyteUrls, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.outputData != null && message.hasOwnProperty("outputData")) + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -48685,6 +49292,12 @@ case 4: message.fullOutputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 6: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; + case 7: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; case 5: message.flyteUrls = $root.flyteidl.admin.FlyteURLs.decode(reader, reader.uint32()); break; @@ -48727,6 +49340,16 @@ if (error) return "fullOutputs." + error; } + if (message.inputData != null && message.hasOwnProperty("inputData")) { + var error = $root.flyteidl.core.InputData.verify(message.inputData); + if (error) + return "inputData." + error; + } + if (message.outputData != null && message.hasOwnProperty("outputData")) { + var error = $root.flyteidl.core.OutputData.verify(message.outputData); + if (error) + return "outputData." + error; + } if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) { var error = $root.flyteidl.admin.FlyteURLs.verify(message.flyteUrls); if (error) @@ -55549,6 +56172,8 @@ * @property {flyteidl.core.ILiteralMap|null} [literalMap] GetDataResponse literalMap * @property {flyteidl.service.IPreSignedURLs|null} [preSignedUrls] GetDataResponse preSignedUrls * @property {flyteidl.core.ILiteral|null} [literal] GetDataResponse literal + * @property {flyteidl.core.IInputData|null} [inputData] GetDataResponse inputData + * @property {flyteidl.core.IOutputData|null} [outputData] GetDataResponse outputData */ /** @@ -55590,17 +56215,33 @@ */ GetDataResponse.prototype.literal = null; + /** + * GetDataResponse inputData. + * @member {flyteidl.core.IInputData|null|undefined} inputData + * @memberof flyteidl.service.GetDataResponse + * @instance + */ + GetDataResponse.prototype.inputData = null; + + /** + * GetDataResponse outputData. + * @member {flyteidl.core.IOutputData|null|undefined} outputData + * @memberof flyteidl.service.GetDataResponse + * @instance + */ + GetDataResponse.prototype.outputData = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * GetDataResponse data. - * @member {"literalMap"|"preSignedUrls"|"literal"|undefined} data + * @member {"literalMap"|"preSignedUrls"|"literal"|"inputData"|"outputData"|undefined} data * @memberof flyteidl.service.GetDataResponse * @instance */ Object.defineProperty(GetDataResponse.prototype, "data", { - get: $util.oneOfGetter($oneOfFields = ["literalMap", "preSignedUrls", "literal"]), + get: $util.oneOfGetter($oneOfFields = ["literalMap", "preSignedUrls", "literal", "inputData", "outputData"]), set: $util.oneOfSetter($oneOfFields) }); @@ -55634,6 +56275,10 @@ $root.flyteidl.service.PreSignedURLs.encode(message.preSignedUrls, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.literal != null && message.hasOwnProperty("literal")) $root.flyteidl.core.Literal.encode(message.literal, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.inputData != null && message.hasOwnProperty("inputData")) + $root.flyteidl.core.InputData.encode(message.inputData, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.outputData != null && message.hasOwnProperty("outputData")) + $root.flyteidl.core.OutputData.encode(message.outputData, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -55664,6 +56309,12 @@ case 3: message.literal = $root.flyteidl.core.Literal.decode(reader, reader.uint32()); break; + case 4: + message.inputData = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; + case 5: + message.outputData = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -55712,6 +56363,26 @@ return "literal." + error; } } + if (message.inputData != null && message.hasOwnProperty("inputData")) { + if (properties.data === 1) + return "data: multiple values"; + properties.data = 1; + { + var error = $root.flyteidl.core.InputData.verify(message.inputData); + if (error) + return "inputData." + error; + } + } + if (message.outputData != null && message.hasOwnProperty("outputData")) { + if (properties.data === 1) + return "data: multiple values"; + properties.data = 1; + { + var error = $root.flyteidl.core.OutputData.verify(message.outputData); + if (error) + return "outputData." + error; + } + } return null; }; @@ -56045,9 +56716,10 @@ * Properties of a TaskCreateRequest. * @memberof flyteidl.service * @interface ITaskCreateRequest - * @property {flyteidl.core.ILiteralMap|null} [inputs] TaskCreateRequest inputs + * @property {flyteidl.core.ILiteralMap|null} [deprecatedInputs] TaskCreateRequest deprecatedInputs * @property {flyteidl.core.ITaskTemplate|null} [template] TaskCreateRequest template * @property {string|null} [outputPrefix] TaskCreateRequest outputPrefix + * @property {flyteidl.core.IInputData|null} [inputs] TaskCreateRequest inputs */ /** @@ -56066,12 +56738,12 @@ } /** - * TaskCreateRequest inputs. - * @member {flyteidl.core.ILiteralMap|null|undefined} inputs + * TaskCreateRequest deprecatedInputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedInputs * @memberof flyteidl.service.TaskCreateRequest * @instance */ - TaskCreateRequest.prototype.inputs = null; + TaskCreateRequest.prototype.deprecatedInputs = null; /** * TaskCreateRequest template. @@ -56089,6 +56761,14 @@ */ TaskCreateRequest.prototype.outputPrefix = ""; + /** + * TaskCreateRequest inputs. + * @member {flyteidl.core.IInputData|null|undefined} inputs + * @memberof flyteidl.service.TaskCreateRequest + * @instance + */ + TaskCreateRequest.prototype.inputs = null; + /** * Creates a new TaskCreateRequest instance using the specified properties. * @function create @@ -56113,12 +56793,14 @@ TaskCreateRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.inputs != null && message.hasOwnProperty("inputs")) - $root.flyteidl.core.LiteralMap.encode(message.inputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.deprecatedInputs != null && message.hasOwnProperty("deprecatedInputs")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedInputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.template != null && message.hasOwnProperty("template")) $root.flyteidl.core.TaskTemplate.encode(message.template, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputPrefix); + if (message.inputs != null && message.hasOwnProperty("inputs")) + $root.flyteidl.core.InputData.encode(message.inputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; @@ -56141,7 +56823,7 @@ var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedInputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; case 2: message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); @@ -56149,6 +56831,9 @@ case 3: message.outputPrefix = reader.string(); break; + case 4: + message.inputs = $root.flyteidl.core.InputData.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -56168,10 +56853,10 @@ TaskCreateRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.inputs != null && message.hasOwnProperty("inputs")) { - var error = $root.flyteidl.core.LiteralMap.verify(message.inputs); + if (message.deprecatedInputs != null && message.hasOwnProperty("deprecatedInputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedInputs); if (error) - return "inputs." + error; + return "deprecatedInputs." + error; } if (message.template != null && message.hasOwnProperty("template")) { var error = $root.flyteidl.core.TaskTemplate.verify(message.template); @@ -56181,6 +56866,11 @@ if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) if (!$util.isString(message.outputPrefix)) return "outputPrefix: string expected"; + if (message.inputs != null && message.hasOwnProperty("inputs")) { + var error = $root.flyteidl.core.InputData.verify(message.inputs); + if (error) + return "inputs." + error; + } return null; }; @@ -56431,7 +57121,8 @@ * @memberof flyteidl.service * @interface ITaskGetResponse * @property {flyteidl.service.State|null} [state] TaskGetResponse state - * @property {flyteidl.core.ILiteralMap|null} [outputs] TaskGetResponse outputs + * @property {flyteidl.core.ILiteralMap|null} [deprecatedOutputs] TaskGetResponse deprecatedOutputs + * @property {flyteidl.core.IOutputData|null} [outputs] TaskGetResponse outputs */ /** @@ -56457,9 +57148,17 @@ */ TaskGetResponse.prototype.state = 0; + /** + * TaskGetResponse deprecatedOutputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} deprecatedOutputs + * @memberof flyteidl.service.TaskGetResponse + * @instance + */ + TaskGetResponse.prototype.deprecatedOutputs = null; + /** * TaskGetResponse outputs. - * @member {flyteidl.core.ILiteralMap|null|undefined} outputs + * @member {flyteidl.core.IOutputData|null|undefined} outputs * @memberof flyteidl.service.TaskGetResponse * @instance */ @@ -56491,8 +57190,10 @@ writer = $Writer.create(); if (message.state != null && message.hasOwnProperty("state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); + if (message.deprecatedOutputs != null && message.hasOwnProperty("deprecatedOutputs")) + $root.flyteidl.core.LiteralMap.encode(message.deprecatedOutputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.outputs != null && message.hasOwnProperty("outputs")) - $root.flyteidl.core.LiteralMap.encode(message.outputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.flyteidl.core.OutputData.encode(message.outputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -56518,7 +57219,10 @@ message.state = reader.int32(); break; case 2: - message.outputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + message.deprecatedOutputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 3: + message.outputs = $root.flyteidl.core.OutputData.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -56550,8 +57254,13 @@ case 4: break; } + if (message.deprecatedOutputs != null && message.hasOwnProperty("deprecatedOutputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.deprecatedOutputs); + if (error) + return "deprecatedOutputs." + error; + } if (message.outputs != null && message.hasOwnProperty("outputs")) { - var error = $root.flyteidl.core.LiteralMap.verify(message.outputs); + var error = $root.flyteidl.core.OutputData.verify(message.outputs); if (error) return "outputs." + error; } diff --git a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py index 03e181a3e1..cf747d4b1d 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.py @@ -23,7 +23,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/admin/agent.proto\x12\x0e\x66lyteidl.admin\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/metrics.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x9e\x07\n\x15TaskExecutionMetadata\x12R\n\x11task_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x0ftaskExecutionId\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\x12I\n\x06labels\x18\x03 \x03(\x0b\x32\x31.flyteidl.admin.TaskExecutionMetadata.LabelsEntryR\x06labels\x12X\n\x0b\x61nnotations\x18\x04 \x03(\x0b\x32\x36.flyteidl.admin.TaskExecutionMetadata.AnnotationsEntryR\x0b\x61nnotations\x12.\n\x13k8s_service_account\x18\x05 \x01(\tR\x11k8sServiceAccount\x12t\n\x15\x65nvironment_variables\x18\x06 \x03(\x0b\x32?.flyteidl.admin.TaskExecutionMetadata.EnvironmentVariablesEntryR\x14\x65nvironmentVariables\x12!\n\x0cmax_attempts\x18\x07 \x01(\x05R\x0bmaxAttempts\x12$\n\rinterruptible\x18\x08 \x01(\x08R\rinterruptible\x12\x46\n\x1finterruptible_failure_threshold\x18\t \x01(\x05R\x1dinterruptibleFailureThreshold\x12>\n\toverrides\x18\n \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverrides\x12\x33\n\x08identity\x18\x0b \x01(\x0b\x32\x17.flyteidl.core.IdentityR\x08identity\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a>\n\x10\x41nnotationsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1aG\n\x19\x45nvironmentVariablesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x83\x02\n\x11\x43reateTaskRequest\x12\x31\n\x06inputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\x12\x37\n\x08template\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x03 \x01(\tR\x0coutputPrefix\x12]\n\x17task_execution_metadata\x18\x04 \x01(\x0b\x32%.flyteidl.admin.TaskExecutionMetadataR\x15taskExecutionMetadata\"9\n\x12\x43reateTaskResponse\x12#\n\rresource_meta\x18\x01 \x01(\x0cR\x0cresourceMeta\"\x87\x02\n\x13\x43reateRequestHeader\x12\x37\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x02 \x01(\tR\x0coutputPrefix\x12]\n\x17task_execution_metadata\x18\x03 \x01(\x0b\x32%.flyteidl.admin.TaskExecutionMetadataR\x15taskExecutionMetadata\x12\x33\n\x16max_dataset_size_bytes\x18\x04 \x01(\x03R\x13maxDatasetSizeBytes\"\x94\x01\n\x16\x45xecuteTaskSyncRequest\x12=\n\x06header\x18\x01 \x01(\x0b\x32#.flyteidl.admin.CreateRequestHeaderH\x00R\x06header\x12\x33\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x06inputsB\x06\n\x04part\"U\n\x1d\x45xecuteTaskSyncResponseHeader\x12\x34\n\x08resource\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ResourceR\x08resource\"\xa0\x01\n\x17\x45xecuteTaskSyncResponse\x12G\n\x06header\x18\x01 \x01(\x0b\x32-.flyteidl.admin.ExecuteTaskSyncResponseHeaderH\x00R\x06header\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x07outputsB\x05\n\x03res\"\x99\x01\n\x0eGetTaskRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x41\n\rtask_category\x18\x03 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"G\n\x0fGetTaskResponse\x12\x34\n\x08resource\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ResourceR\x08resource\"\xb3\x02\n\x08Resource\x12/\n\x05state\x18\x01 \x01(\x0e\x32\x15.flyteidl.admin.StateB\x02\x18\x01R\x05state\x12\x33\n\x07outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x07outputs\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\x12\x33\n\tlog_links\x18\x04 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x08logLinks\x12\x38\n\x05phase\x18\x05 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x38\n\x0b\x63ustom_info\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\"\x9c\x01\n\x11\x44\x65leteTaskRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x41\n\rtask_category\x18\x03 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"\x14\n\x12\x44\x65leteTaskResponse\"\xc4\x01\n\x05\x41gent\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x34\n\x14supported_task_types\x18\x02 \x03(\tB\x02\x18\x01R\x12supportedTaskTypes\x12\x17\n\x07is_sync\x18\x03 \x01(\x08R\x06isSync\x12X\n\x19supported_task_categories\x18\x04 \x03(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x17supportedTaskCategories\"<\n\x0cTaskCategory\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07version\x18\x02 \x01(\x05R\x07version\"%\n\x0fGetAgentRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"?\n\x10GetAgentResponse\x12+\n\x05\x61gent\x18\x01 \x01(\x0b\x32\x15.flyteidl.admin.AgentR\x05\x61gent\"\x13\n\x11ListAgentsRequest\"C\n\x12ListAgentsResponse\x12-\n\x06\x61gents\x18\x01 \x03(\x0b\x32\x15.flyteidl.admin.AgentR\x06\x61gents\"\xdb\x02\n\x15GetTaskMetricsRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x18\n\x07queries\x18\x03 \x03(\tR\x07queries\x12\x39\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12-\n\x04step\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x04step\x12\x41\n\rtask_category\x18\x07 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"X\n\x16GetTaskMetricsResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32$.flyteidl.core.ExecutionMetricResultR\x07results\"\xc9\x01\n\x12GetTaskLogsRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x14\n\x05lines\x18\x03 \x01(\x04R\x05lines\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12\x41\n\rtask_category\x18\x05 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"1\n\x19GetTaskLogsResponseHeader\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\"3\n\x17GetTaskLogsResponseBody\x12\x18\n\x07results\x18\x01 \x03(\tR\x07results\"\xa1\x01\n\x13GetTaskLogsResponse\x12\x43\n\x06header\x18\x01 \x01(\x0b\x32).flyteidl.admin.GetTaskLogsResponseHeaderH\x00R\x06header\x12=\n\x04\x62ody\x18\x02 \x01(\x0b\x32\'.flyteidl.admin.GetTaskLogsResponseBodyH\x00R\x04\x62odyB\x06\n\x04part*b\n\x05State\x12\x15\n\x11RETRYABLE_FAILURE\x10\x00\x12\x15\n\x11PERMANENT_FAILURE\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x1a\x02\x18\x01\x42\xb6\x01\n\x12\x63om.flyteidl.adminB\nAgentProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/admin/agent.proto\x12\x0e\x66lyteidl.admin\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/metrics.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x9e\x07\n\x15TaskExecutionMetadata\x12R\n\x11task_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x0ftaskExecutionId\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\x12I\n\x06labels\x18\x03 \x03(\x0b\x32\x31.flyteidl.admin.TaskExecutionMetadata.LabelsEntryR\x06labels\x12X\n\x0b\x61nnotations\x18\x04 \x03(\x0b\x32\x36.flyteidl.admin.TaskExecutionMetadata.AnnotationsEntryR\x0b\x61nnotations\x12.\n\x13k8s_service_account\x18\x05 \x01(\tR\x11k8sServiceAccount\x12t\n\x15\x65nvironment_variables\x18\x06 \x03(\x0b\x32?.flyteidl.admin.TaskExecutionMetadata.EnvironmentVariablesEntryR\x14\x65nvironmentVariables\x12!\n\x0cmax_attempts\x18\x07 \x01(\x05R\x0bmaxAttempts\x12$\n\rinterruptible\x18\x08 \x01(\x08R\rinterruptible\x12\x46\n\x1finterruptible_failure_threshold\x18\t \x01(\x05R\x1dinterruptibleFailureThreshold\x12>\n\toverrides\x18\n \x01(\x0b\x32 .flyteidl.core.TaskNodeOverridesR\toverrides\x12\x33\n\x08identity\x18\x0b \x01(\x0b\x32\x17.flyteidl.core.IdentityR\x08identity\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a>\n\x10\x41nnotationsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1aG\n\x19\x45nvironmentVariablesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xce\x02\n\x11\x43reateTaskRequest\x12J\n\x11\x64\x65precated_inputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x10\x64\x65precatedInputs\x12\x37\n\x08template\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x03 \x01(\tR\x0coutputPrefix\x12]\n\x17task_execution_metadata\x18\x04 \x01(\x0b\x32%.flyteidl.admin.TaskExecutionMetadataR\x15taskExecutionMetadata\x12\x30\n\x06inputs\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\x06inputs\"9\n\x12\x43reateTaskResponse\x12#\n\rresource_meta\x18\x01 \x01(\x0cR\x0cresourceMeta\"\x87\x02\n\x13\x43reateRequestHeader\x12\x37\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x02 \x01(\tR\x0coutputPrefix\x12]\n\x17task_execution_metadata\x18\x03 \x01(\x0b\x32%.flyteidl.admin.TaskExecutionMetadataR\x15taskExecutionMetadata\x12\x33\n\x16max_dataset_size_bytes\x18\x04 \x01(\x03R\x13maxDatasetSizeBytes\"\x94\x01\n\x16\x45xecuteTaskSyncRequest\x12=\n\x06header\x18\x01 \x01(\x0b\x32#.flyteidl.admin.CreateRequestHeaderH\x00R\x06header\x12\x33\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x06inputsB\x06\n\x04part\"U\n\x1d\x45xecuteTaskSyncResponseHeader\x12\x34\n\x08resource\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ResourceR\x08resource\"\xa0\x01\n\x17\x45xecuteTaskSyncResponse\x12G\n\x06header\x18\x01 \x01(\x0b\x32-.flyteidl.admin.ExecuteTaskSyncResponseHeaderH\x00R\x06header\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x07outputsB\x05\n\x03res\"\x99\x01\n\x0eGetTaskRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x41\n\rtask_category\x18\x03 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"G\n\x0fGetTaskResponse\x12\x34\n\x08resource\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ResourceR\x08resource\"\x81\x03\n\x08Resource\x12/\n\x05state\x18\x01 \x01(\x0e\x32\x15.flyteidl.admin.StateB\x02\x18\x01R\x05state\x12L\n\x12\x64\x65precated_outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x11\x64\x65precatedOutputs\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\x12\x33\n\tlog_links\x18\x04 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x08logLinks\x12\x38\n\x05phase\x18\x05 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x38\n\x0b\x63ustom_info\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12\x33\n\x07outputs\x18\x07 \x01(\x0b\x32\x19.flyteidl.core.OutputDataR\x07outputs\"\x9c\x01\n\x11\x44\x65leteTaskRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x41\n\rtask_category\x18\x03 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"\x14\n\x12\x44\x65leteTaskResponse\"\xc4\x01\n\x05\x41gent\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x34\n\x14supported_task_types\x18\x02 \x03(\tB\x02\x18\x01R\x12supportedTaskTypes\x12\x17\n\x07is_sync\x18\x03 \x01(\x08R\x06isSync\x12X\n\x19supported_task_categories\x18\x04 \x03(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x17supportedTaskCategories\"<\n\x0cTaskCategory\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07version\x18\x02 \x01(\x05R\x07version\"%\n\x0fGetAgentRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"?\n\x10GetAgentResponse\x12+\n\x05\x61gent\x18\x01 \x01(\x0b\x32\x15.flyteidl.admin.AgentR\x05\x61gent\"\x13\n\x11ListAgentsRequest\"C\n\x12ListAgentsResponse\x12-\n\x06\x61gents\x18\x01 \x03(\x0b\x32\x15.flyteidl.admin.AgentR\x06\x61gents\"\xdb\x02\n\x15GetTaskMetricsRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x18\n\x07queries\x18\x03 \x03(\tR\x07queries\x12\x39\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12-\n\x04step\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x04step\x12\x41\n\rtask_category\x18\x07 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"X\n\x16GetTaskMetricsResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32$.flyteidl.core.ExecutionMetricResultR\x07results\"\xc9\x01\n\x12GetTaskLogsRequest\x12\x1f\n\ttask_type\x18\x01 \x01(\tB\x02\x18\x01R\x08taskType\x12#\n\rresource_meta\x18\x02 \x01(\x0cR\x0cresourceMeta\x12\x14\n\x05lines\x18\x03 \x01(\x04R\x05lines\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12\x41\n\rtask_category\x18\x05 \x01(\x0b\x32\x1c.flyteidl.admin.TaskCategoryR\x0ctaskCategory\"1\n\x19GetTaskLogsResponseHeader\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\"3\n\x17GetTaskLogsResponseBody\x12\x18\n\x07results\x18\x01 \x03(\tR\x07results\"\xa1\x01\n\x13GetTaskLogsResponse\x12\x43\n\x06header\x18\x01 \x01(\x0b\x32).flyteidl.admin.GetTaskLogsResponseHeaderH\x00R\x06header\x12=\n\x04\x62ody\x18\x02 \x01(\x0b\x32\'.flyteidl.admin.GetTaskLogsResponseBodyH\x00R\x04\x62odyB\x06\n\x04part*b\n\x05State\x12\x15\n\x11RETRYABLE_FAILURE\x10\x00\x12\x15\n\x11PERMANENT_FAILURE\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x1a\x02\x18\x01\x42\xb6\x01\n\x12\x63om.flyteidl.adminB\nAgentProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -40,10 +40,14 @@ _TASKEXECUTIONMETADATA_ANNOTATIONSENTRY._serialized_options = b'8\001' _TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY._options = None _TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY._serialized_options = b'8\001' + _CREATETASKREQUEST.fields_by_name['deprecated_inputs']._options = None + _CREATETASKREQUEST.fields_by_name['deprecated_inputs']._serialized_options = b'\030\001' _GETTASKREQUEST.fields_by_name['task_type']._options = None _GETTASKREQUEST.fields_by_name['task_type']._serialized_options = b'\030\001' _RESOURCE.fields_by_name['state']._options = None _RESOURCE.fields_by_name['state']._serialized_options = b'\030\001' + _RESOURCE.fields_by_name['deprecated_outputs']._options = None + _RESOURCE.fields_by_name['deprecated_outputs']._serialized_options = b'\030\001' _DELETETASKREQUEST.fields_by_name['task_type']._options = None _DELETETASKREQUEST.fields_by_name['task_type']._serialized_options = b'\030\001' _AGENT.fields_by_name['supported_task_types']._options = None @@ -52,8 +56,8 @@ _GETTASKMETRICSREQUEST.fields_by_name['task_type']._serialized_options = b'\030\001' _GETTASKLOGSREQUEST.fields_by_name['task_type']._options = None _GETTASKLOGSREQUEST.fields_by_name['task_type']._serialized_options = b'\030\001' - _globals['_STATE']._serialized_start=4354 - _globals['_STATE']._serialized_end=4452 + _globals['_STATE']._serialized_start=4507 + _globals['_STATE']._serialized_end=4605 _globals['_TASKEXECUTIONMETADATA']._serialized_start=351 _globals['_TASKEXECUTIONMETADATA']._serialized_end=1277 _globals['_TASKEXECUTIONMETADATA_LABELSENTRY']._serialized_start=1083 @@ -63,49 +67,49 @@ _globals['_TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY']._serialized_start=1206 _globals['_TASKEXECUTIONMETADATA_ENVIRONMENTVARIABLESENTRY']._serialized_end=1277 _globals['_CREATETASKREQUEST']._serialized_start=1280 - _globals['_CREATETASKREQUEST']._serialized_end=1539 - _globals['_CREATETASKRESPONSE']._serialized_start=1541 - _globals['_CREATETASKRESPONSE']._serialized_end=1598 - _globals['_CREATEREQUESTHEADER']._serialized_start=1601 - _globals['_CREATEREQUESTHEADER']._serialized_end=1864 - _globals['_EXECUTETASKSYNCREQUEST']._serialized_start=1867 - _globals['_EXECUTETASKSYNCREQUEST']._serialized_end=2015 - _globals['_EXECUTETASKSYNCRESPONSEHEADER']._serialized_start=2017 - _globals['_EXECUTETASKSYNCRESPONSEHEADER']._serialized_end=2102 - _globals['_EXECUTETASKSYNCRESPONSE']._serialized_start=2105 - _globals['_EXECUTETASKSYNCRESPONSE']._serialized_end=2265 - _globals['_GETTASKREQUEST']._serialized_start=2268 - _globals['_GETTASKREQUEST']._serialized_end=2421 - _globals['_GETTASKRESPONSE']._serialized_start=2423 - _globals['_GETTASKRESPONSE']._serialized_end=2494 - _globals['_RESOURCE']._serialized_start=2497 - _globals['_RESOURCE']._serialized_end=2804 - _globals['_DELETETASKREQUEST']._serialized_start=2807 - _globals['_DELETETASKREQUEST']._serialized_end=2963 - _globals['_DELETETASKRESPONSE']._serialized_start=2965 - _globals['_DELETETASKRESPONSE']._serialized_end=2985 - _globals['_AGENT']._serialized_start=2988 - _globals['_AGENT']._serialized_end=3184 - _globals['_TASKCATEGORY']._serialized_start=3186 - _globals['_TASKCATEGORY']._serialized_end=3246 - _globals['_GETAGENTREQUEST']._serialized_start=3248 - _globals['_GETAGENTREQUEST']._serialized_end=3285 - _globals['_GETAGENTRESPONSE']._serialized_start=3287 - _globals['_GETAGENTRESPONSE']._serialized_end=3350 - _globals['_LISTAGENTSREQUEST']._serialized_start=3352 - _globals['_LISTAGENTSREQUEST']._serialized_end=3371 - _globals['_LISTAGENTSRESPONSE']._serialized_start=3373 - _globals['_LISTAGENTSRESPONSE']._serialized_end=3440 - _globals['_GETTASKMETRICSREQUEST']._serialized_start=3443 - _globals['_GETTASKMETRICSREQUEST']._serialized_end=3790 - _globals['_GETTASKMETRICSRESPONSE']._serialized_start=3792 - _globals['_GETTASKMETRICSRESPONSE']._serialized_end=3880 - _globals['_GETTASKLOGSREQUEST']._serialized_start=3883 - _globals['_GETTASKLOGSREQUEST']._serialized_end=4084 - _globals['_GETTASKLOGSRESPONSEHEADER']._serialized_start=4086 - _globals['_GETTASKLOGSRESPONSEHEADER']._serialized_end=4135 - _globals['_GETTASKLOGSRESPONSEBODY']._serialized_start=4137 - _globals['_GETTASKLOGSRESPONSEBODY']._serialized_end=4188 - _globals['_GETTASKLOGSRESPONSE']._serialized_start=4191 - _globals['_GETTASKLOGSRESPONSE']._serialized_end=4352 + _globals['_CREATETASKREQUEST']._serialized_end=1614 + _globals['_CREATETASKRESPONSE']._serialized_start=1616 + _globals['_CREATETASKRESPONSE']._serialized_end=1673 + _globals['_CREATEREQUESTHEADER']._serialized_start=1676 + _globals['_CREATEREQUESTHEADER']._serialized_end=1939 + _globals['_EXECUTETASKSYNCREQUEST']._serialized_start=1942 + _globals['_EXECUTETASKSYNCREQUEST']._serialized_end=2090 + _globals['_EXECUTETASKSYNCRESPONSEHEADER']._serialized_start=2092 + _globals['_EXECUTETASKSYNCRESPONSEHEADER']._serialized_end=2177 + _globals['_EXECUTETASKSYNCRESPONSE']._serialized_start=2180 + _globals['_EXECUTETASKSYNCRESPONSE']._serialized_end=2340 + _globals['_GETTASKREQUEST']._serialized_start=2343 + _globals['_GETTASKREQUEST']._serialized_end=2496 + _globals['_GETTASKRESPONSE']._serialized_start=2498 + _globals['_GETTASKRESPONSE']._serialized_end=2569 + _globals['_RESOURCE']._serialized_start=2572 + _globals['_RESOURCE']._serialized_end=2957 + _globals['_DELETETASKREQUEST']._serialized_start=2960 + _globals['_DELETETASKREQUEST']._serialized_end=3116 + _globals['_DELETETASKRESPONSE']._serialized_start=3118 + _globals['_DELETETASKRESPONSE']._serialized_end=3138 + _globals['_AGENT']._serialized_start=3141 + _globals['_AGENT']._serialized_end=3337 + _globals['_TASKCATEGORY']._serialized_start=3339 + _globals['_TASKCATEGORY']._serialized_end=3399 + _globals['_GETAGENTREQUEST']._serialized_start=3401 + _globals['_GETAGENTREQUEST']._serialized_end=3438 + _globals['_GETAGENTRESPONSE']._serialized_start=3440 + _globals['_GETAGENTRESPONSE']._serialized_end=3503 + _globals['_LISTAGENTSREQUEST']._serialized_start=3505 + _globals['_LISTAGENTSREQUEST']._serialized_end=3524 + _globals['_LISTAGENTSRESPONSE']._serialized_start=3526 + _globals['_LISTAGENTSRESPONSE']._serialized_end=3593 + _globals['_GETTASKMETRICSREQUEST']._serialized_start=3596 + _globals['_GETTASKMETRICSREQUEST']._serialized_end=3943 + _globals['_GETTASKMETRICSRESPONSE']._serialized_start=3945 + _globals['_GETTASKMETRICSRESPONSE']._serialized_end=4033 + _globals['_GETTASKLOGSREQUEST']._serialized_start=4036 + _globals['_GETTASKLOGSREQUEST']._serialized_end=4237 + _globals['_GETTASKLOGSRESPONSEHEADER']._serialized_start=4239 + _globals['_GETTASKLOGSRESPONSEHEADER']._serialized_end=4288 + _globals['_GETTASKLOGSRESPONSEBODY']._serialized_start=4290 + _globals['_GETTASKLOGSRESPONSEBODY']._serialized_end=4341 + _globals['_GETTASKLOGSRESPONSE']._serialized_start=4344 + _globals['_GETTASKLOGSRESPONSE']._serialized_end=4505 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.pyi index 956b5d5a4d..c6564f10b7 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/agent_pb2.pyi @@ -77,16 +77,18 @@ class TaskExecutionMetadata(_message.Message): def __init__(self, task_execution_id: _Optional[_Union[_identifier_pb2.TaskExecutionIdentifier, _Mapping]] = ..., namespace: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., annotations: _Optional[_Mapping[str, str]] = ..., k8s_service_account: _Optional[str] = ..., environment_variables: _Optional[_Mapping[str, str]] = ..., max_attempts: _Optional[int] = ..., interruptible: bool = ..., interruptible_failure_threshold: _Optional[int] = ..., overrides: _Optional[_Union[_workflow_pb2.TaskNodeOverrides, _Mapping]] = ..., identity: _Optional[_Union[_security_pb2.Identity, _Mapping]] = ...) -> None: ... class CreateTaskRequest(_message.Message): - __slots__ = ["inputs", "template", "output_prefix", "task_execution_metadata"] - INPUTS_FIELD_NUMBER: _ClassVar[int] + __slots__ = ["deprecated_inputs", "template", "output_prefix", "task_execution_metadata", "inputs"] + DEPRECATED_INPUTS_FIELD_NUMBER: _ClassVar[int] TEMPLATE_FIELD_NUMBER: _ClassVar[int] OUTPUT_PREFIX_FIELD_NUMBER: _ClassVar[int] TASK_EXECUTION_METADATA_FIELD_NUMBER: _ClassVar[int] - inputs: _literals_pb2.LiteralMap + INPUTS_FIELD_NUMBER: _ClassVar[int] + deprecated_inputs: _literals_pb2.LiteralMap template: _tasks_pb2.TaskTemplate output_prefix: str task_execution_metadata: TaskExecutionMetadata - def __init__(self, inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ..., output_prefix: _Optional[str] = ..., task_execution_metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ...) -> None: ... + inputs: _literals_pb2.InputData + def __init__(self, deprecated_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ..., output_prefix: _Optional[str] = ..., task_execution_metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ..., inputs: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ...) -> None: ... class CreateTaskResponse(_message.Message): __slots__ = ["resource_meta"] @@ -145,20 +147,22 @@ class GetTaskResponse(_message.Message): def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... class Resource(_message.Message): - __slots__ = ["state", "outputs", "message", "log_links", "phase", "custom_info"] + __slots__ = ["state", "deprecated_outputs", "message", "log_links", "phase", "custom_info", "outputs"] STATE_FIELD_NUMBER: _ClassVar[int] - OUTPUTS_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_OUTPUTS_FIELD_NUMBER: _ClassVar[int] MESSAGE_FIELD_NUMBER: _ClassVar[int] LOG_LINKS_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] CUSTOM_INFO_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] state: State - outputs: _literals_pb2.LiteralMap + deprecated_outputs: _literals_pb2.LiteralMap message: str log_links: _containers.RepeatedCompositeFieldContainer[_execution_pb2.TaskLog] phase: _execution_pb2.TaskExecution.Phase custom_info: _struct_pb2.Struct - def __init__(self, state: _Optional[_Union[State, str]] = ..., outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., message: _Optional[str] = ..., log_links: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + outputs: _literals_pb2.OutputData + def __init__(self, state: _Optional[_Union[State, str]] = ..., deprecated_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., message: _Optional[str] = ..., log_links: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., outputs: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ...) -> None: ... class DeleteTaskRequest(_message.Message): __slots__ = ["task_type", "resource_meta", "task_category"] diff --git a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py index ff650d4c55..1b57cf07c4 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.py @@ -26,7 +26,7 @@ from flyteidl.admin import matchable_resource_pb2 as flyteidl_dot_admin_dot_matchable__resource__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\"flyteidl/core/execution_envs.proto\x1a\x1f\x66lyteidl/core/artifact_id.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/metrics.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\'flyteidl/admin/matchable_resource.proto\"\xd6\x01\n\x16\x45xecutionCreateRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12\x31\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\x12\x10\n\x03org\x18\x06 \x01(\tR\x03org\"\x99\x01\n\x18\x45xecutionRelaunchRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\'\n\x0foverwrite_cache\x18\x04 \x01(\x08R\x0eoverwriteCacheJ\x04\x08\x02\x10\x03\"\xa8\x01\n\x17\x45xecutionRecoverRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\"U\n\x17\x45xecutionCreateResponse\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"Y\n\x1bWorkflowExecutionGetRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\xb6\x01\n\tExecution\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x31\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12:\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosureR\x07\x63losure\"`\n\rExecutionList\x12\x39\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.ExecutionR\nexecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"e\n\x0eLiteralMapBlob\x12\x37\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x06values\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uriB\x06\n\x04\x64\x61ta\"C\n\rAbortMetadata\x12\x14\n\x05\x63\x61use\x18\x01 \x01(\tR\x05\x63\x61use\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\"\x98\x07\n\x10\x45xecutionClosure\x12>\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00R\x07outputs\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12%\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00R\nabortCause\x12\x46\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00R\rabortMetadata\x12@\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x46\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0e\x63omputedInputs\x12<\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x42\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\x12:\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nworkflowId\x12]\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsR\x12stateChangeDetailsB\x0f\n\routput_result\"[\n\x0eSystemMetadata\x12+\n\x11\x65xecution_cluster\x18\x01 \x01(\tR\x10\x65xecutionCluster\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x85\x05\n\x11\x45xecutionMetadata\x12\x43\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionModeR\x04mode\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\x12\x18\n\x07nesting\x18\x03 \x01(\rR\x07nesting\x12=\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\x12Z\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x13parentNodeExecution\x12[\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x12referenceExecution\x12G\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadataR\x0esystemMetadata\x12<\n\x0c\x61rtifact_ids\x18\x12 \x03(\x0b\x32\x19.flyteidl.core.ArtifactIDR\x0b\x61rtifactIds\"t\n\rExecutionMode\x12\n\n\x06MANUAL\x10\x00\x12\r\n\tSCHEDULED\x10\x01\x12\n\n\x06SYSTEM\x10\x02\x12\x0c\n\x08RELAUNCH\x10\x03\x12\x12\n\x0e\x43HILD_WORKFLOW\x10\x04\x12\r\n\tRECOVERED\x10\x05\x12\x0b\n\x07TRIGGER\x10\x06\"V\n\x10NotificationList\x12\x42\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\"\xd6\t\n\rExecutionSpec\x12:\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nlaunchPlan\x12\x35\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x06inputs\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\x12H\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00R\rnotifications\x12!\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00R\ndisableAll\x12.\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12=\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.AnnotationsR\x0b\x61nnotations\x12I\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContextR\x0fsecurityContext\x12\x39\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01R\x08\x61uthRole\x12M\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12\'\n\x0fmax_parallelism\x18\x12 \x01(\x05R\x0emaxParallelism\x12X\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfigR\x13rawOutputDataConfig\x12P\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignmentR\x11\x63lusterAssignment\x12@\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\rinterruptible\x12\'\n\x0foverwrite_cache\x18\x16 \x01(\x08R\x0eoverwriteCache\x12(\n\x04\x65nvs\x18\x17 \x01(\x0b\x32\x14.flyteidl.admin.EnvsR\x04\x65nvs\x12\x16\n\x04tags\x18\x18 \x03(\tB\x02\x18\x01R\x04tags\x12]\n\x17\x65xecution_cluster_label\x18\x19 \x01(\x0b\x32%.flyteidl.admin.ExecutionClusterLabelR\x15\x65xecutionClusterLabel\x12\x61\n\x19\x65xecution_env_assignments\x18\x1a \x03(\x0b\x32%.flyteidl.core.ExecutionEnvAssignmentR\x17\x65xecutionEnvAssignmentsB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"m\n\x19\x45xecutionTerminateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x63\x61use\x18\x02 \x01(\tR\x05\x63\x61use\"\x1c\n\x1a\x45xecutionTerminateResponse\"]\n\x1fWorkflowExecutionGetDataRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\x88\x02\n WorkflowExecutionGetDataResponse\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12\x33\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\"\x8a\x01\n\x16\x45xecutionUpdateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\"\xae\x01\n\x1b\x45xecutionStateChangeDetails\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\x12;\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1c\n\tprincipal\x18\x03 \x01(\tR\tprincipal\"\x19\n\x17\x45xecutionUpdateResponse\"v\n\"WorkflowExecutionGetMetricsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x64\x65pth\x18\x02 \x01(\x05R\x05\x64\x65pth\"N\n#WorkflowExecutionGetMetricsResponse\x12\'\n\x04span\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.SpanR\x04span*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\xba\x01\n\x12\x63om.flyteidl.adminB\x0e\x45xecutionProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\"flyteidl/core/execution_envs.proto\x1a\x1f\x66lyteidl/core/artifact_id.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/metrics.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\'flyteidl/admin/matchable_resource.proto\"\x93\x02\n\x16\x45xecutionCreateRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12\x35\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x06inputs\x12\x10\n\x03org\x18\x06 \x01(\tR\x03org\x12\x37\n\ninput_data\x18\x07 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\tinputData\"\x99\x01\n\x18\x45xecutionRelaunchRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\'\n\x0foverwrite_cache\x18\x04 \x01(\x08R\x0eoverwriteCacheJ\x04\x08\x02\x10\x03\"\xa8\x01\n\x17\x45xecutionRecoverRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\"U\n\x17\x45xecutionCreateResponse\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"Y\n\x1bWorkflowExecutionGetRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\xb6\x01\n\tExecution\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x31\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12:\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosureR\x07\x63losure\"`\n\rExecutionList\x12\x39\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.ExecutionR\nexecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"e\n\x0eLiteralMapBlob\x12\x37\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x06values\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uriB\x06\n\x04\x64\x61ta\"C\n\rAbortMetadata\x12\x14\n\x05\x63\x61use\x18\x01 \x01(\tR\x05\x63\x61use\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\"\xd8\x07\n\x10\x45xecutionClosure\x12>\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00R\x07outputs\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12%\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00R\nabortCause\x12\x46\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00R\rabortMetadata\x12@\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12>\n\x0c\x66ull_outputs\x18\x0f \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x00R\x0b\x66ullOutputs\x12\x46\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0e\x63omputedInputs\x12<\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x42\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\x12:\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nworkflowId\x12]\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsR\x12stateChangeDetailsB\x0f\n\routput_result\"[\n\x0eSystemMetadata\x12+\n\x11\x65xecution_cluster\x18\x01 \x01(\tR\x10\x65xecutionCluster\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x85\x05\n\x11\x45xecutionMetadata\x12\x43\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionModeR\x04mode\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\x12\x18\n\x07nesting\x18\x03 \x01(\rR\x07nesting\x12=\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\x12Z\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x13parentNodeExecution\x12[\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x12referenceExecution\x12G\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadataR\x0esystemMetadata\x12<\n\x0c\x61rtifact_ids\x18\x12 \x03(\x0b\x32\x19.flyteidl.core.ArtifactIDR\x0b\x61rtifactIds\"t\n\rExecutionMode\x12\n\n\x06MANUAL\x10\x00\x12\r\n\tSCHEDULED\x10\x01\x12\n\n\x06SYSTEM\x10\x02\x12\x0c\n\x08RELAUNCH\x10\x03\x12\x12\n\x0e\x43HILD_WORKFLOW\x10\x04\x12\r\n\tRECOVERED\x10\x05\x12\x0b\n\x07TRIGGER\x10\x06\"V\n\x10NotificationList\x12\x42\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\"\xd6\t\n\rExecutionSpec\x12:\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nlaunchPlan\x12\x35\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x06inputs\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\x12H\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00R\rnotifications\x12!\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00R\ndisableAll\x12.\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12=\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.AnnotationsR\x0b\x61nnotations\x12I\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContextR\x0fsecurityContext\x12\x39\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01R\x08\x61uthRole\x12M\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12\'\n\x0fmax_parallelism\x18\x12 \x01(\x05R\x0emaxParallelism\x12X\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfigR\x13rawOutputDataConfig\x12P\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignmentR\x11\x63lusterAssignment\x12@\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\rinterruptible\x12\'\n\x0foverwrite_cache\x18\x16 \x01(\x08R\x0eoverwriteCache\x12(\n\x04\x65nvs\x18\x17 \x01(\x0b\x32\x14.flyteidl.admin.EnvsR\x04\x65nvs\x12\x16\n\x04tags\x18\x18 \x03(\tB\x02\x18\x01R\x04tags\x12]\n\x17\x65xecution_cluster_label\x18\x19 \x01(\x0b\x32%.flyteidl.admin.ExecutionClusterLabelR\x15\x65xecutionClusterLabel\x12\x61\n\x19\x65xecution_env_assignments\x18\x1a \x03(\x0b\x32%.flyteidl.core.ExecutionEnvAssignmentR\x17\x65xecutionEnvAssignmentsB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"m\n\x19\x45xecutionTerminateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x63\x61use\x18\x02 \x01(\tR\x05\x63\x61use\"\x1c\n\x1a\x45xecutionTerminateResponse\"]\n\x1fWorkflowExecutionGetDataRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\x85\x03\n WorkflowExecutionGetDataResponse\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12\x33\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12>\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\nfullInputs\x12@\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0b\x66ullOutputs\x12\x37\n\ninput_data\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\tinputData\x12:\n\x0boutput_data\x18\x06 \x01(\x0b\x32\x19.flyteidl.core.OutputDataR\noutputData\"\x8a\x01\n\x16\x45xecutionUpdateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\"\xae\x01\n\x1b\x45xecutionStateChangeDetails\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\x12;\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1c\n\tprincipal\x18\x03 \x01(\tR\tprincipal\"\x19\n\x17\x45xecutionUpdateResponse\"v\n\"WorkflowExecutionGetMetricsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x64\x65pth\x18\x02 \x01(\x05R\x05\x64\x65pth\"N\n#WorkflowExecutionGetMetricsResponse\x12\'\n\x04span\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.SpanR\x04span*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\xba\x01\n\x12\x63om.flyteidl.adminB\x0e\x45xecutionProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,6 +35,8 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\022com.flyteidl.adminB\016ExecutionProtoP\001Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\242\002\003FAX\252\002\016Flyteidl.Admin\312\002\016Flyteidl\\Admin\342\002\032Flyteidl\\Admin\\GPBMetadata\352\002\017Flyteidl::Admin' + _EXECUTIONCREATEREQUEST.fields_by_name['inputs']._options = None + _EXECUTIONCREATEREQUEST.fields_by_name['inputs']._serialized_options = b'\030\001' _LITERALMAPBLOB.fields_by_name['values']._options = None _LITERALMAPBLOB.fields_by_name['values']._serialized_options = b'\030\001' _EXECUTIONCLOSURE.fields_by_name['outputs']._options = None @@ -55,54 +57,58 @@ _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._serialized_options = b'\030\001' _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._options = None _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._serialized_options = b'\030\001' - _globals['_EXECUTIONSTATE']._serialized_start=5697 - _globals['_EXECUTIONSTATE']._serialized_end=5759 + _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['full_inputs']._options = None + _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['full_inputs']._serialized_options = b'\030\001' + _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs']._options = None + _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs']._serialized_options = b'\030\001' + _globals['_EXECUTIONSTATE']._serialized_start=5947 + _globals['_EXECUTIONSTATE']._serialized_end=6009 _globals['_EXECUTIONCREATEREQUEST']._serialized_start=480 - _globals['_EXECUTIONCREATEREQUEST']._serialized_end=694 - _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_start=697 - _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_end=850 - _globals['_EXECUTIONRECOVERREQUEST']._serialized_start=853 - _globals['_EXECUTIONRECOVERREQUEST']._serialized_end=1021 - _globals['_EXECUTIONCREATERESPONSE']._serialized_start=1023 - _globals['_EXECUTIONCREATERESPONSE']._serialized_end=1108 - _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_start=1110 - _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_end=1199 - _globals['_EXECUTION']._serialized_start=1202 - _globals['_EXECUTION']._serialized_end=1384 - _globals['_EXECUTIONLIST']._serialized_start=1386 - _globals['_EXECUTIONLIST']._serialized_end=1482 - _globals['_LITERALMAPBLOB']._serialized_start=1484 - _globals['_LITERALMAPBLOB']._serialized_end=1585 - _globals['_ABORTMETADATA']._serialized_start=1587 - _globals['_ABORTMETADATA']._serialized_end=1654 - _globals['_EXECUTIONCLOSURE']._serialized_start=1657 - _globals['_EXECUTIONCLOSURE']._serialized_end=2577 - _globals['_SYSTEMMETADATA']._serialized_start=2579 - _globals['_SYSTEMMETADATA']._serialized_end=2670 - _globals['_EXECUTIONMETADATA']._serialized_start=2673 - _globals['_EXECUTIONMETADATA']._serialized_end=3318 - _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_start=3202 - _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_end=3318 - _globals['_NOTIFICATIONLIST']._serialized_start=3320 - _globals['_NOTIFICATIONLIST']._serialized_end=3406 - _globals['_EXECUTIONSPEC']._serialized_start=3409 - _globals['_EXECUTIONSPEC']._serialized_end=4647 - _globals['_EXECUTIONTERMINATEREQUEST']._serialized_start=4649 - _globals['_EXECUTIONTERMINATEREQUEST']._serialized_end=4758 - _globals['_EXECUTIONTERMINATERESPONSE']._serialized_start=4760 - _globals['_EXECUTIONTERMINATERESPONSE']._serialized_end=4788 - _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_start=4790 - _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_end=4883 - _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_start=4886 - _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_end=5150 - _globals['_EXECUTIONUPDATEREQUEST']._serialized_start=5153 - _globals['_EXECUTIONUPDATEREQUEST']._serialized_end=5291 - _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_start=5294 - _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_end=5468 - _globals['_EXECUTIONUPDATERESPONSE']._serialized_start=5470 - _globals['_EXECUTIONUPDATERESPONSE']._serialized_end=5495 - _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_start=5497 - _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_end=5615 - _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_start=5617 - _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_end=5695 + _globals['_EXECUTIONCREATEREQUEST']._serialized_end=755 + _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_start=758 + _globals['_EXECUTIONRELAUNCHREQUEST']._serialized_end=911 + _globals['_EXECUTIONRECOVERREQUEST']._serialized_start=914 + _globals['_EXECUTIONRECOVERREQUEST']._serialized_end=1082 + _globals['_EXECUTIONCREATERESPONSE']._serialized_start=1084 + _globals['_EXECUTIONCREATERESPONSE']._serialized_end=1169 + _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_start=1171 + _globals['_WORKFLOWEXECUTIONGETREQUEST']._serialized_end=1260 + _globals['_EXECUTION']._serialized_start=1263 + _globals['_EXECUTION']._serialized_end=1445 + _globals['_EXECUTIONLIST']._serialized_start=1447 + _globals['_EXECUTIONLIST']._serialized_end=1543 + _globals['_LITERALMAPBLOB']._serialized_start=1545 + _globals['_LITERALMAPBLOB']._serialized_end=1646 + _globals['_ABORTMETADATA']._serialized_start=1648 + _globals['_ABORTMETADATA']._serialized_end=1715 + _globals['_EXECUTIONCLOSURE']._serialized_start=1718 + _globals['_EXECUTIONCLOSURE']._serialized_end=2702 + _globals['_SYSTEMMETADATA']._serialized_start=2704 + _globals['_SYSTEMMETADATA']._serialized_end=2795 + _globals['_EXECUTIONMETADATA']._serialized_start=2798 + _globals['_EXECUTIONMETADATA']._serialized_end=3443 + _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_start=3327 + _globals['_EXECUTIONMETADATA_EXECUTIONMODE']._serialized_end=3443 + _globals['_NOTIFICATIONLIST']._serialized_start=3445 + _globals['_NOTIFICATIONLIST']._serialized_end=3531 + _globals['_EXECUTIONSPEC']._serialized_start=3534 + _globals['_EXECUTIONSPEC']._serialized_end=4772 + _globals['_EXECUTIONTERMINATEREQUEST']._serialized_start=4774 + _globals['_EXECUTIONTERMINATEREQUEST']._serialized_end=4883 + _globals['_EXECUTIONTERMINATERESPONSE']._serialized_start=4885 + _globals['_EXECUTIONTERMINATERESPONSE']._serialized_end=4913 + _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_start=4915 + _globals['_WORKFLOWEXECUTIONGETDATAREQUEST']._serialized_end=5008 + _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_start=5011 + _globals['_WORKFLOWEXECUTIONGETDATARESPONSE']._serialized_end=5400 + _globals['_EXECUTIONUPDATEREQUEST']._serialized_start=5403 + _globals['_EXECUTIONUPDATEREQUEST']._serialized_end=5541 + _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_start=5544 + _globals['_EXECUTIONSTATECHANGEDETAILS']._serialized_end=5718 + _globals['_EXECUTIONUPDATERESPONSE']._serialized_start=5720 + _globals['_EXECUTIONUPDATERESPONSE']._serialized_end=5745 + _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_start=5747 + _globals['_WORKFLOWEXECUTIONGETMETRICSREQUEST']._serialized_end=5865 + _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_start=5867 + _globals['_WORKFLOWEXECUTIONGETMETRICSRESPONSE']._serialized_end=5945 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi index 86928f23df..75cfeee6d5 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/execution_pb2.pyi @@ -27,20 +27,22 @@ EXECUTION_ACTIVE: ExecutionState EXECUTION_ARCHIVED: ExecutionState class ExecutionCreateRequest(_message.Message): - __slots__ = ["project", "domain", "name", "spec", "inputs", "org"] + __slots__ = ["project", "domain", "name", "spec", "inputs", "org", "input_data"] PROJECT_FIELD_NUMBER: _ClassVar[int] DOMAIN_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] SPEC_FIELD_NUMBER: _ClassVar[int] INPUTS_FIELD_NUMBER: _ClassVar[int] ORG_FIELD_NUMBER: _ClassVar[int] + INPUT_DATA_FIELD_NUMBER: _ClassVar[int] project: str domain: str name: str spec: ExecutionSpec inputs: _literals_pb2.LiteralMap org: str - def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., name: _Optional[str] = ..., spec: _Optional[_Union[ExecutionSpec, _Mapping]] = ..., inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., org: _Optional[str] = ...) -> None: ... + input_data: _literals_pb2.InputData + def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., name: _Optional[str] = ..., spec: _Optional[_Union[ExecutionSpec, _Mapping]] = ..., inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., org: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ...) -> None: ... class ExecutionRelaunchRequest(_message.Message): __slots__ = ["id", "name", "overwrite_cache"] @@ -109,12 +111,13 @@ class AbortMetadata(_message.Message): def __init__(self, cause: _Optional[str] = ..., principal: _Optional[str] = ...) -> None: ... class ExecutionClosure(_message.Message): - __slots__ = ["outputs", "error", "abort_cause", "abort_metadata", "output_data", "computed_inputs", "phase", "started_at", "duration", "created_at", "updated_at", "notifications", "workflow_id", "state_change_details"] + __slots__ = ["outputs", "error", "abort_cause", "abort_metadata", "output_data", "full_outputs", "computed_inputs", "phase", "started_at", "duration", "created_at", "updated_at", "notifications", "workflow_id", "state_change_details"] OUTPUTS_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] ABORT_CAUSE_FIELD_NUMBER: _ClassVar[int] ABORT_METADATA_FIELD_NUMBER: _ClassVar[int] OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] + FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] COMPUTED_INPUTS_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] STARTED_AT_FIELD_NUMBER: _ClassVar[int] @@ -129,6 +132,7 @@ class ExecutionClosure(_message.Message): abort_cause: str abort_metadata: AbortMetadata output_data: _literals_pb2.LiteralMap + full_outputs: _literals_pb2.OutputData computed_inputs: _literals_pb2.LiteralMap phase: _execution_pb2.WorkflowExecution.Phase started_at: _timestamp_pb2.Timestamp @@ -138,7 +142,7 @@ class ExecutionClosure(_message.Message): notifications: _containers.RepeatedCompositeFieldContainer[_common_pb2.Notification] workflow_id: _identifier_pb2.Identifier state_change_details: ExecutionStateChangeDetails - def __init__(self, outputs: _Optional[_Union[LiteralMapBlob, _Mapping]] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., abort_cause: _Optional[str] = ..., abort_metadata: _Optional[_Union[AbortMetadata, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., computed_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.WorkflowExecution.Phase, str]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., notifications: _Optional[_Iterable[_Union[_common_pb2.Notification, _Mapping]]] = ..., workflow_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., state_change_details: _Optional[_Union[ExecutionStateChangeDetails, _Mapping]] = ...) -> None: ... + def __init__(self, outputs: _Optional[_Union[LiteralMapBlob, _Mapping]] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., abort_cause: _Optional[str] = ..., abort_metadata: _Optional[_Union[AbortMetadata, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., computed_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.WorkflowExecution.Phase, str]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., notifications: _Optional[_Iterable[_Union[_common_pb2.Notification, _Mapping]]] = ..., workflow_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., state_change_details: _Optional[_Union[ExecutionStateChangeDetails, _Mapping]] = ...) -> None: ... class SystemMetadata(_message.Message): __slots__ = ["execution_cluster", "namespace"] @@ -251,16 +255,20 @@ class WorkflowExecutionGetDataRequest(_message.Message): def __init__(self, id: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ...) -> None: ... class WorkflowExecutionGetDataResponse(_message.Message): - __slots__ = ["outputs", "inputs", "full_inputs", "full_outputs"] + __slots__ = ["outputs", "inputs", "full_inputs", "full_outputs", "input_data", "output_data"] OUTPUTS_FIELD_NUMBER: _ClassVar[int] INPUTS_FIELD_NUMBER: _ClassVar[int] FULL_INPUTS_FIELD_NUMBER: _ClassVar[int] FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + INPUT_DATA_FIELD_NUMBER: _ClassVar[int] + OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] outputs: _common_pb2.UrlBlob inputs: _common_pb2.UrlBlob full_inputs: _literals_pb2.LiteralMap full_outputs: _literals_pb2.LiteralMap - def __init__(self, outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... + input_data: _literals_pb2.InputData + output_data: _literals_pb2.OutputData + def __init__(self, outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ...) -> None: ... class ExecutionUpdateRequest(_message.Message): __slots__ = ["id", "state"] diff --git a/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.py index 7f830ca25e..0db04e73c6 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.py @@ -24,7 +24,7 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n flyteidl/admin/launch_plan.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\"flyteidl/core/execution_envs.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1d\x66lyteidl/admin/schedule.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"x\n\x17LaunchPlanCreateRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12\x32\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpecR\x04spec\"\x1a\n\x18LaunchPlanCreateResponse\"\xa8\x01\n\nLaunchPlan\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12\x32\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpecR\x04spec\x12;\n\x07\x63losure\x18\x03 \x01(\x0b\x32!.flyteidl.admin.LaunchPlanClosureR\x07\x63losure\"e\n\x0eLaunchPlanList\x12=\n\x0claunch_plans\x18\x01 \x03(\x0b\x32\x1a.flyteidl.admin.LaunchPlanR\x0blaunchPlans\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"v\n\x04\x41uth\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"\xa0\x08\n\x0eLaunchPlanSpec\x12:\n\x0bworkflow_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nworkflowId\x12K\n\x0f\x65ntity_metadata\x18\x02 \x01(\x0b\x32\".flyteidl.admin.LaunchPlanMetadataR\x0e\x65ntityMetadata\x12\x42\n\x0e\x64\x65\x66\x61ult_inputs\x18\x03 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMapR\rdefaultInputs\x12<\n\x0c\x66ixed_inputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ixedInputs\x12\x16\n\x04role\x18\x05 \x01(\tB\x02\x18\x01R\x04role\x12.\n\x06labels\x18\x06 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12=\n\x0b\x61nnotations\x18\x07 \x01(\x0b\x32\x1b.flyteidl.admin.AnnotationsR\x0b\x61nnotations\x12,\n\x04\x61uth\x18\x08 \x01(\x0b\x32\x14.flyteidl.admin.AuthB\x02\x18\x01R\x04\x61uth\x12\x39\n\tauth_role\x18\t \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01R\x08\x61uthRole\x12I\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContextR\x0fsecurityContext\x12M\n\x12quality_of_service\x18\x10 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12X\n\x16raw_output_data_config\x18\x11 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfigR\x13rawOutputDataConfig\x12\'\n\x0fmax_parallelism\x18\x12 \x01(\x05R\x0emaxParallelism\x12@\n\rinterruptible\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\rinterruptible\x12\'\n\x0foverwrite_cache\x18\x14 \x01(\x08R\x0eoverwriteCache\x12(\n\x04\x65nvs\x18\x15 \x01(\x0b\x32\x14.flyteidl.admin.EnvsR\x04\x65nvs\x12\x61\n\x19\x65xecution_env_assignments\x18\x16 \x03(\x0b\x32%.flyteidl.core.ExecutionEnvAssignmentR\x17\x65xecutionEnvAssignments\"\xcd\x02\n\x11LaunchPlanClosure\x12\x35\n\x05state\x18\x01 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanStateR\x05state\x12\x44\n\x0f\x65xpected_inputs\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMapR\x0e\x65xpectedInputs\x12\x45\n\x10\x65xpected_outputs\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.VariableMapR\x0f\x65xpectedOutputs\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"\xd1\x01\n\x12LaunchPlanMetadata\x12\x34\n\x08schedule\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ScheduleR\x08schedule\x12\x42\n\rnotifications\x18\x02 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\x12\x41\n\x11launch_conditions\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x10launchConditions\"{\n\x17LaunchPlanUpdateRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12\x35\n\x05state\x18\x02 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanStateR\x05state\"\x1a\n\x18LaunchPlanUpdateResponse\"P\n\x17\x41\x63tiveLaunchPlanRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xbc\x01\n\x1b\x41\x63tiveLaunchPlanListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x10\n\x03org\x18\x06 \x01(\tR\x03org*+\n\x0fLaunchPlanState\x12\x0c\n\x08INACTIVE\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x42\xbb\x01\n\x12\x63om.flyteidl.adminB\x0fLaunchPlanProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n flyteidl/admin/launch_plan.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\"flyteidl/core/execution_envs.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1d\x66lyteidl/admin/schedule.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"x\n\x17LaunchPlanCreateRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12\x32\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpecR\x04spec\"\x1a\n\x18LaunchPlanCreateResponse\"\xa8\x01\n\nLaunchPlan\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12\x32\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpecR\x04spec\x12;\n\x07\x63losure\x18\x03 \x01(\x0b\x32!.flyteidl.admin.LaunchPlanClosureR\x07\x63losure\"e\n\x0eLaunchPlanList\x12=\n\x0claunch_plans\x18\x01 \x03(\x0b\x32\x1a.flyteidl.admin.LaunchPlanR\x0blaunchPlans\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"v\n\x04\x41uth\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"\xe8\x08\n\x0eLaunchPlanSpec\x12:\n\x0bworkflow_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nworkflowId\x12K\n\x0f\x65ntity_metadata\x18\x02 \x01(\x0b\x32\".flyteidl.admin.LaunchPlanMetadataR\x0e\x65ntityMetadata\x12\x42\n\x0e\x64\x65\x66\x61ult_inputs\x18\x03 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMapR\rdefaultInputs\x12@\n\x0c\x66ixed_inputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0b\x66ixedInputs\x12\x16\n\x04role\x18\x05 \x01(\tB\x02\x18\x01R\x04role\x12.\n\x06labels\x18\x06 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12=\n\x0b\x61nnotations\x18\x07 \x01(\x0b\x32\x1b.flyteidl.admin.AnnotationsR\x0b\x61nnotations\x12,\n\x04\x61uth\x18\x08 \x01(\x0b\x32\x14.flyteidl.admin.AuthB\x02\x18\x01R\x04\x61uth\x12\x39\n\tauth_role\x18\t \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01R\x08\x61uthRole\x12I\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContextR\x0fsecurityContext\x12M\n\x12quality_of_service\x18\x10 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12X\n\x16raw_output_data_config\x18\x11 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfigR\x13rawOutputDataConfig\x12\'\n\x0fmax_parallelism\x18\x12 \x01(\x05R\x0emaxParallelism\x12@\n\rinterruptible\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\rinterruptible\x12\'\n\x0foverwrite_cache\x18\x14 \x01(\x08R\x0eoverwriteCache\x12(\n\x04\x65nvs\x18\x15 \x01(\x0b\x32\x14.flyteidl.admin.EnvsR\x04\x65nvs\x12\x61\n\x19\x65xecution_env_assignments\x18\x16 \x03(\x0b\x32%.flyteidl.core.ExecutionEnvAssignmentR\x17\x65xecutionEnvAssignments\x12\x42\n\x10\x66ixed_input_data\x18\x17 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\x0e\x66ixedInputData\"\xcd\x02\n\x11LaunchPlanClosure\x12\x35\n\x05state\x18\x01 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanStateR\x05state\x12\x44\n\x0f\x65xpected_inputs\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMapR\x0e\x65xpectedInputs\x12\x45\n\x10\x65xpected_outputs\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.VariableMapR\x0f\x65xpectedOutputs\x12\x39\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"\xd1\x01\n\x12LaunchPlanMetadata\x12\x34\n\x08schedule\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.ScheduleR\x08schedule\x12\x42\n\rnotifications\x18\x02 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\x12\x41\n\x11launch_conditions\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x10launchConditions\"{\n\x17LaunchPlanUpdateRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12\x35\n\x05state\x18\x02 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanStateR\x05state\"\x1a\n\x18LaunchPlanUpdateResponse\"P\n\x17\x41\x63tiveLaunchPlanRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xbc\x01\n\x1b\x41\x63tiveLaunchPlanListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x10\n\x03org\x18\x06 \x01(\tR\x03org*+\n\x0fLaunchPlanState\x12\x0c\n\x08INACTIVE\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x42\xbb\x01\n\x12\x63om.flyteidl.adminB\x0fLaunchPlanProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,14 +35,16 @@ DESCRIPTOR._serialized_options = b'\n\022com.flyteidl.adminB\017LaunchPlanProtoP\001Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\242\002\003FAX\252\002\016Flyteidl.Admin\312\002\016Flyteidl\\Admin\342\002\032Flyteidl\\Admin\\GPBMetadata\352\002\017Flyteidl::Admin' _AUTH._options = None _AUTH._serialized_options = b'\030\001' + _LAUNCHPLANSPEC.fields_by_name['fixed_inputs']._options = None + _LAUNCHPLANSPEC.fields_by_name['fixed_inputs']._serialized_options = b'\030\001' _LAUNCHPLANSPEC.fields_by_name['role']._options = None _LAUNCHPLANSPEC.fields_by_name['role']._serialized_options = b'\030\001' _LAUNCHPLANSPEC.fields_by_name['auth']._options = None _LAUNCHPLANSPEC.fields_by_name['auth']._serialized_options = b'\030\001' _LAUNCHPLANSPEC.fields_by_name['auth_role']._options = None _LAUNCHPLANSPEC.fields_by_name['auth_role']._serialized_options = b'\030\001' - _globals['_LAUNCHPLANSTATE']._serialized_start=2971 - _globals['_LAUNCHPLANSTATE']._serialized_end=3014 + _globals['_LAUNCHPLANSTATE']._serialized_start=3043 + _globals['_LAUNCHPLANSTATE']._serialized_end=3086 _globals['_LAUNCHPLANCREATEREQUEST']._serialized_start=394 _globals['_LAUNCHPLANCREATEREQUEST']._serialized_end=514 _globals['_LAUNCHPLANCREATERESPONSE']._serialized_start=516 @@ -54,17 +56,17 @@ _globals['_AUTH']._serialized_start=818 _globals['_AUTH']._serialized_end=936 _globals['_LAUNCHPLANSPEC']._serialized_start=939 - _globals['_LAUNCHPLANSPEC']._serialized_end=1995 - _globals['_LAUNCHPLANCLOSURE']._serialized_start=1998 - _globals['_LAUNCHPLANCLOSURE']._serialized_end=2331 - _globals['_LAUNCHPLANMETADATA']._serialized_start=2334 - _globals['_LAUNCHPLANMETADATA']._serialized_end=2543 - _globals['_LAUNCHPLANUPDATEREQUEST']._serialized_start=2545 - _globals['_LAUNCHPLANUPDATEREQUEST']._serialized_end=2668 - _globals['_LAUNCHPLANUPDATERESPONSE']._serialized_start=2670 - _globals['_LAUNCHPLANUPDATERESPONSE']._serialized_end=2696 - _globals['_ACTIVELAUNCHPLANREQUEST']._serialized_start=2698 - _globals['_ACTIVELAUNCHPLANREQUEST']._serialized_end=2778 - _globals['_ACTIVELAUNCHPLANLISTREQUEST']._serialized_start=2781 - _globals['_ACTIVELAUNCHPLANLISTREQUEST']._serialized_end=2969 + _globals['_LAUNCHPLANSPEC']._serialized_end=2067 + _globals['_LAUNCHPLANCLOSURE']._serialized_start=2070 + _globals['_LAUNCHPLANCLOSURE']._serialized_end=2403 + _globals['_LAUNCHPLANMETADATA']._serialized_start=2406 + _globals['_LAUNCHPLANMETADATA']._serialized_end=2615 + _globals['_LAUNCHPLANUPDATEREQUEST']._serialized_start=2617 + _globals['_LAUNCHPLANUPDATEREQUEST']._serialized_end=2740 + _globals['_LAUNCHPLANUPDATERESPONSE']._serialized_start=2742 + _globals['_LAUNCHPLANUPDATERESPONSE']._serialized_end=2768 + _globals['_ACTIVELAUNCHPLANREQUEST']._serialized_start=2770 + _globals['_ACTIVELAUNCHPLANREQUEST']._serialized_end=2850 + _globals['_ACTIVELAUNCHPLANLISTREQUEST']._serialized_start=2853 + _globals['_ACTIVELAUNCHPLANLISTREQUEST']._serialized_end=3041 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.pyi index 46e7669559..e1229ed3aa 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/launch_plan_pb2.pyi @@ -63,7 +63,7 @@ class Auth(_message.Message): def __init__(self, assumable_iam_role: _Optional[str] = ..., kubernetes_service_account: _Optional[str] = ...) -> None: ... class LaunchPlanSpec(_message.Message): - __slots__ = ["workflow_id", "entity_metadata", "default_inputs", "fixed_inputs", "role", "labels", "annotations", "auth", "auth_role", "security_context", "quality_of_service", "raw_output_data_config", "max_parallelism", "interruptible", "overwrite_cache", "envs", "execution_env_assignments"] + __slots__ = ["workflow_id", "entity_metadata", "default_inputs", "fixed_inputs", "role", "labels", "annotations", "auth", "auth_role", "security_context", "quality_of_service", "raw_output_data_config", "max_parallelism", "interruptible", "overwrite_cache", "envs", "execution_env_assignments", "fixed_input_data"] WORKFLOW_ID_FIELD_NUMBER: _ClassVar[int] ENTITY_METADATA_FIELD_NUMBER: _ClassVar[int] DEFAULT_INPUTS_FIELD_NUMBER: _ClassVar[int] @@ -81,6 +81,7 @@ class LaunchPlanSpec(_message.Message): OVERWRITE_CACHE_FIELD_NUMBER: _ClassVar[int] ENVS_FIELD_NUMBER: _ClassVar[int] EXECUTION_ENV_ASSIGNMENTS_FIELD_NUMBER: _ClassVar[int] + FIXED_INPUT_DATA_FIELD_NUMBER: _ClassVar[int] workflow_id: _identifier_pb2.Identifier entity_metadata: LaunchPlanMetadata default_inputs: _interface_pb2.ParameterMap @@ -98,7 +99,8 @@ class LaunchPlanSpec(_message.Message): overwrite_cache: bool envs: _common_pb2.Envs execution_env_assignments: _containers.RepeatedCompositeFieldContainer[_execution_envs_pb2.ExecutionEnvAssignment] - def __init__(self, workflow_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., entity_metadata: _Optional[_Union[LaunchPlanMetadata, _Mapping]] = ..., default_inputs: _Optional[_Union[_interface_pb2.ParameterMap, _Mapping]] = ..., fixed_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., role: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., annotations: _Optional[_Union[_common_pb2.Annotations, _Mapping]] = ..., auth: _Optional[_Union[Auth, _Mapping]] = ..., auth_role: _Optional[_Union[_common_pb2.AuthRole, _Mapping]] = ..., security_context: _Optional[_Union[_security_pb2.SecurityContext, _Mapping]] = ..., quality_of_service: _Optional[_Union[_execution_pb2.QualityOfService, _Mapping]] = ..., raw_output_data_config: _Optional[_Union[_common_pb2.RawOutputDataConfig, _Mapping]] = ..., max_parallelism: _Optional[int] = ..., interruptible: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., overwrite_cache: bool = ..., envs: _Optional[_Union[_common_pb2.Envs, _Mapping]] = ..., execution_env_assignments: _Optional[_Iterable[_Union[_execution_envs_pb2.ExecutionEnvAssignment, _Mapping]]] = ...) -> None: ... + fixed_input_data: _literals_pb2.InputData + def __init__(self, workflow_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., entity_metadata: _Optional[_Union[LaunchPlanMetadata, _Mapping]] = ..., default_inputs: _Optional[_Union[_interface_pb2.ParameterMap, _Mapping]] = ..., fixed_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., role: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., annotations: _Optional[_Union[_common_pb2.Annotations, _Mapping]] = ..., auth: _Optional[_Union[Auth, _Mapping]] = ..., auth_role: _Optional[_Union[_common_pb2.AuthRole, _Mapping]] = ..., security_context: _Optional[_Union[_security_pb2.SecurityContext, _Mapping]] = ..., quality_of_service: _Optional[_Union[_execution_pb2.QualityOfService, _Mapping]] = ..., raw_output_data_config: _Optional[_Union[_common_pb2.RawOutputDataConfig, _Mapping]] = ..., max_parallelism: _Optional[int] = ..., interruptible: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., overwrite_cache: bool = ..., envs: _Optional[_Union[_common_pb2.Envs, _Mapping]] = ..., execution_env_assignments: _Optional[_Iterable[_Union[_execution_envs_pb2.ExecutionEnvAssignment, _Mapping]]] = ..., fixed_input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ...) -> None: ... class LaunchPlanClosure(_message.Message): __slots__ = ["state", "expected_inputs", "expected_outputs", "created_at", "updated_at"] diff --git a/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.py index 93a29df4d6..2964edae23 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.py @@ -21,7 +21,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/node_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"Q\n\x17NodeExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"\x99\x02\n\x18NodeExecutionListRequest\x12^\n\x15workflow_execution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x13workflowExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12(\n\x10unique_parent_id\x18\x06 \x01(\tR\x0euniqueParentId\"\xea\x01\n\x1fNodeExecutionForTaskListRequest\x12R\n\x11task_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x0ftaskExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xe7\x01\n\rNodeExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.NodeExecutionClosureR\x07\x63losure\x12\x41\n\x08metadata\x18\x04 \x01(\x0b\x32%.flyteidl.admin.NodeExecutionMetaDataR\x08metadata\"\xba\x01\n\x15NodeExecutionMetaData\x12\x1f\n\x0bretry_group\x18\x01 \x01(\tR\nretryGroup\x12$\n\x0eis_parent_node\x18\x02 \x01(\x08R\x0cisParentNode\x12 \n\x0cspec_node_id\x18\x03 \x01(\tR\nspecNodeId\x12\x1d\n\nis_dynamic\x18\x04 \x01(\x08R\tisDynamic\x12\x19\n\x08is_array\x18\x05 \x01(\x08R\x07isArray\"q\n\x11NodeExecutionList\x12\x46\n\x0fnode_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.NodeExecutionR\x0enodeExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\xf6\x05\n\x14NodeExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\n \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.admin.WorkflowNodeMetadataH\x01R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\t \x01(\x0b\x32 .flyteidl.admin.TaskNodeMetadataH\x01R\x10taskNodeMetadata\x12\x19\n\x08\x64\x65\x63k_uri\x18\x0b \x01(\tR\x07\x64\x65\x63kUri\x12/\n\x14\x64ynamic_job_spec_uri\x18\x0c \x01(\tR\x11\x64ynamicJobSpecUriB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"d\n\x14WorkflowNodeMetadata\x12L\n\x0b\x65xecutionId\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xc0\x01\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bNodeExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"\x96\x03\n\x1cNodeExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.admin.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\x12\x38\n\nflyte_urls\x18\x11 \x01(\x0b\x32\x19.flyteidl.admin.FlyteURLsR\tflyteUrls\"W\n\x1dGetDynamicNodeWorkflowRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"r\n\x1b\x44ynamicNodeWorkflowResponse\x12S\n\x11\x63ompiled_workflow\x18\x01 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflowB\xbe\x01\n\x12\x63om.flyteidl.adminB\x12NodeExecutionProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/node_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"Q\n\x17NodeExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"\x99\x02\n\x18NodeExecutionListRequest\x12^\n\x15workflow_execution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x13workflowExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12(\n\x10unique_parent_id\x18\x06 \x01(\tR\x0euniqueParentId\"\xea\x01\n\x1fNodeExecutionForTaskListRequest\x12R\n\x11task_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x0ftaskExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xe7\x01\n\rNodeExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.NodeExecutionClosureR\x07\x63losure\x12\x41\n\x08metadata\x18\x04 \x01(\x0b\x32%.flyteidl.admin.NodeExecutionMetaDataR\x08metadata\"\xba\x01\n\x15NodeExecutionMetaData\x12\x1f\n\x0bretry_group\x18\x01 \x01(\tR\nretryGroup\x12$\n\x0eis_parent_node\x18\x02 \x01(\x08R\x0cisParentNode\x12 \n\x0cspec_node_id\x18\x03 \x01(\tR\nspecNodeId\x12\x1d\n\nis_dynamic\x18\x04 \x01(\x08R\tisDynamic\x12\x19\n\x08is_array\x18\x05 \x01(\x08R\x07isArray\"q\n\x11NodeExecutionList\x12\x46\n\x0fnode_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.NodeExecutionR\x0enodeExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\xb6\x06\n\x14NodeExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\n \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12>\n\x0c\x66ull_outputs\x18\r \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x00R\x0b\x66ullOutputs\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.admin.WorkflowNodeMetadataH\x01R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\t \x01(\x0b\x32 .flyteidl.admin.TaskNodeMetadataH\x01R\x10taskNodeMetadata\x12\x19\n\x08\x64\x65\x63k_uri\x18\x0b \x01(\tR\x07\x64\x65\x63kUri\x12/\n\x14\x64ynamic_job_spec_uri\x18\x0c \x01(\tR\x11\x64ynamicJobSpecUriB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"d\n\x14WorkflowNodeMetadata\x12L\n\x0b\x65xecutionId\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xc0\x01\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bNodeExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"\x93\x04\n\x1cNodeExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12>\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\nfullInputs\x12@\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0b\x66ullOutputs\x12\x37\n\ninput_data\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\tinputData\x12:\n\x0boutput_data\x18\x06 \x01(\x0b\x32\x19.flyteidl.core.OutputDataR\noutputData\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.admin.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\x12\x38\n\nflyte_urls\x18\x11 \x01(\x0b\x32\x19.flyteidl.admin.FlyteURLsR\tflyteUrls\"W\n\x1dGetDynamicNodeWorkflowRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"r\n\x1b\x44ynamicNodeWorkflowResponse\x12S\n\x11\x63ompiled_workflow\x18\x01 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflowB\xbe\x01\n\x12\x63om.flyteidl.adminB\x12NodeExecutionProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -38,6 +38,10 @@ _NODEEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._serialized_options = b'\030\001' _NODEEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._options = None _NODEEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._serialized_options = b'\030\001' + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['full_inputs']._options = None + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['full_inputs']._serialized_options = b'\030\001' + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs']._options = None + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs']._serialized_options = b'\030\001' _globals['_NODEEXECUTIONGETREQUEST']._serialized_start=301 _globals['_NODEEXECUTIONGETREQUEST']._serialized_end=382 _globals['_NODEEXECUTIONLISTREQUEST']._serialized_start=385 @@ -51,19 +55,19 @@ _globals['_NODEEXECUTIONLIST']._serialized_start=1328 _globals['_NODEEXECUTIONLIST']._serialized_end=1441 _globals['_NODEEXECUTIONCLOSURE']._serialized_start=1444 - _globals['_NODEEXECUTIONCLOSURE']._serialized_end=2202 - _globals['_WORKFLOWNODEMETADATA']._serialized_start=2204 - _globals['_WORKFLOWNODEMETADATA']._serialized_end=2304 - _globals['_TASKNODEMETADATA']._serialized_start=2307 - _globals['_TASKNODEMETADATA']._serialized_end=2499 - _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_start=2502 - _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_end=2708 - _globals['_NODEEXECUTIONGETDATAREQUEST']._serialized_start=2710 - _globals['_NODEEXECUTIONGETDATAREQUEST']._serialized_end=2795 - _globals['_NODEEXECUTIONGETDATARESPONSE']._serialized_start=2798 - _globals['_NODEEXECUTIONGETDATARESPONSE']._serialized_end=3204 - _globals['_GETDYNAMICNODEWORKFLOWREQUEST']._serialized_start=3206 - _globals['_GETDYNAMICNODEWORKFLOWREQUEST']._serialized_end=3293 - _globals['_DYNAMICNODEWORKFLOWRESPONSE']._serialized_start=3295 - _globals['_DYNAMICNODEWORKFLOWRESPONSE']._serialized_end=3409 + _globals['_NODEEXECUTIONCLOSURE']._serialized_end=2266 + _globals['_WORKFLOWNODEMETADATA']._serialized_start=2268 + _globals['_WORKFLOWNODEMETADATA']._serialized_end=2368 + _globals['_TASKNODEMETADATA']._serialized_start=2371 + _globals['_TASKNODEMETADATA']._serialized_end=2563 + _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_start=2566 + _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_end=2772 + _globals['_NODEEXECUTIONGETDATAREQUEST']._serialized_start=2774 + _globals['_NODEEXECUTIONGETDATAREQUEST']._serialized_end=2859 + _globals['_NODEEXECUTIONGETDATARESPONSE']._serialized_start=2862 + _globals['_NODEEXECUTIONGETDATARESPONSE']._serialized_end=3393 + _globals['_GETDYNAMICNODEWORKFLOWREQUEST']._serialized_start=3395 + _globals['_GETDYNAMICNODEWORKFLOWREQUEST']._serialized_end=3482 + _globals['_DYNAMICNODEWORKFLOWRESPONSE']._serialized_start=3484 + _globals['_DYNAMICNODEWORKFLOWRESPONSE']._serialized_end=3598 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi index 9bf601847d..52e3db15c8 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi @@ -84,10 +84,11 @@ class NodeExecutionList(_message.Message): def __init__(self, node_executions: _Optional[_Iterable[_Union[NodeExecution, _Mapping]]] = ..., token: _Optional[str] = ...) -> None: ... class NodeExecutionClosure(_message.Message): - __slots__ = ["output_uri", "error", "output_data", "phase", "started_at", "duration", "created_at", "updated_at", "workflow_node_metadata", "task_node_metadata", "deck_uri", "dynamic_job_spec_uri"] + __slots__ = ["output_uri", "error", "output_data", "full_outputs", "phase", "started_at", "duration", "created_at", "updated_at", "workflow_node_metadata", "task_node_metadata", "deck_uri", "dynamic_job_spec_uri"] OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] + FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] STARTED_AT_FIELD_NUMBER: _ClassVar[int] DURATION_FIELD_NUMBER: _ClassVar[int] @@ -100,6 +101,7 @@ class NodeExecutionClosure(_message.Message): output_uri: str error: _execution_pb2.ExecutionError output_data: _literals_pb2.LiteralMap + full_outputs: _literals_pb2.OutputData phase: _execution_pb2.NodeExecution.Phase started_at: _timestamp_pb2.Timestamp duration: _duration_pb2.Duration @@ -109,7 +111,7 @@ class NodeExecutionClosure(_message.Message): task_node_metadata: TaskNodeMetadata deck_uri: str dynamic_job_spec_uri: str - def __init__(self, output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., deck_uri: _Optional[str] = ..., dynamic_job_spec_uri: _Optional[str] = ...) -> None: ... + def __init__(self, output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., deck_uri: _Optional[str] = ..., dynamic_job_spec_uri: _Optional[str] = ...) -> None: ... class WorkflowNodeMetadata(_message.Message): __slots__ = ["executionId"] @@ -144,20 +146,24 @@ class NodeExecutionGetDataRequest(_message.Message): def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ...) -> None: ... class NodeExecutionGetDataResponse(_message.Message): - __slots__ = ["inputs", "outputs", "full_inputs", "full_outputs", "dynamic_workflow", "flyte_urls"] + __slots__ = ["inputs", "outputs", "full_inputs", "full_outputs", "input_data", "output_data", "dynamic_workflow", "flyte_urls"] INPUTS_FIELD_NUMBER: _ClassVar[int] OUTPUTS_FIELD_NUMBER: _ClassVar[int] FULL_INPUTS_FIELD_NUMBER: _ClassVar[int] FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + INPUT_DATA_FIELD_NUMBER: _ClassVar[int] + OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] DYNAMIC_WORKFLOW_FIELD_NUMBER: _ClassVar[int] FLYTE_URLS_FIELD_NUMBER: _ClassVar[int] inputs: _common_pb2.UrlBlob outputs: _common_pb2.UrlBlob full_inputs: _literals_pb2.LiteralMap full_outputs: _literals_pb2.LiteralMap + input_data: _literals_pb2.InputData + output_data: _literals_pb2.OutputData dynamic_workflow: DynamicWorkflowNodeMetadata flyte_urls: _common_pb2.FlyteURLs - def __init__(self, inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., dynamic_workflow: _Optional[_Union[DynamicWorkflowNodeMetadata, _Mapping]] = ..., flyte_urls: _Optional[_Union[_common_pb2.FlyteURLs, _Mapping]] = ...) -> None: ... + def __init__(self, inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., dynamic_workflow: _Optional[_Union[DynamicWorkflowNodeMetadata, _Mapping]] = ..., flyte_urls: _Optional[_Union[_common_pb2.FlyteURLs, _Mapping]] = ...) -> None: ... class GetDynamicNodeWorkflowRequest(_message.Message): __slots__ = ["id"] diff --git a/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.py index 226866f72d..c0f0227d04 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.py @@ -21,7 +21,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/task_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1a\x66lyteidl/event/event.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\"Q\n\x17TaskExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xe3\x01\n\x18TaskExecutionListRequest\x12R\n\x11node_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x0fnodeExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xc1\x01\n\rTaskExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.TaskExecutionClosureR\x07\x63losure\x12\x1b\n\tis_parent\x18\x04 \x01(\x08R\x08isParent\"q\n\x11TaskExecutionList\x12\x46\n\x0ftask_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.TaskExecutionR\x0etaskExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x9c\x06\n\x14TaskExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\x0c \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12*\n\x04logs\x18\x04 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x38\n\x0b\x63ustom_info\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12\x16\n\x06reason\x18\n \x01(\tR\x06reason\x12\x1b\n\ttask_type\x18\x0b \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x11 \x01(\x05R\x0c\x65ventVersion\x12\x30\n\x07reasons\x18\x12 \x03(\x0b\x32\x16.flyteidl.admin.ReasonR\x07reasonsB\x0f\n\routput_result\"_\n\x06Reason\x12;\n\x0boccurred_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"U\n\x1bTaskExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xbe\x02\n\x1cTaskExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\x12\x38\n\nflyte_urls\x18\x05 \x01(\x0b\x32\x19.flyteidl.admin.FlyteURLsR\tflyteUrlsB\xbe\x01\n\x12\x63om.flyteidl.adminB\x12TaskExecutionProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/task_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1a\x66lyteidl/event/event.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\"Q\n\x17TaskExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xe3\x01\n\x18TaskExecutionListRequest\x12R\n\x11node_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x0fnodeExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xc1\x01\n\rTaskExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.TaskExecutionClosureR\x07\x63losure\x12\x1b\n\tis_parent\x18\x04 \x01(\x08R\x08isParent\"q\n\x11TaskExecutionList\x12\x46\n\x0ftask_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.TaskExecutionR\x0etaskExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\xdc\x06\n\x14TaskExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\x0c \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12>\n\x0c\x66ull_outputs\x18\x13 \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x00R\x0b\x66ullOutputs\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12*\n\x04logs\x18\x04 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x38\n\x0b\x63ustom_info\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12\x16\n\x06reason\x18\n \x01(\tR\x06reason\x12\x1b\n\ttask_type\x18\x0b \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x11 \x01(\x05R\x0c\x65ventVersion\x12\x30\n\x07reasons\x18\x12 \x03(\x0b\x32\x16.flyteidl.admin.ReasonR\x07reasonsB\x0f\n\routput_result\"_\n\x06Reason\x12;\n\x0boccurred_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"U\n\x1bTaskExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xbb\x03\n\x1cTaskExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12>\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\nfullInputs\x12@\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0b\x66ullOutputs\x12\x37\n\ninput_data\x18\x06 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\tinputData\x12:\n\x0boutput_data\x18\x07 \x01(\x0b\x32\x19.flyteidl.core.OutputDataR\noutputData\x12\x38\n\nflyte_urls\x18\x05 \x01(\x0b\x32\x19.flyteidl.admin.FlyteURLsR\tflyteUrlsB\xbe\x01\n\x12\x63om.flyteidl.adminB\x12TaskExecutionProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -38,6 +38,10 @@ _TASKEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._serialized_options = b'\030\001' _TASKEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._options = None _TASKEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._serialized_options = b'\030\001' + _TASKEXECUTIONGETDATARESPONSE.fields_by_name['full_inputs']._options = None + _TASKEXECUTIONGETDATARESPONSE.fields_by_name['full_inputs']._serialized_options = b'\030\001' + _TASKEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs']._options = None + _TASKEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs']._serialized_options = b'\030\001' _globals['_TASKEXECUTIONGETREQUEST']._serialized_start=300 _globals['_TASKEXECUTIONGETREQUEST']._serialized_end=381 _globals['_TASKEXECUTIONLISTREQUEST']._serialized_start=384 @@ -47,11 +51,11 @@ _globals['_TASKEXECUTIONLIST']._serialized_start=809 _globals['_TASKEXECUTIONLIST']._serialized_end=922 _globals['_TASKEXECUTIONCLOSURE']._serialized_start=925 - _globals['_TASKEXECUTIONCLOSURE']._serialized_end=1721 - _globals['_REASON']._serialized_start=1723 - _globals['_REASON']._serialized_end=1818 - _globals['_TASKEXECUTIONGETDATAREQUEST']._serialized_start=1820 - _globals['_TASKEXECUTIONGETDATAREQUEST']._serialized_end=1905 - _globals['_TASKEXECUTIONGETDATARESPONSE']._serialized_start=1908 - _globals['_TASKEXECUTIONGETDATARESPONSE']._serialized_end=2226 + _globals['_TASKEXECUTIONCLOSURE']._serialized_end=1785 + _globals['_REASON']._serialized_start=1787 + _globals['_REASON']._serialized_end=1882 + _globals['_TASKEXECUTIONGETDATAREQUEST']._serialized_start=1884 + _globals['_TASKEXECUTIONGETDATAREQUEST']._serialized_end=1969 + _globals['_TASKEXECUTIONGETDATARESPONSE']._serialized_start=1972 + _globals['_TASKEXECUTIONGETDATARESPONSE']._serialized_end=2415 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi index 7f675cc7db..1def39e02c 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi @@ -54,10 +54,11 @@ class TaskExecutionList(_message.Message): def __init__(self, task_executions: _Optional[_Iterable[_Union[TaskExecution, _Mapping]]] = ..., token: _Optional[str] = ...) -> None: ... class TaskExecutionClosure(_message.Message): - __slots__ = ["output_uri", "error", "output_data", "phase", "logs", "started_at", "duration", "created_at", "updated_at", "custom_info", "reason", "task_type", "metadata", "event_version", "reasons"] + __slots__ = ["output_uri", "error", "output_data", "full_outputs", "phase", "logs", "started_at", "duration", "created_at", "updated_at", "custom_info", "reason", "task_type", "metadata", "event_version", "reasons"] OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] + FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] LOGS_FIELD_NUMBER: _ClassVar[int] STARTED_AT_FIELD_NUMBER: _ClassVar[int] @@ -73,6 +74,7 @@ class TaskExecutionClosure(_message.Message): output_uri: str error: _execution_pb2.ExecutionError output_data: _literals_pb2.LiteralMap + full_outputs: _literals_pb2.OutputData phase: _execution_pb2.TaskExecution.Phase logs: _containers.RepeatedCompositeFieldContainer[_execution_pb2.TaskLog] started_at: _timestamp_pb2.Timestamp @@ -85,7 +87,7 @@ class TaskExecutionClosure(_message.Message): metadata: _event_pb2.TaskExecutionMetadata event_version: int reasons: _containers.RepeatedCompositeFieldContainer[Reason] - def __init__(self, output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., reason: _Optional[str] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[_event_pb2.TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ..., reasons: _Optional[_Iterable[_Union[Reason, _Mapping]]] = ...) -> None: ... + def __init__(self, output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., reason: _Optional[str] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[_event_pb2.TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ..., reasons: _Optional[_Iterable[_Union[Reason, _Mapping]]] = ...) -> None: ... class Reason(_message.Message): __slots__ = ["occurred_at", "message"] @@ -102,15 +104,19 @@ class TaskExecutionGetDataRequest(_message.Message): def __init__(self, id: _Optional[_Union[_identifier_pb2.TaskExecutionIdentifier, _Mapping]] = ...) -> None: ... class TaskExecutionGetDataResponse(_message.Message): - __slots__ = ["inputs", "outputs", "full_inputs", "full_outputs", "flyte_urls"] + __slots__ = ["inputs", "outputs", "full_inputs", "full_outputs", "input_data", "output_data", "flyte_urls"] INPUTS_FIELD_NUMBER: _ClassVar[int] OUTPUTS_FIELD_NUMBER: _ClassVar[int] FULL_INPUTS_FIELD_NUMBER: _ClassVar[int] FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + INPUT_DATA_FIELD_NUMBER: _ClassVar[int] + OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] FLYTE_URLS_FIELD_NUMBER: _ClassVar[int] inputs: _common_pb2.UrlBlob outputs: _common_pb2.UrlBlob full_inputs: _literals_pb2.LiteralMap full_outputs: _literals_pb2.LiteralMap + input_data: _literals_pb2.InputData + output_data: _literals_pb2.OutputData flyte_urls: _common_pb2.FlyteURLs - def __init__(self, inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., flyte_urls: _Optional[_Union[_common_pb2.FlyteURLs, _Mapping]] = ...) -> None: ... + def __init__(self, inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., flyte_urls: _Optional[_Union[_common_pb2.FlyteURLs, _Mapping]] = ...) -> None: ... diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py index 77bc3ea3f0..ab8aea857b 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py @@ -17,7 +17,7 @@ from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\xf0\x03\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05unionB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\xf0\x03\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05unionB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\">\n\tInputData\x12\x31\n\x06inputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\"A\n\nOutputData\x12\x33\n\x07outputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x07outputs\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -62,20 +62,24 @@ _globals['_LITERALMAP']._serialized_end=2118 _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2035 _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2118 - _globals['_BINDINGDATACOLLECTION']._serialized_start=2120 - _globals['_BINDINGDATACOLLECTION']._serialized_end=2199 - _globals['_BINDINGDATAMAP']._serialized_start=2202 - _globals['_BINDINGDATAMAP']._serialized_end=2380 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2293 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2380 - _globals['_UNIONINFO']._serialized_start=2382 - _globals['_UNIONINFO']._serialized_end=2453 - _globals['_BINDINGDATA']._serialized_start=2456 - _globals['_BINDINGDATA']._serialized_end=2758 - _globals['_BINDING']._serialized_start=2760 - _globals['_BINDING']._serialized_end=2841 - _globals['_KEYVALUEPAIR']._serialized_start=2843 - _globals['_KEYVALUEPAIR']._serialized_end=2897 - _globals['_RETRYSTRATEGY']._serialized_start=2899 - _globals['_RETRYSTRATEGY']._serialized_end=2940 + _globals['_INPUTDATA']._serialized_start=2120 + _globals['_INPUTDATA']._serialized_end=2182 + _globals['_OUTPUTDATA']._serialized_start=2184 + _globals['_OUTPUTDATA']._serialized_end=2249 + _globals['_BINDINGDATACOLLECTION']._serialized_start=2251 + _globals['_BINDINGDATACOLLECTION']._serialized_end=2330 + _globals['_BINDINGDATAMAP']._serialized_start=2333 + _globals['_BINDINGDATAMAP']._serialized_end=2511 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2424 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2511 + _globals['_UNIONINFO']._serialized_start=2513 + _globals['_UNIONINFO']._serialized_end=2584 + _globals['_BINDINGDATA']._serialized_start=2587 + _globals['_BINDINGDATA']._serialized_end=2889 + _globals['_BINDING']._serialized_start=2891 + _globals['_BINDING']._serialized_end=2972 + _globals['_KEYVALUEPAIR']._serialized_start=2974 + _globals['_KEYVALUEPAIR']._serialized_end=3028 + _globals['_RETRYSTRATEGY']._serialized_start=3030 + _globals['_RETRYSTRATEGY']._serialized_end=3071 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi index 62622203bd..cbab9c23bc 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi @@ -143,6 +143,18 @@ class LiteralMap(_message.Message): literals: _containers.MessageMap[str, Literal] def __init__(self, literals: _Optional[_Mapping[str, Literal]] = ...) -> None: ... +class InputData(_message.Message): + __slots__ = ["inputs"] + INPUTS_FIELD_NUMBER: _ClassVar[int] + inputs: LiteralMap + def __init__(self, inputs: _Optional[_Union[LiteralMap, _Mapping]] = ...) -> None: ... + +class OutputData(_message.Message): + __slots__ = ["outputs"] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + outputs: LiteralMap + def __init__(self, outputs: _Optional[_Union[LiteralMap, _Mapping]] = ...) -> None: ... + class BindingDataCollection(_message.Message): __slots__ = ["bindings"] BINDINGS_FIELD_NUMBER: _ClassVar[int] diff --git a/flyteidl/gen/pb_python/flyteidl/event/event_pb2.py b/flyteidl/gen/pb_python/flyteidl/event/event_pb2.py index 5974dfe477..5be54c575c 100644 --- a/flyteidl/gen/pb_python/flyteidl/event/event_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/event/event_pb2.py @@ -20,7 +20,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/event/event.proto\x12\x0e\x66lyteidl.event\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xaa\x03\n\x16WorkflowExecutionEvent\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12<\n\x05phase\x18\x03 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1f\n\noutput_uri\x18\x05 \x01(\tH\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12<\n\x0boutput_data\x18\x07 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\noutputDataB\x0f\n\routput_result\"\x99\n\n\x12NodeExecutionEvent\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x05 \x01(\tH\x00R\x08inputUri\x12:\n\ninput_data\x18\x14 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\x06 \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\x07 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12<\n\x0boutput_data\x18\x0f \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x01R\noutputData\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.event.WorkflowNodeMetadataH\x02R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\x0e \x01(\x0b\x32 .flyteidl.event.TaskNodeMetadataH\x02R\x10taskNodeMetadata\x12]\n\x14parent_task_metadata\x18\t \x01(\x0b\x32+.flyteidl.event.ParentTaskExecutionMetadataR\x12parentTaskMetadata\x12]\n\x14parent_node_metadata\x18\n \x01(\x0b\x32+.flyteidl.event.ParentNodeExecutionMetadataR\x12parentNodeMetadata\x12\x1f\n\x0bretry_group\x18\x0b \x01(\tR\nretryGroup\x12 \n\x0cspec_node_id\x18\x0c \x01(\tR\nspecNodeId\x12\x1b\n\tnode_name\x18\r \x01(\tR\x08nodeName\x12#\n\revent_version\x18\x10 \x01(\x05R\x0c\x65ventVersion\x12\x1b\n\tis_parent\x18\x11 \x01(\x08R\x08isParent\x12\x1d\n\nis_dynamic\x18\x12 \x01(\x08R\tisDynamic\x12\x19\n\x08\x64\x65\x63k_uri\x18\x13 \x01(\tR\x07\x64\x65\x63kUri\x12;\n\x0breported_at\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAt\x12\x19\n\x08is_array\x18\x16 \x01(\x08R\x07isArray\x12>\n\rtarget_entity\x18\x17 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x0ctargetEntity\x12-\n\x13is_in_dynamic_chain\x18\x18 \x01(\x08R\x10isInDynamicChainB\r\n\x0binput_valueB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"e\n\x14WorkflowNodeMetadata\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xf1\x02\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12W\n\x12reservation_status\x18\x03 \x01(\x0e\x32(.flyteidl.core.CatalogReservation.StatusR\x11reservationStatus\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.event.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bParentTaskExecutionMetadata\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"6\n\x1bParentNodeExecutionMetadata\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\"b\n\x0b\x45ventReason\x12\x16\n\x06reason\x18\x01 \x01(\tR\x06reason\x12;\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\"\x97\x08\n\x12TaskExecutionEvent\x12\x32\n\x07task_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x06taskId\x12_\n\x18parent_node_execution_id\x18\x02 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x15parentNodeExecutionId\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x1f\n\x0bproducer_id\x18\x05 \x01(\tR\nproducerId\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12;\n\x0boccurred_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x08 \x01(\tH\x00R\x08inputUri\x12:\n\ninput_data\x18\x13 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\t \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\n \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12<\n\x0boutput_data\x18\x11 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x01R\noutputData\x12\x38\n\x0b\x63ustom_info\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12#\n\rphase_version\x18\x0c \x01(\rR\x0cphaseVersion\x12\x1a\n\x06reason\x18\r \x01(\tB\x02\x18\x01R\x06reason\x12\x35\n\x07reasons\x18\x15 \x03(\x0b\x32\x1b.flyteidl.event.EventReasonR\x07reasons\x12\x1b\n\ttask_type\x18\x0e \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x12 \x01(\x05R\x0c\x65ventVersion\x12;\n\x0breported_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAtB\r\n\x0binput_valueB\x0f\n\routput_result\"\x9e\x02\n\x14\x45xternalResourceInfo\x12\x1f\n\x0b\x65xternal_id\x18\x01 \x01(\tR\nexternalId\x12\x14\n\x05index\x18\x02 \x01(\rR\x05index\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x44\n\x0c\x63\x61\x63he_status\x18\x05 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\"[\n\x10ResourcePoolInfo\x12)\n\x10\x61llocation_token\x18\x01 \x01(\tR\x0f\x61llocationToken\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x9d\x03\n\x15TaskExecutionMetadata\x12%\n\x0egenerated_name\x18\x01 \x01(\tR\rgeneratedName\x12S\n\x12\x65xternal_resources\x18\x02 \x03(\x0b\x32$.flyteidl.event.ExternalResourceInfoR\x11\x65xternalResources\x12N\n\x12resource_pool_info\x18\x03 \x03(\x0b\x32 .flyteidl.event.ResourcePoolInfoR\x10resourcePoolInfo\x12+\n\x11plugin_identifier\x18\x04 \x01(\tR\x10pluginIdentifier\x12Z\n\x0einstance_class\x18\x10 \x01(\x0e\x32\x33.flyteidl.event.TaskExecutionMetadata.InstanceClassR\rinstanceClass\"/\n\rInstanceClass\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x11\n\rINTERRUPTIBLE\x10\x01\x42\xb6\x01\n\x12\x63om.flyteidl.eventB\nEventProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event\xa2\x02\x03\x46\x45X\xaa\x02\x0e\x46lyteidl.Event\xca\x02\x0e\x46lyteidl\\Event\xe2\x02\x1a\x46lyteidl\\Event\\GPBMetadata\xea\x02\x0f\x46lyteidl::Eventb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/event/event.proto\x12\x0e\x66lyteidl.event\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xa6\x04\n\x16WorkflowExecutionEvent\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12<\n\x05phase\x18\x03 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1f\n\noutput_uri\x18\x05 \x01(\tH\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12U\n\x16\x64\x65precated_output_data\x18\x07 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x14\x64\x65precatedOutputData\x12<\n\x0boutput_data\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x00R\noutputData\x12#\n\revent_version\x18\t \x01(\x05R\x0c\x65ventVersionB\x0f\n\routput_result\"\xc4\x0b\n\x12NodeExecutionEvent\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x05 \x01(\tH\x00R\x08inputUri\x12S\n\x15\x64\x65precated_input_data\x18\x14 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x13\x64\x65precatedInputData\x12\x39\n\ninput_data\x18\x19 \x01(\x0b\x32\x18.flyteidl.core.InputDataH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\x06 \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\x07 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12U\n\x16\x64\x65precated_output_data\x18\x0f \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x01R\x14\x64\x65precatedOutputData\x12<\n\x0boutput_data\x18\x1a \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x01R\noutputData\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.event.WorkflowNodeMetadataH\x02R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\x0e \x01(\x0b\x32 .flyteidl.event.TaskNodeMetadataH\x02R\x10taskNodeMetadata\x12]\n\x14parent_task_metadata\x18\t \x01(\x0b\x32+.flyteidl.event.ParentTaskExecutionMetadataR\x12parentTaskMetadata\x12]\n\x14parent_node_metadata\x18\n \x01(\x0b\x32+.flyteidl.event.ParentNodeExecutionMetadataR\x12parentNodeMetadata\x12\x1f\n\x0bretry_group\x18\x0b \x01(\tR\nretryGroup\x12 \n\x0cspec_node_id\x18\x0c \x01(\tR\nspecNodeId\x12\x1b\n\tnode_name\x18\r \x01(\tR\x08nodeName\x12#\n\revent_version\x18\x10 \x01(\x05R\x0c\x65ventVersion\x12\x1b\n\tis_parent\x18\x11 \x01(\x08R\x08isParent\x12\x1d\n\nis_dynamic\x18\x12 \x01(\x08R\tisDynamic\x12\x19\n\x08\x64\x65\x63k_uri\x18\x13 \x01(\tR\x07\x64\x65\x63kUri\x12;\n\x0breported_at\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAt\x12\x19\n\x08is_array\x18\x16 \x01(\x08R\x07isArray\x12>\n\rtarget_entity\x18\x17 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x0ctargetEntity\x12-\n\x13is_in_dynamic_chain\x18\x18 \x01(\x08R\x10isInDynamicChainB\r\n\x0binput_valueB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"e\n\x14WorkflowNodeMetadata\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xf1\x02\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12W\n\x12reservation_status\x18\x03 \x01(\x0e\x32(.flyteidl.core.CatalogReservation.StatusR\x11reservationStatus\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.event.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bParentTaskExecutionMetadata\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"6\n\x1bParentNodeExecutionMetadata\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\"b\n\x0b\x45ventReason\x12\x16\n\x06reason\x18\x01 \x01(\tR\x06reason\x12;\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\"\xc2\t\n\x12TaskExecutionEvent\x12\x32\n\x07task_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x06taskId\x12_\n\x18parent_node_execution_id\x18\x02 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x15parentNodeExecutionId\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x1f\n\x0bproducer_id\x18\x05 \x01(\tR\nproducerId\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12;\n\x0boccurred_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x08 \x01(\tH\x00R\x08inputUri\x12S\n\x15\x64\x65precated_input_data\x18\x13 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x13\x64\x65precatedInputData\x12\x39\n\ninput_data\x18\x17 \x01(\x0b\x32\x18.flyteidl.core.InputDataH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\t \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\n \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12U\n\x16\x64\x65precated_output_data\x18\x11 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x01R\x14\x64\x65precatedOutputData\x12<\n\x0boutput_data\x18\x16 \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x01R\noutputData\x12\x38\n\x0b\x63ustom_info\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12#\n\rphase_version\x18\x0c \x01(\rR\x0cphaseVersion\x12\x1a\n\x06reason\x18\r \x01(\tB\x02\x18\x01R\x06reason\x12\x35\n\x07reasons\x18\x15 \x03(\x0b\x32\x1b.flyteidl.event.EventReasonR\x07reasons\x12\x1b\n\ttask_type\x18\x0e \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x12 \x01(\x05R\x0c\x65ventVersion\x12;\n\x0breported_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAtB\r\n\x0binput_valueB\x0f\n\routput_result\"\x9e\x02\n\x14\x45xternalResourceInfo\x12\x1f\n\x0b\x65xternal_id\x18\x01 \x01(\tR\nexternalId\x12\x14\n\x05index\x18\x02 \x01(\rR\x05index\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x44\n\x0c\x63\x61\x63he_status\x18\x05 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\"[\n\x10ResourcePoolInfo\x12)\n\x10\x61llocation_token\x18\x01 \x01(\tR\x0f\x61llocationToken\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x9d\x03\n\x15TaskExecutionMetadata\x12%\n\x0egenerated_name\x18\x01 \x01(\tR\rgeneratedName\x12S\n\x12\x65xternal_resources\x18\x02 \x03(\x0b\x32$.flyteidl.event.ExternalResourceInfoR\x11\x65xternalResources\x12N\n\x12resource_pool_info\x18\x03 \x03(\x0b\x32 .flyteidl.event.ResourcePoolInfoR\x10resourcePoolInfo\x12+\n\x11plugin_identifier\x18\x04 \x01(\tR\x10pluginIdentifier\x12Z\n\x0einstance_class\x18\x10 \x01(\x0e\x32\x33.flyteidl.event.TaskExecutionMetadata.InstanceClassR\rinstanceClass\"/\n\rInstanceClass\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x11\n\rINTERRUPTIBLE\x10\x01\x42\xb6\x01\n\x12\x63om.flyteidl.eventB\nEventProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event\xa2\x02\x03\x46\x45X\xaa\x02\x0e\x46lyteidl.Event\xca\x02\x0e\x46lyteidl\\Event\xe2\x02\x1a\x46lyteidl\\Event\\GPBMetadata\xea\x02\x0f\x46lyteidl::Eventb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,32 +29,42 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\022com.flyteidl.eventB\nEventProtoP\001Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event\242\002\003FEX\252\002\016Flyteidl.Event\312\002\016Flyteidl\\Event\342\002\032Flyteidl\\Event\\GPBMetadata\352\002\017Flyteidl::Event' + _WORKFLOWEXECUTIONEVENT.fields_by_name['deprecated_output_data']._options = None + _WORKFLOWEXECUTIONEVENT.fields_by_name['deprecated_output_data']._serialized_options = b'\030\001' + _NODEEXECUTIONEVENT.fields_by_name['deprecated_input_data']._options = None + _NODEEXECUTIONEVENT.fields_by_name['deprecated_input_data']._serialized_options = b'\030\001' + _NODEEXECUTIONEVENT.fields_by_name['deprecated_output_data']._options = None + _NODEEXECUTIONEVENT.fields_by_name['deprecated_output_data']._serialized_options = b'\030\001' + _TASKEXECUTIONEVENT.fields_by_name['deprecated_input_data']._options = None + _TASKEXECUTIONEVENT.fields_by_name['deprecated_input_data']._serialized_options = b'\030\001' + _TASKEXECUTIONEVENT.fields_by_name['deprecated_output_data']._options = None + _TASKEXECUTIONEVENT.fields_by_name['deprecated_output_data']._serialized_options = b'\030\001' _TASKEXECUTIONEVENT.fields_by_name['reason']._options = None _TASKEXECUTIONEVENT.fields_by_name['reason']._serialized_options = b'\030\001' _globals['_WORKFLOWEXECUTIONEVENT']._serialized_start=262 - _globals['_WORKFLOWEXECUTIONEVENT']._serialized_end=688 - _globals['_NODEEXECUTIONEVENT']._serialized_start=691 - _globals['_NODEEXECUTIONEVENT']._serialized_end=1996 - _globals['_WORKFLOWNODEMETADATA']._serialized_start=1998 - _globals['_WORKFLOWNODEMETADATA']._serialized_end=2099 - _globals['_TASKNODEMETADATA']._serialized_start=2102 - _globals['_TASKNODEMETADATA']._serialized_end=2471 - _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_start=2474 - _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_end=2680 - _globals['_PARENTTASKEXECUTIONMETADATA']._serialized_start=2682 - _globals['_PARENTTASKEXECUTIONMETADATA']._serialized_end=2767 - _globals['_PARENTNODEEXECUTIONMETADATA']._serialized_start=2769 - _globals['_PARENTNODEEXECUTIONMETADATA']._serialized_end=2823 - _globals['_EVENTREASON']._serialized_start=2825 - _globals['_EVENTREASON']._serialized_end=2923 - _globals['_TASKEXECUTIONEVENT']._serialized_start=2926 - _globals['_TASKEXECUTIONEVENT']._serialized_end=3973 - _globals['_EXTERNALRESOURCEINFO']._serialized_start=3976 - _globals['_EXTERNALRESOURCEINFO']._serialized_end=4262 - _globals['_RESOURCEPOOLINFO']._serialized_start=4264 - _globals['_RESOURCEPOOLINFO']._serialized_end=4355 - _globals['_TASKEXECUTIONMETADATA']._serialized_start=4358 - _globals['_TASKEXECUTIONMETADATA']._serialized_end=4771 - _globals['_TASKEXECUTIONMETADATA_INSTANCECLASS']._serialized_start=4724 - _globals['_TASKEXECUTIONMETADATA_INSTANCECLASS']._serialized_end=4771 + _globals['_WORKFLOWEXECUTIONEVENT']._serialized_end=812 + _globals['_NODEEXECUTIONEVENT']._serialized_start=815 + _globals['_NODEEXECUTIONEVENT']._serialized_end=2291 + _globals['_WORKFLOWNODEMETADATA']._serialized_start=2293 + _globals['_WORKFLOWNODEMETADATA']._serialized_end=2394 + _globals['_TASKNODEMETADATA']._serialized_start=2397 + _globals['_TASKNODEMETADATA']._serialized_end=2766 + _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_start=2769 + _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_end=2975 + _globals['_PARENTTASKEXECUTIONMETADATA']._serialized_start=2977 + _globals['_PARENTTASKEXECUTIONMETADATA']._serialized_end=3062 + _globals['_PARENTNODEEXECUTIONMETADATA']._serialized_start=3064 + _globals['_PARENTNODEEXECUTIONMETADATA']._serialized_end=3118 + _globals['_EVENTREASON']._serialized_start=3120 + _globals['_EVENTREASON']._serialized_end=3218 + _globals['_TASKEXECUTIONEVENT']._serialized_start=3221 + _globals['_TASKEXECUTIONEVENT']._serialized_end=4439 + _globals['_EXTERNALRESOURCEINFO']._serialized_start=4442 + _globals['_EXTERNALRESOURCEINFO']._serialized_end=4728 + _globals['_RESOURCEPOOLINFO']._serialized_start=4730 + _globals['_RESOURCEPOOLINFO']._serialized_end=4821 + _globals['_TASKEXECUTIONMETADATA']._serialized_start=4824 + _globals['_TASKEXECUTIONMETADATA']._serialized_end=5237 + _globals['_TASKEXECUTIONMETADATA_INSTANCECLASS']._serialized_start=5190 + _globals['_TASKEXECUTIONMETADATA_INSTANCECLASS']._serialized_end=5237 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/event/event_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/event/event_pb2.pyi index c159089083..8ff342849a 100644 --- a/flyteidl/gen/pb_python/flyteidl/event/event_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/event/event_pb2.pyi @@ -14,33 +14,39 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class WorkflowExecutionEvent(_message.Message): - __slots__ = ["execution_id", "producer_id", "phase", "occurred_at", "output_uri", "error", "output_data"] + __slots__ = ["execution_id", "producer_id", "phase", "occurred_at", "output_uri", "error", "deprecated_output_data", "output_data", "event_version"] EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] PRODUCER_ID_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] OCCURRED_AT_FIELD_NUMBER: _ClassVar[int] OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] + EVENT_VERSION_FIELD_NUMBER: _ClassVar[int] execution_id: _identifier_pb2.WorkflowExecutionIdentifier producer_id: str phase: _execution_pb2.WorkflowExecution.Phase occurred_at: _timestamp_pb2.Timestamp output_uri: str error: _execution_pb2.ExecutionError - output_data: _literals_pb2.LiteralMap - def __init__(self, execution_id: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ..., producer_id: _Optional[str] = ..., phase: _Optional[_Union[_execution_pb2.WorkflowExecution.Phase, str]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... + deprecated_output_data: _literals_pb2.LiteralMap + output_data: _literals_pb2.OutputData + event_version: int + def __init__(self, execution_id: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ..., producer_id: _Optional[str] = ..., phase: _Optional[_Union[_execution_pb2.WorkflowExecution.Phase, str]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., deprecated_output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., event_version: _Optional[int] = ...) -> None: ... class NodeExecutionEvent(_message.Message): - __slots__ = ["id", "producer_id", "phase", "occurred_at", "input_uri", "input_data", "output_uri", "error", "output_data", "workflow_node_metadata", "task_node_metadata", "parent_task_metadata", "parent_node_metadata", "retry_group", "spec_node_id", "node_name", "event_version", "is_parent", "is_dynamic", "deck_uri", "reported_at", "is_array", "target_entity", "is_in_dynamic_chain"] + __slots__ = ["id", "producer_id", "phase", "occurred_at", "input_uri", "deprecated_input_data", "input_data", "output_uri", "error", "deprecated_output_data", "output_data", "workflow_node_metadata", "task_node_metadata", "parent_task_metadata", "parent_node_metadata", "retry_group", "spec_node_id", "node_name", "event_version", "is_parent", "is_dynamic", "deck_uri", "reported_at", "is_array", "target_entity", "is_in_dynamic_chain"] ID_FIELD_NUMBER: _ClassVar[int] PRODUCER_ID_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] OCCURRED_AT_FIELD_NUMBER: _ClassVar[int] INPUT_URI_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_INPUT_DATA_FIELD_NUMBER: _ClassVar[int] INPUT_DATA_FIELD_NUMBER: _ClassVar[int] OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] WORKFLOW_NODE_METADATA_FIELD_NUMBER: _ClassVar[int] TASK_NODE_METADATA_FIELD_NUMBER: _ClassVar[int] @@ -62,10 +68,12 @@ class NodeExecutionEvent(_message.Message): phase: _execution_pb2.NodeExecution.Phase occurred_at: _timestamp_pb2.Timestamp input_uri: str - input_data: _literals_pb2.LiteralMap + deprecated_input_data: _literals_pb2.LiteralMap + input_data: _literals_pb2.InputData output_uri: str error: _execution_pb2.ExecutionError - output_data: _literals_pb2.LiteralMap + deprecated_output_data: _literals_pb2.LiteralMap + output_data: _literals_pb2.OutputData workflow_node_metadata: WorkflowNodeMetadata task_node_metadata: TaskNodeMetadata parent_task_metadata: ParentTaskExecutionMetadata @@ -81,7 +89,7 @@ class NodeExecutionEvent(_message.Message): is_array: bool target_entity: _identifier_pb2.Identifier is_in_dynamic_chain: bool - def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., producer_id: _Optional[str] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., parent_task_metadata: _Optional[_Union[ParentTaskExecutionMetadata, _Mapping]] = ..., parent_node_metadata: _Optional[_Union[ParentNodeExecutionMetadata, _Mapping]] = ..., retry_group: _Optional[str] = ..., spec_node_id: _Optional[str] = ..., node_name: _Optional[str] = ..., event_version: _Optional[int] = ..., is_parent: bool = ..., is_dynamic: bool = ..., deck_uri: _Optional[str] = ..., reported_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., is_array: bool = ..., target_entity: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., is_in_dynamic_chain: bool = ...) -> None: ... + def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., producer_id: _Optional[str] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., deprecated_input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., deprecated_output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., parent_task_metadata: _Optional[_Union[ParentTaskExecutionMetadata, _Mapping]] = ..., parent_node_metadata: _Optional[_Union[ParentNodeExecutionMetadata, _Mapping]] = ..., retry_group: _Optional[str] = ..., spec_node_id: _Optional[str] = ..., node_name: _Optional[str] = ..., event_version: _Optional[int] = ..., is_parent: bool = ..., is_dynamic: bool = ..., deck_uri: _Optional[str] = ..., reported_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., is_array: bool = ..., target_entity: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., is_in_dynamic_chain: bool = ...) -> None: ... class WorkflowNodeMetadata(_message.Message): __slots__ = ["execution_id"] @@ -134,7 +142,7 @@ class EventReason(_message.Message): def __init__(self, reason: _Optional[str] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class TaskExecutionEvent(_message.Message): - __slots__ = ["task_id", "parent_node_execution_id", "retry_attempt", "phase", "producer_id", "logs", "occurred_at", "input_uri", "input_data", "output_uri", "error", "output_data", "custom_info", "phase_version", "reason", "reasons", "task_type", "metadata", "event_version", "reported_at"] + __slots__ = ["task_id", "parent_node_execution_id", "retry_attempt", "phase", "producer_id", "logs", "occurred_at", "input_uri", "deprecated_input_data", "input_data", "output_uri", "error", "deprecated_output_data", "output_data", "custom_info", "phase_version", "reason", "reasons", "task_type", "metadata", "event_version", "reported_at"] TASK_ID_FIELD_NUMBER: _ClassVar[int] PARENT_NODE_EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] RETRY_ATTEMPT_FIELD_NUMBER: _ClassVar[int] @@ -143,9 +151,11 @@ class TaskExecutionEvent(_message.Message): LOGS_FIELD_NUMBER: _ClassVar[int] OCCURRED_AT_FIELD_NUMBER: _ClassVar[int] INPUT_URI_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_INPUT_DATA_FIELD_NUMBER: _ClassVar[int] INPUT_DATA_FIELD_NUMBER: _ClassVar[int] OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] CUSTOM_INFO_FIELD_NUMBER: _ClassVar[int] PHASE_VERSION_FIELD_NUMBER: _ClassVar[int] @@ -163,10 +173,12 @@ class TaskExecutionEvent(_message.Message): logs: _containers.RepeatedCompositeFieldContainer[_execution_pb2.TaskLog] occurred_at: _timestamp_pb2.Timestamp input_uri: str - input_data: _literals_pb2.LiteralMap + deprecated_input_data: _literals_pb2.LiteralMap + input_data: _literals_pb2.InputData output_uri: str error: _execution_pb2.ExecutionError - output_data: _literals_pb2.LiteralMap + deprecated_output_data: _literals_pb2.LiteralMap + output_data: _literals_pb2.OutputData custom_info: _struct_pb2.Struct phase_version: int reason: str @@ -175,7 +187,7 @@ class TaskExecutionEvent(_message.Message): metadata: TaskExecutionMetadata event_version: int reported_at: _timestamp_pb2.Timestamp - def __init__(self, task_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., parent_node_execution_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., retry_attempt: _Optional[int] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., producer_id: _Optional[str] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., phase_version: _Optional[int] = ..., reason: _Optional[str] = ..., reasons: _Optional[_Iterable[_Union[EventReason, _Mapping]]] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ..., reported_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + def __init__(self, task_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., parent_node_execution_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., retry_attempt: _Optional[int] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., producer_id: _Optional[str] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., deprecated_input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., deprecated_output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., phase_version: _Optional[int] = ..., reason: _Optional[str] = ..., reasons: _Optional[_Iterable[_Union[EventReason, _Mapping]]] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ..., reported_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class ExternalResourceInfo(_message.Message): __slots__ = ["external_id", "index", "retry_attempt", "phase", "cache_status", "logs"] diff --git a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py index 3677f367ca..bc71974db3 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.py @@ -19,7 +19,7 @@ from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n flyteidl/service/dataproxy.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\"\xaa\x02\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12U\n\x07headers\x18\x04 \x03(\x0b\x32;.flyteidl.service.CreateUploadLocationResponse.HeadersEntryR\x07headers\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xb6\x02\n\x1b\x43reateUploadLocationRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12\x1f\n\x0b\x63ontent_md5\x18\x05 \x01(\x0cR\ncontentMd5\x12#\n\rfilename_root\x18\x06 \x01(\tR\x0c\x66ilenameRoot\x12\x37\n\x18\x61\x64\x64_content_md5_metadata\x18\x07 \x01(\x08R\x15\x61\x64\x64\x43ontentMd5Metadata\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\"|\n\x1d\x43reateDownloadLocationRequest\x12\x1d\n\nnative_url\x18\x01 \x01(\tR\tnativeUrl\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn:\x02\x18\x01\"~\n\x1e\x43reateDownloadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt:\x02\x18\x01\"\xfa\x01\n\x19\x43reateDownloadLinkRequest\x12\x43\n\rartifact_type\x18\x01 \x01(\x0e\x32\x1e.flyteidl.service.ArtifactTypeR\x0c\x61rtifactType\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12T\n\x11node_execution_id\x18\x03 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierH\x00R\x0fnodeExecutionIdB\x08\n\x06source\"\xc7\x01\n\x1a\x43reateDownloadLinkResponse\x12!\n\nsigned_url\x18\x01 \x03(\tB\x02\x18\x01R\tsignedUrl\x12=\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01R\texpiresAt\x12G\n\x0fpre_signed_urls\x18\x03 \x01(\x0b\x32\x1f.flyteidl.service.PreSignedURLsR\rpreSignedUrls\"i\n\rPreSignedURLs\x12\x1d\n\nsigned_url\x18\x01 \x03(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"-\n\x0eGetDataRequest\x12\x1b\n\tflyte_url\x18\x01 \x01(\tR\x08\x66lyteUrl\"\xd6\x01\n\x0fGetDataResponse\x12<\n\x0bliteral_map\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\nliteralMap\x12I\n\x0fpre_signed_urls\x18\x02 \x01(\x0b\x32\x1f.flyteidl.service.PreSignedURLsH\x00R\rpreSignedUrls\x12\x32\n\x07literal\x18\x03 \x01(\x0b\x32\x16.flyteidl.core.LiteralH\x00R\x07literalB\x06\n\x04\x64\x61ta*C\n\x0c\x41rtifactType\x12\x1b\n\x17\x41RTIFACT_TYPE_UNDEFINED\x10\x00\x12\x16\n\x12\x41RTIFACT_TYPE_DECK\x10\x01\x32\x84\x07\n\x10\x44\x61taProxyService\x12\xf0\x01\n\x14\x43reateUploadLocation\x12-.flyteidl.service.CreateUploadLocationRequest\x1a..flyteidl.service.CreateUploadLocationResponse\"y\x92\x41M\x1aKCreates a write-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02#:\x01*\"\x1e/api/v1/dataproxy/artifact_urn\x12\xa9\x02\n\x16\x43reateDownloadLocation\x12/.flyteidl.service.CreateDownloadLocationRequest\x1a\x30.flyteidl.service.CreateDownloadLocationResponse\"\xab\x01\x88\x02\x01\x92\x41\x7f\x1a}Deprecated: Please use CreateDownloadLink instead. Creates a read-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02 \x12\x1e/api/v1/dataproxy/artifact_urn\x12\xea\x01\n\x12\x43reateDownloadLink\x12+.flyteidl.service.CreateDownloadLinkRequest\x1a,.flyteidl.service.CreateDownloadLinkResponse\"y\x92\x41L\x1aJCreates a read-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/api/v1/dataproxy/artifact_link\x12\x64\n\x07GetData\x12 .flyteidl.service.GetDataRequest\x1a!.flyteidl.service.GetDataResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/v1/dataB\xc6\x01\n\x14\x63om.flyteidl.serviceB\x0e\x44\x61taproxyProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n flyteidl/service/dataproxy.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\"\xaa\x02\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12U\n\x07headers\x18\x04 \x03(\x0b\x32;.flyteidl.service.CreateUploadLocationResponse.HeadersEntryR\x07headers\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xb6\x02\n\x1b\x43reateUploadLocationRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12\x1f\n\x0b\x63ontent_md5\x18\x05 \x01(\x0cR\ncontentMd5\x12#\n\rfilename_root\x18\x06 \x01(\tR\x0c\x66ilenameRoot\x12\x37\n\x18\x61\x64\x64_content_md5_metadata\x18\x07 \x01(\x08R\x15\x61\x64\x64\x43ontentMd5Metadata\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\"|\n\x1d\x43reateDownloadLocationRequest\x12\x1d\n\nnative_url\x18\x01 \x01(\tR\tnativeUrl\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn:\x02\x18\x01\"~\n\x1e\x43reateDownloadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt:\x02\x18\x01\"\xfa\x01\n\x19\x43reateDownloadLinkRequest\x12\x43\n\rartifact_type\x18\x01 \x01(\x0e\x32\x1e.flyteidl.service.ArtifactTypeR\x0c\x61rtifactType\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12T\n\x11node_execution_id\x18\x03 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierH\x00R\x0fnodeExecutionIdB\x08\n\x06source\"\xc7\x01\n\x1a\x43reateDownloadLinkResponse\x12!\n\nsigned_url\x18\x01 \x03(\tB\x02\x18\x01R\tsignedUrl\x12=\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01R\texpiresAt\x12G\n\x0fpre_signed_urls\x18\x03 \x01(\x0b\x32\x1f.flyteidl.service.PreSignedURLsR\rpreSignedUrls\"i\n\rPreSignedURLs\x12\x1d\n\nsigned_url\x18\x01 \x03(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"-\n\x0eGetDataRequest\x12\x1b\n\tflyte_url\x18\x01 \x01(\tR\x08\x66lyteUrl\"\xcf\x02\n\x0fGetDataResponse\x12<\n\x0bliteral_map\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\nliteralMap\x12I\n\x0fpre_signed_urls\x18\x02 \x01(\x0b\x32\x1f.flyteidl.service.PreSignedURLsH\x00R\rpreSignedUrls\x12\x32\n\x07literal\x18\x03 \x01(\x0b\x32\x16.flyteidl.core.LiteralH\x00R\x07literal\x12\x39\n\ninput_data\x18\x04 \x01(\x0b\x32\x18.flyteidl.core.InputDataH\x00R\tinputData\x12<\n\x0boutput_data\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.OutputDataH\x00R\noutputDataB\x06\n\x04\x64\x61ta*C\n\x0c\x41rtifactType\x12\x1b\n\x17\x41RTIFACT_TYPE_UNDEFINED\x10\x00\x12\x16\n\x12\x41RTIFACT_TYPE_DECK\x10\x01\x32\x84\x07\n\x10\x44\x61taProxyService\x12\xf0\x01\n\x14\x43reateUploadLocation\x12-.flyteidl.service.CreateUploadLocationRequest\x1a..flyteidl.service.CreateUploadLocationResponse\"y\x92\x41M\x1aKCreates a write-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02#:\x01*\"\x1e/api/v1/dataproxy/artifact_urn\x12\xa9\x02\n\x16\x43reateDownloadLocation\x12/.flyteidl.service.CreateDownloadLocationRequest\x1a\x30.flyteidl.service.CreateDownloadLocationResponse\"\xab\x01\x88\x02\x01\x92\x41\x7f\x1a}Deprecated: Please use CreateDownloadLink instead. Creates a read-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02 \x12\x1e/api/v1/dataproxy/artifact_urn\x12\xea\x01\n\x12\x43reateDownloadLink\x12+.flyteidl.service.CreateDownloadLinkRequest\x1a,.flyteidl.service.CreateDownloadLinkResponse\"y\x92\x41L\x1aJCreates a read-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/api/v1/dataproxy/artifact_link\x12\x64\n\x07GetData\x12 .flyteidl.service.GetDataRequest\x1a!.flyteidl.service.GetDataResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/v1/dataB\xc6\x01\n\x14\x63om.flyteidl.serviceB\x0e\x44\x61taproxyProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -46,8 +46,8 @@ _DATAPROXYSERVICE.methods_by_name['CreateDownloadLink']._serialized_options = b'\222AL\032JCreates a read-only http location that is accessible for tasks at runtime.\202\323\344\223\002$:\001*\"\037/api/v1/dataproxy/artifact_link' _DATAPROXYSERVICE.methods_by_name['GetData']._options = None _DATAPROXYSERVICE.methods_by_name['GetData']._serialized_options = b'\202\323\344\223\002\016\022\014/api/v1/data' - _globals['_ARTIFACTTYPE']._serialized_start=1953 - _globals['_ARTIFACTTYPE']._serialized_end=2020 + _globals['_ARTIFACTTYPE']._serialized_start=2074 + _globals['_ARTIFACTTYPE']._serialized_end=2141 _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=260 _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=558 _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_start=500 @@ -67,7 +67,7 @@ _globals['_GETDATAREQUEST']._serialized_start=1689 _globals['_GETDATAREQUEST']._serialized_end=1734 _globals['_GETDATARESPONSE']._serialized_start=1737 - _globals['_GETDATARESPONSE']._serialized_end=1951 - _globals['_DATAPROXYSERVICE']._serialized_start=2023 - _globals['_DATAPROXYSERVICE']._serialized_end=2923 + _globals['_GETDATARESPONSE']._serialized_end=2072 + _globals['_DATAPROXYSERVICE']._serialized_start=2144 + _globals['_DATAPROXYSERVICE']._serialized_end=3044 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi index f76e4dc8b1..dc74221fc4 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi @@ -109,11 +109,15 @@ class GetDataRequest(_message.Message): def __init__(self, flyte_url: _Optional[str] = ...) -> None: ... class GetDataResponse(_message.Message): - __slots__ = ["literal_map", "pre_signed_urls", "literal"] + __slots__ = ["literal_map", "pre_signed_urls", "literal", "input_data", "output_data"] LITERAL_MAP_FIELD_NUMBER: _ClassVar[int] PRE_SIGNED_URLS_FIELD_NUMBER: _ClassVar[int] LITERAL_FIELD_NUMBER: _ClassVar[int] + INPUT_DATA_FIELD_NUMBER: _ClassVar[int] + OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] literal_map: _literals_pb2.LiteralMap pre_signed_urls: PreSignedURLs literal: _literals_pb2.Literal - def __init__(self, literal_map: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., pre_signed_urls: _Optional[_Union[PreSignedURLs, _Mapping]] = ..., literal: _Optional[_Union[_literals_pb2.Literal, _Mapping]] = ...) -> None: ... + input_data: _literals_pb2.InputData + output_data: _literals_pb2.OutputData + def __init__(self, literal_map: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., pre_signed_urls: _Optional[_Union[PreSignedURLs, _Mapping]] = ..., literal: _Optional[_Union[_literals_pb2.Literal, _Mapping]] = ..., input_data: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ...) -> None: ... diff --git a/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py b/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py index db56c22adf..75bf604e06 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py @@ -15,7 +15,7 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.flyteidl/service/external_plugin_service.proto\x12\x10\x66lyteidl.service\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\"\xa8\x01\n\x11TaskCreateRequest\x12\x31\n\x06inputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\x12\x37\n\x08template\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x03 \x01(\tR\x0coutputPrefix:\x02\x18\x01\"/\n\x12TaskCreateResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId:\x02\x18\x01\"H\n\x0eTaskGetRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId:\x02\x18\x01\"y\n\x0fTaskGetResponse\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x17.flyteidl.service.StateR\x05state\x12\x33\n\x07outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x07outputs:\x02\x18\x01\"K\n\x11TaskDeleteRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId:\x02\x18\x01\"\x18\n\x12TaskDeleteResponse:\x02\x18\x01*b\n\x05State\x12\x15\n\x11RETRYABLE_FAILURE\x10\x00\x12\x15\n\x11PERMANENT_FAILURE\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x1a\x02\x18\x01\x32\xa8\x02\n\x15\x45xternalPluginService\x12\\\n\nCreateTask\x12#.flyteidl.service.TaskCreateRequest\x1a$.flyteidl.service.TaskCreateResponse\"\x03\x88\x02\x01\x12S\n\x07GetTask\x12 .flyteidl.service.TaskGetRequest\x1a!.flyteidl.service.TaskGetResponse\"\x03\x88\x02\x01\x12\\\n\nDeleteTask\x12#.flyteidl.service.TaskDeleteRequest\x1a$.flyteidl.service.TaskDeleteResponse\"\x03\x88\x02\x01\x42\xd2\x01\n\x14\x63om.flyteidl.serviceB\x1a\x45xternalPluginServiceProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.flyteidl/service/external_plugin_service.proto\x12\x10\x66lyteidl.service\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\"\xf3\x01\n\x11TaskCreateRequest\x12J\n\x11\x64\x65precated_inputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x10\x64\x65precatedInputs\x12\x37\n\x08template\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x03 \x01(\tR\x0coutputPrefix\x12\x30\n\x06inputs\x18\x04 \x01(\x0b\x32\x18.flyteidl.core.InputDataR\x06inputs:\x02\x18\x01\"/\n\x12TaskCreateResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId:\x02\x18\x01\"H\n\x0eTaskGetRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId:\x02\x18\x01\"\xc3\x01\n\x0fTaskGetResponse\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x17.flyteidl.service.StateR\x05state\x12H\n\x12\x64\x65precated_outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x11\x64\x65precatedOutputs\x12\x33\n\x07outputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.OutputDataR\x07outputs:\x02\x18\x01\"K\n\x11TaskDeleteRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId:\x02\x18\x01\"\x18\n\x12TaskDeleteResponse:\x02\x18\x01*b\n\x05State\x12\x15\n\x11RETRYABLE_FAILURE\x10\x00\x12\x15\n\x11PERMANENT_FAILURE\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x1a\x02\x18\x01\x32\xa8\x02\n\x15\x45xternalPluginService\x12\\\n\nCreateTask\x12#.flyteidl.service.TaskCreateRequest\x1a$.flyteidl.service.TaskCreateResponse\"\x03\x88\x02\x01\x12S\n\x07GetTask\x12 .flyteidl.service.TaskGetRequest\x1a!.flyteidl.service.TaskGetResponse\"\x03\x88\x02\x01\x12\\\n\nDeleteTask\x12#.flyteidl.service.TaskDeleteRequest\x1a$.flyteidl.service.TaskDeleteResponse\"\x03\x88\x02\x01\x42\xd2\x01\n\x14\x63om.flyteidl.serviceB\x1a\x45xternalPluginServiceProtoP\x01Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -26,6 +26,8 @@ DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.serviceB\032ExternalPluginServiceProtoP\001Z=github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/service\242\002\003FSX\252\002\020Flyteidl.Service\312\002\020Flyteidl\\Service\342\002\034Flyteidl\\Service\\GPBMetadata\352\002\021Flyteidl::Service' _STATE._options = None _STATE._serialized_options = b'\030\001' + _TASKCREATEREQUEST.fields_by_name['deprecated_inputs']._options = None + _TASKCREATEREQUEST.fields_by_name['deprecated_inputs']._serialized_options = b'\030\001' _TASKCREATEREQUEST._options = None _TASKCREATEREQUEST._serialized_options = b'\030\001' _TASKCREATERESPONSE._options = None @@ -44,20 +46,20 @@ _EXTERNALPLUGINSERVICE.methods_by_name['GetTask']._serialized_options = b'\210\002\001' _EXTERNALPLUGINSERVICE.methods_by_name['DeleteTask']._options = None _EXTERNALPLUGINSERVICE.methods_by_name['DeleteTask']._serialized_options = b'\210\002\001' - _globals['_STATE']._serialized_start=645 - _globals['_STATE']._serialized_end=743 + _globals['_STATE']._serialized_start=795 + _globals['_STATE']._serialized_end=893 _globals['_TASKCREATEREQUEST']._serialized_start=126 - _globals['_TASKCREATEREQUEST']._serialized_end=294 - _globals['_TASKCREATERESPONSE']._serialized_start=296 - _globals['_TASKCREATERESPONSE']._serialized_end=343 - _globals['_TASKGETREQUEST']._serialized_start=345 - _globals['_TASKGETREQUEST']._serialized_end=417 - _globals['_TASKGETRESPONSE']._serialized_start=419 - _globals['_TASKGETRESPONSE']._serialized_end=540 - _globals['_TASKDELETEREQUEST']._serialized_start=542 - _globals['_TASKDELETEREQUEST']._serialized_end=617 - _globals['_TASKDELETERESPONSE']._serialized_start=619 - _globals['_TASKDELETERESPONSE']._serialized_end=643 - _globals['_EXTERNALPLUGINSERVICE']._serialized_start=746 - _globals['_EXTERNALPLUGINSERVICE']._serialized_end=1042 + _globals['_TASKCREATEREQUEST']._serialized_end=369 + _globals['_TASKCREATERESPONSE']._serialized_start=371 + _globals['_TASKCREATERESPONSE']._serialized_end=418 + _globals['_TASKGETREQUEST']._serialized_start=420 + _globals['_TASKGETREQUEST']._serialized_end=492 + _globals['_TASKGETRESPONSE']._serialized_start=495 + _globals['_TASKGETRESPONSE']._serialized_end=690 + _globals['_TASKDELETEREQUEST']._serialized_start=692 + _globals['_TASKDELETEREQUEST']._serialized_end=767 + _globals['_TASKDELETERESPONSE']._serialized_start=769 + _globals['_TASKDELETERESPONSE']._serialized_end=793 + _globals['_EXTERNALPLUGINSERVICE']._serialized_start=896 + _globals['_EXTERNALPLUGINSERVICE']._serialized_end=1192 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi index c09566929f..1c4aa307e1 100644 --- a/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi @@ -21,14 +21,16 @@ RUNNING: State SUCCEEDED: State class TaskCreateRequest(_message.Message): - __slots__ = ["inputs", "template", "output_prefix"] - INPUTS_FIELD_NUMBER: _ClassVar[int] + __slots__ = ["deprecated_inputs", "template", "output_prefix", "inputs"] + DEPRECATED_INPUTS_FIELD_NUMBER: _ClassVar[int] TEMPLATE_FIELD_NUMBER: _ClassVar[int] OUTPUT_PREFIX_FIELD_NUMBER: _ClassVar[int] - inputs: _literals_pb2.LiteralMap + INPUTS_FIELD_NUMBER: _ClassVar[int] + deprecated_inputs: _literals_pb2.LiteralMap template: _tasks_pb2.TaskTemplate output_prefix: str - def __init__(self, inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ..., output_prefix: _Optional[str] = ...) -> None: ... + inputs: _literals_pb2.InputData + def __init__(self, deprecated_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ..., output_prefix: _Optional[str] = ..., inputs: _Optional[_Union[_literals_pb2.InputData, _Mapping]] = ...) -> None: ... class TaskCreateResponse(_message.Message): __slots__ = ["job_id"] @@ -45,12 +47,14 @@ class TaskGetRequest(_message.Message): def __init__(self, task_type: _Optional[str] = ..., job_id: _Optional[str] = ...) -> None: ... class TaskGetResponse(_message.Message): - __slots__ = ["state", "outputs"] + __slots__ = ["state", "deprecated_outputs", "outputs"] STATE_FIELD_NUMBER: _ClassVar[int] + DEPRECATED_OUTPUTS_FIELD_NUMBER: _ClassVar[int] OUTPUTS_FIELD_NUMBER: _ClassVar[int] state: State - outputs: _literals_pb2.LiteralMap - def __init__(self, state: _Optional[_Union[State, str]] = ..., outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... + deprecated_outputs: _literals_pb2.LiteralMap + outputs: _literals_pb2.OutputData + def __init__(self, state: _Optional[_Union[State, str]] = ..., deprecated_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., outputs: _Optional[_Union[_literals_pb2.OutputData, _Mapping]] = ...) -> None: ... class TaskDeleteRequest(_message.Message): __slots__ = ["task_type", "job_id"] diff --git a/flyteidl/gen/pb_rust/flyteidl.admin.rs b/flyteidl/gen/pb_rust/flyteidl.admin.rs index a0b650d85d..b219e6e18c 100644 --- a/flyteidl/gen/pb_rust/flyteidl.admin.rs +++ b/flyteidl/gen/pb_rust/flyteidl.admin.rs @@ -50,8 +50,10 @@ pub struct CreateTaskRequest { /// The inputs required to start the execution. All required inputs must be /// included in this map. If not required and not provided, defaults apply. /// +optional + /// Deprecated: Use inputs instead. + #[deprecated] #[prost(message, optional, tag="1")] - pub inputs: ::core::option::Option, + pub deprecated_inputs: ::core::option::Option, /// Template of the task that encapsulates all the metadata of the task. #[prost(message, optional, tag="2")] pub template: ::core::option::Option, @@ -61,6 +63,11 @@ pub struct CreateTaskRequest { /// subset of runtime task execution metadata. #[prost(message, optional, tag="4")] pub task_execution_metadata: ::core::option::Option, + /// Inputs are the inputs required to start the execution. All required inputs must be + /// included in this map. If not required and not provided, defaults apply. + /// +optional + #[prost(message, optional, tag="5")] + pub inputs: ::core::option::Option, } /// Represents a create response structure. #[allow(clippy::derive_partial_eq_without_eq)] @@ -162,8 +169,10 @@ pub struct Resource { /// The outputs of the execution. It's typically used by sql task. Agent service will create a /// Structured dataset pointing to the query result table. /// +optional + /// Deprecated: Use outputs instead. + #[deprecated] #[prost(message, optional, tag="2")] - pub outputs: ::core::option::Option, + pub deprecated_outputs: ::core::option::Option, /// A descriptive message for the current state. e.g. waiting for cluster. #[prost(string, tag="3")] pub message: ::prost::alloc::string::String, @@ -176,6 +185,11 @@ pub struct Resource { /// Custom data specific to the agent. #[prost(message, optional, tag="6")] pub custom_info: ::core::option::Option<::prost_types::Struct>, + /// The outputs of the execution. It's typically used by sql task. Agent service will create a + /// Structured dataset pointing to the query result table. + /// +optional + #[prost(message, optional, tag="7")] + pub outputs: ::core::option::Option, } /// A message used to delete a task. #[allow(clippy::derive_partial_eq_without_eq)] @@ -1325,11 +1339,18 @@ pub struct ExecutionCreateRequest { /// The inputs required to start the execution. All required inputs must be /// included in this map. If not required and not provided, defaults apply. /// +optional + /// Deprecated: Please use input_data instead. + #[deprecated] #[prost(message, optional, tag="5")] pub inputs: ::core::option::Option, /// Optional, org key applied to the resource. #[prost(string, tag="6")] pub org: ::prost::alloc::string::String, + /// The inputs required to start the execution. All required inputs must be + /// included in this map. If not required and not provided, defaults apply. + /// +optional + #[prost(message, optional, tag="7")] + pub input_data: ::core::option::Option, } /// Request to relaunch the referenced execution. #[allow(clippy::derive_partial_eq_without_eq)] @@ -1479,7 +1500,7 @@ pub struct ExecutionClosure { pub state_change_details: ::core::option::Option, /// A result produced by a terminated execution. /// A pending (non-terminal) execution will not have any output result. - #[prost(oneof="execution_closure::OutputResult", tags="1, 2, 10, 12, 13")] + #[prost(oneof="execution_closure::OutputResult", tags="1, 2, 10, 12, 13, 15")] pub output_result: ::core::option::Option, } /// Nested message and enum types in `ExecutionClosure`. @@ -1506,6 +1527,10 @@ pub mod execution_closure { /// DEPRECATED. Use GetExecutionData to fetch output data instead. #[prost(message, tag="13")] OutputData(super::super::core::LiteralMap), + /// Raw output data produced by this execution. + /// DEPRECATED. Use GetExecutionData to fetch output data instead. + #[prost(message, tag="15")] + FullOutputs(super::super::core::OutputData), } } /// Represents system, rather than user-facing, metadata about an execution. @@ -1744,11 +1769,21 @@ pub struct WorkflowExecutionGetDataResponse { #[prost(message, optional, tag="2")] pub inputs: ::core::option::Option, /// Full_inputs will only be populated if they are under a configured size threshold. + /// Deprecated: Please use input_data instead. + #[deprecated] #[prost(message, optional, tag="3")] pub full_inputs: ::core::option::Option, /// Full_outputs will only be populated if they are under a configured size threshold. + /// Deprecated: Please use output_data instead. + #[deprecated] #[prost(message, optional, tag="4")] pub full_outputs: ::core::option::Option, + /// InputData will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="5")] + pub input_data: ::core::option::Option, + /// OutputData will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="6")] + pub output_data: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -1980,6 +2015,8 @@ pub struct LaunchPlanSpec { pub default_inputs: ::core::option::Option, /// Fixed, non-overridable inputs for the Launch Plan. /// These can not be overridden when an execution is created with this launch plan. + /// Deprecated: Please use fixec_input_data instead + #[deprecated] #[prost(message, optional, tag="4")] pub fixed_inputs: ::core::option::Option, /// String to indicate the role to use to execute the workflow underneath @@ -2030,6 +2067,10 @@ pub struct LaunchPlanSpec { /// Execution environment assignments to be set for the execution. #[prost(message, repeated, tag="22")] pub execution_env_assignments: ::prost::alloc::vec::Vec, + /// Fixed, non-overridable inputs for the Launch Plan. + /// These can not be overridden when an execution is created with this launch plan. + #[prost(message, optional, tag="23")] + pub fixed_input_data: ::core::option::Option, } /// Values computed by the flyte platform after launch plan registration. /// These include expected_inputs required to be present in a CreateExecutionRequest @@ -2314,7 +2355,7 @@ pub struct NodeExecutionClosure { #[prost(string, tag="12")] pub dynamic_job_spec_uri: ::prost::alloc::string::String, /// Only a node in a terminal state will have a non-empty output_result. - #[prost(oneof="node_execution_closure::OutputResult", tags="1, 2, 10")] + #[prost(oneof="node_execution_closure::OutputResult", tags="1, 2, 10, 13")] pub output_result: ::core::option::Option, /// Store metadata for what the node launched. /// for ex: if this is a workflow node, we store information for the launched workflow. @@ -2338,6 +2379,9 @@ pub mod node_execution_closure { /// DEPRECATED. Use GetNodeExecutionData to fetch output data instead. #[prost(message, tag="10")] OutputData(super::super::core::LiteralMap), + /// Raw output data produced by this node execution. + #[prost(message, tag="13")] + FullOutputs(super::super::core::OutputData), } /// Store metadata for what the node launched. /// for ex: if this is a workflow node, we store information for the launched workflow. @@ -2411,11 +2455,21 @@ pub struct NodeExecutionGetDataResponse { #[prost(message, optional, tag="2")] pub outputs: ::core::option::Option, /// Full_inputs will only be populated if they are under a configured size threshold. + /// Deprecated: Please use input_data instead. + #[deprecated] #[prost(message, optional, tag="3")] pub full_inputs: ::core::option::Option, - /// Full_outputs will only be populated if they are under a configured size threshold. + /// Full_outputs will only be populated if they are under a configured size threshold. + /// Deprecated: Please use output_data instead. + #[deprecated] #[prost(message, optional, tag="4")] pub full_outputs: ::core::option::Option, + /// InputData will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="5")] + pub input_data: ::core::option::Option, + /// OutputData will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="6")] + pub output_data: ::core::option::Option, /// Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. #[prost(message, optional, tag="16")] pub dynamic_workflow: ::core::option::Option, @@ -3047,7 +3101,7 @@ pub struct TaskExecutionClosure { /// as previously done, is much more valuable in visualizing and understanding historical evaluations. #[prost(message, repeated, tag="18")] pub reasons: ::prost::alloc::vec::Vec, - #[prost(oneof="task_execution_closure::OutputResult", tags="1, 2, 12")] + #[prost(oneof="task_execution_closure::OutputResult", tags="1, 2, 12, 19")] pub output_result: ::core::option::Option, } /// Nested message and enum types in `TaskExecutionClosure`. @@ -3066,6 +3120,9 @@ pub mod task_execution_closure { /// DEPRECATED. Use GetTaskExecutionData to fetch output data instead. #[prost(message, tag="12")] OutputData(super::super::core::LiteralMap), + /// Raw output data produced by this task execution. + #[prost(message, tag="19")] + FullOutputs(super::super::core::OutputData), } } /// Reason is a single message annotated with a timestamp to indicate the instant the reason occurred. @@ -3104,11 +3161,21 @@ pub struct TaskExecutionGetDataResponse { #[prost(message, optional, tag="2")] pub outputs: ::core::option::Option, /// Full_inputs will only be populated if they are under a configured size threshold. + /// Deprecated: Please use input_data instead. + #[deprecated] #[prost(message, optional, tag="3")] pub full_inputs: ::core::option::Option, /// Full_outputs will only be populated if they are under a configured size threshold. + /// Deprecated: Please use output_data instead. + #[deprecated] #[prost(message, optional, tag="4")] pub full_outputs: ::core::option::Option, + /// InputData will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="6")] + pub input_data: ::core::option::Option, + /// OutputData will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="7")] + pub output_data: ::core::option::Option, /// flyte tiny url to fetch a core.LiteralMap of task execution's IO /// Deck will be empty for task #[prost(message, optional, tag="5")] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index f1d873d65d..37ad59abae 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -521,6 +521,24 @@ pub struct LiteralMap { #[prost(map="string, message", tag="1")] pub literals: ::std::collections::HashMap<::prost::alloc::string::String, Literal>, } +/// InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to +/// their values. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct InputData { + /// A map of input variables to their values. + #[prost(message, optional, tag="1")] + pub inputs: ::core::option::Option, +} +/// OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to +/// their values. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OutputData { + /// A map of output variables to their values. + #[prost(message, optional, tag="1")] + pub outputs: ::core::option::Option, +} /// A collection of BindingData items. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/flyteidl/gen/pb_rust/flyteidl.event.rs b/flyteidl/gen/pb_rust/flyteidl.event.rs index 281ee07daa..79821dfea2 100644 --- a/flyteidl/gen/pb_rust/flyteidl.event.rs +++ b/flyteidl/gen/pb_rust/flyteidl.event.rs @@ -14,7 +14,9 @@ pub struct WorkflowExecutionEvent { /// by the executor of the workflow. #[prost(message, optional, tag="4")] pub occurred_at: ::core::option::Option<::prost_types::Timestamp>, - #[prost(oneof="workflow_execution_event::OutputResult", tags="5, 6, 7")] + #[prost(int32, tag="9")] + pub event_version: i32, + #[prost(oneof="workflow_execution_event::OutputResult", tags="5, 6, 7, 8")] pub output_result: ::core::option::Option, } /// Nested message and enum types in `WorkflowExecutionEvent`. @@ -30,8 +32,12 @@ pub mod workflow_execution_event { #[prost(message, tag="6")] Error(super::super::core::ExecutionError), /// Raw output data produced by this workflow execution. + /// Deprecated: please use output_data instead #[prost(message, tag="7")] - OutputData(super::super::core::LiteralMap), + DeprecatedOutputData(super::super::core::LiteralMap), + /// Raw output data produced by this workflow execution. + #[prost(message, tag="8")] + OutputData(super::super::core::OutputData), } } #[allow(clippy::derive_partial_eq_without_eq)] @@ -99,9 +105,9 @@ pub struct NodeExecutionEvent { /// as well as task IDs in any corresponding Task Executions, should not be used to looked up the task in Admin's db. #[prost(bool, tag="24")] pub is_in_dynamic_chain: bool, - #[prost(oneof="node_execution_event::InputValue", tags="5, 20")] + #[prost(oneof="node_execution_event::InputValue", tags="5, 20, 25")] pub input_value: ::core::option::Option, - #[prost(oneof="node_execution_event::OutputResult", tags="6, 7, 15")] + #[prost(oneof="node_execution_event::OutputResult", tags="6, 7, 15, 26")] pub output_result: ::core::option::Option, /// Additional metadata to do with this event's node target based /// on the node type @@ -116,8 +122,12 @@ pub mod node_execution_event { #[prost(string, tag="5")] InputUri(::prost::alloc::string::String), /// Raw input data consumed by this node execution. + /// Deprecated: please use input_data instead #[prost(message, tag="20")] - InputData(super::super::core::LiteralMap), + DeprecatedInputData(super::super::core::LiteralMap), + /// Raw input data consumed by this node execution. + #[prost(message, tag="25")] + InputData(super::super::core::InputData), } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] @@ -129,9 +139,13 @@ pub mod node_execution_event { /// Error information for the execution #[prost(message, tag="7")] Error(super::super::core::ExecutionError), - /// Raw output data produced by this node execution. + /// Raw output data produced by this workflow execution. + /// Deprecated: please use output_data instead #[prost(message, tag="15")] - OutputData(super::super::core::LiteralMap), + DeprecatedOutputData(super::super::core::LiteralMap), + /// Raw output data produced by this workflow execution. + #[prost(message, tag="26")] + OutputData(super::super::core::OutputData), } /// Additional metadata to do with this event's node target based /// on the node type @@ -273,9 +287,9 @@ pub struct TaskExecutionEvent { /// facilitates a more accurate portrayal of the evaluation time-series. #[prost(message, optional, tag="20")] pub reported_at: ::core::option::Option<::prost_types::Timestamp>, - #[prost(oneof="task_execution_event::InputValue", tags="8, 19")] + #[prost(oneof="task_execution_event::InputValue", tags="8, 19, 23")] pub input_value: ::core::option::Option, - #[prost(oneof="task_execution_event::OutputResult", tags="9, 10, 17")] + #[prost(oneof="task_execution_event::OutputResult", tags="9, 10, 17, 22")] pub output_result: ::core::option::Option, } /// Nested message and enum types in `TaskExecutionEvent`. @@ -287,9 +301,13 @@ pub mod task_execution_event { /// including Cloud source provider. ie., s3://... #[prost(string, tag="8")] InputUri(::prost::alloc::string::String), - /// Raw input data consumed by this task execution. + /// Raw input data consumed by this node execution. + /// Deprecated: please use input_data instead #[prost(message, tag="19")] - InputData(super::super::core::LiteralMap), + DeprecatedInputData(super::super::core::LiteralMap), + /// Raw input data consumed by this node execution. + #[prost(message, tag="23")] + InputData(super::super::core::InputData), } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] @@ -301,9 +319,13 @@ pub mod task_execution_event { /// Error information for the execution #[prost(message, tag="10")] Error(super::super::core::ExecutionError), - /// Raw output data produced by this task execution. + /// Raw output data produced by this workflow execution. + /// Deprecated: please use output_data instead #[prost(message, tag="17")] - OutputData(super::super::core::LiteralMap), + DeprecatedOutputData(super::super::core::LiteralMap), + /// Raw output data produced by this workflow execution. + #[prost(message, tag="22")] + OutputData(super::super::core::OutputData), } } /// This message contains metadata about external resources produced or used by a specific task execution. diff --git a/flyteidl/gen/pb_rust/flyteidl.service.rs b/flyteidl/gen/pb_rust/flyteidl.service.rs index 2fb065da4e..05810945b5 100644 --- a/flyteidl/gen/pb_rust/flyteidl.service.rs +++ b/flyteidl/gen/pb_rust/flyteidl.service.rs @@ -225,7 +225,7 @@ pub struct GetDataRequest { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetDataResponse { - #[prost(oneof="get_data_response::Data", tags="1, 2, 3")] + #[prost(oneof="get_data_response::Data", tags="1, 2, 3, 4, 5")] pub data: ::core::option::Option, } /// Nested message and enum types in `GetDataResponse`. @@ -243,6 +243,12 @@ pub mod get_data_response { /// by name. See the o3 example above. #[prost(message, tag="3")] Literal(super::super::core::Literal), + /// InputData is returned when the user/url requests the input data for an execution. + #[prost(message, tag="4")] + InputData(super::super::core::InputData), + /// OutputData is returned when the user/url requests the output data for an execution. + #[prost(message, tag="5")] + OutputData(super::super::core::OutputData), } } /// ArtifactType @@ -282,14 +288,21 @@ pub struct TaskCreateRequest { /// The inputs required to start the execution. All required inputs must be /// included in this map. If not required and not provided, defaults apply. /// +optional + /// Deprecated: please use inputs instead. + #[deprecated] #[prost(message, optional, tag="1")] - pub inputs: ::core::option::Option, + pub deprecated_inputs: ::core::option::Option, /// Template of the task that encapsulates all the metadata of the task. #[prost(message, optional, tag="2")] pub template: ::core::option::Option, /// Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) #[prost(string, tag="3")] pub output_prefix: ::prost::alloc::string::String, + /// The inputs required to start the execution. All required inputs must be + /// included in this map. If not required and not provided, defaults apply. + /// +optional + #[prost(message, optional, tag="4")] + pub inputs: ::core::option::Option, } /// Represents a create response structure. #[allow(clippy::derive_partial_eq_without_eq)] @@ -319,8 +332,14 @@ pub struct TaskGetResponse { /// The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a /// Structured dataset pointing to the query result table. /// +optional + /// Deprecated: Please use outputs instead #[prost(message, optional, tag="2")] - pub outputs: ::core::option::Option, + pub deprecated_outputs: ::core::option::Option, + /// The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + /// Structured dataset pointing to the query result table. + /// +optional + #[prost(message, optional, tag="3")] + pub outputs: ::core::option::Option, } /// A message used to delete a task. #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/admin/agent.proto b/flyteidl/protos/flyteidl/admin/agent.proto index 931c27785f..2a833f2b76 100644 --- a/flyteidl/protos/flyteidl/admin/agent.proto +++ b/flyteidl/protos/flyteidl/admin/agent.proto @@ -61,13 +61,18 @@ message CreateTaskRequest { // The inputs required to start the execution. All required inputs must be // included in this map. If not required and not provided, defaults apply. // +optional - core.LiteralMap inputs = 1; + // Deprecated: Use inputs instead. + core.LiteralMap deprecated_inputs = 1 [deprecated = true]; // Template of the task that encapsulates all the metadata of the task. core.TaskTemplate template = 2; // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) string output_prefix = 3; // subset of runtime task execution metadata. TaskExecutionMetadata task_execution_metadata = 4; + // Inputs are the inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + core.InputData inputs = 5; } // Represents a create response structure. @@ -129,7 +134,8 @@ message Resource { // The outputs of the execution. It's typically used by sql task. Agent service will create a // Structured dataset pointing to the query result table. // +optional - core.LiteralMap outputs = 2; + // Deprecated: Use outputs instead. + core.LiteralMap deprecated_outputs = 2 [deprecated = true]; // A descriptive message for the current state. e.g. waiting for cluster. string message = 3; // log information for the task execution. @@ -138,6 +144,10 @@ message Resource { core.TaskExecution.Phase phase = 5; // Custom data specific to the agent. google.protobuf.Struct custom_info = 6; + // The outputs of the execution. It's typically used by sql task. Agent service will create a + // Structured dataset pointing to the query result table. + // +optional + core.OutputData outputs = 7; } // A message used to delete a task. diff --git a/flyteidl/protos/flyteidl/admin/execution.proto b/flyteidl/protos/flyteidl/admin/execution.proto index 6197576bd9..30c0857c1c 100644 --- a/flyteidl/protos/flyteidl/admin/execution.proto +++ b/flyteidl/protos/flyteidl/admin/execution.proto @@ -40,10 +40,16 @@ message ExecutionCreateRequest { // The inputs required to start the execution. All required inputs must be // included in this map. If not required and not provided, defaults apply. // +optional - core.LiteralMap inputs = 5; + // Deprecated: Please use input_data instead. + core.LiteralMap inputs = 5 [deprecated = true]; // Optional, org key applied to the resource. string org = 6; + + // The inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + core.InputData input_data = 7; } // Request to relaunch the referenced execution. @@ -158,6 +164,10 @@ message ExecutionClosure { // Raw output data produced by this execution. // DEPRECATED. Use GetExecutionData to fetch output data instead. core.LiteralMap output_data = 13 [deprecated = true]; + + // Raw output data produced by this execution. + // DEPRECATED. Use GetExecutionData to fetch output data instead. + core.OutputData full_outputs = 15; } // Inputs computed and passed for execution. @@ -375,10 +385,18 @@ message WorkflowExecutionGetDataResponse { UrlBlob inputs = 2 [deprecated = true]; // Full_inputs will only be populated if they are under a configured size threshold. - core.LiteralMap full_inputs = 3; + // Deprecated: Please use input_data instead. + core.LiteralMap full_inputs = 3 [deprecated = true]; // Full_outputs will only be populated if they are under a configured size threshold. - core.LiteralMap full_outputs = 4; + // Deprecated: Please use output_data instead. + core.LiteralMap full_outputs = 4 [deprecated = true]; + + // InputData will only be populated if they are under a configured size threshold. + core.InputData input_data = 5; + + // OutputData will only be populated if they are under a configured size threshold. + core.OutputData output_data = 6; } // The state of the execution is used to control its visibility in the UI/CLI. diff --git a/flyteidl/protos/flyteidl/admin/launch_plan.proto b/flyteidl/protos/flyteidl/admin/launch_plan.proto index 4be8dedb91..e769ffb91a 100644 --- a/flyteidl/protos/flyteidl/admin/launch_plan.proto +++ b/flyteidl/protos/flyteidl/admin/launch_plan.proto @@ -93,7 +93,8 @@ message LaunchPlanSpec { // Fixed, non-overridable inputs for the Launch Plan. // These can not be overridden when an execution is created with this launch plan. - core.LiteralMap fixed_inputs = 4; + // Deprecated: Please use fixec_input_data instead + core.LiteralMap fixed_inputs = 4 [deprecated = true]; // String to indicate the role to use to execute the workflow underneath string role = 5 [deprecated = true]; @@ -139,6 +140,10 @@ message LaunchPlanSpec { // Execution environment assignments to be set for the execution. repeated core.ExecutionEnvAssignment execution_env_assignments = 22; + + // Fixed, non-overridable inputs for the Launch Plan. + // These can not be overridden when an execution is created with this launch plan. + core.InputData fixed_input_data = 23; } // Values computed by the flyte platform after launch plan registration. diff --git a/flyteidl/protos/flyteidl/admin/node_execution.proto b/flyteidl/protos/flyteidl/admin/node_execution.proto index 411201ea45..d7ad33bba5 100644 --- a/flyteidl/protos/flyteidl/admin/node_execution.proto +++ b/flyteidl/protos/flyteidl/admin/node_execution.proto @@ -144,6 +144,9 @@ message NodeExecutionClosure { // Raw output data produced by this node execution. // DEPRECATED. Use GetNodeExecutionData to fetch output data instead. core.LiteralMap output_data = 10 [deprecated = true]; + + // Raw output data produced by this node execution. + core.OutputData full_outputs = 13; } // The last recorded phase for this node execution. @@ -224,10 +227,18 @@ message NodeExecutionGetDataResponse { UrlBlob outputs = 2 [deprecated = true]; // Full_inputs will only be populated if they are under a configured size threshold. - core.LiteralMap full_inputs = 3; + // Deprecated: Please use input_data instead. + core.LiteralMap full_inputs = 3 [deprecated = true]; + + // Full_outputs will only be populated if they are under a configured size threshold. + // Deprecated: Please use output_data instead. + core.LiteralMap full_outputs = 4 [deprecated = true]; + + // InputData will only be populated if they are under a configured size threshold. + core.InputData input_data = 5; - // Full_outputs will only be populated if they are under a configured size threshold. - core.LiteralMap full_outputs = 4; + // OutputData will only be populated if they are under a configured size threshold. + core.OutputData output_data = 6; // 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; diff --git a/flyteidl/protos/flyteidl/admin/task_execution.proto b/flyteidl/protos/flyteidl/admin/task_execution.proto index 54d2ff1e61..1f6a563eb2 100644 --- a/flyteidl/protos/flyteidl/admin/task_execution.proto +++ b/flyteidl/protos/flyteidl/admin/task_execution.proto @@ -86,6 +86,9 @@ message TaskExecutionClosure { // Raw output data produced by this task execution. // DEPRECATED. Use GetTaskExecutionData to fetch output data instead. core.LiteralMap output_data = 12 [deprecated = true]; + + // Raw output data produced by this task execution. + core.OutputData full_outputs = 19; } // The last recorded phase for this task execution. @@ -157,10 +160,18 @@ message TaskExecutionGetDataResponse { UrlBlob outputs = 2 [deprecated = true]; // Full_inputs will only be populated if they are under a configured size threshold. - core.LiteralMap full_inputs = 3; + // Deprecated: Please use input_data instead. + core.LiteralMap full_inputs = 3 [deprecated = true]; // Full_outputs will only be populated if they are under a configured size threshold. - core.LiteralMap full_outputs = 4; + // Deprecated: Please use output_data instead. + core.LiteralMap full_outputs = 4 [deprecated = true]; + + // InputData will only be populated if they are under a configured size threshold. + core.InputData input_data = 6; + + // OutputData will only be populated if they are under a configured size threshold. + core.OutputData output_data = 7; // flyte tiny url to fetch a core.LiteralMap of task execution's IO // Deck will be empty for task diff --git a/flyteidl/protos/flyteidl/core/literals.proto b/flyteidl/protos/flyteidl/core/literals.proto index f886873ffb..3e4461ab12 100644 --- a/flyteidl/protos/flyteidl/core/literals.proto +++ b/flyteidl/protos/flyteidl/core/literals.proto @@ -123,6 +123,20 @@ message LiteralMap { map literals = 1; } +// InputData represents the inputs to a task or workflow. It's an envelope that contains a map of input variables to +// their values. +message InputData { + // A map of input variables to their values. + LiteralMap inputs = 1; +} + +// OutputData represents the outputs of a task or workflow. It's an envelope that contains a map of output variables to +// their values. +message OutputData { + // A map of output variables to their values. + LiteralMap outputs = 1; +} + // A collection of BindingData items. message BindingDataCollection { repeated BindingData bindings = 1; diff --git a/flyteidl/protos/flyteidl/event/event.proto b/flyteidl/protos/flyteidl/event/event.proto index 640b4804e9..cafe6071db 100644 --- a/flyteidl/protos/flyteidl/event/event.proto +++ b/flyteidl/protos/flyteidl/event/event.proto @@ -35,8 +35,14 @@ message WorkflowExecutionEvent { core.ExecutionError error = 6; // Raw output data produced by this workflow execution. - core.LiteralMap output_data = 7; + // Deprecated: please use output_data instead + core.LiteralMap deprecated_output_data = 7 [deprecated = true]; + + // Raw output data produced by this workflow execution. + core.OutputData output_data = 8; } + + int32 event_version = 9; } message NodeExecutionEvent { @@ -56,7 +62,11 @@ message NodeExecutionEvent { string input_uri = 5; // Raw input data consumed by this node execution. - core.LiteralMap input_data = 20; + // Deprecated: please use input_data instead + core.LiteralMap deprecated_input_data = 20 [deprecated = true]; + + // Raw input data consumed by this node execution. + core.InputData input_data = 25; } oneof output_result { @@ -67,8 +77,12 @@ message NodeExecutionEvent { // Error information for the execution core.ExecutionError error = 7; - // Raw output data produced by this node execution. - core.LiteralMap output_data = 15; + // Raw output data produced by this workflow execution. + // Deprecated: please use output_data instead + core.LiteralMap deprecated_output_data = 15 [deprecated = true]; + + // Raw output data produced by this workflow execution. + core.OutputData output_data = 26; } // Additional metadata to do with this event's node target based @@ -210,8 +224,12 @@ message TaskExecutionEvent { // including Cloud source provider. ie., s3://... string input_uri = 8; - // Raw input data consumed by this task execution. - core.LiteralMap input_data = 19; + // Raw input data consumed by this node execution. + // Deprecated: please use input_data instead + core.LiteralMap deprecated_input_data = 19 [deprecated = true]; + + // Raw input data consumed by this node execution. + core.InputData input_data = 23; } oneof output_result { @@ -222,8 +240,12 @@ message TaskExecutionEvent { // Error information for the execution core.ExecutionError error = 10; - // Raw output data produced by this task execution. - core.LiteralMap output_data = 17; + // Raw output data produced by this workflow execution. + // Deprecated: please use output_data instead + core.LiteralMap deprecated_output_data = 17 [deprecated = true]; + + // Raw output data produced by this workflow execution. + core.OutputData output_data = 22; } // Custom data that the task plugin sends back. This is extensible to allow various plugins in the system. diff --git a/flyteidl/protos/flyteidl/service/dataproxy.proto b/flyteidl/protos/flyteidl/service/dataproxy.proto index 86c7c4d977..8a81958653 100644 --- a/flyteidl/protos/flyteidl/service/dataproxy.proto +++ b/flyteidl/protos/flyteidl/service/dataproxy.proto @@ -158,6 +158,12 @@ message GetDataResponse { // Single literal will be returned. This is returned when the user/url requests a specific output or input // by name. See the o3 example above. core.Literal literal = 3; + + // InputData is returned when the user/url requests the input data for an execution. + core.InputData input_data = 4; + + // OutputData is returned when the user/url requests the output data for an execution. + core.OutputData output_data = 5; } } diff --git a/flyteidl/protos/flyteidl/service/external_plugin_service.proto b/flyteidl/protos/flyteidl/service/external_plugin_service.proto index a3035290e2..6391a69678 100644 --- a/flyteidl/protos/flyteidl/service/external_plugin_service.proto +++ b/flyteidl/protos/flyteidl/service/external_plugin_service.proto @@ -31,11 +31,16 @@ message TaskCreateRequest { // The inputs required to start the execution. All required inputs must be // included in this map. If not required and not provided, defaults apply. // +optional - core.LiteralMap inputs = 1; + // Deprecated: please use inputs instead. + core.LiteralMap deprecated_inputs = 1 [deprecated = true]; // Template of the task that encapsulates all the metadata of the task. core.TaskTemplate template = 2; // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) string output_prefix = 3; + // The inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + core.InputData inputs = 4; } // Represents a create response structure. @@ -61,7 +66,13 @@ message TaskGetResponse { // The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a // Structured dataset pointing to the query result table. // +optional - core.LiteralMap outputs = 2; + // Deprecated: Please use outputs instead + core.LiteralMap deprecated_outputs = 2; + + // The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + // Structured dataset pointing to the query result table. + // +optional + core.OutputData outputs = 3; } // A message used to delete a task. diff --git a/flyteplugins/Makefile b/flyteplugins/Makefile index 9861909e96..2bd8e5260a 100755 --- a/flyteplugins/Makefile +++ b/flyteplugins/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=flyteplugins -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/docker_build/Makefile include ../boilerplate/flyte/golang_test_targets/Makefile diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl.go b/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl.go index c056989905..2706a06b6f 100644 --- a/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl.go +++ b/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl.go @@ -40,15 +40,17 @@ func consistentHash(str string) (string, error) { } func hashInputs(ctx context.Context, key Key) (string, error) { - inputs := &core.LiteralMap{} + inputs := &core.InputData{} if key.TypedInterface.Inputs != nil { retInputs, err := key.InputReader.Get(ctx) if err != nil { return "", err } + inputs = retInputs } - return HashLiteralMap(ctx, inputs, key.CacheIgnoreInputVars) + + return HashInputData(ctx, inputs, key.CacheIgnoreInputVars) } func (c AsyncClientImpl) Download(ctx context.Context, requests ...DownloadRequest) (outputFuture DownloadFuture, err error) { diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl_test.go b/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl_test.go index db32841ee7..fc27260938 100644 --- a/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/catalog/async_client_impl_test.go @@ -27,15 +27,17 @@ var exampleInterface = &core.TypedInterface{ }, }, } -var input1 = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "a": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 1, +var input1 = &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "a": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 1, + }, }, }, }, @@ -44,15 +46,17 @@ var input1 = &core.LiteralMap{ }, }, } -var input2 = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "a": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 2, +var input2 = &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "a": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 2, + }, }, }, }, diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/hashing.go b/flyteplugins/go/tasks/pluginmachinery/catalog/hashing.go index 4cc2fbd5cd..17060eb622 100644 --- a/flyteplugins/go/tasks/pluginmachinery/catalog/hashing.go +++ b/flyteplugins/go/tasks/pluginmachinery/catalog/hashing.go @@ -57,8 +57,10 @@ func hashify(literal *core.Literal) *core.Literal { return literal } -func HashLiteralMap(ctx context.Context, literalMap *core.LiteralMap, cacheIgnoreInputVars []string) (string, error) { - if literalMap == nil || len(literalMap.Literals) == 0 { +func HashInputData(ctx context.Context, inputData *core.InputData, cacheIgnoreInputVars []string) (string, error) { + // TODO (haytham): We should hash everything in the inputData proto. + literalMap := inputData.GetInputs() + if literalMap == nil || len(literalMap.GetLiterals()) == 0 { literalMap = &emptyLiteralMap } @@ -70,6 +72,7 @@ func HashLiteralMap(ctx context.Context, literalMap *core.LiteralMap, cacheIgnor hashifiedLiteralMap[name] = hashify(literal) } } + hashifiedInputs := &core.LiteralMap{ Literals: hashifiedLiteralMap, } diff --git a/flyteplugins/go/tasks/pluginmachinery/catalog/hashing_test.go b/flyteplugins/go/tasks/pluginmachinery/catalog/hashing_test.go index 51f2cdfe27..ce6cac81b0 100644 --- a/flyteplugins/go/tasks/pluginmachinery/catalog/hashing_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/catalog/hashing_test.go @@ -616,8 +616,10 @@ func TestHashLiteralMap_LiteralsWithHashSet(t *testing.T) { assert.Equal(t, tt.expectedLiteral, hashify(tt.literal)) // Double-check that generating a tag is successful - literalMap := &core.LiteralMap{Literals: map[string]*core.Literal{"o0": tt.literal}} - hash, err := HashLiteralMap(context.TODO(), literalMap, nil) + literalMap := &core.InputData{ + Inputs: &core.LiteralMap{Literals: map[string]*core.Literal{"o0": tt.literal}}, + } + hash, err := HashInputData(context.TODO(), literalMap, nil) assert.NoError(t, err) assert.NotEmpty(t, hash) }) @@ -629,25 +631,31 @@ func TestInputValueSorted(t *testing.T) { literalMap, err := coreutils.MakeLiteralMap(map[string]interface{}{"1": 1, "2": 2}) assert.NoError(t, err) - hash, err := HashLiteralMap(context.TODO(), literalMap, nil) + inputData := &core.InputData{ + Inputs: literalMap, + } + hash, err := HashInputData(context.TODO(), inputData, nil) assert.NoError(t, err) assert.Equal(t, "GQid5LjHbakcW68DS3P2jp80QLbiF0olFHF2hTh5bg8", hash) literalMap, err = coreutils.MakeLiteralMap(map[string]interface{}{"2": 2, "1": 1}) assert.NoError(t, err) - hashDupe, err := HashLiteralMap(context.TODO(), literalMap, nil) + inputData = &core.InputData{ + Inputs: literalMap, + } + hashDupe, err := HashInputData(context.TODO(), inputData, nil) assert.NoError(t, err) assert.Equal(t, hashDupe, hash) } // Ensure that empty inputs are hashed the same way func TestNoInputValues(t *testing.T) { - hash, err := HashLiteralMap(context.TODO(), nil, nil) + hash, err := HashInputData(context.TODO(), nil, nil) assert.NoError(t, err) assert.Equal(t, "GKw-c0PwFokMUQ6T-TUmEWnZ4_VlQ2Qpgw-vCTT0-OQ", hash) - hashDupe, err := HashLiteralMap(context.TODO(), &core.LiteralMap{Literals: nil}, nil) + hashDupe, err := HashInputData(context.TODO(), &core.InputData{Inputs: &core.LiteralMap{Literals: nil}}, nil) assert.NoError(t, err) assert.Equal(t, "GKw-c0PwFokMUQ6T-TUmEWnZ4_VlQ2Qpgw-vCTT0-OQ", hashDupe) assert.Equal(t, hashDupe, hash) @@ -655,17 +663,19 @@ func TestNoInputValues(t *testing.T) { // Ensure that empty inputs are hashed the same way func TestCacheIgnoreInputVars(t *testing.T) { - literalMap, err := coreutils.MakeLiteralMap(map[string]interface{}{"1": 1, "2": 2}) - assert.NoError(t, err) + inputData := &core.InputData{ + Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"1": 1, "2": 2}).GetMap(), + } - hash, err := HashLiteralMap(context.TODO(), literalMap, nil) + hash, err := HashInputData(context.TODO(), inputData, nil) assert.NoError(t, err) assert.Equal(t, "GQid5LjHbakcW68DS3P2jp80QLbiF0olFHF2hTh5bg8", hash) - literalMap, err = coreutils.MakeLiteralMap(map[string]interface{}{"2": 2, "1": 1, "3": 3}) - assert.NoError(t, err) + inputData = &core.InputData{ + Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"2": 2, "1": 1, "3": 3}).GetMap(), + } - hashDupe, err := HashLiteralMap(context.TODO(), literalMap, []string{"3"}) + hashDupe, err := HashInputData(context.TODO(), inputData, []string{"3"}) assert.NoError(t, err) assert.Equal(t, hashDupe, hash) } diff --git a/flyteplugins/go/tasks/pluginmachinery/core/mocks/runtime_metadata.go b/flyteplugins/go/tasks/pluginmachinery/core/mocks/runtime_metadata.go new file mode 100644 index 0000000000..4837c6a22d --- /dev/null +++ b/flyteplugins/go/tasks/pluginmachinery/core/mocks/runtime_metadata.go @@ -0,0 +1,109 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + core "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + mock "github.com/stretchr/testify/mock" +) + +// RuntimeMetadata is an autogenerated mock type for the RuntimeMetadata type +type RuntimeMetadata struct { + mock.Mock +} + +type RuntimeMetadata_GetFlavor struct { + *mock.Call +} + +func (_m RuntimeMetadata_GetFlavor) Return(_a0 string) *RuntimeMetadata_GetFlavor { + return &RuntimeMetadata_GetFlavor{Call: _m.Call.Return(_a0)} +} + +func (_m *RuntimeMetadata) OnGetFlavor() *RuntimeMetadata_GetFlavor { + c_call := _m.On("GetFlavor") + return &RuntimeMetadata_GetFlavor{Call: c_call} +} + +func (_m *RuntimeMetadata) OnGetFlavorMatch(matchers ...interface{}) *RuntimeMetadata_GetFlavor { + c_call := _m.On("GetFlavor", matchers...) + return &RuntimeMetadata_GetFlavor{Call: c_call} +} + +// GetFlavor provides a mock function with given fields: +func (_m *RuntimeMetadata) GetFlavor() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + +type RuntimeMetadata_GetType struct { + *mock.Call +} + +func (_m RuntimeMetadata_GetType) Return(_a0 core.RuntimeMetadata_RuntimeType) *RuntimeMetadata_GetType { + return &RuntimeMetadata_GetType{Call: _m.Call.Return(_a0)} +} + +func (_m *RuntimeMetadata) OnGetType() *RuntimeMetadata_GetType { + c_call := _m.On("GetType") + return &RuntimeMetadata_GetType{Call: c_call} +} + +func (_m *RuntimeMetadata) OnGetTypeMatch(matchers ...interface{}) *RuntimeMetadata_GetType { + c_call := _m.On("GetType", matchers...) + return &RuntimeMetadata_GetType{Call: c_call} +} + +// GetType provides a mock function with given fields: +func (_m *RuntimeMetadata) GetType() core.RuntimeMetadata_RuntimeType { + ret := _m.Called() + + var r0 core.RuntimeMetadata_RuntimeType + if rf, ok := ret.Get(0).(func() core.RuntimeMetadata_RuntimeType); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(core.RuntimeMetadata_RuntimeType) + } + + return r0 +} + +type RuntimeMetadata_GetVersion struct { + *mock.Call +} + +func (_m RuntimeMetadata_GetVersion) Return(_a0 string) *RuntimeMetadata_GetVersion { + return &RuntimeMetadata_GetVersion{Call: _m.Call.Return(_a0)} +} + +func (_m *RuntimeMetadata) OnGetVersion() *RuntimeMetadata_GetVersion { + c_call := _m.On("GetVersion") + return &RuntimeMetadata_GetVersion{Call: c_call} +} + +func (_m *RuntimeMetadata) OnGetVersionMatch(matchers ...interface{}) *RuntimeMetadata_GetVersion { + c_call := _m.On("GetVersion", matchers...) + return &RuntimeMetadata_GetVersion{Call: c_call} +} + +// GetVersion provides a mock function with given fields: +func (_m *RuntimeMetadata) GetVersion() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} diff --git a/flyteplugins/go/tasks/pluginmachinery/core/template/template.go b/flyteplugins/go/tasks/pluginmachinery/core/template/template.go index 7a787c5590..5f4cb9cc42 100644 --- a/flyteplugins/go/tasks/pluginmachinery/core/template/template.go +++ b/flyteplugins/go/tasks/pluginmachinery/core/template/template.go @@ -27,6 +27,7 @@ import ( "github.com/golang/protobuf/ptypes" "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/util/version" idlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" @@ -38,16 +39,20 @@ var alphaNumericOnly = regexp.MustCompile("[^a-zA-Z0-9_]+") var startsWithAlpha = regexp.MustCompile("^[^a-zA-Z_]+") // Regexes for Supported templates -var inputFileRegex = regexp.MustCompile(`(?i){{\s*[\.$]Input\s*}}`) -var inputPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]InputPrefix\s*}}`) -var outputRegex = regexp.MustCompile(`(?i){{\s*[\.$]OutputPrefix\s*}}`) -var inputVarRegex = regexp.MustCompile(`(?i){{\s*[\.$]Inputs\.(?P[^}\s]+)\s*}}`) -var rawOutputDataPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]RawOutputDataPrefix\s*}}`) -var perRetryUniqueKey = regexp.MustCompile(`(?i){{\s*[\.$]PerRetryUniqueKey\s*}}`) -var taskTemplateRegex = regexp.MustCompile(`(?i){{\s*[\.$]TaskTemplatePath\s*}}`) -var prevCheckpointPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]PrevCheckpointPrefix\s*}}`) -var currCheckpointPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]CheckpointOutputPrefix\s*}}`) -var namespaceRegex = regexp.MustCompile(`(?i){{\s*[\.$]Namespace\s*}}`) +var ( + inputFileRegex = regexp.MustCompile(`(?i){{\s*[\.$]Input\s*}}`) + inputPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]InputPrefix\s*}}`) + outputRegex = regexp.MustCompile(`(?i){{\s*[\.$]OutputPrefix\s*}}`) + inputVarRegex = regexp.MustCompile(`(?i){{\s*[\.$]Inputs\.(?P[^}\s]+)\s*}}`) + rawOutputDataPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]RawOutputDataPrefix\s*}}`) + perRetryUniqueKey = regexp.MustCompile(`(?i){{\s*[\.$]PerRetryUniqueKey\s*}}`) + taskTemplateRegex = regexp.MustCompile(`(?i){{\s*[\.$]TaskTemplatePath\s*}}`) + prevCheckpointPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]PrevCheckpointPrefix\s*}}`) + currCheckpointPrefixRegex = regexp.MustCompile(`(?i){{\s*[\.$]CheckpointOutputPrefix\s*}}`) + namespaceRegex = regexp.MustCompile(`(?i){{\s*[\.$]Namespace\s*}}`) + // TODO(haytham): write down the right version once we release flytekit + inputDataWrapperMinVersion = version.MustParseSemantic("v1.11.0") +) type ErrorCollection struct { Errors []error @@ -62,12 +67,19 @@ func (e ErrorCollection) Error() string { return sb.String() } +type RuntimeMetadata interface { + GetType() idlCore.RuntimeMetadata_RuntimeType + GetVersion() string + GetFlavor() string +} + // Parameters struct is used by the Templating Engine to replace the templated parameters type Parameters struct { TaskExecMetadata core.TaskExecutionMetadata Inputs io.InputReader OutputPath io.OutputFilePaths Task core.TaskTemplatePath + Runtime RuntimeMetadata IncludeConsoleURL bool } @@ -104,10 +116,22 @@ func Render(ctx context.Context, inputTemplate []string, params Parameters) ([]s return res, nil } -func render(ctx context.Context, inputTemplate string, params Parameters, perRetryKey string) (string, error) { +func IsInputOutputWrapperSupported(ctx context.Context, metadata RuntimeMetadata) bool { + if metadata != nil && metadata.GetType() == idlCore.RuntimeMetadata_FLYTE_SDK { + v, err := version.ParseSemantic(metadata.GetVersion()) + if err != nil { + logger.Warnf(ctx, "Failed to parse version [%v] to determine the input path behavior. Proceeding with InputDataWrapper format.", metadata.GetVersion()) + } else if v.LessThan(inputDataWrapperMinVersion) { + return false + } + } + + // TODO: Invert this after updating other SDKs + return false +} - val := inputFileRegex.ReplaceAllString(inputTemplate, params.Inputs.GetInputPath().String()) - val = outputRegex.ReplaceAllString(val, params.OutputPath.GetOutputPrefixPath().String()) +func render(ctx context.Context, inputTemplate string, params Parameters, perRetryKey string) (string, error) { + val := outputRegex.ReplaceAllString(inputTemplate, params.OutputPath.GetOutputPrefixPath().String()) val = inputPrefixRegex.ReplaceAllString(val, params.Inputs.GetInputPrefixPath().String()) val = rawOutputDataPrefixRegex.ReplaceAllString(val, params.OutputPath.GetRawOutputPrefix().String()) prevCheckpoint := params.OutputPath.GetPreviousCheckpointsPrefix().String() @@ -118,6 +142,23 @@ func render(ctx context.Context, inputTemplate string, params Parameters, perRet val = currCheckpointPrefixRegex.ReplaceAllString(val, params.OutputPath.GetCheckpointPrefix().String()) val = perRetryUniqueKey.ReplaceAllString(val, perRetryKey) + // Input format has been updated, check if flytekit has been updated to the new version, the GetInputPath() + // itself will upload the input (can be expensive) to the remote location + if inputFileRegex.MatchString(val) { + useNewFormat := IsInputOutputWrapperSupported(ctx, params.Runtime) + if useNewFormat { + val = inputFileRegex.ReplaceAllString(val, params.Inputs.GetInputDataPath().String()) + } else { + p, err := params.Inputs.GetInputPath(ctx) + if err != nil { + logger.Debugf(ctx, "Failed to substitute Input Template reference - reason %s", err) + return "", fmt.Errorf("failed to substitute input template reference - reason %w", err) + } + + val = inputFileRegex.ReplaceAllString(val, p.String()) + } + } + // For Task template, we will replace only if there is a match. This is because, task template replacement // may be expensive, as we may offload if taskTemplateRegex.MatchString(val) { @@ -136,7 +177,7 @@ func render(ctx context.Context, inputTemplate string, params Parameters, perRet if err != nil { return val, errors.Wrapf(err, "unable to read inputs") } - if inputs == nil || inputs.Literals == nil { + if inputs == nil || inputs.GetInputs().GetLiterals() == nil { return val, nil } @@ -159,8 +200,8 @@ func render(ctx context.Context, inputTemplate string, params Parameters, perRet return val, nil } -func transformVarNameToStringVal(ctx context.Context, varName string, inputs *idlCore.LiteralMap) (string, error) { - inputVal, exists := inputs.Literals[varName] +func transformVarNameToStringVal(ctx context.Context, varName string, inputs *idlCore.InputData) (string, error) { + inputVal, exists := inputs.GetInputs().GetLiterals()[varName] if !exists { return "", fmt.Errorf("requested input is not found [%s]", varName) } diff --git a/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go b/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go index 956ec33cfd..595eeb723f 100644 --- a/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/core/template/template_test.go @@ -26,15 +26,18 @@ func (d dummyInputReader) GetInputPrefixPath() storage.DataReference { return d.inputPrefix } -func (d dummyInputReader) GetInputPath() storage.DataReference { +func (d dummyInputReader) GetInputPath(ctx context.Context) (storage.DataReference, error) { + return d.inputPath, nil +} +func (d dummyInputReader) GetInputDataPath() storage.DataReference { return d.inputPath } -func (d dummyInputReader) Get(ctx context.Context) (*core.LiteralMap, error) { +func (d dummyInputReader) Get(ctx context.Context) (*core.InputData, error) { if d.inputErr { return nil, fmt.Errorf("expected input fetch error") } - return d.inputs, nil + return &core.InputData{Inputs: d.inputs}, nil } type dummyOutputPaths struct { @@ -96,6 +99,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { Inputs: in, OutputPath: out, Task: nil, + Runtime: &core.RuntimeMetadata{}, } t.Run("nothing to substitute", func(t *testing.T) { actual, err := Render(context.TODO(), []string{ @@ -132,6 +136,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { Inputs: in, OutputPath: out, Task: nil, + Runtime: &core.RuntimeMetadata{}, } actual, err := Render(context.TODO(), []string{ "hello", @@ -212,6 +217,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { Inputs: in, OutputPath: out, Task: nil, + Runtime: &core.RuntimeMetadata{}, } actual, err := Render(context.TODO(), []string{ "hello", @@ -468,6 +474,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { prevCheckpointPath: "s3://prev-checkpoint/prefix", checkpointPath: "s3://new-checkpoint/prefix", }, + Runtime: &core.RuntimeMetadata{}, } actual, err := Render(context.TODO(), []string{ "hello", @@ -494,6 +501,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { prevCheckpointPath: "", checkpointPath: "s3://new-checkpoint/prefix", }, + Runtime: &core.RuntimeMetadata{}, } actual, err := Render(context.TODO(), []string{ "hello", @@ -524,6 +532,7 @@ func TestReplaceTemplateCommandArgs(t *testing.T) { prevCheckpointPath: "s3://prev-checkpoint/prefix", checkpointPath: "s3://new-checkpoint/prefix", }, + Runtime: &core.RuntimeMetadata{}, } actual, err := Render(context.TODO(), []string{ "hello", diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go index 32d2e0180e..639f26857f 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper.go @@ -8,6 +8,7 @@ import ( "k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/validation" + idlcore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/errors" pluginscore "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/template" @@ -190,25 +191,19 @@ func ApplyResourceOverrides(resources, platformResources v1.ResourceRequirements } // BuildRawContainer constructs a Container based on the definition passed by the TaskExecutionContext. -func BuildRawContainer(ctx context.Context, tCtx pluginscore.TaskExecutionContext) (*v1.Container, error) { - taskTemplate, err := tCtx.TaskReader().Read(ctx) - if err != nil { - logger.Warnf(ctx, "failed to read task information when trying to construct container, err: %s", err.Error()) - return nil, err - } - +func BuildRawContainer(taskTemplate *idlcore.TaskTemplate, tCtx pluginscore.TaskExecutionMetadata) (*v1.Container, error) { // validate arguments taskContainer := taskTemplate.GetContainer() if taskContainer == nil { return nil, errors.Errorf(errors.BadTaskSpecification, "unable to create container with no definition in TaskTemplate") } - if tCtx.TaskExecutionMetadata().GetOverrides() == nil || tCtx.TaskExecutionMetadata().GetOverrides().GetResources() == nil { + if tCtx.GetOverrides() == nil || tCtx.GetOverrides().GetResources() == nil { return nil, errors.Errorf(errors.BadTaskSpecification, "resource requirements not found for container task, required!") } // Make the container name the same as the pod name, unless it violates K8s naming conventions // Container names are subject to the DNS-1123 standard - containerName := tCtx.TaskExecutionMetadata().GetTaskExecutionID().GetGeneratedName() + containerName := tCtx.GetTaskExecutionID().GetGeneratedName() if errs := validation.IsDNS1123Label(containerName); len(errs) > 0 { containerName = rand.String(4) } @@ -235,8 +230,14 @@ func BuildRawContainer(ctx context.Context, tCtx pluginscore.TaskExecutionContex // ToK8sContainer builds a Container based on the definition passed by the TaskExecutionContext. This involves applying // all Flyte configuration including k8s plugins and resource requests. func ToK8sContainer(ctx context.Context, tCtx pluginscore.TaskExecutionContext) (*v1.Container, error) { + taskTemplate, err := tCtx.TaskReader().Read(ctx) + if err != nil { + logger.Warnf(ctx, "failed to read task information when trying to construct container, err: %s", err.Error()) + return nil, err + } + // build raw container - container, err := BuildRawContainer(ctx, tCtx) + container, err := BuildRawContainer(taskTemplate, tCtx.TaskExecutionMetadata()) if err != nil { return nil, err } @@ -251,6 +252,7 @@ func ToK8sContainer(ctx context.Context, tCtx pluginscore.TaskExecutionContext) Inputs: tCtx.InputReader(), OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), } if err := AddFlyteCustomizationsToContainer(ctx, templateParameters, ResourceCustomizationModeMergeExistingResources, container); err != nil { @@ -334,6 +336,14 @@ func AddFlyteCustomizationsToContainer(ctx context.Context, parameters template. container.Resources = ApplyResourceOverrides(container.Resources, *platformResources, !assignIfUnset) } + useNewFormat := template.IsInputOutputWrapperSupported(ctx, parameters.Runtime) + if useNewFormat { + container.Env = append(container.Env, v1.EnvVar{ + Name: "FLYTE_INPUT_OUTPUT_FORMAT", + Value: "VERSION_3", + }) + } + logger.Infof(ctx, "Adjusted container resources [%v]", container.Resources) return nil } diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go index 4e609c72b2..cd836e83e9 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/container_helper_test.go @@ -377,9 +377,9 @@ func TestToK8sContainer(t *testing.T) { taskReader.On("Read", mock.Anything).Return(taskTemplate, nil) inputReader := &mocks2.InputReader{} - inputReader.OnGetInputPath().Return(storage.DataReference("test-data-reference")) + inputReader.OnGetInputDataPath().Return(storage.DataReference("test-data-reference")) inputReader.OnGetInputPrefixPath().Return(storage.DataReference("test-data-reference-prefix")) - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) outputWriter := &mocks2.OutputWriter{} outputWriter.OnGetOutputPrefixPath().Return("") @@ -483,7 +483,8 @@ func getTemplateParametersForTest(resourceRequirements, platformResources *v1.Re mockInputReader := mocks2.InputReader{} mockInputPath := storage.DataReference("s3://input/path") - mockInputReader.OnGetInputPath().Return(mockInputPath) + mockInputReader.OnGetInputDataPath().Return(mockInputPath) + mockInputReader.OnGetInputPathMatch(mock.Anything).Return(mockInputPath, nil) mockInputReader.OnGetInputPrefixPath().Return(mockInputPath) mockInputReader.On("Get", mock.Anything).Return(nil, nil) @@ -499,6 +500,7 @@ func getTemplateParametersForTest(resourceRequirements, platformResources *v1.Re Inputs: &mockInputReader, OutputPath: &mockOutputPath, IncludeConsoleURL: includeConsoleURL, + Runtime: &core.RuntimeMetadata{}, } } @@ -521,8 +523,8 @@ func TestAddFlyteCustomizationsToContainer(t *testing.T) { } err := AddFlyteCustomizationsToContainer(context.TODO(), templateParameters, ResourceCustomizationModeAssignResources, container) assert.NoError(t, err) - assert.EqualValues(t, container.Args, []string{"s3://output/path"}) - assert.EqualValues(t, container.Command, []string{"s3://input/path"}) + assert.EqualValues(t, []string{"s3://output/path"}, container.Args) + assert.EqualValues(t, []string{"s3://input/path"}, container.Command) assert.Len(t, container.Resources.Limits, 3) assert.Len(t, container.Resources.Requests, 3) assert.Len(t, container.Env, 12) diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go index 8e89e58d3d..d6fe75ab1f 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot.go @@ -229,7 +229,7 @@ func AddCoPilotToPod(ctx context.Context, cfg config.FlyteCoPilotConfig, coPilot coPilotPod.Volumes = append(coPilotPod.Volumes, DataVolume(cfg.InputVolumeName, size)) // Lets add the Inputs init container - args, err := DownloadCommandArgs(inputPaths.GetInputPath(), outputPaths.GetOutputPrefixPath(), inPath, format, iFace.Inputs) + args, err := DownloadCommandArgs(inputPaths.GetInputDataPath(), outputPaths.GetOutputPrefixPath(), inPath, format, iFace.Inputs) if err != nil { return err } diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go index 09a9fbf52b..7d0a1d6db4 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/copilot_test.go @@ -507,7 +507,7 @@ func TestAddCoPilotToPod(t *testing.T) { inputPaths := &pluginsIOMock.InputFilePaths{} inputs := "/base/inputs" inputPaths.OnGetInputPrefixPath().Return(storage.DataReference(inputs)) - inputPaths.OnGetInputPath().Return(storage.DataReference(inputs + "/inputs.pb")) + inputPaths.OnGetInputDataPath().Return(storage.DataReference(inputs + "/inputs.pb")) opath := &pluginsIOMock.OutputFilePaths{} opath.OnGetRawOutputPrefix().Return("/raw") diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go index db62aeb4e7..c8782dacc3 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper.go @@ -271,8 +271,7 @@ func BuildRawPod(ctx context.Context, tCtx pluginsCore.TaskExecutionContext) (*v switch target := taskTemplate.GetTarget().(type) { case *core.TaskTemplate_Container: - // handles tasks defined by a single container - c, err := BuildRawContainer(ctx, tCtx) + c, err := BuildRawContainer(taskTemplate, tCtx.TaskExecutionMetadata()) if err != nil { return nil, nil, "", err } @@ -345,6 +344,7 @@ func ApplyFlytePodConfiguration(ctx context.Context, tCtx pluginsCore.TaskExecut OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), TaskExecMetadata: tCtx.TaskExecutionMetadata(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), IncludeConsoleURL: hasExternalLinkType(taskTemplate), } diff --git a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go index 0c2e9ef5cc..392e4fd405 100644 --- a/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/flytek8s/pod_helper_test.go @@ -75,9 +75,10 @@ func dummyTaskTemplate() *core.TaskTemplate { func dummyInputReader() io.InputReader { inputReader := &pluginsIOMock.InputReader{} - inputReader.OnGetInputPath().Return(storage.DataReference("test-data-reference")) + inputReader.OnGetInputDataPath().Return(storage.DataReference("test-data-reference")) + inputReader.OnGetInputPathMatch(mock.Anything).Return("test-data-reference", nil) inputReader.OnGetInputPrefixPath().Return(storage.DataReference("test-data-reference-prefix")) - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) return inputReader } diff --git a/flyteplugins/go/tasks/pluginmachinery/io/iface.go b/flyteplugins/go/tasks/pluginmachinery/io/iface.go index f876defe5a..1fbb02612c 100644 --- a/flyteplugins/go/tasks/pluginmachinery/io/iface.go +++ b/flyteplugins/go/tasks/pluginmachinery/io/iface.go @@ -15,8 +15,12 @@ import ( type InputFilePaths interface { // GetInputPrefixPath returns the inputs file path, minus the protobuf file name. GetInputPrefixPath() storage.DataReference - // GetInputPath returns a path for where the protobuf encoded inputs of type `core.LiteralMap` can be found. The returned value is an URN in the configured storage backend - GetInputPath() storage.DataReference + // GetInputPath returns a path for where the protobuf encoded inputs of type `core.LiteralMap` can be found. + // The returned value is a URN in the configured storage backend + GetInputPath(ctx context.Context) (storage.DataReference, error) + // GetInputDataPath returns a path for where the protobuf encoded inputs of type `core.InputData` can be found. + // The returned value is a URN in the configured storage backend + GetInputDataPath() storage.DataReference } // InputReader provides a method to access the inputs for a task execution within the plugin's Task Context @@ -24,7 +28,7 @@ type InputReader interface { InputFilePaths // Get the inputs for this task as a literal map, an error is returned only in case of systemic errors. // No outputs or void is indicated using *core.LiteralMap -> nil - Get(ctx context.Context) (*core.LiteralMap, error) + Get(ctx context.Context) (*core.InputData, error) } // OutputReader provides an abstracted OutputReader interface. The plugins are responsible to provide @@ -40,7 +44,7 @@ type OutputReader interface { // Exists returns true if the output exists false otherwise Exists(ctx context.Context) (bool, error) // Read returns the output -> *core.LiteralMap (nil if void), *ExecutionError if user error when reading the output and error to indicate system problems - Read(ctx context.Context) (*core.LiteralMap, *ExecutionError, error) + Read(ctx context.Context) (*core.OutputData, *ExecutionError, error) // DeckExists checks if the deck file has been generated. DeckExists(ctx context.Context) (bool, error) } diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go index c1bbddeb62..afcae7cb35 100644 --- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go +++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_file_paths.go @@ -3,8 +3,11 @@ package mocks import ( - storage "github.com/flyteorg/flyte/flytestdlib/storage" + context "context" + mock "github.com/stretchr/testify/mock" + + storage "github.com/flyteorg/flyte/flytestdlib/storage" ) // InputFilePaths is an autogenerated mock type for the InputFilePaths type @@ -12,16 +15,48 @@ type InputFilePaths struct { mock.Mock } +type InputFilePaths_GetInputDataPath struct { + *mock.Call +} + +func (_m InputFilePaths_GetInputDataPath) Return(_a0 storage.DataReference) *InputFilePaths_GetInputDataPath { + return &InputFilePaths_GetInputDataPath{Call: _m.Call.Return(_a0)} +} + +func (_m *InputFilePaths) OnGetInputDataPath() *InputFilePaths_GetInputDataPath { + c_call := _m.On("GetInputDataPath") + return &InputFilePaths_GetInputDataPath{Call: c_call} +} + +func (_m *InputFilePaths) OnGetInputDataPathMatch(matchers ...interface{}) *InputFilePaths_GetInputDataPath { + c_call := _m.On("GetInputDataPath", matchers...) + return &InputFilePaths_GetInputDataPath{Call: c_call} +} + +// GetInputDataPath provides a mock function with given fields: +func (_m *InputFilePaths) GetInputDataPath() storage.DataReference { + ret := _m.Called() + + var r0 storage.DataReference + if rf, ok := ret.Get(0).(func() storage.DataReference); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(storage.DataReference) + } + + return r0 +} + type InputFilePaths_GetInputPath struct { *mock.Call } -func (_m InputFilePaths_GetInputPath) Return(_a0 storage.DataReference) *InputFilePaths_GetInputPath { - return &InputFilePaths_GetInputPath{Call: _m.Call.Return(_a0)} +func (_m InputFilePaths_GetInputPath) Return(_a0 storage.DataReference, _a1 error) *InputFilePaths_GetInputPath { + return &InputFilePaths_GetInputPath{Call: _m.Call.Return(_a0, _a1)} } -func (_m *InputFilePaths) OnGetInputPath() *InputFilePaths_GetInputPath { - c_call := _m.On("GetInputPath") +func (_m *InputFilePaths) OnGetInputPath(ctx context.Context) *InputFilePaths_GetInputPath { + c_call := _m.On("GetInputPath", ctx) return &InputFilePaths_GetInputPath{Call: c_call} } @@ -30,18 +65,25 @@ func (_m *InputFilePaths) OnGetInputPathMatch(matchers ...interface{}) *InputFil return &InputFilePaths_GetInputPath{Call: c_call} } -// GetInputPath provides a mock function with given fields: -func (_m *InputFilePaths) GetInputPath() storage.DataReference { - ret := _m.Called() +// GetInputPath provides a mock function with given fields: ctx +func (_m *InputFilePaths) GetInputPath(ctx context.Context) (storage.DataReference, error) { + ret := _m.Called(ctx) var r0 storage.DataReference - if rf, ok := ret.Get(0).(func() storage.DataReference); ok { - r0 = rf() + if rf, ok := ret.Get(0).(func(context.Context) storage.DataReference); ok { + r0 = rf(ctx) } else { r0 = ret.Get(0).(storage.DataReference) } - return r0 + var r1 error + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 } type InputFilePaths_GetInputPrefixPath struct { diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go index ee8ae11bc6..8849fabd9b 100644 --- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go +++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/input_reader.go @@ -21,7 +21,7 @@ type InputReader_Get struct { *mock.Call } -func (_m InputReader_Get) Return(_a0 *core.LiteralMap, _a1 error) *InputReader_Get { +func (_m InputReader_Get) Return(_a0 *core.InputData, _a1 error) *InputReader_Get { return &InputReader_Get{Call: _m.Call.Return(_a0, _a1)} } @@ -36,15 +36,15 @@ func (_m *InputReader) OnGetMatch(matchers ...interface{}) *InputReader_Get { } // Get provides a mock function with given fields: ctx -func (_m *InputReader) Get(ctx context.Context) (*core.LiteralMap, error) { +func (_m *InputReader) Get(ctx context.Context) (*core.InputData, error) { ret := _m.Called(ctx) - var r0 *core.LiteralMap - if rf, ok := ret.Get(0).(func(context.Context) *core.LiteralMap); ok { + var r0 *core.InputData + if rf, ok := ret.Get(0).(func(context.Context) *core.InputData); ok { r0 = rf(ctx) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*core.LiteralMap) + r0 = ret.Get(0).(*core.InputData) } } @@ -58,16 +58,48 @@ func (_m *InputReader) Get(ctx context.Context) (*core.LiteralMap, error) { return r0, r1 } +type InputReader_GetInputDataPath struct { + *mock.Call +} + +func (_m InputReader_GetInputDataPath) Return(_a0 storage.DataReference) *InputReader_GetInputDataPath { + return &InputReader_GetInputDataPath{Call: _m.Call.Return(_a0)} +} + +func (_m *InputReader) OnGetInputDataPath() *InputReader_GetInputDataPath { + c_call := _m.On("GetInputDataPath") + return &InputReader_GetInputDataPath{Call: c_call} +} + +func (_m *InputReader) OnGetInputDataPathMatch(matchers ...interface{}) *InputReader_GetInputDataPath { + c_call := _m.On("GetInputDataPath", matchers...) + return &InputReader_GetInputDataPath{Call: c_call} +} + +// GetInputDataPath provides a mock function with given fields: +func (_m *InputReader) GetInputDataPath() storage.DataReference { + ret := _m.Called() + + var r0 storage.DataReference + if rf, ok := ret.Get(0).(func() storage.DataReference); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(storage.DataReference) + } + + return r0 +} + type InputReader_GetInputPath struct { *mock.Call } -func (_m InputReader_GetInputPath) Return(_a0 storage.DataReference) *InputReader_GetInputPath { - return &InputReader_GetInputPath{Call: _m.Call.Return(_a0)} +func (_m InputReader_GetInputPath) Return(_a0 storage.DataReference, _a1 error) *InputReader_GetInputPath { + return &InputReader_GetInputPath{Call: _m.Call.Return(_a0, _a1)} } -func (_m *InputReader) OnGetInputPath() *InputReader_GetInputPath { - c_call := _m.On("GetInputPath") +func (_m *InputReader) OnGetInputPath(ctx context.Context) *InputReader_GetInputPath { + c_call := _m.On("GetInputPath", ctx) return &InputReader_GetInputPath{Call: c_call} } @@ -76,18 +108,25 @@ func (_m *InputReader) OnGetInputPathMatch(matchers ...interface{}) *InputReader return &InputReader_GetInputPath{Call: c_call} } -// GetInputPath provides a mock function with given fields: -func (_m *InputReader) GetInputPath() storage.DataReference { - ret := _m.Called() +// GetInputPath provides a mock function with given fields: ctx +func (_m *InputReader) GetInputPath(ctx context.Context) (storage.DataReference, error) { + ret := _m.Called(ctx) var r0 storage.DataReference - if rf, ok := ret.Get(0).(func() storage.DataReference); ok { - r0 = rf() + if rf, ok := ret.Get(0).(func(context.Context) storage.DataReference); ok { + r0 = rf(ctx) } else { r0 = ret.Get(0).(storage.DataReference) } - return r0 + var r1 error + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 } type InputReader_GetInputPrefixPath struct { diff --git a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go index c7f2e1958b..0983cff637 100644 --- a/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go +++ b/flyteplugins/go/tasks/pluginmachinery/io/mocks/output_reader.go @@ -169,7 +169,7 @@ type OutputReader_Read struct { *mock.Call } -func (_m OutputReader_Read) Return(_a0 *core.LiteralMap, _a1 *io.ExecutionError, _a2 error) *OutputReader_Read { +func (_m OutputReader_Read) Return(_a0 *core.OutputData, _a1 *io.ExecutionError, _a2 error) *OutputReader_Read { return &OutputReader_Read{Call: _m.Call.Return(_a0, _a1, _a2)} } @@ -184,15 +184,15 @@ func (_m *OutputReader) OnReadMatch(matchers ...interface{}) *OutputReader_Read } // Read provides a mock function with given fields: ctx -func (_m *OutputReader) Read(ctx context.Context) (*core.LiteralMap, *io.ExecutionError, error) { +func (_m *OutputReader) Read(ctx context.Context) (*core.OutputData, *io.ExecutionError, error) { ret := _m.Called(ctx) - var r0 *core.LiteralMap - if rf, ok := ret.Get(0).(func(context.Context) *core.LiteralMap); ok { + var r0 *core.OutputData + if rf, ok := ret.Get(0).(func(context.Context) *core.OutputData); ok { r0 = rf(ctx) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*core.LiteralMap) + r0 = ret.Get(0).(*core.OutputData) } } diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/cached_input_reader.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/cached_input_reader.go index c46a75f05f..ad01c1d011 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/cached_input_reader.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/cached_input_reader.go @@ -9,10 +9,10 @@ import ( type cachedInputReader struct { io.InputReader - cachedInputs *core.LiteralMap + cachedInputs *core.InputData } -func (c *cachedInputReader) Get(ctx context.Context) (*core.LiteralMap, error) { +func (c *cachedInputReader) Get(ctx context.Context) (*core.InputData, error) { if c.cachedInputs == nil { in, err := c.InputReader.Get(ctx) if err != nil { @@ -23,9 +23,9 @@ func (c *cachedInputReader) Get(ctx context.Context) (*core.LiteralMap, error) { return c.cachedInputs, nil } -// Creates a new Read-through cached Input Reader. the returned reader is not thread-safe +// NewCachedInputReader creates a new Read-through cached Input Reader. the returned reader is not thread-safe // It caches the inputs on a successful read from the underlying input reader -func NewCachedInputReader(ctx context.Context, in io.InputReader) io.InputReader { +func NewCachedInputReader(_ context.Context, in io.InputReader) io.InputReader { return &cachedInputReader{ InputReader: in, } diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader.go index a9001f20f8..42fcc9b8ab 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader.go @@ -10,7 +10,7 @@ import ( ) type InMemoryOutputReader struct { - literals *core.LiteralMap + literals *core.OutputData DeckPath *storage.DataReference err *io.ExecutionError } @@ -38,7 +38,7 @@ func (r InMemoryOutputReader) Exists(_ context.Context) (bool, error) { return r.literals != nil, nil } -func (r InMemoryOutputReader) Read(_ context.Context) (*core.LiteralMap, *io.ExecutionError, error) { +func (r InMemoryOutputReader) Read(_ context.Context) (*core.OutputData, *io.ExecutionError, error) { return r.literals, r.err, nil } @@ -46,7 +46,7 @@ func (r InMemoryOutputReader) DeckExists(_ context.Context) (bool, error) { return r.DeckPath != nil, nil } -func NewInMemoryOutputReader(literals *core.LiteralMap, DeckPath *storage.DataReference, err *io.ExecutionError) InMemoryOutputReader { +func NewInMemoryOutputReader(literals *core.OutputData, DeckPath *storage.DataReference, err *io.ExecutionError) InMemoryOutputReader { return InMemoryOutputReader{ literals: literals, DeckPath: DeckPath, diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader_test.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader_test.go index ad82fca8a3..02f20b35bd 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/in_memory_output_reader_test.go @@ -6,24 +6,27 @@ import ( "github.com/stretchr/testify/assert" + "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" flyteIdlCore "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flytestdlib/storage" ) func TestInMemoryOutputReader(t *testing.T) { deckPath := storage.DataReference("s3://bucket/key") - lt := map[string]*flyteIdlCore.Literal{ - "results": { - Value: &flyteIdlCore.Literal_Scalar{ - Scalar: &flyteIdlCore.Scalar{ - Value: &flyteIdlCore.Scalar_Primitive{ - Primitive: &flyteIdlCore.Primitive{Value: &flyteIdlCore.Primitive_Integer{Integer: 3}}, + lt := &flyteIdlCore.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]any{ + "results": &flyteIdlCore.Literal{ + Value: &flyteIdlCore.Literal_Scalar{ + Scalar: &flyteIdlCore.Scalar{ + Value: &flyteIdlCore.Scalar_Primitive{ + Primitive: &flyteIdlCore.Primitive{Value: &flyteIdlCore.Primitive_Integer{Integer: 3}}, + }, }, }, }, - }, + }).GetMap(), } - or := NewInMemoryOutputReader(&flyteIdlCore.LiteralMap{Literals: lt}, &deckPath, nil) + or := NewInMemoryOutputReader(lt, &deckPath, nil) assert.Equal(t, &deckPath, or.DeckPath) ctx := context.TODO() @@ -39,7 +42,7 @@ func TestInMemoryOutputReader(t *testing.T) { assert.NoError(t, err) literalMap, executionErr, err := or.Read(ctx) - assert.Equal(t, lt, literalMap.Literals) + assert.Equal(t, lt, literalMap) assert.Nil(t, executionErr) assert.NoError(t, err) } diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/paths.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/paths.go index e499535e70..47516d3fb4 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/paths.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/paths.go @@ -9,7 +9,9 @@ import ( const ( // InputsSuffix specifies the name of the file that contains the task inputs in the form core.LiteralMap - InputsSuffix = "inputs.pb" + InputsSuffix = "inputs_old.pb" + // InputDataSuffix specifies the name of the file that contains the task inputs in the form core.LiteralMap + InputDataSuffix = "inputs.pb" // TaskTemplateSuffix In case a task requests for a task template, it is passed into the task using this filename. // The format is of type core.TaskTemplate TaskTemplateSuffix = "task.pb" @@ -19,9 +21,9 @@ const ( // OutputsSuffix specifies that outputs are assumed to be written to this "file"/"suffix" under the given prefix // The outputs file has a format of core.LiteralMap OutputsSuffix = "outputs.pb" - // deckSuffix specifies that deck file are assumed to be written to this "file"/"suffix" under the given prefix + // DeckSuffix specifies that deck file are assumed to be written to this "file"/"suffix" under the given prefix // The deck file has a format of HTML - deckSuffix = "deck.html" + DeckSuffix = "deck.html" // ErrorsSuffix specifies that the errors are written to this prefix/file under the given prefix. The Error File // has a format of core.ErrorDocument ErrorsSuffix = "error.pb" diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader.go index 5a6f4dd522..7d0d50520d 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader.go @@ -2,6 +2,7 @@ package ioutils import ( "context" + "fmt" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io" @@ -15,7 +16,7 @@ const ( var ( // Ensure we get an early build break if interface changes and these classes do not conform. - _ io.InputFilePaths = SimpleInputFilePath{} + _ io.InputFilePaths = &SimpleInputFilePath{} _ io.InputReader = RemoteFileInputReader{} ) @@ -24,11 +25,14 @@ type RemoteFileInputReader struct { store storage.ProtobufStore } -func (r RemoteFileInputReader) Get(ctx context.Context) (*core.LiteralMap, error) { - d := &core.LiteralMap{} - if err := r.store.ReadProtobuf(ctx, r.InputFilePaths.GetInputPath(), d); err != nil { +func (r RemoteFileInputReader) Get(ctx context.Context) (*core.InputData, error) { + d := &core.InputData{} + oldFormat := &core.LiteralMap{} + if msgIndex, err := r.store.ReadProtobufAny(ctx, r.InputFilePaths.GetInputDataPath(), d, oldFormat); err != nil { // TODO change flytestdlib to return protobuf unmarshal errors separately. As this can indicate malformed output and we should catch that - return nil, errors.Wrapf(ErrFailedRead, err, "failed to read data from dataDir [%v].", r.InputFilePaths.GetInputPath()) + return nil, errors.Wrapf(ErrFailedRead, err, "failed to read data from dataDir [%v].", r.InputFilePaths.GetInputDataPath()) + } else if msgIndex == 1 { + d.Inputs = oldFormat } return d, nil @@ -44,19 +48,35 @@ func NewRemoteFileInputReader(_ context.Context, store storage.ProtobufStore, in type SimpleInputFilePath struct { pathPrefix storage.DataReference - store storage.ReferenceConstructor + store *storage.DataStore } -func (s SimpleInputFilePath) GetInputPrefixPath() storage.DataReference { +func (s *SimpleInputFilePath) GetInputPrefixPath() storage.DataReference { return s.pathPrefix } -func (s SimpleInputFilePath) GetInputPath() storage.DataReference { - return constructPath(s.store, s.pathPrefix, InputsSuffix) +func (s *SimpleInputFilePath) GetInputPath(ctx context.Context) (storage.DataReference, error) { + oldInputPath := constructPath(s.store, s.pathPrefix, InputsSuffix) + newInput := &core.InputData{} + err := s.store.ReadProtobuf(ctx, s.GetInputDataPath(), newInput) + if err != nil { + return "", fmt.Errorf("failed to read existing inputs from [%v]. Error: %w", s.GetInputDataPath(), err) + } + + err = s.store.WriteProtobuf(ctx, oldInputPath, storage.Options{}, newInput.GetInputs()) + if err != nil { + return "", fmt.Errorf("failed to write inputs to [%v]. Error: %w", oldInputPath, err) + } + + return oldInputPath, nil +} + +func (s *SimpleInputFilePath) GetInputDataPath() storage.DataReference { + return constructPath(s.store, s.pathPrefix, InputDataSuffix) } -func NewInputFilePaths(_ context.Context, store storage.ReferenceConstructor, inputPathPrefix storage.DataReference) SimpleInputFilePath { - return SimpleInputFilePath{ +func NewInputFilePaths(_ context.Context, store *storage.DataStore, inputPathPrefix storage.DataReference) *SimpleInputFilePath { + return &SimpleInputFilePath{ store: store, pathPrefix: inputPathPrefix, } diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader_test.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader_test.go index 70304597a2..c3b88f1850 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_input_reader_test.go @@ -5,14 +5,18 @@ import ( "github.com/stretchr/testify/assert" + "github.com/flyteorg/flyte/flytestdlib/promutils" "github.com/flyteorg/flyte/flytestdlib/storage" ) func TestSimpleInputFilePath_GetInputPath(t *testing.T) { + dataStore, err := storage.NewDataStore(&storage.Config{Type: storage.TypeMemory}, promutils.NewTestScope()) + assert.NoError(t, err) + s := SimpleInputFilePath{ pathPrefix: "s3://flyteorg-modelbuilder/metadata/propeller/staging/flyteexamples-development-jf193q0cqo/odd-nums-task/data", - store: storage.URLPathConstructor{}, + store: dataStore, } - assert.Equal(t, "s3://flyteorg-modelbuilder/metadata/propeller/staging/flyteexamples-development-jf193q0cqo/odd-nums-task/data/inputs.pb", s.GetInputPath().String()) + assert.Equal(t, "s3://flyteorg-modelbuilder/metadata/propeller/staging/flyteexamples-development-jf193q0cqo/odd-nums-task/data/inputs.pb", s.GetInputDataPath().String()) } diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader.go index 27d7748701..0b92344bb0 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_reader.go @@ -88,15 +88,22 @@ func (r RemoteFileOutputReader) Exists(ctx context.Context) (bool, error) { return false, nil } -func (r RemoteFileOutputReader) Read(ctx context.Context) (*core.LiteralMap, *io.ExecutionError, error) { +func (r RemoteFileOutputReader) Read(ctx context.Context) (*core.OutputData, *io.ExecutionError, error) { - d := &core.LiteralMap{} + d := &core.OutputData{} if err := r.store.ReadProtobuf(ctx, r.outPath.GetOutputPath(), d); err != nil { - // TODO change flytestdlib to return protobuf unmarshal errors separately. As this can indicate malformed output and we should catch that - return nil, nil, fmt.Errorf("failed to read data from dataDir [%v]. Error: %v", r.outPath.GetOutputPath(), err) + oldOutput := &core.LiteralMap{} + if err := r.store.ReadProtobuf(ctx, r.outPath.GetOutputPath(), d); err != nil { + // TODO change flytestdlib to return protobuf unmarshal errors separately. As this can indicate malformed output and we should catch that + return nil, nil, fmt.Errorf("failed to read data from dataDir [%v]. Error: %v", r.outPath.GetOutputPath(), err) + } + + d = &core.OutputData{ + Outputs: oldOutput, + } } - if d.Literals == nil { + if d.GetOutputs().GetLiterals() == nil { return nil, &io.ExecutionError{ IsRecoverable: true, ExecutionError: &core.ExecutionError{ diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer.go index a1ed90934e..2cf7f6c99f 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer.go @@ -35,7 +35,7 @@ func (w RemoteFileOutputPaths) GetOutputPath() storage.DataReference { } func (w RemoteFileOutputPaths) GetDeckPath() storage.DataReference { - return constructPath(w.store, w.outputPrefix, deckSuffix) + return constructPath(w.store, w.outputPrefix, DeckSuffix) } func (w RemoteFileOutputPaths) GetErrorPath() storage.DataReference { diff --git a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer_test.go b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer_test.go index 1ca51eb1ad..2b8a3239cb 100644 --- a/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer_test.go +++ b/flyteplugins/go/tasks/pluginmachinery/ioutils/remote_file_output_writer_test.go @@ -33,7 +33,7 @@ func TestRemoteFileOutputWriter(t *testing.T) { assert.Equal(t, constructPath(memStore, rawOutputPrefix, CheckpointPrefix), checkpointPath.GetCheckpointPrefix()) assert.Equal(t, constructPath(memStore, outputPrefix, OutputsSuffix), checkpointPath.GetOutputPath()) - assert.Equal(t, constructPath(memStore, outputPrefix, deckSuffix), checkpointPath.GetDeckPath()) + assert.Equal(t, constructPath(memStore, outputPrefix, DeckSuffix), checkpointPath.GetDeckPath()) assert.Equal(t, constructPath(memStore, outputPrefix, ErrorsSuffix), checkpointPath.GetErrorPath()) assert.Equal(t, constructPath(memStore, outputPrefix, FuturesSuffix), checkpointPath.GetFuturesPath()) }) @@ -43,7 +43,7 @@ func TestRemoteFileOutputWriter(t *testing.T) { assert.Equal(t, constructPath(memStore, rawOutputPrefix, CheckpointPrefix), p.GetCheckpointPrefix()) assert.Equal(t, constructPath(memStore, outputPrefix, OutputsSuffix), p.GetOutputPath()) - assert.Equal(t, constructPath(memStore, outputPrefix, deckSuffix), p.GetDeckPath()) + assert.Equal(t, constructPath(memStore, outputPrefix, DeckSuffix), p.GetDeckPath()) assert.Equal(t, constructPath(memStore, outputPrefix, ErrorsSuffix), p.GetErrorPath()) }) } diff --git a/flyteplugins/go/tasks/pluginmachinery/k8s/client.go b/flyteplugins/go/tasks/pluginmachinery/k8s/client.go index 0ab46081e9..ad56c6fef8 100644 --- a/flyteplugins/go/tasks/pluginmachinery/k8s/client.go +++ b/flyteplugins/go/tasks/pluginmachinery/k8s/client.go @@ -29,6 +29,35 @@ func newKubeClient(c client.Client, cache cache.Cache) core.KubeClient { return &kubeClient{client: c, cache: cache} } +// ClientBuilder builder is the interface for the client builder. +type ClientBuilder interface { + // WithUncached takes a list of runtime objects (plain or lists) that users don't want to cache + // for this client. This function can be called multiple times, it should append to an internal slice. + WithUncached(objs ...client.Object) ClientBuilder + + // Build returns a new client. + Build(cache cache.Cache, config *rest.Config, options client.Options) (client.Client, error) +} + +type fallbackClientBuilder struct { + uncached []client.Object +} + +func (f *fallbackClientBuilder) WithUncached(objs ...client.Object) ClientBuilder { + f.uncached = append(f.uncached, objs...) + return f +} + +func (f *fallbackClientBuilder) Build(_ cache.Cache, config *rest.Config, options client.Options) (client.Client, error) { + return client.New(config, options) +} + +// Creates a new k8s client that uses the cached client for reads and falls back to making API +// calls if it failed. Write calls will always go to raw client directly. +func NewFallbackClientBuilder() ClientBuilder { + return &fallbackClientBuilder{} +} + type Options struct { MapperProvider func(*rest.Config) (meta.RESTMapper, error) CacheOptions *cache.Options diff --git a/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/client_builder.go b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/client_builder.go new file mode 100644 index 0000000000..4312ab348d --- /dev/null +++ b/flyteplugins/go/tasks/pluginmachinery/k8s/mocks/client_builder.go @@ -0,0 +1,100 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + cache "sigs.k8s.io/controller-runtime/pkg/cache" + client "sigs.k8s.io/controller-runtime/pkg/client" + + k8s "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/k8s" + + mock "github.com/stretchr/testify/mock" + + rest "k8s.io/client-go/rest" +) + +// ClientBuilder is an autogenerated mock type for the ClientBuilder type +type ClientBuilder struct { + mock.Mock +} + +type ClientBuilder_Build struct { + *mock.Call +} + +func (_m ClientBuilder_Build) Return(_a0 client.Client, _a1 error) *ClientBuilder_Build { + return &ClientBuilder_Build{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ClientBuilder) OnBuild(_a0 cache.Cache, config *rest.Config, options client.Options) *ClientBuilder_Build { + c_call := _m.On("Build", _a0, config, options) + return &ClientBuilder_Build{Call: c_call} +} + +func (_m *ClientBuilder) OnBuildMatch(matchers ...interface{}) *ClientBuilder_Build { + c_call := _m.On("Build", matchers...) + return &ClientBuilder_Build{Call: c_call} +} + +// Build provides a mock function with given fields: _a0, config, options +func (_m *ClientBuilder) Build(_a0 cache.Cache, config *rest.Config, options client.Options) (client.Client, error) { + ret := _m.Called(_a0, config, options) + + var r0 client.Client + if rf, ok := ret.Get(0).(func(cache.Cache, *rest.Config, client.Options) client.Client); ok { + r0 = rf(_a0, config, options) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(client.Client) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(cache.Cache, *rest.Config, client.Options) error); ok { + r1 = rf(_a0, config, options) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type ClientBuilder_WithUncached struct { + *mock.Call +} + +func (_m ClientBuilder_WithUncached) Return(_a0 k8s.ClientBuilder) *ClientBuilder_WithUncached { + return &ClientBuilder_WithUncached{Call: _m.Call.Return(_a0)} +} + +func (_m *ClientBuilder) OnWithUncached(objs ...client.Object) *ClientBuilder_WithUncached { + c_call := _m.On("WithUncached", objs) + return &ClientBuilder_WithUncached{Call: c_call} +} + +func (_m *ClientBuilder) OnWithUncachedMatch(matchers ...interface{}) *ClientBuilder_WithUncached { + c_call := _m.On("WithUncached", matchers...) + return &ClientBuilder_WithUncached{Call: c_call} +} + +// WithUncached provides a mock function with given fields: objs +func (_m *ClientBuilder) WithUncached(objs ...client.Object) k8s.ClientBuilder { + _va := make([]interface{}, len(objs)) + for _i := range objs { + _va[_i] = objs[_i] + } + var _ca []interface{} + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 k8s.ClientBuilder + if rf, ok := ret.Get(0).(func(...client.Object) k8s.ClientBuilder); ok { + r0 = rf(objs...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(k8s.ClientBuilder) + } + } + + return r0 +} diff --git a/flyteplugins/go/tasks/plugins/array/array_tests_base.go b/flyteplugins/go/tasks/plugins/array/array_tests_base.go index 701b4780aa..095e00a3ed 100644 --- a/flyteplugins/go/tasks/plugins/array/array_tests_base.go +++ b/flyteplugins/go/tasks/plugins/array/array_tests_base.go @@ -17,9 +17,11 @@ import ( type AdvanceIteration func(ctx context.Context, tCtx core.TaskExecutionContext) error func RunArrayTestsEndToEnd(t *testing.T, executor core.Plugin, iter AdvanceIteration) { - inputs := coreutils.MustMakeLiteral(map[string]interface{}{ - "x": 5, - }).GetMap() + inputs := &idlCore.InputData{ + Inputs: coreutils.MustMakeLiteral(map[string]interface{}{ + "x": 5, + }).GetMap(), + } t.Run("Regular container task", func(t *testing.T) { template := tests.BuildTaskTemplate() @@ -54,9 +56,11 @@ func RunArrayTestsEndToEnd(t *testing.T, executor core.Plugin, iter AdvanceItera assert.NoError(t, err) - expectedOutputs := coreutils.MustMakeLiteral(map[string]interface{}{ - "x": []interface{}{5}, - }).GetMap() + expectedOutputs := &idlCore.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]interface{}{ + "x": []interface{}{5}, + }).GetMap(), + } tests.RunPluginEndToEndTest(t, executor, template, inputs, expectedOutputs, nil, iter) }) @@ -89,9 +93,11 @@ func RunArrayTestsEndToEnd(t *testing.T, executor core.Plugin, iter AdvanceItera assert.NoError(t, err) - expectedOutputs := coreutils.MustMakeLiteral(map[string]interface{}{ - "x": []interface{}{5, 5}, - }).GetMap() + expectedOutputs := &idlCore.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]interface{}{ + "x": []interface{}{5, 5}, + }).GetMap(), + } tests.RunPluginEndToEndTest(t, executor, template, inputs, expectedOutputs, nil, iter) }) diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go b/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go index 7a2d88cabb..a04f0afca8 100644 --- a/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go +++ b/flyteplugins/go/tasks/plugins/array/awsbatch/launcher_test.go @@ -78,7 +78,7 @@ func TestLaunchSubTasks(t *testing.T) { ir := &mocks3.InputReader{} ir.OnGetInputPrefixPath().Return("/prefix/") - ir.OnGetInputPath().Return("/prefix/inputs.pb") + ir.OnGetInputDataPath().Return("/prefix/inputs.pb") ir.OnGetMatch(mock.Anything).Return(nil, nil) tCtx := &mocks.TaskExecutionContext{} diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go b/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go index 1eaef150d0..e83646542a 100644 --- a/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go +++ b/flyteplugins/go/tasks/plugins/array/awsbatch/transformer.go @@ -63,6 +63,7 @@ func FlyteTaskToBatchInput(ctx context.Context, tCtx pluginCore.TaskExecutionCon Inputs: inputReader, OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), }) if err != nil { return nil, err @@ -73,6 +74,7 @@ func FlyteTaskToBatchInput(ctx context.Context, tCtx pluginCore.TaskExecutionCon Inputs: inputReader, OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), }) taskTemplate.GetContainer().GetEnv() if err != nil { diff --git a/flyteplugins/go/tasks/plugins/array/awsbatch/transformer_test.go b/flyteplugins/go/tasks/plugins/array/awsbatch/transformer_test.go index bbe8c88995..8f49321fc3 100644 --- a/flyteplugins/go/tasks/plugins/array/awsbatch/transformer_test.go +++ b/flyteplugins/go/tasks/plugins/array/awsbatch/transformer_test.go @@ -163,7 +163,7 @@ func TestArrayJobToBatchInput(t *testing.T) { tMetadata.OnGetPlatformResources().Return(&v12.ResourceRequirements{}) ir := &mocks2.InputReader{} - ir.OnGetInputPath().Return("inputs.pb") + ir.OnGetInputDataPath().Return("inputs.pb") ir.OnGetInputPrefixPath().Return("/inputs/prefix") ir.OnGetMatch(mock.Anything).Return(nil, nil) diff --git a/flyteplugins/go/tasks/plugins/array/catalog.go b/flyteplugins/go/tasks/plugins/array/catalog.go index d6bf5e8820..ebb5f69e0a 100644 --- a/flyteplugins/go/tasks/plugins/array/catalog.go +++ b/flyteplugins/go/tasks/plugins/array/catalog.go @@ -77,7 +77,7 @@ func DetermineDiscoverability(ctx context.Context, tCtx core.TaskExecutionContex // identify and validate the size of the array job size := -1 var literalCollection *idlCore.LiteralCollection - for _, literal := range inputs.Literals { + for _, literal := range inputs.GetInputs().GetLiterals() { if literalCollection = literal.GetCollection(); literalCollection != nil { // validate length of input list if size != -1 && size != len(literalCollection.Literals) { @@ -106,7 +106,7 @@ func DetermineDiscoverability(ctx context.Context, tCtx core.TaskExecutionContex arrayJobSize = int64(size) // build input readers - inputReaders = ConstructStaticInputReaders(tCtx.InputReader(), inputs.Literals, size) + inputReaders = ConstructStaticInputReaders(tCtx.InputReader(), inputs, size) } if arrayJobSize > maxArrayJobSize { @@ -242,7 +242,7 @@ func WriteToDiscovery(ctx context.Context, tCtx core.TaskExecutionContext, state return state, externalResources, errors.Errorf(errors.MetadataAccessFailed, "Could not read inputs and therefore failed to determine array job size") } - inputReaders = ConstructStaticInputReaders(tCtx.InputReader(), inputs.Literals, arrayJobSize) + inputReaders = ConstructStaticInputReaders(tCtx.InputReader(), inputs, arrayJobSize) } // output reader @@ -462,8 +462,9 @@ func ConstructCatalogReaderWorkItems(ctx context.Context, taskReader core.TaskRe // ConstructStaticInputReaders constructs input readers that comply with the io.InputReader interface but have their // inputs already populated. -func ConstructStaticInputReaders(inputPaths io.InputFilePaths, inputLiterals map[string]*idlCore.Literal, arrayJobSize int) []io.InputReader { +func ConstructStaticInputReaders(inputPaths io.InputFilePaths, input *idlCore.InputData, arrayJobSize int) []io.InputReader { var literalCollection *idlCore.LiteralCollection + inputLiterals := input.GetInputs().GetLiterals() inputReaders := make([]io.InputReader, 0, arrayJobSize) for i := 0; i < arrayJobSize; i++ { @@ -477,7 +478,10 @@ func ConstructStaticInputReaders(inputPaths io.InputFilePaths, inputLiterals map } } - inputReaders = append(inputReaders, NewStaticInputReader(inputPaths, &idlCore.LiteralMap{Literals: literals})) + inputReaders = append(inputReaders, NewStaticInputReader(inputPaths, + &idlCore.InputData{ + Inputs: &idlCore.LiteralMap{Literals: literals}, + })) } return inputReaders diff --git a/flyteplugins/go/tasks/plugins/array/catalog_test.go b/flyteplugins/go/tasks/plugins/array/catalog_test.go index 15a36a4dcf..dd4944c61a 100644 --- a/flyteplugins/go/tasks/plugins/array/catalog_test.go +++ b/flyteplugins/go/tasks/plugins/array/catalog_test.go @@ -133,7 +133,7 @@ func runDetermineDiscoverabilityTest(t testing.TB, taskTemplate *core.TaskTempla ir := &ioMocks.InputReader{} ir.OnGetInputPrefixPath().Return("/prefix/") - ir.On("Get", mock.Anything).Return(inputs, nil) + ir.On("Get", mock.Anything).Return(&core.InputData{Inputs: inputs}, nil) ow := &ioMocks.OutputWriter{} ow.OnGetOutputPrefixPath().Return("/prefix/") diff --git a/flyteplugins/go/tasks/plugins/array/inputs.go b/flyteplugins/go/tasks/plugins/array/inputs.go index e0a7035181..7ad8b9bb3d 100644 --- a/flyteplugins/go/tasks/plugins/array/inputs.go +++ b/flyteplugins/go/tasks/plugins/array/inputs.go @@ -15,7 +15,13 @@ type arrayJobInputReader struct { } // GetInputPath overrides the inputpath to return the prefix path for array jobs -func (i arrayJobInputReader) GetInputPath() storage.DataReference { +func (i arrayJobInputReader) GetInputPath(ctx context.Context) (storage.DataReference, error) { + // TODO (haytham): Does this need to copy the input data using the old format to the prefix path? + return i.GetInputPrefixPath(), nil +} + +// GetInputDataPath overrides the inputpath to return the prefix path for array jobs +func (i arrayJobInputReader) GetInputDataPath() storage.DataReference { return i.GetInputPrefixPath() } @@ -33,16 +39,16 @@ func GetInputReader(tCtx core.TaskExecutionContext, taskTemplate *idlCore.TaskTe // StaticInputReader complies with the io.InputReader interface but has the input already populated. type StaticInputReader struct { io.InputFilePaths - input *idlCore.LiteralMap + input *idlCore.InputData } -func NewStaticInputReader(inputPaths io.InputFilePaths, input *idlCore.LiteralMap) StaticInputReader { +func NewStaticInputReader(inputPaths io.InputFilePaths, input *idlCore.InputData) StaticInputReader { return StaticInputReader{ InputFilePaths: inputPaths, input: input, } } -func (i StaticInputReader) Get(_ context.Context) (*idlCore.LiteralMap, error) { +func (i StaticInputReader) Get(_ context.Context) (*idlCore.InputData, error) { return i.input, nil } diff --git a/flyteplugins/go/tasks/plugins/array/inputs_test.go b/flyteplugins/go/tasks/plugins/array/inputs_test.go index 8f9c670c57..383b08f0e3 100644 --- a/flyteplugins/go/tasks/plugins/array/inputs_test.go +++ b/flyteplugins/go/tasks/plugins/array/inputs_test.go @@ -9,15 +9,15 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" pluginsCoreMock "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks" pluginsIOMock "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io/mocks" - "github.com/flyteorg/flyte/flytestdlib/storage" ) func TestGetInputReader(t *testing.T) { inputReader := &pluginsIOMock.InputReader{} - inputReader.On("GetInputPrefixPath").Return(storage.DataReference("test-data-prefix")) - inputReader.On("GetInputPath").Return(storage.DataReference("test-data-reference")) - inputReader.On("Get", mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputPrefixPath().Return("test-data-prefix") + inputReader.OnGetInputPathMatch(mock.Anything).Return("test-data-reference", nil) + inputReader.OnGetInputDataPath().Return("test-data-reference") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) t.Run("task_type_version == 0", func(t *testing.T) { taskCtx := &pluginsCoreMock.TaskExecutionContext{} @@ -26,7 +26,7 @@ func TestGetInputReader(t *testing.T) { inputReader := GetInputReader(taskCtx, &core.TaskTemplate{ TaskTypeVersion: 0, }) - assert.Equal(t, inputReader.GetInputPath().String(), "test-data-prefix") + assert.Equal(t, "test-data-prefix", inputReader.GetInputDataPath().String()) }) t.Run("task_type_version == 1", func(t *testing.T) { @@ -36,6 +36,6 @@ func TestGetInputReader(t *testing.T) { inputReader := GetInputReader(taskCtx, &core.TaskTemplate{ TaskTypeVersion: 1, }) - assert.Equal(t, inputReader.GetInputPath().String(), "test-data-reference") + assert.Equal(t, "test-data-reference", inputReader.GetInputDataPath().String()) }) } diff --git a/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go b/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go index 04623c2b47..d789aa7c48 100644 --- a/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go +++ b/flyteplugins/go/tasks/plugins/array/k8s/integration_test.go @@ -11,6 +11,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" + core2 "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/core/mocks" "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/io" @@ -114,9 +115,11 @@ func advancePodPhases(ctx context.Context, store *storage.DataStore, outputWrite } err = store.WriteProtobuf(ctx, ref, storage.Options{}, - coreutils.MustMakeLiteral(map[string]interface{}{ - "x": 5, - }).GetMap()) + &core2.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]interface{}{ + "x": 5, + }).GetMap(), + }) if err != nil { return err } diff --git a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go index 7100fbc34c..2cc80d2d68 100644 --- a/flyteplugins/go/tasks/plugins/array/k8s/management_test.go +++ b/flyteplugins/go/tasks/plugins/array/k8s/management_test.go @@ -126,8 +126,8 @@ func getMockTaskExecutionContext(ctx context.Context, parallelism int) *mocks.Ta ir := &mocks2.InputReader{} ir.OnGetInputPrefixPath().Return("/prefix/") - ir.OnGetInputPath().Return("/prefix/inputs.pb") - ir.OnGetMatch(mock.Anything).Return(&core2.LiteralMap{}, nil) + ir.OnGetInputDataPath().Return("/prefix/inputs.pb") + ir.OnGetMatch(mock.Anything).Return(&core2.InputData{}, nil) composedProtobufStore := &stdmocks.ComposedProtobufStore{} matchedBy := mock.MatchedBy(func(s storage.DataReference) bool { diff --git a/flyteplugins/go/tasks/plugins/array/outputs.go b/flyteplugins/go/tasks/plugins/array/outputs.go index cb07fb0de1..7bdf7dc952 100644 --- a/flyteplugins/go/tasks/plugins/array/outputs.go +++ b/flyteplugins/go/tasks/plugins/array/outputs.go @@ -58,14 +58,16 @@ func (w assembleOutputsWorker) Process(ctx context.Context, workItem workqueue.W return workqueue.WorkStatusFailed, err } - finalOutputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{}, + finalOutputs := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{}, + }, } // Initialize the final output literal with empty output variable collections. Otherwise, if a // task has no input values they will never be written. for _, varName := range i.varNames { - finalOutputs.Literals[varName] = &core.Literal{ + finalOutputs.GetOutputs().Literals[varName] = &core.Literal{ Value: &core.Literal_Collection{ Collection: &core.LiteralCollection{ Literals: make([]*core.Literal, 0), @@ -87,7 +89,7 @@ func (w assembleOutputsWorker) Process(ctx context.Context, workItem workqueue.W if i.isAwsSingleJob { // We will only have one output.pb when running aws single job, so we don't need // to aggregate outputs here - finalOutputs.Literals = output.GetLiterals() + finalOutputs = output } else { appendSubTaskOutput(finalOutputs, output, int64(i.finalPhases.ItemsCount)) continue @@ -109,8 +111,8 @@ func (w assembleOutputsWorker) Process(ctx context.Context, workItem workqueue.W return workqueue.WorkStatusSucceeded, nil } -func appendOneItem(outputs *core.LiteralMap, varName string, literal *core.Literal, expectedSize int64) { - existingVal, found := outputs.Literals[varName] +func appendOneItem(outputs *core.OutputData, varName string, literal *core.Literal, expectedSize int64) { + existingVal, found := outputs.GetOutputs().GetLiterals()[varName] var list *core.LiteralCollection if found { list = existingVal.GetCollection() @@ -127,18 +129,18 @@ func appendOneItem(outputs *core.LiteralMap, varName string, literal *core.Liter } list.Literals = append(list.Literals, literal) - outputs.Literals[varName] = existingVal + outputs.GetOutputs().Literals[varName] = existingVal } -func appendSubTaskOutput(outputs *core.LiteralMap, subTaskOutput *core.LiteralMap, +func appendSubTaskOutput(outputs *core.OutputData, subTaskOutput *core.OutputData, expectedSize int64) { - for key, val := range subTaskOutput.GetLiterals() { + for key, val := range subTaskOutput.GetOutputs().GetLiterals() { appendOneItem(outputs, key, val, expectedSize) } } -func appendEmptyOutputs(outputs *core.LiteralMap, vars []string) { +func appendEmptyOutputs(outputs *core.OutputData, vars []string) { for _, varName := range vars { appendOneItem(outputs, varName, nilLiteral, 1) } diff --git a/flyteplugins/go/tasks/plugins/array/outputs_test.go b/flyteplugins/go/tasks/plugins/array/outputs_test.go index 529eba0429..4ae0da2675 100644 --- a/flyteplugins/go/tasks/plugins/array/outputs_test.go +++ b/flyteplugins/go/tasks/plugins/array/outputs_test.go @@ -90,12 +90,14 @@ func Test_assembleOutputsWorker_Process(t *testing.T) { assert.NoError(t, err) assert.Equal(t, workqueue.WorkStatusSucceeded, actual) - actualOutputs := &core.LiteralMap{} + actualOutputs := &core.OutputData{} assert.NoError(t, memStore.ReadProtobuf(ctx, "/bucket/prefix/outputs.pb", actualOutputs)) - expected := coreutils.MustMakeLiteral(map[string]interface{}{ - "var1": []interface{}{}, - "var2": []interface{}{}, - }).GetMap() + expected := &core.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]interface{}{ + "var1": []interface{}{}, + "var2": []interface{}{}, + }).GetMap(), + } expectedBytes, err := json.Marshal(expected) assert.NoError(t, err) @@ -119,8 +121,8 @@ func Test_assembleOutputsWorker_Process(t *testing.T) { "var1": 5, "var2": "hello world", }) - assert.NoError(t, memStore.WriteProtobuf(ctx, "/bucket/prefix/0/outputs.pb", storage.Options{}, l.GetMap())) - assert.NoError(t, memStore.WriteProtobuf(ctx, "/bucket/prefix/2/outputs.pb", storage.Options{}, l.GetMap())) + assert.NoError(t, memStore.WriteProtobuf(ctx, "/bucket/prefix/0/outputs.pb", storage.Options{}, &core.OutputData{Outputs: l.GetMap()})) + assert.NoError(t, memStore.WriteProtobuf(ctx, "/bucket/prefix/2/outputs.pb", storage.Options{}, &core.OutputData{Outputs: l.GetMap()})) // Setup the expected data to be written to outputWriter. ow := &mocks2.OutputWriter{} @@ -148,13 +150,15 @@ func Test_assembleOutputsWorker_Process(t *testing.T) { assert.NoError(t, err) assert.Equal(t, workqueue.WorkStatusSucceeded, actual) - actualOutputs := &core.LiteralMap{} + actualOutputs := &core.OutputData{} assert.NoError(t, memStore.ReadProtobuf(ctx, "/bucket/prefix/outputs.pb", actualOutputs)) // Since 2nd and 4th tasks failed, there should be nil literals in their expected places. - expected := coreutils.MustMakeLiteral(map[string]interface{}{ - "var1": []interface{}{5, nil, 5, nil}, - "var2": []interface{}{"hello world", nil, "hello world", nil}, - }).GetMap() + expected := &core.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]any{ + "var1": []interface{}{5, nil, 5, nil}, + "var2": []interface{}{"hello world", nil, "hello world", nil}, + }).GetMap(), + } expectedBytes, err := json.Marshal(expected) assert.NoError(t, err) @@ -173,7 +177,9 @@ func Test_appendSubTaskOutput(t *testing.T) { "var1": 5, "var2": "hello", } - validOutputs := coreutils.MustMakeLiteral(nativeMap).GetMap() + validOutputs := &core.OutputData{ + Outputs: coreutils.MustMakeLiteral(nativeMap).GetMap(), + } t.Run("append to empty", func(t *testing.T) { expected := map[string]interface{}{ @@ -181,11 +187,14 @@ func Test_appendSubTaskOutput(t *testing.T) { "var2": []interface{}{coreutils.MustMakeLiteral("hello")}, } - actual := &core.LiteralMap{ - Literals: map[string]*core.Literal{}, + actual := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{}, + }, } + appendSubTaskOutput(actual, validOutputs, 1) - assert.Equal(t, actual, coreutils.MustMakeLiteral(expected).GetMap()) + assert.Equal(t, actual.GetOutputs(), coreutils.MustMakeLiteral(expected).GetMap()) }) t.Run("append to existing", func(t *testing.T) { @@ -194,13 +203,15 @@ func Test_appendSubTaskOutput(t *testing.T) { "var2": []interface{}{nilLiteral, coreutils.MustMakeLiteral("hello")}, }).GetMap() - actual := coreutils.MustMakeLiteral(map[string]interface{}{ - "var1": []interface{}{nilLiteral}, - "var2": []interface{}{nilLiteral}, - }).GetMap() + actual := &core.OutputData{ + Outputs: coreutils.MustMakeLiteral(map[string]interface{}{ + "var1": []interface{}{nilLiteral}, + "var2": []interface{}{nilLiteral}, + }).GetMap(), + } appendSubTaskOutput(actual, validOutputs, 1) - assert.Equal(t, actual, expected) + assert.Equal(t, actual.GetOutputs(), expected) }) } diff --git a/flyteplugins/go/tasks/plugins/hive/execution_state.go b/flyteplugins/go/tasks/plugins/hive/execution_state.go index 16ac3835bd..6394f286de 100644 --- a/flyteplugins/go/tasks/plugins/hive/execution_state.go +++ b/flyteplugins/go/tasks/plugins/hive/execution_state.go @@ -275,6 +275,7 @@ func GetQueryInfo(ctx context.Context, tCtx core.TaskExecutionContext) ( Inputs: tCtx.InputReader(), OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), }) if err != nil { return "", "", []string{}, 0, "", err @@ -508,23 +509,27 @@ func WriteOutputs(ctx context.Context, tCtx core.TaskExecutionContext, currentSt if len(outputs) != 0 && len(outputs) != 1 { return currentState, errors.Errorf(errors.BadTaskSpecification, "Hive tasks must have zero or one output: [%d] found", len(outputs)) } + if len(outputs) == 1 { if results, ok := outputs["results"]; ok { if results.GetType().GetSchema() == nil { return currentState, errors.Errorf(errors.BadTaskSpecification, "A non-SchemaType was found [%v]", results.GetType()) } + logger.Debugf(ctx, "Writing outputs file for Hive task at [%s]", tCtx.OutputWriter().GetOutputPrefixPath()) err = tCtx.OutputWriter().Put(ctx, ioutils.NewInMemoryOutputReader( - &idlCore.LiteralMap{ - Literals: map[string]*idlCore.Literal{ - "results": { - Value: &idlCore.Literal_Scalar{ - Scalar: &idlCore.Scalar{Value: &idlCore.Scalar_Schema{ - Schema: &idlCore.Schema{ - Uri: externalLocation.String(), - Type: results.GetType().GetSchema(), + &idlCore.OutputData{ + Outputs: &idlCore.LiteralMap{ + Literals: map[string]*idlCore.Literal{ + "results": { + Value: &idlCore.Literal_Scalar{ + Scalar: &idlCore.Scalar{Value: &idlCore.Scalar_Schema{ + Schema: &idlCore.Schema{ + Uri: externalLocation.String(), + Type: results.GetType().GetSchema(), + }, + }, }, - }, }, }, }, diff --git a/flyteplugins/go/tasks/plugins/hive/execution_state_test.go b/flyteplugins/go/tasks/plugins/hive/execution_state_test.go index 4e34a04593..762bc0be16 100644 --- a/flyteplugins/go/tasks/plugins/hive/execution_state_test.go +++ b/flyteplugins/go/tasks/plugins/hive/execution_state_test.go @@ -358,7 +358,7 @@ func TestWriteOutputs(t *testing.T) { literals, err1, err2 := reader.Read(context.Background()) assert.Nil(t, err1) assert.NoError(t, err2) - assert.NotNil(t, literals.Literals["results"].GetScalar().GetSchema()) + assert.NotNil(t, literals.GetOutputs().GetLiterals()["results"].GetScalar().GetSchema()) }) state := ExecutionState{} diff --git a/flyteplugins/go/tasks/plugins/hive/test_helpers.go b/flyteplugins/go/tasks/plugins/hive/test_helpers.go index b494c15870..32083d7801 100644 --- a/flyteplugins/go/tasks/plugins/hive/test_helpers.go +++ b/flyteplugins/go/tasks/plugins/hive/test_helpers.go @@ -117,9 +117,8 @@ func GetMockTaskExecutionContext() core.TaskExecutionContext { dummyTaskMetadata := GetMockTaskExecutionMetadata() taskCtx := &coreMock.TaskExecutionContext{} inputReader := &ioMock.InputReader{} - inputReader.On("GetInputPrefixPath").Return(storage.DataReference("s3://test-input-prefix")) - inputReader.On("GetInputPath").Return(storage.DataReference("test-data-reference")) - inputReader.On("Get", mock.Anything).Return(&idlCore.LiteralMap{}, nil) + inputReader.OnGetInputPrefixPath().Return(storage.DataReference("s3://test-input-prefix")) + inputReader.OnGetMatch(mock.Anything).Return(&idlCore.InputData{}, nil) taskCtx.On("InputReader").Return(inputReader) outputReader := &ioMock.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go b/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go index fdb3e74182..bf7e77eb94 100644 --- a/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/dask/dask_test.go @@ -153,8 +153,8 @@ func dummyDaskTaskContext(taskTemplate *core.TaskTemplate, resources *v1.Resourc inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") - inputReader.OnGetInputPath().Return("/input") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("/input") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginIOMocks.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go index 7db8269eaf..6ad331f01c 100644 --- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/mpi/mpi_test.go @@ -122,8 +122,8 @@ func dummyMPITaskContext(taskTemplate *core.TaskTemplate, resources *corev1.Reso taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") - inputReader.OnGetInputPath().Return("/input") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("/input") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginIOMocks.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go index 6284b4d8f3..93995cd689 100644 --- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/pytorch/pytorch_test.go @@ -128,8 +128,8 @@ func dummyPytorchTaskContext(taskTemplate *core.TaskTemplate, resources *corev1. taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") - inputReader.OnGetInputPath().Return("/input") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("/input") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginIOMocks.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go b/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go index 8206bda130..a7c6c6bab9 100644 --- a/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/kfoperators/tensorflow/tensorflow_test.go @@ -123,8 +123,8 @@ func dummyTensorFlowTaskContext(taskTemplate *core.TaskTemplate, resources *core taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") - inputReader.OnGetInputPath().Return("/input") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("/input") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginIOMocks.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go b/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go index 5d89e2f0ec..d7bd4ccb55 100644 --- a/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/pod/container_test.go @@ -81,29 +81,29 @@ func dummyContainerTaskTemplateWithPodSpec(command []string, args []string) *cor func dummyContainerTaskMetadata(resources *v1.ResourceRequirements, extendedResources *core.ExtendedResources, returnsServiceAccount bool, containerImage string) pluginsCore.TaskExecutionMetadata { taskMetadata := &pluginsCoreMock.TaskExecutionMetadata{} - taskMetadata.On("GetNamespace").Return("test-namespace") - taskMetadata.On("GetAnnotations").Return(map[string]string{"annotation-1": "val1"}) - taskMetadata.On("GetLabels").Return(map[string]string{"label-1": "val1"}) - taskMetadata.On("GetOwnerReference").Return(metav1.OwnerReference{ + taskMetadata.OnGetNamespace().Return("test-namespace") + taskMetadata.OnGetAnnotations().Return(map[string]string{"annotation-1": "val1"}) + taskMetadata.OnGetLabels().Return(map[string]string{"label-1": "val1"}) + taskMetadata.OnGetOwnerReference().Return(metav1.OwnerReference{ Kind: "node", Name: "blah", }) if returnsServiceAccount { - taskMetadata.On("GetK8sServiceAccount").Return(serviceAccount) + taskMetadata.OnGetK8sServiceAccount().Return(serviceAccount) } else { - taskMetadata.On("GetK8sServiceAccount").Return("") + taskMetadata.OnGetK8sServiceAccount().Return("") } - taskMetadata.On("GetSecurityContext").Return(core.SecurityContext{ + taskMetadata.OnGetSecurityContext().Return(core.SecurityContext{ RunAs: &core.Identity{K8SServiceAccount: securityContextServiceAccount}, }) - taskMetadata.On("GetOwnerID").Return(types.NamespacedName{ + taskMetadata.OnGetOwnerID().Return(types.NamespacedName{ Namespace: "test-namespace", Name: "test-owner-name", }) taskMetadata.OnGetPlatformResources().Return(&v1.ResourceRequirements{}) tID := &pluginsCoreMock.TaskExecutionID{} - tID.On("GetID").Return(core.TaskExecutionIdentifier{ + tID.OnGetID().Return(core.TaskExecutionIdentifier{ NodeExecutionId: &core.NodeExecutionIdentifier{ ExecutionId: &core.WorkflowExecutionIdentifier{ Name: "my_name", @@ -112,16 +112,16 @@ func dummyContainerTaskMetadata(resources *v1.ResourceRequirements, extendedReso }, }, }) - tID.On("GetGeneratedName").Return("my_project:my_domain:my_name") - taskMetadata.On("GetTaskExecutionID").Return(tID) + tID.OnGetGeneratedName().Return("my_project:my_domain:my_name") + taskMetadata.OnGetTaskExecutionID().Return(tID) to := &pluginsCoreMock.TaskOverrides{} - to.On("GetResources").Return(resources) - to.On("GetExtendedResources").Return(extendedResources) + to.OnGetResources().Return(resources) + to.OnGetExtendedResources().Return(extendedResources) to.OnGetContainerImage().Return(containerImage) - taskMetadata.On("GetOverrides").Return(to) - taskMetadata.On("IsInterruptible").Return(true) - taskMetadata.On("GetEnvironmentVariables").Return(nil) + taskMetadata.OnGetOverrides().Return(to) + taskMetadata.OnIsInterruptible().Return(true) + taskMetadata.OnGetEnvironmentVariables().Return(nil) taskMetadata.OnGetConsoleURL().Return("") return taskMetadata } @@ -130,8 +130,9 @@ func dummyContainerTaskContext(taskTemplate *core.TaskTemplate, taskMetadata plu taskCtx := &pluginsCoreMock.TaskExecutionContext{} inputReader := &pluginsIOMock.InputReader{} inputReader.OnGetInputPrefixPath().Return("test-data-reference") - inputReader.OnGetInputPath().Return("test-data-reference") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("test-data-reference") + inputReader.OnGetInputPathMatch(mock.Anything).Return("test-data-reference", nil) + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginsIOMock.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go b/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go index e6b8b0478b..812964d9be 100644 --- a/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/pod/sidecar_test.go @@ -103,8 +103,9 @@ func getDummySidecarTaskContext(taskTemplate *core.TaskTemplate, resources *v1.R dummyTaskMetadata := dummySidecarTaskMetadata(resources, extendedResources) inputReader := &pluginsIOMock.InputReader{} inputReader.OnGetInputPrefixPath().Return("test-data-prefix") - inputReader.OnGetInputPath().Return("test-data-reference") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("test-data-reference") + inputReader.OnGetInputPathMatch(mock.Anything).Return("test-data-reference", nil) + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginsIOMock.OutputWriter{} @@ -211,6 +212,12 @@ func TestBuildSidecarResource_TaskType2(t *testing.T) { Config: map[string]string{ flytek8s.PrimaryContainerKey: "primary container", }, + Metadata: &core.TaskMetadata{ + Runtime: &core.RuntimeMetadata{ + Type: core.RuntimeMetadata_FLYTE_SDK, + Version: "1.12.0", + }, + }, Target: &core.TaskTemplate_K8SPod{ K8SPod: &core.K8SPod{ PodSpec: structObj, diff --git a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go index 7b555e9f23..bdd06d1106 100644 --- a/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/ray/ray_test.go @@ -110,8 +110,8 @@ func dummyRayTaskContext(taskTemplate *core.TaskTemplate, resources *corev1.Reso taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") - inputReader.OnGetInputPath().Return("/input") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("/input") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginIOMocks.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go b/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go index a560544228..230b5c1f0d 100644 --- a/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go +++ b/flyteplugins/go/tasks/plugins/k8s/spark/spark_test.go @@ -375,8 +375,8 @@ func dummySparkTaskContext(taskTemplate *core.TaskTemplate, interruptible bool, taskCtx := &mocks.TaskExecutionContext{} inputReader := &pluginIOMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return("/input/prefix") - inputReader.OnGetInputPath().Return("/input") - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetInputDataPath().Return("/input") + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) taskCtx.OnInputReader().Return(inputReader) outputReader := &pluginIOMocks.OutputWriter{} diff --git a/flyteplugins/go/tasks/plugins/presto/execution_state.go b/flyteplugins/go/tasks/plugins/presto/execution_state.go index 3399c013ae..d57afc8569 100644 --- a/flyteplugins/go/tasks/plugins/presto/execution_state.go +++ b/flyteplugins/go/tasks/plugins/presto/execution_state.go @@ -226,6 +226,7 @@ func GetQueryInfo(ctx context.Context, tCtx core.TaskExecutionContext) (string, Inputs: tCtx.InputReader(), OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), }) if err != nil { return "", "", "", "", err @@ -443,16 +444,18 @@ func writeOutput(ctx context.Context, tCtx core.TaskExecutionContext, externalLo results := taskTemplate.Interface.Outputs.Variables["results"] return tCtx.OutputWriter().Put(ctx, ioutils.NewInMemoryOutputReader( - &pb.LiteralMap{ - Literals: map[string]*pb.Literal{ - "results": { - Value: &pb.Literal_Scalar{ - Scalar: &pb.Scalar{Value: &pb.Scalar_Schema{ - Schema: &pb.Schema{ - Uri: externalLocation, - Type: results.GetType().GetSchema(), + &pb.OutputData{ + Outputs: &pb.LiteralMap{ + Literals: map[string]*pb.Literal{ + "results": { + Value: &pb.Literal_Scalar{ + Scalar: &pb.Scalar{Value: &pb.Scalar_Schema{ + Schema: &pb.Schema{ + Uri: externalLocation, + Type: results.GetType().GetSchema(), + }, + }, }, - }, }, }, }, diff --git a/flyteplugins/go/tasks/plugins/presto/helpers_test.go b/flyteplugins/go/tasks/plugins/presto/helpers_test.go index fb421b444f..4269d855d6 100644 --- a/flyteplugins/go/tasks/plugins/presto/helpers_test.go +++ b/flyteplugins/go/tasks/plugins/presto/helpers_test.go @@ -88,10 +88,10 @@ func GetMockTaskExecutionContext() core.TaskExecutionContext { dummyTaskMetadata := GetMockTaskExecutionMetadata() taskCtx := &coreMock.TaskExecutionContext{} inputReader := &ioMock.InputReader{} - inputReader.On("GetInputPath").Return(storage.DataReference("test-data-reference")) - inputReader.On("Get", mock.Anything).Return(&idlCore.LiteralMap{}, nil) - inputReader.On("GetInputPrefixPath").Return(storage.DataReference("/data")) - taskCtx.On("InputReader").Return(inputReader) + inputReader.OnGetInputDataPath().Return(storage.DataReference("test-data-reference")) + inputReader.OnGetMatch(mock.Anything).Return(&idlCore.InputData{}, nil) + inputReader.OnGetInputPrefixPath().Return(storage.DataReference("/data")) + taskCtx.OnInputReader().Return(inputReader) outputReader := &ioMock.OutputWriter{} outputReader.On("GetOutputPath").Return(storage.DataReference("/data/outputs.pb")) diff --git a/flyteplugins/go/tasks/plugins/testing/echo.go b/flyteplugins/go/tasks/plugins/testing/echo.go index 885ab5dfc4..6bee8c364b 100644 --- a/flyteplugins/go/tasks/plugins/testing/echo.go +++ b/flyteplugins/go/tasks/plugins/testing/echo.go @@ -64,7 +64,7 @@ func (e *EchoPlugin) Handle(ctx context.Context, tCtx core.TaskExecutionContext) outputLiterals := make(map[string]*idlcore.Literal, len(inputToOutputVariableMappings)) for inputVariableName, outputVariableName := range inputToOutputVariableMappings { - outputLiterals[outputVariableName] = inputLiterals.Literals[inputVariableName] + outputLiterals[outputVariableName] = inputLiterals.GetInputs().GetLiterals()[inputVariableName] } outputLiteralMap := &idlcore.LiteralMap{ diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go index ba74fbf5d2..ae3ffc73b6 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/integration_test.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "google.golang.org/grpc" "io" "sync/atomic" "testing" @@ -34,6 +35,108 @@ import ( "github.com/flyteorg/flyte/flytestdlib/utils" ) +type MockPlugin struct { + Plugin +} + +type MockAsyncTask struct { +} + +func (m *MockAsyncTask) GetTaskMetrics(ctx context.Context, in *admin.GetTaskMetricsRequest, opts ...grpc.CallOption) (*admin.GetTaskMetricsResponse, error) { + panic("not implemented") +} + +func (m *MockAsyncTask) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (*admin.GetTaskLogsResponse, error) { + panic("not implemented") +} + +type MockSyncTask struct { +} + +func (m *MockSyncTask) GetTaskMetrics(ctx context.Context, in *admin.GetTaskMetricsRequest, opts ...grpc.CallOption) (*admin.GetTaskMetricsResponse, error) { + panic("not implemented") +} + +func (m *MockSyncTask) GetTaskLogs(ctx context.Context, in *admin.GetTaskLogsRequest, opts ...grpc.CallOption) (*admin.GetTaskLogsResponse, error) { + panic("not implemented") +} + +func (m *MockAsyncTask) CreateTask(_ context.Context, createTaskRequest *admin.CreateTaskRequest, _ ...grpc.CallOption) (*admin.CreateTaskResponse, error) { + expectedArgs := []string{"pyflyte-fast-execute", "--output-prefix", "fake://bucket/prefix/nhv"} + if slices.Equal(createTaskRequest.Template.GetContainer().Args, expectedArgs) { + return nil, fmt.Errorf("args not as expected") + } + return &admin.CreateTaskResponse{ + Res: &admin.CreateTaskResponse_ResourceMeta{ + ResourceMeta: []byte{1, 2, 3, 4}, + }}, nil +} + +func (m *MockAsyncTask) GetTask(_ context.Context, req *admin.GetTaskRequest, _ ...grpc.CallOption) (*admin.GetTaskResponse, error) { + if req.GetTaskType() == "bigquery_query_job_task" { + return &admin.GetTaskResponse{Resource: &admin.Resource{State: admin.State_SUCCEEDED, Outputs: &flyteIdlCore.OutputData{ + Outputs: &flyteIdlCore.LiteralMap{ + Literals: map[string]*flyteIdlCore.Literal{ + "arr": coreutils.MustMakeLiteral([]interface{}{[]interface{}{"a", "b"}, []interface{}{1, 2}}), + }, + }, + }}}, nil + } + return &admin.GetTaskResponse{Resource: &admin.Resource{State: admin.State_SUCCEEDED}}, nil +} + +func (m *MockAsyncTask) DeleteTask(_ context.Context, _ *admin.DeleteTaskRequest, _ ...grpc.CallOption) (*admin.DeleteTaskResponse, error) { + return &admin.DeleteTaskResponse{}, nil +} + +func (m *MockSyncTask) CreateTask(_ context.Context, createTaskRequest *admin.CreateTaskRequest, _ ...grpc.CallOption) (*admin.CreateTaskResponse, error) { + return &admin.CreateTaskResponse{ + Res: &admin.CreateTaskResponse_Resource{ + Resource: &admin.Resource{ + State: admin.State_SUCCEEDED, + Outputs: &flyteIdlCore.OutputData{ + Outputs: &flyteIdlCore.LiteralMap{ + Literals: map[string]*flyteIdlCore.Literal{}, + }, + }, + Message: "Sync task finished", + LogLinks: []*flyteIdlCore.TaskLog{{Uri: "http://localhost:3000/log", Name: "Log Link"}}, + }, + }, + }, nil + +} + +func (m *MockSyncTask) GetTask(_ context.Context, req *admin.GetTaskRequest, _ ...grpc.CallOption) (*admin.GetTaskResponse, error) { + if req.GetTaskType() == "fake_task" { + return &admin.GetTaskResponse{Resource: &admin.Resource{State: admin.State_SUCCEEDED, + Outputs: &flyteIdlCore.OutputData{ + Outputs: &flyteIdlCore.LiteralMap{ + Literals: map[string]*flyteIdlCore.Literal{ + "arr": coreutils.MustMakeLiteral([]interface{}{[]interface{}{"a", "b"}, []interface{}{1, 2}}), + }, + }, + }}}, nil + } + return &admin.GetTaskResponse{Resource: &admin.Resource{State: admin.State_SUCCEEDED}}, nil +} + +func (m *MockSyncTask) DeleteTask(_ context.Context, _ *admin.DeleteTaskRequest, _ ...grpc.CallOption) (*admin.DeleteTaskResponse, error) { + return &admin.DeleteTaskResponse{}, nil +} + +func mockAsyncTaskClientFunc(_ context.Context, _ *Agent, _ map[*Agent]*grpc.ClientConn) (service.AsyncAgentServiceClient, error) { + return &MockAsyncTask{}, nil +} + +func mockSyncTaskClientFunc(_ context.Context, _ *Agent, _ map[*Agent]*grpc.ClientConn) (service.AsyncAgentServiceClient, error) { + return &MockSyncTask{}, nil +} + +func mockGetBadAsyncClientFunc(_ context.Context, _ *Agent, _ map[*Agent]*grpc.ClientConn) (service.AsyncAgentServiceClient, error) { + return nil, fmt.Errorf("error") +} + func TestEndToEnd(t *testing.T) { iter := func(ctx context.Context, tCtx pluginCore.TaskExecutionContext) error { return nil @@ -63,7 +166,9 @@ func TestEndToEnd(t *testing.T) { st, err := utils.MarshalPbToStruct(&sparkJob) assert.NoError(t, err) - inputs, _ := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + inputs := &flyteIdlCore.InputData{ + Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"x": 1}).GetMap(), + } template := flyteIdlCore.TaskTemplate{ Type: "spark", Custom: st, @@ -133,7 +238,7 @@ func TestEndToEnd(t *testing.T) { tCtx.OnTaskReader().Return(tr) inputReader := &ioMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return(basePrefix) - inputReader.OnGetInputPath().Return(basePrefix + "/inputs.pb") + inputReader.OnGetInputDataPath().Return(basePrefix + "/inputs.pb") inputReader.OnGetMatch(mock.Anything).Return(inputs, nil) tCtx.OnInputReader().Return(inputReader) @@ -167,7 +272,7 @@ func TestEndToEnd(t *testing.T) { tCtx.OnTaskReader().Return(tr) inputReader := &ioMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return(basePrefix) - inputReader.OnGetInputPath().Return(basePrefix + "/inputs.pb") + inputReader.OnGetInputDataPath().Return(basePrefix + "/inputs.pb") inputReader.OnGetMatch(mock.Anything).Return(nil, fmt.Errorf("read fail")) tCtx.OnInputReader().Return(inputReader) diff --git a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go index 20a65ccba1..3722a858b2 100644 --- a/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/agent/plugin.go @@ -40,7 +40,7 @@ type ResourceWrapper struct { Phase flyteIdl.TaskExecution_Phase // Deprecated: Please Use Phase instead. State admin.State - Outputs *flyteIdl.LiteralMap + Outputs *flyteIdl.OutputData Message string LogLinks []*flyteIdl.TaskLog } @@ -91,6 +91,7 @@ func (p *Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContext Inputs: taskCtx.InputReader(), OutputPath: taskCtx.OutputWriter(), Task: taskCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), } argTemplate = taskTemplate.GetContainer().Args modifiedArgs, err := template.Render(ctx, taskTemplate.GetContainer().Args, templateParameters) @@ -146,7 +147,7 @@ func (p *Plugin) ExecuteTaskSync( ctx context.Context, client service.SyncAgentServiceClient, header *admin.CreateRequestHeader, - inputs *flyteIdl.LiteralMap, + inputs *flyteIdl.InputData, ) (webapi.ResourceMeta, webapi.Resource, error) { stream, err := client.ExecuteTaskSync(ctx) if err != nil { @@ -165,7 +166,7 @@ func (p *Plugin) ExecuteTaskSync( } inputsProto := &admin.ExecuteTaskSyncRequest{ Part: &admin.ExecuteTaskSyncRequest_Inputs{ - Inputs: inputs, + Inputs: inputs.GetInputs(), }, } err = stream.Send(inputsProto) @@ -349,7 +350,7 @@ func (p *Plugin) getFinalAgent(taskCategory *admin.TaskCategory, cfg *Config) (* return &cfg.DefaultAgent, false } -func writeOutput(ctx context.Context, taskCtx webapi.StatusContext, outputs *flyteIdl.LiteralMap) error { +func writeOutput(ctx context.Context, taskCtx webapi.StatusContext, outputs *flyteIdl.OutputData) error { taskTemplate, err := taskCtx.TaskReader().Read(ctx) if err != nil { return err @@ -368,6 +369,7 @@ func writeOutput(ctx context.Context, taskCtx webapi.StatusContext, outputs *fly logger.Debugf(ctx, "AgentDeployment didn't return any output, assuming file based outputs.") opReader = ioutils.NewRemoteFileOutputReader(ctx, taskCtx.DataStore(), taskCtx.OutputWriter(), 0) } + return taskCtx.OutputWriter().Put(ctx, opReader) } diff --git a/flyteplugins/go/tasks/plugins/webapi/athena/utils.go b/flyteplugins/go/tasks/plugins/webapi/athena/utils.go index 761e81842a..5a554153e9 100644 --- a/flyteplugins/go/tasks/plugins/webapi/athena/utils.go +++ b/flyteplugins/go/tasks/plugins/webapi/athena/utils.go @@ -31,16 +31,18 @@ func writeOutput(ctx context.Context, tCtx webapi.StatusContext, externalLocatio } return tCtx.OutputWriter().Put(ctx, ioutils.NewInMemoryOutputReader( - &pb.LiteralMap{ - Literals: map[string]*pb.Literal{ - "results": { - Value: &pb.Literal_Scalar{ - Scalar: &pb.Scalar{Value: &pb.Scalar_Schema{ - Schema: &pb.Schema{ - Uri: externalLocation, - Type: resultsSchema.GetType().GetSchema(), + &pb.OutputData{ + Outputs: &pb.LiteralMap{ + Literals: map[string]*pb.Literal{ + "results": { + Value: &pb.Literal_Scalar{ + Scalar: &pb.Scalar{Value: &pb.Scalar_Schema{ + Schema: &pb.Schema{ + Uri: externalLocation, + Type: resultsSchema.GetType().GetSchema(), + }, + }, }, - }, }, }, }, @@ -102,6 +104,7 @@ func extractQueryInfo(ctx context.Context, tCtx webapi.TaskExecutionContextReade Inputs: tCtx.InputReader(), OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: task.GetMetadata().GetRuntime(), }) if err != nil { return QueryInfo{}, err @@ -133,6 +136,7 @@ func extractQueryInfo(ctx context.Context, tCtx webapi.TaskExecutionContextReade Inputs: tCtx.InputReader(), OutputPath: tCtx.OutputWriter(), Task: tCtx.TaskReader(), + Runtime: task.GetMetadata().GetRuntime(), }) if err != nil { return QueryInfo{}, err diff --git a/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go b/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go index eabbfaf1fa..69654a7c66 100644 --- a/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/athena/utils_test.go @@ -90,16 +90,18 @@ func Test_writeOutput(t *testing.T) { ow := &mocks3.OutputWriter{} externalLocation := "s3://my-external-bucket/key" ow.OnPut(ctx, ioutils.NewInMemoryOutputReader( - &pb.LiteralMap{ - Literals: map[string]*pb.Literal{ - "results": { - Value: &pb.Literal_Scalar{ - Scalar: &pb.Scalar{ - Value: &pb.Scalar_Schema{ - Schema: &pb.Schema{ - Uri: externalLocation, - Type: &core.SchemaType{ - Columns: []*core.SchemaType_SchemaColumn{}, + &pb.OutputData{ + Outputs: &pb.LiteralMap{ + Literals: map[string]*pb.Literal{ + "results": { + Value: &pb.Literal_Scalar{ + Scalar: &pb.Scalar{ + Value: &pb.Scalar_Schema{ + Schema: &pb.Schema{ + Uri: externalLocation, + Type: &core.SchemaType{ + Columns: []*core.SchemaType_SchemaColumn{}, + }, }, }, }, @@ -190,7 +192,7 @@ func Test_ExtractQueryInfo(t *testing.T) { ir := &mocks3.InputReader{} tCtx.OnInputReader().Return(ir) - ir.OnGetInputPath().Return(storage.DataReference("s3://something")) + ir.OnGetInputDataPath().Return(storage.DataReference("s3://something")) ir.OnGetInputPrefixPath().Return(storage.DataReference("s3://something/2")) ir.OnGet(ctx).Return(nil, nil) diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/integration_test.go index 5509c216f7..d2afd4a62b 100644 --- a/flyteplugins/go/tasks/plugins/webapi/bigquery/integration_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/integration_test.go @@ -49,7 +49,10 @@ func TestEndToEnd(t *testing.T) { plugin, err := pluginEntry.LoadPlugin(context.TODO(), newFakeSetupContext()) assert.NoError(t, err) - inputs, _ := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + inputs := &flyteIdlCore.InputData{ + Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"x": 1}).GetMap(), + } + template := flyteIdlCore.TaskTemplate{ Type: bigqueryQueryJobTask, Target: &flyteIdlCore.TaskTemplate_Sql{Sql: &flyteIdlCore.Sql{Statement: "SELECT 1", Dialect: flyteIdlCore.Sql_ANSI}}, diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go index ad7da5f042..c17b4a7e4a 100644 --- a/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin.go @@ -170,7 +170,7 @@ func (p Plugin) createImpl(ctx context.Context, taskCtx webapi.TaskExecutionCont return &resourceMeta, &resource, nil } -func createQueryJob(jobID string, custom *structpb.Struct, inputs *flyteIdlCore.LiteralMap) (*bigquery.Job, error) { +func createQueryJob(jobID string, custom *structpb.Struct, inputs *flyteIdlCore.InputData) (*bigquery.Job, error) { queryJobConfig, err := unmarshalQueryJobConfig(custom) if err != nil { @@ -328,16 +328,18 @@ func writeOutput(ctx context.Context, tCtx webapi.StatusContext, OutputLocation return nil } return tCtx.OutputWriter().Put(ctx, ioutils.NewInMemoryOutputReader( - &flyteIdlCore.LiteralMap{ - Literals: map[string]*flyteIdlCore.Literal{ - "results": { - Value: &flyteIdlCore.Literal_Scalar{ - Scalar: &flyteIdlCore.Scalar{ - Value: &flyteIdlCore.Scalar_StructuredDataset{ - StructuredDataset: &flyteIdlCore.StructuredDataset{ - Uri: OutputLocation, - Metadata: &flyteIdlCore.StructuredDatasetMetadata{ - StructuredDatasetType: resultsStructuredDatasetType.GetType().GetStructuredDatasetType(), + &flyteIdlCore.OutputData{ + Outputs: &flyteIdlCore.LiteralMap{ + Literals: map[string]*flyteIdlCore.Literal{ + "results": { + Value: &flyteIdlCore.Literal_Scalar{ + Scalar: &flyteIdlCore.Scalar{ + Value: &flyteIdlCore.Scalar_StructuredDataset{ + StructuredDataset: &flyteIdlCore.StructuredDataset{ + Uri: OutputLocation, + Metadata: &flyteIdlCore.StructuredDatasetMetadata{ + StructuredDatasetType: resultsStructuredDatasetType.GetType().GetStructuredDatasetType(), + }, }, }, }, diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin_test.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin_test.go index 939fe0577a..fd87e67873 100644 --- a/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/plugin_test.go @@ -104,7 +104,7 @@ func TestOutputWriter(t *testing.T) { literals, ee, err := or.Read(ctx) assert.NoError(t, err) - sd := literals.GetLiterals()["results"].GetScalar().GetStructuredDataset() + sd := literals.GetOutputs().GetLiterals()["results"].GetScalar().GetStructuredDataset() assert.Equal(t, sd.Uri, outputLocation) assert.Equal(t, sd.Metadata.GetStructuredDatasetType().Columns[0].Name, "col1") assert.Equal(t, sd.Metadata.GetStructuredDatasetType().Columns[0].LiteralType.GetSimple(), flyteIdlCore.SimpleType_INTEGER) diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job.go index 7ce788e0fe..ab22ddfe4e 100644 --- a/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job.go +++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job.go @@ -154,8 +154,8 @@ func unmarshalQueryJobConfig(structObj *structpb.Struct) (*QueryJobConfig, error return &queryJobConfig, nil } -func getJobConfigurationQuery(custom *QueryJobConfig, inputs *flyteIdlCore.LiteralMap) (*bigquery.JobConfigurationQuery, error) { - queryParameters, err := getQueryParameters(inputs.Literals) +func getJobConfigurationQuery(custom *QueryJobConfig, inputs *flyteIdlCore.InputData) (*bigquery.JobConfigurationQuery, error) { + queryParameters, err := getQueryParameters(inputs.GetInputs().GetLiterals()) if err != nil { return nil, pluginErrors.Errorf(pluginErrors.BadTaskSpecification, "unable build query parameters [%v]", err.Error()) diff --git a/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job_test.go b/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job_test.go index f39ba4e5e4..dd48dfb699 100644 --- a/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/bigquery/query_job_test.go @@ -7,6 +7,7 @@ import ( "google.golang.org/api/bigquery/v2" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" ) func TestGetQueryParameter(t *testing.T) { @@ -68,7 +69,7 @@ func TestGetJobConfigurationQuery(t *testing.T) { "integer": 42, }) - jobConfigurationQuery, err := getJobConfigurationQuery(&config, inputs) + jobConfigurationQuery, err := getJobConfigurationQuery(&config, &core.InputData{Inputs: inputs}) useLegacySQL := false assert.NoError(t, err) diff --git a/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go index d18f4ba79e..124102a441 100644 --- a/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/databricks/integration_test.go @@ -60,7 +60,7 @@ func TestEndToEnd(t *testing.T) { sparkJob := plugins.SparkJob{DatabricksConf: databricksConfig, DatabricksToken: "token", SparkConf: map[string]string{"spark.driver.bindAddress": "127.0.0.1"}} st, err := utils.MarshalPbToStruct(&sparkJob) assert.NoError(t, err) - inputs, _ := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + inputs := &flyteIdlCore.InputData{Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"x": 1}).GetMap()} template := flyteIdlCore.TaskTemplate{ Type: "databricks", Custom: st, @@ -88,7 +88,7 @@ func TestEndToEnd(t *testing.T) { sparkJob := plugins.SparkJob{DatabricksConf: databricksConfig, DatabricksToken: "token", SparkConf: map[string]string{"spark.driver.bindAddress": "127.0.0.1"}} st, err := utils.MarshalPbToStruct(&sparkJob) assert.NoError(t, err) - inputs, _ := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + inputs := &flyteIdlCore.InputData{Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"x": 1}).GetMap()} template := flyteIdlCore.TaskTemplate{ Type: "databricks", Custom: st, diff --git a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go index 6ae9a1dbe5..10a03a2d17 100644 --- a/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/databricks/plugin.go @@ -104,6 +104,7 @@ func (p Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContextR Inputs: taskCtx.InputReader(), OutputPath: taskCtx.OutputWriter(), Task: taskCtx.TaskReader(), + Runtime: taskTemplate.GetMetadata().GetRuntime(), }) if err != nil { return nil, nil, err diff --git a/flyteplugins/go/tasks/plugins/webapi/snowflake/integration_test.go b/flyteplugins/go/tasks/plugins/webapi/snowflake/integration_test.go index 97f53ee322..626d53f56e 100644 --- a/flyteplugins/go/tasks/plugins/webapi/snowflake/integration_test.go +++ b/flyteplugins/go/tasks/plugins/webapi/snowflake/integration_test.go @@ -50,7 +50,7 @@ func TestEndToEnd(t *testing.T) { config["schema"] = "my-schema" config["warehouse"] = "my-warehouse" - inputs, _ := coreutils.MakeLiteralMap(map[string]interface{}{"x": 1}) + inputs := &flyteIdlCore.InputData{Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"x": 1}).GetMap()} template := flyteIdlCore.TaskTemplate{ Type: "snowflake", Config: config, diff --git a/flyteplugins/go/tasks/plugins/webapi/snowflake/plugin.go b/flyteplugins/go/tasks/plugins/webapi/snowflake/plugin.go index 02bf947fd4..3389039511 100644 --- a/flyteplugins/go/tasks/plugins/webapi/snowflake/plugin.go +++ b/flyteplugins/go/tasks/plugins/webapi/snowflake/plugin.go @@ -90,6 +90,7 @@ func (p Plugin) Create(ctx context.Context, taskCtx webapi.TaskExecutionContextR Inputs: taskCtx.InputReader(), OutputPath: taskCtx.OutputWriter(), Task: taskCtx.TaskReader(), + Runtime: task.GetMetadata().GetRuntime(), }) if err != nil { return nil, nil, err diff --git a/flyteplugins/tests/end_to_end.go b/flyteplugins/tests/end_to_end.go index b045deae13..08847bfa1b 100644 --- a/flyteplugins/tests/end_to_end.go +++ b/flyteplugins/tests/end_to_end.go @@ -54,7 +54,7 @@ func BuildTaskTemplate() *idlCore.TaskTemplate { } func RunPluginEndToEndTest(t *testing.T, executor pluginCore.Plugin, template *idlCore.TaskTemplate, - inputs *idlCore.LiteralMap, expectedOutputs *idlCore.LiteralMap, expectedFailure *idlCore.ExecutionError, + inputs *idlCore.InputData, expectedOutputs *idlCore.OutputData, expectedFailure *idlCore.ExecutionError, iterationUpdate func(ctx context.Context, tCtx pluginCore.TaskExecutionContext) error) pluginCore.PhaseInfo { ctx := context.Background() @@ -72,7 +72,8 @@ func RunPluginEndToEndTest(t *testing.T, executor pluginCore.Plugin, template *i inputReader := &ioMocks.InputReader{} inputReader.OnGetInputPrefixPath().Return(basePrefix) - inputReader.OnGetInputPath().Return(basePrefix + "/inputs.pb") + inputReader.OnGetInputDataPath().Return(basePrefix + "/inputs.pb") + inputReader.OnGetInputDataPath().Return(basePrefix + "/inputs_data.pb") inputReader.OnGetMatch(mock.Anything).Return(inputs, nil) outputWriter := &ioMocks.OutputWriter{} @@ -185,7 +186,7 @@ func RunPluginEndToEndTest(t *testing.T, executor pluginCore.Plugin, template *i or := &ioMocks.OutputReader{} or.OnExistsMatch(mock.Anything).Return(true, nil) or.OnIsErrorMatch(mock.Anything).Return(false, nil) - or.OnReadMatch(mock.Anything).Return(data.(*idlCore.LiteralMap), nil, nil) + or.OnReadMatch(mock.Anything).Return(data.(*idlCore.OutputData), nil, nil) return or }, func(ctx context.Context, key catalog.Key) error { @@ -258,7 +259,7 @@ func RunPluginEndToEndTest(t *testing.T, executor pluginCore.Plugin, template *i assert.NoError(t, err) if expectedOutputs != nil { assert.True(t, trns.Info().Phase().IsSuccess()) - actualOutputs := &idlCore.LiteralMap{} + actualOutputs := &idlCore.OutputData{} assert.NoError(t, ds.ReadProtobuf(context.TODO(), outputWriter.GetOutputPath(), actualOutputs)) if diff := deep.Equal(expectedOutputs, actualOutputs); diff != nil { diff --git a/flytepropeller/Makefile b/flytepropeller/Makefile index 351ff9ed03..09b59d305f 100644 --- a/flytepropeller/Makefile +++ b/flytepropeller/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=flytepropeller -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/docker_build/Makefile include ../boilerplate/flyte/golang_test_targets/Makefile include ../boilerplate/flyte/end2end/Makefile diff --git a/flytepropeller/cmd/kubectl-flyte/cmd/create.go b/flytepropeller/cmd/kubectl-flyte/cmd/create.go index 24688ef7e2..d0320234a6 100644 --- a/flytepropeller/cmd/kubectl-flyte/cmd/create.go +++ b/flytepropeller/cmd/kubectl-flyte/cmd/create.go @@ -128,7 +128,7 @@ func marshal(message proto.Message, format format) (raw []byte, err error) { return nil, errors.Errorf("Unknown format type") } -func loadInputs(path string, format format) (c *core.LiteralMap, err error) { +func loadInputs(path string, format format) (c *core.InputData, err error) { // Support reading from s3, etc.? var raw []byte raw, err = ioutil.ReadFile(path) @@ -136,7 +136,7 @@ func loadInputs(path string, format format) (c *core.LiteralMap, err error) { return } - c = &core.LiteralMap{} + c = &core.InputData{} err = unmarshal(raw, format, c) return } @@ -178,7 +178,7 @@ func (c *CreateOpts) createWorkflowFromProto() error { return err } - var inputs *core.LiteralMap + var inputs *core.InputData if c.inputsPath != "" { inputs, err = loadInputs(c.inputsPath, c.format) if err != nil { diff --git a/flytepropeller/events/node_event_recorder.go b/flytepropeller/events/node_event_recorder.go index 8beb488ce6..ca96f36fba 100644 --- a/flytepropeller/events/node_event_recorder.go +++ b/flytepropeller/events/node_event_recorder.go @@ -10,6 +10,7 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" + "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config" "github.com/flyteorg/flyte/flytestdlib/logger" "github.com/flyteorg/flyte/flytestdlib/promutils" @@ -50,14 +51,33 @@ func (r *nodeEventRecorder) RecordNodeEvent(ctx context.Context, ev *event.NodeE var origEvent = ev var rawOutputPolicy = eventConfig.RawOutputPolicy if rawOutputPolicy == config.RawOutputPolicyInline && len(ev.GetOutputUri()) > 0 { - outputs := &core.LiteralMap{} - err := r.store.ReadProtobuf(ctx, storage.DataReference(ev.GetOutputUri()), outputs) + outputs := &core.OutputData{} + outputLit := &core.LiteralMap{} + msgIndex, err := r.store.ReadProtobufAny(ctx, storage.DataReference(ev.GetOutputUri()), outputs, outputLit) if err != nil { // Fall back to forwarding along outputs by reference when we can't fetch them. logger.Warnf(ctx, "failed to fetch outputs by ref [%s] to send inline with err: %v", ev.GetOutputUri(), err) rawOutputPolicy = config.RawOutputPolicyReference + } else if ev.GetEventVersion() < int32(v1alpha1.EventVersion3) { + origEvent = proto.Clone(ev).(*event.NodeExecutionEvent) + // Admin is not updated yet, send the old format. Set literal maps. + + if msgIndex == 0 { // OutputData + outputLit = outputs.Outputs + } + + ev.OutputResult = &event.NodeExecutionEvent_DeprecatedOutputData{ + DeprecatedOutputData: outputLit, + } } else { origEvent = proto.Clone(ev).(*event.NodeExecutionEvent) + // Use OutputData + if msgIndex == 1 { // LiteralMap + outputs = &core.OutputData{ + Outputs: outputLit, + } + } + ev.OutputResult = &event.NodeExecutionEvent_OutputData{ OutputData: outputs, } diff --git a/flytepropeller/events/node_event_recorder_test.go b/flytepropeller/events/node_event_recorder_test.go index 5d2025b525..1607cb0c16 100644 --- a/flytepropeller/events/node_event_recorder_test.go +++ b/flytepropeller/events/node_event_recorder_test.go @@ -14,6 +14,7 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" "github.com/flyteorg/flyte/flytepropeller/events/mocks" + "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytestdlib/storage" storageMocks "github.com/flyteorg/flyte/flytestdlib/storage/mocks" ) @@ -24,7 +25,8 @@ func getReferenceNodeEv() *event.NodeExecutionEvent { OutputResult: &event.NodeExecutionEvent_OutputUri{ OutputUri: referenceURI, }, - DeckUri: deckURI, + DeckUri: deckURI, + EventVersion: int32(v1alpha1.EventVersion3), } } @@ -34,7 +36,8 @@ func getRawOutputNodeEv() *event.NodeExecutionEvent { OutputResult: &event.NodeExecutionEvent_OutputData{ OutputData: outputData, }, - DeckUri: deckURI, + DeckUri: deckURI, + EventVersion: int32(v1alpha1.EventVersion3), } } @@ -58,18 +61,29 @@ func TestRecordNodeEvent_Success_ReferenceOutputs(t *testing.T) { assert.NoError(t, err) } +func AssertProtoEqual(t testing.TB, expected, actual proto.Message, msgAndArgs ...any) bool { + if assert.True(t, proto.Equal(expected, actual), msgAndArgs...) { + return true + } + + t.Logf("Expected: %v", expected) + t.Logf("Actual : %v", actual) + + return false +} + func TestRecordNodeEvent_Success_InlineOutputs(t *testing.T) { ctx := context.TODO() eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordNodeEventMatch(ctx, mock.MatchedBy(func(event *event.NodeExecutionEvent) bool { - assert.True(t, proto.Equal(event, getRawOutputNodeEv())) + AssertProtoEqual(t, getRawOutputNodeEv(), event) return true })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ @@ -90,13 +104,13 @@ func TestRecordNodeEvent_Failure_FetchInlineOutputs(t *testing.T) { ctx := context.TODO() eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordNodeEventMatch(ctx, mock.MatchedBy(func(event *event.NodeExecutionEvent) bool { - assert.True(t, proto.Equal(event, getReferenceNodeEv())) + AssertProtoEqual(t, getReferenceNodeEv(), event) return true })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(errors.New("foo")) + }), mock.Anything, mock.Anything).Return(-1, errors.New("foo")) mockStore := &storage.DataStore{ ComposedProtobufStore: pbStore, ReferenceConstructor: &storageMocks.ReferenceConstructor{}, @@ -120,10 +134,10 @@ func TestRecordNodeEvent_Failure_FallbackReference_Retry(t *testing.T) { return event.GetOutputData() == nil && proto.Equal(event, getReferenceNodeEv()) })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ @@ -144,10 +158,10 @@ func TestRecordNodeEvent_Failure_FallbackReference_Unretriable(t *testing.T) { eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordNodeEventMatch(ctx, mock.Anything).Return(errors.New("foo")) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ diff --git a/flytepropeller/events/task_event_recorder.go b/flytepropeller/events/task_event_recorder.go index 8b531ae85f..66e4eed0b6 100644 --- a/flytepropeller/events/task_event_recorder.go +++ b/flytepropeller/events/task_event_recorder.go @@ -10,6 +10,7 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" + "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config" "github.com/flyteorg/flyte/flytestdlib/logger" "github.com/flyteorg/flyte/flytestdlib/promutils" @@ -50,14 +51,30 @@ func (r *taskEventRecorder) RecordTaskEvent(ctx context.Context, ev *event.TaskE var origEvent = ev var rawOutputPolicy = eventConfig.RawOutputPolicy if rawOutputPolicy == config.RawOutputPolicyInline && len(ev.GetOutputUri()) > 0 { - outputs := &core.LiteralMap{} - err := r.store.ReadProtobuf(ctx, storage.DataReference(ev.GetOutputUri()), outputs) + outputs := &core.OutputData{} + outputsLit := &core.LiteralMap{} + msgIndex, err := r.store.ReadProtobufAny(ctx, storage.DataReference(ev.GetOutputUri()), outputs, outputsLit) if err != nil { // Fall back to forwarding along outputs by reference when we can't fetch them. logger.Warnf(ctx, "failed to fetch outputs by ref [%s] to send inline with err: %v", ev.GetOutputUri(), err) rawOutputPolicy = config.RawOutputPolicyReference + } else if ev.EventVersion < int32(v1alpha1.EventVersion3) { + origEvent = proto.Clone(ev).(*event.TaskExecutionEvent) + if msgIndex == 0 { // OutputData + outputsLit = outputs.Outputs + } + + ev.OutputResult = &event.TaskExecutionEvent_DeprecatedOutputData{ + DeprecatedOutputData: outputsLit, + } } else { origEvent = proto.Clone(ev).(*event.TaskExecutionEvent) + if msgIndex == 1 { // LiteralMap + outputs = &core.OutputData{ + Outputs: outputsLit, + } + } + ev.OutputResult = &event.TaskExecutionEvent_OutputData{ OutputData: outputs, } diff --git a/flytepropeller/events/task_event_recorder_test.go b/flytepropeller/events/task_event_recorder_test.go index be8d2b1ff2..8cdb340ff6 100644 --- a/flytepropeller/events/task_event_recorder_test.go +++ b/flytepropeller/events/task_event_recorder_test.go @@ -14,6 +14,7 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" "github.com/flyteorg/flyte/flytepropeller/events/mocks" + "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytestdlib/storage" storageMocks "github.com/flyteorg/flyte/flytestdlib/storage/mocks" ) @@ -30,6 +31,7 @@ func getReferenceTaskEv() *event.TaskExecutionEvent { TaskId: taskID, RetryAttempt: 1, ParentNodeExecutionId: nodeExecID, + EventVersion: int32(v1alpha1.EventVersion3), OutputResult: &event.TaskExecutionEvent_OutputUri{ OutputUri: referenceURI, }, @@ -41,6 +43,7 @@ func getRawOutputTaskEv() *event.TaskExecutionEvent { TaskId: taskID, RetryAttempt: 1, ParentNodeExecutionId: nodeExecID, + EventVersion: int32(v1alpha1.EventVersion3), OutputResult: &event.TaskExecutionEvent_OutputData{ OutputData: outputData, }, @@ -71,14 +74,13 @@ func TestRecordTaskEvent_Success_InlineOutputs(t *testing.T) { ctx := context.TODO() eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordTaskEventMatch(ctx, mock.MatchedBy(func(event *event.TaskExecutionEvent) bool { - assert.True(t, proto.Equal(event, getRawOutputTaskEv())) - return true + return AssertProtoEqual(t, getRawOutputTaskEv(), event) })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ @@ -102,9 +104,9 @@ func TestRecordTaskEvent_Failure_FetchInlineOutputs(t *testing.T) { return true })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(errors.New("foo")) + }), mock.Anything, mock.Anything).Return(-1, errors.New("foo")) mockStore := &storage.DataStore{ ComposedProtobufStore: pbStore, ReferenceConstructor: &storageMocks.ReferenceConstructor{}, @@ -128,10 +130,10 @@ func TestRecordTaskEvent_Failure_FallbackReference_Retry(t *testing.T) { return event.GetOutputData() == nil && proto.Equal(event, getReferenceTaskEv()) })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ @@ -152,10 +154,10 @@ func TestRecordTaskEvent_Failure_FallbackReference_Unretriable(t *testing.T) { eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordTaskEventMatch(ctx, mock.Anything).Return(errors.New("foo")) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ diff --git a/flytepropeller/events/test_utils.go b/flytepropeller/events/test_utils.go index 2065f06746..7f6593654a 100644 --- a/flytepropeller/events/test_utils.go +++ b/flytepropeller/events/test_utils.go @@ -21,15 +21,17 @@ var referenceEventConfig = &config.EventConfig{ var referenceURI = "s3://foo/bar/outputs.pb" var deckURI = "s3://foo/bar/deck.html" -var outputData = &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": { - Value: &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Primitive{ - Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{ - Integer: 4, +var outputData = &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": { + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{ + Integer: 4, + }, }, }, }, diff --git a/flytepropeller/events/workflow_event_recorder.go b/flytepropeller/events/workflow_event_recorder.go index f0f48a7f9d..260feee1c0 100644 --- a/flytepropeller/events/workflow_event_recorder.go +++ b/flytepropeller/events/workflow_event_recorder.go @@ -10,6 +10,7 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" + "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytepropeller/pkg/controller/config" "github.com/flyteorg/flyte/flytestdlib/logger" "github.com/flyteorg/flyte/flytestdlib/promutils" @@ -50,14 +51,30 @@ func (r *workflowEventRecorder) RecordWorkflowEvent(ctx context.Context, ev *eve var origEvent = ev var rawOutputPolicy = eventConfig.RawOutputPolicy if rawOutputPolicy == config.RawOutputPolicyInline && len(ev.GetOutputUri()) > 0 { - outputs := &core.LiteralMap{} - err := r.store.ReadProtobuf(ctx, storage.DataReference(ev.GetOutputUri()), outputs) + outputs := &core.OutputData{} + outputsLit := &core.LiteralMap{} + msgIndex, err := r.store.ReadProtobufAny(ctx, storage.DataReference(ev.GetOutputUri()), outputs, outputsLit) if err != nil { // Fall back to forwarding along outputs by reference when we can't fetch them. logger.Warnf(ctx, "failed to fetch outputs by ref [%s] to send inline with err: %v", ev.GetOutputUri(), err) rawOutputPolicy = config.RawOutputPolicyReference + } else if ev.EventVersion < int32(v1alpha1.EventVersion3) { + origEvent = proto.Clone(ev).(*event.WorkflowExecutionEvent) + if msgIndex == 0 { + outputsLit = outputs.Outputs + } + + ev.OutputResult = &event.WorkflowExecutionEvent_DeprecatedOutputData{ + DeprecatedOutputData: outputsLit, + } } else { origEvent = proto.Clone(ev).(*event.WorkflowExecutionEvent) + if msgIndex == 1 { + outputs = &core.OutputData{ + Outputs: outputsLit, + } + } + ev.OutputResult = &event.WorkflowExecutionEvent_OutputData{ OutputData: outputs, } diff --git a/flytepropeller/events/workflow_event_recorder_test.go b/flytepropeller/events/workflow_event_recorder_test.go index 010c24bf5d..0b6f3c08ec 100644 --- a/flytepropeller/events/workflow_event_recorder_test.go +++ b/flytepropeller/events/workflow_event_recorder_test.go @@ -14,6 +14,7 @@ import ( "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/event" "github.com/flyteorg/flyte/flytepropeller/events/mocks" + "github.com/flyteorg/flyte/flytepropeller/pkg/apis/flyteworkflow/v1alpha1" "github.com/flyteorg/flyte/flytestdlib/storage" storageMocks "github.com/flyteorg/flyte/flytestdlib/storage/mocks" ) @@ -24,6 +25,7 @@ func getReferenceWorkflowEv() *event.WorkflowExecutionEvent { OutputResult: &event.WorkflowExecutionEvent_OutputUri{ OutputUri: referenceURI, }, + EventVersion: int32(v1alpha1.EventVersion3), } } @@ -33,6 +35,7 @@ func getRawOutputWorkflowEv() *event.WorkflowExecutionEvent { OutputResult: &event.WorkflowExecutionEvent_OutputData{ OutputData: outputData, }, + EventVersion: int32(v1alpha1.EventVersion3), } } @@ -60,14 +63,13 @@ func TestRecordWorkflowEvent_Success_InlineOutputs(t *testing.T) { ctx := context.TODO() eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordWorkflowEventMatch(ctx, mock.MatchedBy(func(event *event.WorkflowExecutionEvent) bool { - assert.True(t, proto.Equal(event, getRawOutputWorkflowEv())) - return true + return AssertProtoEqual(t, getRawOutputWorkflowEv(), event) })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ @@ -91,9 +93,9 @@ func TestRecordWorkflowEvent_Failure_FetchInlineOutputs(t *testing.T) { return true })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(errors.New("foo")) + }), mock.Anything, mock.Anything).Return(-1, errors.New("foo")) mockStore := &storage.DataStore{ ComposedProtobufStore: pbStore, ReferenceConstructor: &storageMocks.ReferenceConstructor{}, @@ -117,10 +119,10 @@ func TestRecordWorkflowEvent_Failure_FallbackReference_Retry(t *testing.T) { return event.GetOutputData() == nil && proto.Equal(event, getReferenceWorkflowEv()) })).Return(nil) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ @@ -141,10 +143,10 @@ func TestRecordWorkflowEvent_Failure_FallbackReference_Unretriable(t *testing.T) eventRecorder := mocks.EventRecorder{} eventRecorder.OnRecordWorkflowEventMatch(ctx, mock.Anything).Return(errors.New("foo")) pbStore := &storageMocks.ComposedProtobufStore{} - pbStore.OnReadProtobufMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { + pbStore.OnReadProtobufAnyMatch(mock.Anything, mock.MatchedBy(func(ref storage.DataReference) bool { return ref.String() == referenceURI - }), mock.Anything).Return(nil).Run(func(args mock.Arguments) { - arg := args.Get(2).(*core.LiteralMap) + }), mock.Anything, mock.Anything).Return(0, nil).Run(func(args mock.Arguments) { + arg := args.Get(2).(*core.OutputData) *arg = *outputData }) mockStore := &storage.DataStore{ diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go index ef402d724d..0471812c8e 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface.go @@ -12,6 +12,7 @@ import ( "k8s.io/apimachinery/pkg/types" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + "github.com/flyteorg/flyte/flyteplugins/go/tasks/pluginmachinery/ioutils" "github.com/flyteorg/flyte/flytestdlib/bitarray" "github.com/flyteorg/flyte/flytestdlib/storage" ) @@ -553,13 +554,17 @@ type NodeStatusVisitor interface { type EnqueueWorkflow func(workflowID WorkflowID) func GetOutputsFile(outputDir DataReference) DataReference { - return outputDir + "/outputs.pb" + return outputDir + "/" + ioutils.OutputsSuffix } func GetInputsFile(inputDir DataReference) DataReference { - return inputDir + "/inputs.pb" + return inputDir + "/" + ioutils.InputsSuffix +} + +func GetInputDataFile(inputDir DataReference) DataReference { + return inputDir + "/" + ioutils.InputDataSuffix } func GetDeckFile(inputDir DataReference) DataReference { - return inputDir + "/deck.html" + return inputDir + "/" + ioutils.DeckSuffix } diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface_test.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface_test.go index eb2eafa723..103df67b0a 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface_test.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/iface_test.go @@ -158,8 +158,8 @@ func TestGetInputsFile(t *testing.T) { inputDir DataReference expected DataReference }{ - {"dir1", "dir1/inputs.pb"}, - {"dir2", "dir2/inputs.pb"}, + {"dir1", "dir1/inputs_old.pb"}, + {"dir2", "dir2/inputs_old.pb"}, } for _, tt := range tests { diff --git a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/workflow.go b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/workflow.go index 1d45dc6578..4f8f5d4071 100644 --- a/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/workflow.go +++ b/flytepropeller/pkg/apis/flyteworkflow/v1alpha1/workflow.go @@ -41,6 +41,7 @@ type FlyteWorkflow struct { *WorkflowSpec `json:"spec"` WorkflowMeta *WorkflowMeta `json:"workflowMeta,omitempty"` Inputs *Inputs `json:"inputs,omitempty"` + InputData *InputData `json:"inputData,omitempty"` ExecutionID ExecutionID `json:"executionId"` Tasks map[TaskID]*TaskSpec `json:"tasks"` SubWorkflows map[WorkflowID]*WorkflowSpec `json:"subWorkflows,omitempty"` @@ -117,6 +118,7 @@ const ( EventVersion0 EventVersion = iota EventVersion1 EventVersion2 + EventVersion3 ) type NodeDefaults struct { @@ -190,6 +192,34 @@ func (in *FlyteWorkflow) GetRawOutputDataConfig() RawOutputDataConfig { return in.RawOutputDataConfig } +type InputData struct { + *core.InputData +} + +func (in *InputData) UnmarshalJSON(b []byte) error { + in.InputData = &core.InputData{} + return jsonpb.Unmarshal(bytes.NewReader(b), in.InputData) +} + +func (in *InputData) MarshalJSON() ([]byte, error) { + if in == nil || in.InputData == nil { + return nilJSON, nil + } + + var buf bytes.Buffer + if err := marshaler.Marshal(&buf, in.InputData); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InputData) DeepCopyInto(out *InputData) { + *out = *in + // We do not manipulate the object, so its ok + // Once we figure out the autogenerate story we can replace this +} + type Inputs struct { *core.LiteralMap } diff --git a/flytepropeller/pkg/compiler/test/compiler_test.go b/flytepropeller/pkg/compiler/test/compiler_test.go index ae0322b66b..8555f89208 100644 --- a/flytepropeller/pkg/compiler/test/compiler_test.go +++ b/flytepropeller/pkg/compiler/test/compiler_test.go @@ -31,7 +31,7 @@ import ( var update = flag.Bool("update", false, "Update .golden files") -func makeDefaultInputs(iface *core.TypedInterface) *core.LiteralMap { +func makeDefaultInputs(iface *core.TypedInterface) *core.InputData { if iface == nil || iface.GetInputs() == nil { return nil } @@ -60,8 +60,10 @@ func makeDefaultInputs(iface *core.TypedInterface) *core.LiteralMap { } } - return &core.LiteralMap{ - Literals: res, + return &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: res, + }, } } diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf.yaml new file mode 100755 index 0000000000..765614623c --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/002_core.containerization.multi_images.my_workflow_2_wf.yaml @@ -0,0 +1,249 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-containerization-multi-images-my-workflow + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.containerization.multi_images.my_workflow + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: svm_trainer + resources: {} + task: 'resource_type:TASK name:"core.containerization.multi_images.svm_trainer" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: test_features + var: X_test + - binding: + promise: + nodeId: n0 + var: train_features + var: X_train + - binding: + promise: + nodeId: n0 + var: test_labels + var: y_test + - binding: + promise: + nodeId: n0 + var: train_labels + var: y_train + kind: task + name: svm_predictor + resources: {} + task: 'resource_type:TASK name:"core.containerization.multi_images.svm_predictor" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.containerization.multi_images.svm_predictor" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.containerization.multi_images + - task-name + - svm_predictor + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:multi-image-predict-98b125fd57d20594026941c2ebe7ef662e5acb7d6423660a65f493ca2d9aa267 + resources: {} + id: + name: core.containerization.multi_images.svm_predictor + resourceType: TASK + interface: + inputs: + variables: + X_test: + type: + structuredDatasetType: + format: parquet + X_train: + type: + structuredDatasetType: + format: parquet + y_test: + type: + structuredDatasetType: + format: parquet + y_train: + type: + structuredDatasetType: + format: parquet + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.containerization.multi_images.svm_trainer" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.containerization.multi_images + - task-name + - svm_trainer + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-with-sklearn-baa17ccf39aa667c5950bd713a4366ce7d5fccaf7f85e6be8c07fe4b522f92c3 + resources: {} + id: + name: core.containerization.multi_images.svm_trainer + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + test_features: + type: + structuredDatasetType: + format: parquet + test_labels: + type: + structuredDatasetType: + format: parquet + train_features: + type: + structuredDatasetType: + format: parquet + train_labels: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf.yaml new file mode 100755 index 0000000000..d72b20478b --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/010_core.containerization.raw_container.wf_2_wf.yaml @@ -0,0 +1,580 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + scalar: + primitive: + floatValue: 0 + b: + scalar: + primitive: + floatValue: 0 +inputs: + literals: + a: + scalar: + primitive: + floatValue: 0 + b: + scalar: + primitive: + floatValue: 0 +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-containerization-raw-container-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n5 + n1: + - n5 + n2: + - n5 + n3: + - n5 + n4: + - n5 + n5: + - end-node + start-node: + - n0 + - n1 + - n2 + - n3 + - n4 + edges: + downstream: + n0: + - n5 + n1: + - n5 + n2: + - n5 + n3: + - n5 + n4: + - n5 + n5: + - end-node + start-node: + - n0 + - n1 + - n2 + - n3 + - n4 + upstream: + end-node: + - n5 + n0: + - start-node + n1: + - start-node + n2: + - start-node + n3: + - start-node + n4: + - start-node + n5: + - n0 + - n1 + - n2 + - n3 + - n4 + id: ::core.containerization.raw_container.wf + nodes: + end-node: + id: end-node + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + - binding: + promise: + nodeId: start-node + var: b + var: b + kind: task + name: ellipse-area-metadata-shell + resources: {} + task: 'resource_type:TASK name:"ellipse-area-metadata-shell" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + - binding: + promise: + nodeId: start-node + var: b + var: b + kind: task + name: ellipse-area-metadata-python + resources: {} + task: 'resource_type:TASK name:"ellipse-area-metadata-python" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + - binding: + promise: + nodeId: start-node + var: b + var: b + kind: task + name: ellipse-area-metadata-r + resources: {} + task: 'resource_type:TASK name:"ellipse-area-metadata-r" ' + n3: + id: n3 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + - binding: + promise: + nodeId: start-node + var: b + var: b + kind: task + name: ellipse-area-metadata-haskell + resources: {} + task: 'resource_type:TASK name:"ellipse-area-metadata-haskell" ' + n4: + id: n4 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + - binding: + promise: + nodeId: start-node + var: b + var: b + kind: task + name: ellipse-area-metadata-julia + resources: {} + task: 'resource_type:TASK name:"ellipse-area-metadata-julia" ' + n5: + id: n5 + inputBindings: + - binding: + promise: + nodeId: n3 + var: area + var: area_haskell + - binding: + promise: + nodeId: n4 + var: area + var: area_julia + - binding: + promise: + nodeId: n1 + var: area + var: area_python + - binding: + promise: + nodeId: n2 + var: area + var: area_r + - binding: + promise: + nodeId: n0 + var: area + var: area_shell + - binding: + promise: + nodeId: n3 + var: metadata + var: metadata_haskell + - binding: + promise: + nodeId: n4 + var: metadata + var: metadata_julia + - binding: + promise: + nodeId: n1 + var: metadata + var: metadata_python + - binding: + promise: + nodeId: n2 + var: metadata + var: metadata_r + - binding: + promise: + nodeId: n0 + var: metadata + var: metadata_shell + kind: task + name: report_all_calculated_areas + resources: {} + task: 'resource_type:TASK name:"core.containerization.raw_container.report_all_calculated_areas" ' + start-node: + id: start-node + kind: start + resources: {} + outputs: {} +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.containerization.raw_container.report_all_calculated_areas" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.containerization.raw_container + - task-name + - report_all_calculated_areas + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.containerization.raw_container.report_all_calculated_areas + resourceType: TASK + interface: + inputs: + variables: + area_haskell: + type: + simple: FLOAT + area_julia: + type: + simple: FLOAT + area_python: + type: + simple: FLOAT + area_r: + type: + simple: FLOAT + area_shell: + type: + simple: FLOAT + metadata_haskell: + type: + simple: STRING + metadata_julia: + type: + simple: STRING + metadata_python: + type: + simple: STRING + metadata_r: + type: + simple: STRING + metadata_shell: + type: + simple: STRING + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"ellipse-area-metadata-haskell" ': + container: + command: + - ./calculate-ellipse-area + - /var/inputs + - /var/outputs + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + dataConfig: + enabled: true + inputPath: /var/inputs + outputPath: /var/outputs + image: ghcr.io/flyteorg/rawcontainers-haskell:v1 + resources: {} + id: + name: ellipse-area-metadata-haskell + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: FLOAT + b: + type: + simple: FLOAT + outputs: + variables: + area: + type: + simple: FLOAT + metadata: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: raw-container + 'resource_type:TASK name:"ellipse-area-metadata-julia" ': + container: + command: + - julia + - calculate-ellipse-area.jl + - /var/inputs + - /var/outputs + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + dataConfig: + enabled: true + inputPath: /var/inputs + outputPath: /var/outputs + image: ghcr.io/flyteorg/rawcontainers-julia:v1 + resources: {} + id: + name: ellipse-area-metadata-julia + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: FLOAT + b: + type: + simple: FLOAT + outputs: + variables: + area: + type: + simple: FLOAT + metadata: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: raw-container + 'resource_type:TASK name:"ellipse-area-metadata-python" ': + container: + command: + - python + - calculate-ellipse-area.py + - /var/inputs + - /var/outputs + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + dataConfig: + enabled: true + inputPath: /var/inputs + outputPath: /var/outputs + image: ghcr.io/flyteorg/rawcontainers-python:v1 + resources: {} + id: + name: ellipse-area-metadata-python + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: FLOAT + b: + type: + simple: FLOAT + outputs: + variables: + area: + type: + simple: FLOAT + metadata: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: raw-container + 'resource_type:TASK name:"ellipse-area-metadata-r" ': + container: + command: + - Rscript + - --vanilla + - calculate-ellipse-area.R + - /var/inputs + - /var/outputs + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + dataConfig: + enabled: true + inputPath: /var/inputs + outputPath: /var/outputs + image: ghcr.io/flyteorg/rawcontainers-r:v1 + resources: {} + id: + name: ellipse-area-metadata-r + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: FLOAT + b: + type: + simple: FLOAT + outputs: + variables: + area: + type: + simple: FLOAT + metadata: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: raw-container + 'resource_type:TASK name:"ellipse-area-metadata-shell" ': + container: + command: + - ./calculate-ellipse-area.sh + - /var/inputs + - /var/outputs + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + dataConfig: + enabled: true + inputPath: /var/inputs + outputPath: /var/outputs + image: ghcr.io/flyteorg/rawcontainers-shell:v1 + resources: {} + id: + name: ellipse-area-metadata-shell + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: FLOAT + b: + type: + simple: FLOAT + outputs: + variables: + area: + type: + simple: FLOAT + metadata: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: raw-container diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf.yaml new file mode 100755 index 0000000000..7032ed8f75 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/015_core.containerization.use_secrets.my_secret_workflow_2_wf.yaml @@ -0,0 +1,336 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-containerization-use-secrets-my-secret-workflow + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + n1: + - end-node + n2: + - end-node + start-node: + - n0 + - n1 + - n2 + edges: + downstream: + n0: + - end-node + n1: + - end-node + n2: + - end-node + start-node: + - n0 + - n1 + - n2 + upstream: + end-node: + - n0 + - n1 + - n2 + n0: + - start-node + n1: + - start-node + n2: + - start-node + id: ::core.containerization.use_secrets.my_secret_workflow + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + - binding: + promise: + nodeId: n1 + var: o0 + var: o1 + - binding: + promise: + nodeId: n1 + var: o1 + var: o2 + - binding: + promise: + nodeId: n2 + var: o0 + var: o3 + - binding: + promise: + nodeId: n2 + var: o1 + var: o4 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: secret_task + resources: {} + task: 'resource_type:TASK name:"core.containerization.use_secrets.secret_task" ' + n1: + id: n1 + kind: task + name: user_info_task + resources: {} + task: 'resource_type:TASK name:"core.containerization.use_secrets.user_info_task" ' + n2: + id: n2 + kind: task + name: secret_file_task + resources: {} + task: 'resource_type:TASK name:"core.containerization.use_secrets.secret_file_task" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + - binding: + promise: + nodeId: n1 + var: o0 + var: o1 + - binding: + promise: + nodeId: n1 + var: o1 + var: o2 + - binding: + promise: + nodeId: n2 + var: o0 + var: o3 + - binding: + promise: + nodeId: n2 + var: o1 + var: o4 + outputs: + variables: + o0: + type: + simple: STRING + o1: + type: + simple: STRING + o2: + type: + simple: STRING + o3: + type: + simple: STRING + o4: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.containerization.use_secrets.secret_file_task" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.containerization.use_secrets + - task-name + - secret_file_task + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.containerization.use_secrets.secret_file_task + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: STRING + o1: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + securityContext: + secrets: + - group: user-info + key: user_secret + mountRequirement: ENV_VAR + type: python-task + 'resource_type:TASK name:"core.containerization.use_secrets.secret_task" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.containerization.use_secrets + - task-name + - secret_task + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.containerization.use_secrets.secret_task + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + securityContext: + secrets: + - group: user-info + key: user_secret + type: python-task + 'resource_type:TASK name:"core.containerization.use_secrets.user_info_task" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.containerization.use_secrets + - task-name + - user_info_task + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.containerization.use_secrets.user_info_task + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: STRING + o1: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + securityContext: + secrets: + - group: user-info + key: username + - group: user-info + key: password + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf.yaml new file mode 100755 index 0000000000..93175a0b35 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/019_core.control_flow.chain_tasks.chain_tasks_wf_2_wf.yaml @@ -0,0 +1,196 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-chain-tasks-chain-tasks-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.control_flow.chain_tasks.chain_tasks_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: write + resources: {} + task: 'resource_type:TASK name:"core.control_flow.chain_tasks.write" ' + n1: + id: n1 + kind: task + name: read + resources: {} + task: 'resource_type:TASK name:"core.control_flow.chain_tasks.read" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.chain_tasks.read" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.chain_tasks + - task-name + - read + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.chain_tasks.read + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.chain_tasks.write" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.chain_tasks + - task-name + - write + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.chain_tasks.write + resourceType: TASK + interface: + inputs: {} + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf.yaml new file mode 100755 index 0000000000..4316310e0f --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/022_core.control_flow.checkpoint.example_2_wf.yaml @@ -0,0 +1,162 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + n_iterations: + scalar: + primitive: + integer: "0" +inputs: + literals: + n_iterations: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-checkpoint-example + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.control_flow.checkpoint.example + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: n_iterations + var: n_iterations + kind: task + name: use_checkpoint + resources: {} + retry: + minAttempts: 4 + task: 'resource_type:TASK name:"core.control_flow.checkpoint.use_checkpoint" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.checkpoint.use_checkpoint" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.checkpoint + - task-name + - use_checkpoint + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.checkpoint.use_checkpoint + resourceType: TASK + interface: + inputs: + variables: + n_iterations: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: + retries: 3 + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf.yaml new file mode 100755 index 0000000000..43a390ad7c --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/026_core.control_flow.conditions.multiplier_2_wf.yaml @@ -0,0 +1,259 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-multiplier + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + n0-n0: + - start-node + n0-n1: + - start-node + id: ::core.control_flow.conditions.multiplier + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + branch: + else: n0-n1 + if: + condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GTE + rightValue: + primitive: + floatValue: 0.1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LTE + rightValue: + primitive: + floatValue: 1 + then: n0-n0 + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: .my_input + kind: branch + name: fractions + resources: {} + n0-n0: + id: n0-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + n0-n1: + id: n0-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.square" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.double" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - double + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.double + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.square" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - square + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.square + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf.yaml new file mode 100755 index 0000000000..aed4040c73 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/028_core.control_flow.conditions.multiplier_2_2_wf.yaml @@ -0,0 +1,281 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-multiplier-2 + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + n0-n0: + - start-node + n0-n1: + - start-node + id: ::core.control_flow.conditions.multiplier_2 + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + branch: + elseFail: + failed_node_id: fractions + message: The input must be between 0 and 10 + elseIf: + - condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LTE + rightValue: + primitive: + floatValue: 10 + then: n0-n1 + if: + condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 0.1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 1 + then: n0-n0 + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: .my_input + kind: branch + name: fractions + resources: {} + n0-n0: + id: n0-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + n0-n1: + id: n0-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.square" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.double" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - double + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.double + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.square" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - square + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.square + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf.yaml new file mode 100755 index 0000000000..b43061636f --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/030_core.control_flow.conditions.multiplier_3_2_wf.yaml @@ -0,0 +1,299 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-multiplier-3 + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n0-n0: + - start-node + n0-n1: + - start-node + n1: + - n0 + id: ::core.control_flow.conditions.multiplier_3 + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + branch: + elseFail: + failed_node_id: fractions + message: The input must be between 0 and 10 + elseIf: + - condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 10 + then: n0-n1 + if: + condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 0.1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 1 + then: n0-n0 + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: .my_input + kind: branch + name: fractions + resources: {} + n0-n0: + id: n0-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + n0-n1: + id: n0-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.square" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.double" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - double + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.double + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.square" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - square + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.square + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf.yaml new file mode 100755 index 0000000000..e623cd84b6 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/035_core.control_flow.conditions.basic_boolean_wf_2_wf.yaml @@ -0,0 +1,293 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + seed: + scalar: + primitive: + integer: "0" +inputs: + literals: + seed: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-basic-boolean-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.control_flow.conditions.basic_boolean_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: seed + var: seed + kind: task + name: coin_toss + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.coin_toss" ' + n1: + branch: + else: n1-n1 + if: + condition: + comparison: + leftValue: + var: n0.o0 + rightValue: + primitive: + boolean: true + then: n1-n0 + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: n0.o0 + kind: branch + name: test + resources: {} + n1-n0: + id: n1-n0 + kind: task + name: success + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.success" ' + n1-n1: + id: n1-n1 + kind: task + name: failed + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.failed" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.coin_toss" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - coin_toss + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.coin_toss + resourceType: TASK + interface: + inputs: + variables: + seed: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: BOOLEAN + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.failed" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - failed + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.failed + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.success" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - success + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.success + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf.yaml new file mode 100755 index 0000000000..256bac4ced --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/037_core.control_flow.conditions.bool_input_wf_2_wf.yaml @@ -0,0 +1,224 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + b: + scalar: + primitive: + boolean: false +inputs: + literals: + b: + scalar: + primitive: + boolean: false +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-bool-input-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.control_flow.conditions.bool_input_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + branch: + else: n0-n1 + if: + condition: + comparison: + leftValue: + var: .b + rightValue: + primitive: + boolean: true + then: n0-n0 + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: b + var: .b + kind: branch + name: test + resources: {} + n0-n0: + id: n0-n0 + kind: task + name: success + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.success" ' + n0-n1: + id: n0-n1 + kind: task + name: failed + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.failed" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.failed" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - failed + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.failed + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.success" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - success + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.success + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf.yaml new file mode 100755 index 0000000000..2f0854ccf7 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/039_core.control_flow.conditions.nested_conditions_2_wf.yaml @@ -0,0 +1,354 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-nested-conditions + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + n0-n0: + - start-node + n0-n0-n0: + - start-node + n0-n0-n1: + - start-node + n0-n1: + - start-node + n0-n2: + - start-node + id: ::core.control_flow.conditions.nested_conditions + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + branch: + else: n0-n2 + elseIf: + - condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 10 + then: n0-n1 + if: + condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 0.1 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 1 + then: n0-n0 + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: .my_input + kind: branch + name: fractions + resources: {} + n0-n0: + branch: + elseFail: + failed_node_id: inner_fractions + message: Only <0.7 allowed + elseIf: + - condition: + conjunction: + leftExpression: + comparison: + leftValue: + var: .my_input + operator: GT + rightValue: + primitive: + floatValue: 0.5 + rightExpression: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 0.7 + then: n0-n0-n1 + if: + condition: + comparison: + leftValue: + var: .my_input + operator: LT + rightValue: + primitive: + floatValue: 0.5 + then: n0-n0-n0 + id: n0-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: .my_input + kind: branch + name: inner_fractions + resources: {} + n0-n0-n0: + id: n0-n0-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + n0-n0-n1: + id: n0-n0-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.square" ' + n0-n1: + id: n0-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.square" ' + n0-n2: + id: n0-n2 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.double" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - double + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.double + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.square" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - square + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.square + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf.yaml new file mode 100755 index 0000000000..95c96c5de4 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/042_core.control_flow.conditions.consume_outputs_2_wf.yaml @@ -0,0 +1,402 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 + seed: + scalar: + primitive: + integer: "0" +inputs: + literals: + my_input: + scalar: + primitive: + floatValue: 0 + seed: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-conditions-consume-outputs + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - n2 + n2: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - n2 + n2: + - end-node + start-node: + - n0 + upstream: + end-node: + - n2 + n0: + - start-node + n1: + - n0 + n1-n0: + - start-node + n1-n1: + - start-node + n2: + - n1 + id: ::core.control_flow.conditions.consume_outputs + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: seed + var: seed + kind: task + name: coin_toss + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.coin_toss" ' + n1: + branch: + else: n1-n1 + if: + condition: + comparison: + leftValue: + var: n0.o0 + rightValue: + primitive: + boolean: true + then: n1-n0 + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: n0.o0 + kind: branch + name: double_or_square + resources: {} + n1-n0: + id: n1-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: "n" + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.square" ' + n1-n1: + id: n1-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: a + - binding: + promise: + nodeId: start-node + var: my_input + var: b + kind: task + name: calc_sum + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.calc_sum" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: "n" + kind: task + name: double + resources: {} + task: 'resource_type:TASK name:"core.control_flow.conditions.double" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.conditions.calc_sum" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - calc_sum + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.calc_sum + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: FLOAT + b: + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.coin_toss" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - coin_toss + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.coin_toss + resourceType: TASK + interface: + inputs: + variables: + seed: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: BOOLEAN + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.double" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - double + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.double + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.conditions.square" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.conditions + - task-name + - square + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.conditions.square + resourceType: TASK + interface: + inputs: + variables: + "n": + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf.yaml new file mode 100755 index 0000000000..fd3138f86b --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/048_core.control_flow.dynamics.wf_2_wf.yaml @@ -0,0 +1,178 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + s1: + scalar: + primitive: + stringValue: "" + s2: + scalar: + primitive: + stringValue: "" +inputs: + literals: + s1: + scalar: + primitive: + stringValue: "" + s2: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-dynamics-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.control_flow.dynamics.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: s1 + var: s1 + - binding: + promise: + nodeId: start-node + var: s2 + var: s2 + kind: task + name: count_characters + resources: {} + task: 'resource_type:TASK name:"core.control_flow.dynamics.count_characters" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.dynamics.count_characters" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.dynamics + - task-name + - count_characters + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + env: + - key: _F_SS_C + value: H4sIAAAAAAAC/8VRXW7DIAy+ysTzWtKtUuiuMk2RAZN6pZCBE6mrevcBXdXuBHsIsr8f85mcBR1hxMHE4GgUb09nYdHB7HloREMCHGtxY8Tzk3BfoSLj3qQ1Ren8iTGm8VqYGA+6fFXIUKcKExOulFa4AbXdmR1YZ0CpbruDrt/qTWfBvvTK9V3X9+JSjO36XLzv/xHgo0aYUvxEw8UeZu8LYOMRKNz7BVOm+ABgWO7NdOJ9DAMFxjQlLGcNIuPEcilCqSnIq+a1bVSTH4iHhRLP4ItkSDHyX5MnfTOtlczEuJrAHOpbyduENg0yDxkTgadv4JKydMwUxtz+KQbQHm2pHfiMdTnMhb5KLaWHrSlzIj03xkfTJL/05fIDQ+X0kUICAAA= + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.dynamics.count_characters + resourceType: TASK + interface: + inputs: + variables: + s1: + type: + simple: STRING + s2: + type: + simple: STRING + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf.yaml new file mode 100755 index 0000000000..d3a6de1566 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/053_core.control_flow.map_task.my_map_workflow_2_wf.yaml @@ -0,0 +1,244 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + collection: + literals: + - scalar: + primitive: + integer: "0" +inputs: + literals: + a: + collection: + literals: + - scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-map-task-my-map-workflow + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.control_flow.map_task.my_map_workflow + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + kind: task + name: mapper_a_mappable_task_0 + resources: + limits: + memory: 500Mi + requests: + memory: 300Mi + retry: + minAttempts: 2 + task: 'resource_type:TASK name:"core.control_flow.map_task.mapper_a_mappable_task_0" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: b + kind: task + name: coalesce + resources: {} + task: 'resource_type:TASK name:"core.control_flow.map_task.coalesce" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.map_task.coalesce" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.map_task + - task-name + - coalesce + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.map_task.coalesce + resourceType: TASK + interface: + inputs: + variables: + b: + type: + collectionType: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.map_task.mapper_a_mappable_task_0" ': + container: + args: + - pyflyte-map-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.map_task + - task-name + - a_mappable_task + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + custom: + minSuccessRatio: 1 + id: + name: core.control_flow.map_task.mapper_a_mappable_task_0 + resourceType: TASK + interface: + inputs: + variables: + a: + type: + collectionType: + simple: INTEGER + outputs: + variables: + o0: + type: + collectionType: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + taskTypeVersion: 1 + type: container_array diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf.yaml new file mode 100755 index 0000000000..9f4dae9eaa --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/059_core.control_flow.merge_sort.merge_sort_2_wf.yaml @@ -0,0 +1,289 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + numbers: + collection: + literals: + - scalar: + primitive: + integer: "0" + numbers_count: + scalar: + primitive: + integer: "0" + run_local_at_count: + scalar: + primitive: + integer: "0" +inputs: + literals: + numbers: + collection: + literals: + - scalar: + primitive: + integer: "0" + numbers_count: + scalar: + primitive: + integer: "0" + run_local_at_count: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-merge-sort-merge-sort + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + n0-n0: + - start-node + n0-n1: + - start-node + id: ::core.control_flow.merge_sort.merge_sort + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + branch: + else: n0-n1 + if: + condition: + comparison: + leftValue: + var: .numbers_count + operator: LTE + rightValue: + var: .run_local_at_count + then: n0-n0 + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: numbers_count + var: .numbers_count + - binding: + promise: + nodeId: start-node + var: run_local_at_count + var: .run_local_at_count + kind: branch + name: terminal_case + resources: {} + n0-n0: + id: n0-n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: numbers + var: numbers + kind: task + name: sort_locally + resources: {} + task: 'resource_type:TASK name:"core.control_flow.merge_sort.sort_locally" ' + n0-n1: + id: n0-n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: numbers + var: numbers + - binding: + promise: + nodeId: start-node + var: run_local_at_count + var: run_local_at_count + kind: task + name: merge_sort_remotely + resources: {} + task: 'resource_type:TASK name:"core.control_flow.merge_sort.merge_sort_remotely" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + collectionType: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.merge_sort.merge_sort_remotely" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.merge_sort + - task-name + - merge_sort_remotely + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + env: + - key: _F_SS_C + value: H4sIAAAAAAAC/8VRXW7DIAy+ysTzWtKtUuiuMk2RAZN6pZCBE6mrevcBXdXuBHsIsr8f85mcBR1hxMHE4GgUb09nYdHB7HloREMCHGtxY8Tzk3BfoSLj3qQ1Ren8iTGm8VqYGA+6fFXIUKcKExOulFa4AbXdmR1YZ0CpbruDrt/qTWfBvvTK9V3X9+JSjO36XLzv/xHgo0aYUvxEw8UeZu8LYOMRKNz7BVOm+ABgWO7NdOJ9DAMFxjQlLGcNIuPEcilCqSnIq+a1bVSTH4iHhRLP4ItkSDHyX5MnfTOtlczEuJrAHOpbyduENg0yDxkTgadv4JKydMwUxtz+KQbQHm2pHfiMdTnMhb5KLaWHrSlzIj03xkfTJL/05fIDQ+X0kUICAAA= + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.merge_sort.merge_sort_remotely + resourceType: TASK + interface: + inputs: + variables: + numbers: + type: + collectionType: + simple: INTEGER + run_local_at_count: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + collectionType: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.control_flow.merge_sort.sort_locally" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.merge_sort + - task-name + - sort_locally + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.merge_sort.sort_locally + resourceType: TASK + interface: + inputs: + variables: + numbers: + type: + collectionType: + simple: INTEGER + outputs: + variables: + o0: + type: + collectionType: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf.yaml new file mode 100755 index 0000000000..61e65824f1 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/062_core.control_flow.subworkflows.my_subwf_2_wf.yaml @@ -0,0 +1,196 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + scalar: + primitive: + integer: "0" +inputs: + literals: + a: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-subworkflows-my-subwf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.control_flow.subworkflows.my_subwf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: c + var: o0 + - binding: + promise: + nodeId: n1 + var: c + var: o1 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.control_flow.subworkflows.t1" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: t1_int_output + var: a + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.control_flow.subworkflows.t1" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: c + var: o0 + - binding: + promise: + nodeId: n1 + var: c + var: o1 + outputs: + variables: + o0: + type: + simple: STRING + o1: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.subworkflows.t1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.subworkflows + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.subworkflows.t1 + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: INTEGER + outputs: + variables: + c: + type: + simple: STRING + t1_int_output: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf.yaml new file mode 100755 index 0000000000..d3625d9ba6 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/069_core.control_flow.subworkflows.ext_workflow_2_wf.yaml @@ -0,0 +1,159 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + my_input: + scalar: + primitive: + stringValue: "" +inputs: + literals: + my_input: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-control-flow-subworkflows-ext-workflow + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.control_flow.subworkflows.ext_workflow + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: my_input + var: input_string1 + kind: task + name: count_freq_words + resources: {} + task: 'resource_type:TASK name:"core.control_flow.subworkflows.count_freq_words" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: STRUCT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.control_flow.subworkflows.count_freq_words" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.control_flow.subworkflows + - task-name + - count_freq_words + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.control_flow.subworkflows.count_freq_words + resourceType: TASK + interface: + inputs: + variables: + input_string1: + type: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRUCT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf.yaml new file mode 100755 index 0000000000..945a61637e --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/077_core.extend_flyte.custom_task_plugin.my_workflow_2_wf.yaml @@ -0,0 +1,205 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + path: + scalar: + primitive: + stringValue: "" +inputs: + literals: + path: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-extend-flyte-custom-task-plugin-my-workflow + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.extend_flyte.custom_task_plugin.my_workflow + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + activeDeadline: 40m0s + executionDeadline: 20m0s + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: path + var: path + kind: task + name: my-objectstore-sensor + resources: {} + retry: + minAttempts: 11 + task: 'resource_type:TASK name:"my-objectstore-sensor" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: path + var: path + kind: task + name: print_file + resources: {} + task: 'resource_type:TASK name:"core.extend_flyte.custom_task_plugin.print_file" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.extend_flyte.custom_task_plugin.print_file" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.extend_flyte.custom_task_plugin + - task-name + - print_file + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.extend_flyte.custom_task_plugin.print_file + resourceType: TASK + interface: + inputs: + variables: + path: + type: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"my-objectstore-sensor" ': + id: + name: my-objectstore-sensor + resourceType: TASK + interface: + inputs: + variables: + path: + type: + simple: STRING + outputs: + variables: + path: + type: + simple: STRING + metadata: + retries: + retries: 10 + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + timeout: 1200s + type: object-store-sensor diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf.yaml new file mode 100755 index 0000000000..e98c78c985 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/081_core.extend_flyte.custom_types.wf_2_wf.yaml @@ -0,0 +1,212 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-extend-flyte-custom-types-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.extend_flyte.custom_types.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: generate + resources: {} + task: 'resource_type:TASK name:"core.extend_flyte.custom_types.generate" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: d + kind: task + name: consume + resources: {} + task: 'resource_type:TASK name:"core.extend_flyte.custom_types.consume" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.extend_flyte.custom_types.consume" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.extend_flyte.custom_types + - task-name + - consume + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.extend_flyte.custom_types.consume + resourceType: TASK + interface: + inputs: + variables: + d: + type: + blob: + dimensionality: MULTIPART + format: binary + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.extend_flyte.custom_types.generate" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.extend_flyte.custom_types + - task-name + - generate + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.extend_flyte.custom_types.generate + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + blob: + dimensionality: MULTIPART + format: binary + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf.yaml new file mode 100755 index 0000000000..3f9fd5d86f --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/085_core.flyte_basics.basic_workflow.my_wf_2_wf.yaml @@ -0,0 +1,266 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + scalar: + primitive: + integer: "0" + b: + scalar: + primitive: + stringValue: "" +inputs: + literals: + a: + scalar: + primitive: + integer: "0" + b: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-basic-workflow-my-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + - n1 + n1: + - end-node + start-node: + - n0 + - n1 + edges: + downstream: + n0: + - end-node + - n1 + n1: + - end-node + start-node: + - n0 + - n1 + upstream: + end-node: + - n0 + - n1 + n0: + - start-node + n1: + - n0 + - start-node + id: ::core.flyte_basics.basic_workflow.my_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: t1_int_output + var: o0 + - binding: + promise: + nodeId: n1 + var: o0 + var: o1 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.basic_workflow.t1" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: c + var: a + - binding: + promise: + nodeId: start-node + var: b + var: b + kind: task + name: t2 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.basic_workflow.t2" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: t1_int_output + var: o0 + - binding: + promise: + nodeId: n1 + var: o0 + var: o1 + outputs: + variables: + o0: + type: + simple: INTEGER + o1: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.basic_workflow.t1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.basic_workflow + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.basic_workflow.t1 + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: INTEGER + outputs: + variables: + c: + type: + simple: STRING + t1_int_output: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.basic_workflow.t2" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.basic_workflow + - task-name + - t2 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.basic_workflow.t2 + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: STRING + b: + type: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf.yaml new file mode 100755 index 0000000000..6a034205a8 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/089_core.flyte_basics.decorating_tasks.wf_2_wf.yaml @@ -0,0 +1,228 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + x: + scalar: + primitive: + integer: "0" +inputs: + literals: + x: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-decorating-tasks-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.flyte_basics.decorating_tasks.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: x + var: x + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.decorating_tasks.t1" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: x + kind: task + name: t2 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.decorating_tasks.t2" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.decorating_tasks.t1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.decorating_tasks + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.decorating_tasks.t1 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.decorating_tasks.t2" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.decorating_tasks + - task-name + - t2 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.decorating_tasks.t2 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf.yaml new file mode 100755 index 0000000000..4e4271b5ca --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/095_core.flyte_basics.decorating_workflows.wf_2_wf.yaml @@ -0,0 +1,344 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + x: + scalar: + primitive: + floatValue: 0 +inputs: + literals: + x: + scalar: + primitive: + floatValue: 0 +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-decorating-workflows-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - n2 + n2: + - end-node + - n3 + n3: + - end-node + start-node: + - n0 + - n1 + edges: + downstream: + n0: + - n1 + n1: + - n2 + n2: + - end-node + - n3 + n3: + - end-node + start-node: + - n0 + - n1 + upstream: + end-node: + - n2 + - n3 + n0: + - start-node + n1: + - n0 + - start-node + n2: + - n1 + n3: + - n2 + id: ::core.flyte_basics.decorating_workflows.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: setup + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.setup" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: x + var: x + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.t1" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: x + kind: task + name: t2 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.t2" ' + n3: + id: n3 + kind: task + name: teardown + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.teardown" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: FLOAT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.setup" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.decorating_workflows + - task-name + - setup + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.decorating_workflows.setup + resourceType: TASK + interface: + inputs: {} + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.t1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.decorating_workflows + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.decorating_workflows.t1 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.t2" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.decorating_workflows + - task-name + - t2 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.decorating_workflows.t2 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + simple: FLOAT + outputs: + variables: + o0: + type: + simple: FLOAT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.decorating_workflows.teardown" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.decorating_workflows + - task-name + - teardown + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.decorating_workflows.teardown + resourceType: TASK + interface: + inputs: {} + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf.yaml new file mode 100755 index 0000000000..776d9ab54c --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/098_core.flyte_basics.documented_workflow.sphinx_docstring_2_wf.yaml @@ -0,0 +1,180 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + data: + scalar: + generic: {} + df: + scalar: + structuredDataset: + metadata: + structuredDatasetType: + format: parquet +inputs: + literals: + data: + scalar: + generic: {} + df: + scalar: + structuredDataset: + metadata: + structuredDatasetType: + format: parquet +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-documented-workflow-sphinx-docstring + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.documented_workflow.sphinx_docstring + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: data + var: data + - binding: + promise: + nodeId: start-node + var: df + var: df + kind: task + name: add_data + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.documented_workflow.add_data" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.documented_workflow.add_data" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.documented_workflow + - task-name + - add_data + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.documented_workflow.add_data + resourceType: TASK + interface: + inputs: + variables: + data: + type: + simple: STRUCT + df: + type: + structuredDatasetType: + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf.yaml new file mode 100755 index 0000000000..58af03c962 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/100_core.flyte_basics.documented_workflow.numpy_docstring_2_wf.yaml @@ -0,0 +1,180 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + data: + scalar: + generic: {} + df: + scalar: + structuredDataset: + metadata: + structuredDatasetType: + format: parquet +inputs: + literals: + data: + scalar: + generic: {} + df: + scalar: + structuredDataset: + metadata: + structuredDatasetType: + format: parquet +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-documented-workflow-numpy-docstring + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.documented_workflow.numpy_docstring + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: data + var: data + - binding: + promise: + nodeId: start-node + var: df + var: df + kind: task + name: add_data + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.documented_workflow.add_data" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.documented_workflow.add_data" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.documented_workflow + - task-name + - add_data + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.documented_workflow.add_data + resourceType: TASK + interface: + inputs: + variables: + data: + type: + simple: STRUCT + df: + type: + structuredDatasetType: + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf.yaml new file mode 100755 index 0000000000..c1640072d1 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/102_core.flyte_basics.documented_workflow.google_docstring_2_wf.yaml @@ -0,0 +1,180 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + data: + scalar: + generic: {} + df: + scalar: + structuredDataset: + metadata: + structuredDatasetType: + format: parquet +inputs: + literals: + data: + scalar: + generic: {} + df: + scalar: + structuredDataset: + metadata: + structuredDatasetType: + format: parquet +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-documented-workflow-google-docstring + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.documented_workflow.google_docstring + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: data + var: data + - binding: + promise: + nodeId: start-node + var: df + var: df + kind: task + name: add_data + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.documented_workflow.add_data" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.documented_workflow.add_data" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.documented_workflow + - task-name + - add_data + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.documented_workflow.add_data + resourceType: TASK + interface: + inputs: + variables: + data: + type: + simple: STRUCT + df: + type: + structuredDatasetType: + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf.yaml new file mode 100755 index 0000000000..c4d5694e04 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/105_core.flyte_basics.files.normalize_csv_file_2_wf.yaml @@ -0,0 +1,221 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + column_names: + collection: + literals: + - scalar: + primitive: + stringValue: "" + columns_to_normalize: + collection: + literals: + - scalar: + primitive: + stringValue: "" + csv_url: + scalar: + blob: + metadata: + type: {} + uri: /tmp/somepath + output_location: + scalar: + primitive: + stringValue: "" +inputs: + literals: + column_names: + collection: + literals: + - scalar: + primitive: + stringValue: "" + columns_to_normalize: + collection: + literals: + - scalar: + primitive: + stringValue: "" + csv_url: + scalar: + blob: + metadata: + type: {} + uri: /tmp/somepath + output_location: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-files-normalize-csv-file + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.files.normalize_csv_file + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: column_names + var: column_names + - binding: + promise: + nodeId: start-node + var: columns_to_normalize + var: columns_to_normalize + - binding: + promise: + nodeId: start-node + var: csv_url + var: csv_url + - binding: + promise: + nodeId: start-node + var: output_location + var: output_location + kind: task + name: normalize_columns + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.files.normalize_columns" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + blob: {} +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.files.normalize_columns" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.files + - task-name + - normalize_columns + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.files.normalize_columns + resourceType: TASK + interface: + inputs: + variables: + column_names: + type: + collectionType: + simple: STRING + columns_to_normalize: + type: + collectionType: + simple: STRING + csv_url: + type: + blob: {} + output_location: + type: + simple: STRING + outputs: + variables: + o0: + type: + blob: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf.yaml new file mode 100755 index 0000000000..763c7dea7d --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/109_core.flyte_basics.folders.download_and_normalize_csv_files_2_wf.yaml @@ -0,0 +1,292 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + columns_metadata: + collection: + literals: + - collection: + literals: + - scalar: + primitive: + stringValue: "" + columns_to_normalize_metadata: + collection: + literals: + - collection: + literals: + - scalar: + primitive: + stringValue: "" + csv_urls: + collection: + literals: + - scalar: + primitive: + stringValue: "" +inputs: + literals: + columns_metadata: + collection: + literals: + - collection: + literals: + - scalar: + primitive: + stringValue: "" + columns_to_normalize_metadata: + collection: + literals: + - collection: + literals: + - scalar: + primitive: + stringValue: "" + csv_urls: + collection: + literals: + - scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-folders-download-and-normalize-csv-files + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + - n1 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + - n1 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + - start-node + id: ::core.flyte_basics.folders.download_and_normalize_csv_files + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: csv_urls + var: csv_urls + kind: task + name: download_files + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.folders.download_files" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: start-node + var: columns_metadata + var: columns_metadata + - binding: + promise: + nodeId: start-node + var: columns_to_normalize_metadata + var: columns_to_normalize_metadata + - binding: + promise: + nodeId: n0 + var: o0 + var: csv_files_dir + kind: task + name: normalize_all_files + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.folders.normalize_all_files" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + blob: + dimensionality: MULTIPART +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.folders.download_files" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.folders + - task-name + - download_files + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.folders.download_files + resourceType: TASK + interface: + inputs: + variables: + csv_urls: + type: + collectionType: + simple: STRING + outputs: + variables: + o0: + type: + blob: + dimensionality: MULTIPART + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.folders.normalize_all_files" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.folders + - task-name + - normalize_all_files + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.folders.normalize_all_files + resourceType: TASK + interface: + inputs: + variables: + columns_metadata: + type: + collectionType: + collectionType: + simple: STRING + columns_to_normalize_metadata: + type: + collectionType: + collectionType: + simple: STRING + csv_files_dir: + type: + blob: + dimensionality: MULTIPART + outputs: + variables: + o0: + type: + blob: + dimensionality: MULTIPART + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf.yaml new file mode 100755 index 0000000000..7be200bdac --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/112_core.flyte_basics.hello_world.my_wf_2_wf.yaml @@ -0,0 +1,139 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-hello-world-my-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.hello_world.my_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: say_hello + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.hello_world.say_hello" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.hello_world.say_hello" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.hello_world + - task-name + - say_hello + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.hello_world.say_hello + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf.yaml new file mode 100755 index 0000000000..e2c77add01 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/117_my.imperative.workflow.example_2_wf.yaml @@ -0,0 +1,327 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + in1: + scalar: + primitive: + stringValue: "" + in2: + scalar: + primitive: + stringValue: "" +inputs: + literals: + in1: + scalar: + primitive: + stringValue: "" + in2: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: my-imperative-workflow-example + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + n1: + - end-node + n2: + - end-node + start-node: + - n0 + - n1 + - n2 + edges: + downstream: + n0: + - end-node + n1: + - end-node + n2: + - end-node + start-node: + - n0 + - n1 + - n2 + upstream: + end-node: + - n0 + - n1 + - n2 + n0: + - start-node + n1: + - start-node + n2: + - start-node + id: ::my.imperative.workflow.example + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: output_from_t1 + - binding: + collection: + bindings: + - promise: + nodeId: n0 + var: o0 + - promise: + nodeId: n2 + var: o0 + var: output_list + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: in1 + var: a + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.imperative_wf_style.t1" ' + n1: + id: n1 + kind: task + name: t2 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.imperative_wf_style.t2" ' + n2: + id: n2 + inputBindings: + - binding: + collection: + bindings: + - promise: + nodeId: start-node + var: in1 + - promise: + nodeId: start-node + var: in2 + var: a + kind: task + name: t3 + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.imperative_wf_style.t3" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: output_from_t1 + - binding: + collection: + bindings: + - promise: + nodeId: n0 + var: o0 + - promise: + nodeId: n2 + var: o0 + var: output_list + outputs: + variables: + output_from_t1: + type: + simple: STRING + output_list: + type: + collectionType: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.imperative_wf_style.t1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.imperative_wf_style + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.imperative_wf_style.t1 + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.imperative_wf_style.t2" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.imperative_wf_style + - task-name + - t2 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.imperative_wf_style.t2 + resourceType: TASK + interface: + inputs: {} + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.imperative_wf_style.t3" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.imperative_wf_style + - task-name + - t3 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.imperative_wf_style.t3 + resourceType: TASK + interface: + inputs: + variables: + a: + type: + collectionType: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf.yaml new file mode 100755 index 0000000000..fc45cd1601 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/120_core.flyte_basics.lp.my_wf_2_wf.yaml @@ -0,0 +1,159 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + val: + scalar: + primitive: + integer: "0" +inputs: + literals: + val: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-lp-my-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.lp.my_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: val + var: val + kind: task + name: square + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.lp.square" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: INTEGER +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.lp.square" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.lp + - task-name + - square + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.lp.square + resourceType: TASK + interface: + inputs: + variables: + val: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: INTEGER + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf.yaml new file mode 100755 index 0000000000..4a22c457d3 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/125_core.flyte_basics.lp.go_greet_2_wf.yaml @@ -0,0 +1,191 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + am: + scalar: + primitive: + boolean: false + day_of_week: + scalar: + primitive: + stringValue: "" + number: + scalar: + primitive: + integer: "0" +inputs: + literals: + am: + scalar: + primitive: + boolean: false + day_of_week: + scalar: + primitive: + stringValue: "" + number: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-lp-go-greet + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.flyte_basics.lp.go_greet + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: am + var: am + - binding: + promise: + nodeId: start-node + var: day_of_week + var: day_of_week + - binding: + promise: + nodeId: start-node + var: number + var: number + kind: task + name: greet + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.lp.greet" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.lp.greet" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.lp + - task-name + - greet + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.lp.greet + resourceType: TASK + interface: + inputs: + variables: + am: + type: + simple: BOOLEAN + day_of_week: + type: + simple: STRING + number: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf.yaml new file mode 100755 index 0000000000..d4c3562fcb --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/129_core.flyte_basics.named_outputs.my_wf_2_wf.yaml @@ -0,0 +1,167 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-named-outputs-my-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + n1: + - end-node + start-node: + - n0 + - n1 + edges: + downstream: + n0: + - end-node + n1: + - end-node + start-node: + - n0 + - n1 + upstream: + end-node: + - n0 + - n1 + n0: + - start-node + n1: + - start-node + id: ::core.flyte_basics.named_outputs.my_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: greet + var: greet1 + - binding: + promise: + nodeId: n1 + var: greet + var: greet2 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: say_hello + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.named_outputs.say_hello" ' + n1: + id: n1 + kind: task + name: say_hello + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.named_outputs.say_hello" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: greet + var: greet1 + - binding: + promise: + nodeId: n1 + var: greet + var: greet2 + outputs: + variables: + greet1: + type: + simple: STRING + greet2: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.named_outputs.say_hello" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.named_outputs + - task-name + - say_hello + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.named_outputs.say_hello + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + greet: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf.yaml new file mode 100755 index 0000000000..d350be94a9 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/140_core.flyte_basics.shell_task.wf_2_wf.yaml @@ -0,0 +1,382 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-shell-task-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + - n2 + - n3 + n1: + - n2 + n2: + - n3 + n3: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + - n2 + - n3 + n1: + - n2 + n2: + - n3 + n3: + - end-node + start-node: + - n0 + upstream: + end-node: + - n3 + n0: + - start-node + n1: + - n0 + n2: + - n0 + - n1 + n3: + - n0 + - n2 + id: ::core.flyte_basics.shell_task.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n3 + var: k + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: create_entities + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.shell_task.create_entities" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: x + kind: task + name: task_1 + resources: {} + task: 'resource_type:TASK name:"task_1" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: n1 + var: i + var: x + - binding: + promise: + nodeId: n0 + var: o1 + var: "y" + kind: task + name: task_2 + resources: {} + task: 'resource_type:TASK name:"task_2" ' + n3: + id: n3 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: x + - binding: + promise: + nodeId: n0 + var: o1 + var: "y" + - binding: + promise: + nodeId: n2 + var: j + var: z + kind: task + name: task_3 + resources: {} + task: 'resource_type:TASK name:"task_3" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n3 + var: k + var: o0 + outputs: + variables: + o0: + type: + blob: {} +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.shell_task.create_entities" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.shell_task + - task-name + - create_entities + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.shell_task.create_entities + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + blob: {} + o1: + type: + blob: + dimensionality: MULTIPART + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"task_1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.shell_task + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: task_1 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + blob: {} + outputs: + variables: + i: + type: + blob: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"task_2" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.shell_task + - task-name + - t2 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: task_2 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + blob: {} + "y": + type: + blob: + dimensionality: MULTIPART + outputs: + variables: + j: + type: + blob: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"task_3" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.shell_task + - task-name + - t3 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: task_3 + resourceType: TASK + interface: + inputs: + variables: + x: + type: + blob: {} + "y": + type: + blob: + dimensionality: MULTIPART + z: + type: + blob: {} + outputs: + variables: + k: + type: + blob: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf.yaml new file mode 100755 index 0000000000..be2f81ffd8 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/147_core.flyte_basics.task_cache.cached_dataframe_wf_2_wf.yaml @@ -0,0 +1,296 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-flyte-basics-task-cache-cached-dataframe-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + - n2 + n1: + - n2 + - n3 + n2: + - n3 + n3: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + - n2 + n1: + - n2 + - n3 + n2: + - n3 + n3: + - end-node + start-node: + - n0 + upstream: + end-node: + - n3 + n0: + - start-node + n1: + - n0 + n2: + - n0 + - n1 + n3: + - n1 + - n2 + id: ::core.flyte_basics.task_cache.cached_dataframe_wf + nodes: + end-node: + id: end-node + kind: end + resources: {} + n0: + id: n0 + kind: task + name: uncached_data_reading_task + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.task_cache.uncached_data_reading_task" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: df + kind: task + name: cached_data_processing_task + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.task_cache.cached_data_processing_task" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: df + kind: task + name: cached_data_processing_task + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.task_cache.cached_data_processing_task" ' + n3: + id: n3 + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: df1 + - binding: + promise: + nodeId: n2 + var: o0 + var: df2 + kind: task + name: compare_dataframes + resources: {} + task: 'resource_type:TASK name:"core.flyte_basics.task_cache.compare_dataframes" ' + start-node: + id: start-node + kind: start + resources: {} + outputs: {} +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.flyte_basics.task_cache.cached_data_processing_task" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.task_cache + - task-name + - cached_data_processing_task + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.task_cache.cached_data_processing_task + resourceType: TASK + interface: + inputs: + variables: + df: + type: + structuredDatasetType: + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + discoverable: true + discoveryVersion: "1.0" + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.task_cache.compare_dataframes" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.task_cache + - task-name + - compare_dataframes + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.task_cache.compare_dataframes + resourceType: TASK + interface: + inputs: + variables: + df1: + type: + structuredDatasetType: + format: parquet + df2: + type: + structuredDatasetType: + format: parquet + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.flyte_basics.task_cache.uncached_data_reading_task" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.flyte_basics.task_cache + - task-name + - uncached_data_reading_task + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.flyte_basics.task_cache.uncached_data_reading_task + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf.yaml new file mode 100755 index 0000000000..d853e9fee3 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/151_core.scheduled_workflows.lp_schedules.date_formatter_wf_2_wf.yaml @@ -0,0 +1,143 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + kickoff_time: + scalar: + primitive: + datetime: "1970-01-01T00:00:00.000010Z" +inputs: + literals: + kickoff_time: + scalar: + primitive: + datetime: "1970-01-01T00:00:00.000010Z" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-scheduled-workflows-lp-schedules-date-formatter-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.scheduled_workflows.lp_schedules.date_formatter_wf + nodes: + end-node: + id: end-node + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: kickoff_time + var: run_date + kind: task + name: format_date + resources: {} + task: 'resource_type:TASK name:"core.scheduled_workflows.lp_schedules.format_date" ' + start-node: + id: start-node + kind: start + resources: {} + outputs: {} +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.scheduled_workflows.lp_schedules.format_date" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.scheduled_workflows.lp_schedules + - task-name + - format_date + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.scheduled_workflows.lp_schedules.format_date + resourceType: TASK + interface: + inputs: + variables: + run_date: + type: + simple: DATETIME + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf.yaml new file mode 100755 index 0000000000..229bfa1b67 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/155_core.scheduled_workflows.lp_schedules.positive_wf_2_wf.yaml @@ -0,0 +1,143 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + name: + scalar: + primitive: + stringValue: "" +inputs: + literals: + name: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-scheduled-workflows-lp-schedules-positive-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.scheduled_workflows.lp_schedules.positive_wf + nodes: + end-node: + id: end-node + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: name + var: name + kind: task + name: be_positive + resources: {} + task: 'resource_type:TASK name:"core.scheduled_workflows.lp_schedules.be_positive" ' + start-node: + id: start-node + kind: start + resources: {} + outputs: {} +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.scheduled_workflows.lp_schedules.be_positive" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.scheduled_workflows.lp_schedules + - task-name + - be_positive + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.scheduled_workflows.lp_schedules.be_positive + resourceType: TASK + interface: + inputs: + variables: + name: + type: + simple: STRING + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf.yaml new file mode 100755 index 0000000000..42903af757 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/162_core.type_system.custom_objects.wf_2_wf.yaml @@ -0,0 +1,408 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + x: + scalar: + primitive: + integer: "0" + "y": + scalar: + primitive: + integer: "0" +inputs: + literals: + x: + scalar: + primitive: + integer: "0" + "y": + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-custom-objects-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + - n1 + n1: + - end-node + n2: + - n4 + n3: + - n4 + n4: + - end-node + start-node: + - n0 + - n2 + - n3 + edges: + downstream: + n0: + - end-node + - n1 + n1: + - end-node + n2: + - n4 + n3: + - n4 + n4: + - end-node + start-node: + - n0 + - n2 + - n3 + upstream: + end-node: + - n0 + - n1 + - n4 + n0: + - start-node + n1: + - n0 + n2: + - start-node + n3: + - start-node + n4: + - n2 + - n3 + id: ::core.type_system.custom_objects.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n4 + var: o0 + var: o0 + - binding: + promise: + nodeId: n0 + var: o0 + var: o1 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: upload_result + resources: {} + task: 'resource_type:TASK name:"core.type_system.custom_objects.upload_result" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: res + kind: task + name: download_result + resources: {} + task: 'resource_type:TASK name:"core.type_system.custom_objects.download_result" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: start-node + var: x + var: x + kind: task + name: stringify + resources: {} + task: 'resource_type:TASK name:"core.type_system.custom_objects.stringify" ' + n3: + id: n3 + inputBindings: + - binding: + promise: + nodeId: start-node + var: "y" + var: x + kind: task + name: stringify + resources: {} + task: 'resource_type:TASK name:"core.type_system.custom_objects.stringify" ' + n4: + id: n4 + inputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: x + - binding: + promise: + nodeId: n3 + var: o0 + var: "y" + kind: task + name: add + resources: {} + task: 'resource_type:TASK name:"core.type_system.custom_objects.add" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n4 + var: o0 + var: o0 + - binding: + promise: + nodeId: n0 + var: o0 + var: o1 + outputs: + variables: + o0: + type: + simple: STRUCT + o1: + type: + simple: STRUCT +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.custom_objects.add" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.custom_objects + - task-name + - add + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.custom_objects.add + resourceType: TASK + interface: + inputs: + variables: + x: + type: + simple: STRUCT + "y": + type: + simple: STRUCT + outputs: + variables: + o0: + type: + simple: STRUCT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.custom_objects.download_result" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.custom_objects + - task-name + - download_result + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.custom_objects.download_result + resourceType: TASK + interface: + inputs: + variables: + res: + type: + simple: STRUCT + outputs: {} + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.custom_objects.stringify" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.custom_objects + - task-name + - stringify + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.custom_objects.stringify + resourceType: TASK + interface: + inputs: + variables: + x: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + simple: STRUCT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.custom_objects.upload_result" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.custom_objects + - task-name + - upload_result + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.custom_objects.upload_result + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + simple: STRUCT + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf.yaml new file mode 100755 index 0000000000..5cc2d192f5 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/166_core.type_system.enums.enum_wf_2_wf.yaml @@ -0,0 +1,256 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + c: + scalar: + primitive: + stringValue: red +inputs: + literals: + c: + scalar: + primitive: + stringValue: red +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-enums-enum-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.type_system.enums.enum_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + - binding: + promise: + nodeId: n0 + var: o0 + var: o1 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: c + var: c + kind: task + name: enum_stringify + resources: {} + task: 'resource_type:TASK name:"core.type_system.enums.enum_stringify" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: c + kind: task + name: string_to_enum + resources: {} + task: 'resource_type:TASK name:"core.type_system.enums.string_to_enum" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + - binding: + promise: + nodeId: n0 + var: o0 + var: o1 + outputs: + variables: + o0: + type: + enumType: + values: + - red + - green + - blue + o1: + type: + simple: STRING +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.enums.enum_stringify" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.enums + - task-name + - enum_stringify + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.enums.enum_stringify + resourceType: TASK + interface: + inputs: + variables: + c: + type: + enumType: + values: + - red + - green + - blue + outputs: + variables: + o0: + type: + simple: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.enums.string_to_enum" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.enums + - task-name + - string_to_enum + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.enums.string_to_enum + resourceType: TASK + interface: + inputs: + variables: + c: + type: + simple: STRING + outputs: + variables: + o0: + type: + enumType: + values: + - red + - green + - blue + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf.yaml new file mode 100755 index 0000000000..231ded9e9f --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/169_core.type_system.flyte_pickle.welcome_2_wf.yaml @@ -0,0 +1,161 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + name: + scalar: + primitive: + stringValue: "" +inputs: + literals: + name: + scalar: + primitive: + stringValue: "" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-flyte-pickle-welcome + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - end-node + start-node: + - n0 + upstream: + end-node: + - n0 + n0: + - start-node + id: ::core.type_system.flyte_pickle.welcome + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: name + var: name + kind: task + name: greet + resources: {} + task: 'resource_type:TASK name:"core.type_system.flyte_pickle.greet" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + blob: + format: PythonPickle +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.flyte_pickle.greet" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.flyte_pickle + - task-name + - greet + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.flyte_pickle.greet + resourceType: TASK + interface: + inputs: + variables: + name: + type: + simple: STRING + outputs: + variables: + o0: + type: + blob: + format: PythonPickle + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf.yaml new file mode 100755 index 0000000000..307bad2d65 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/173_core.type_system.schema.df_wf_2_wf.yaml @@ -0,0 +1,232 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + scalar: + primitive: + integer: "0" +inputs: + literals: + a: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-schema-df-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.type_system.schema.df_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + kind: task + name: get_df + resources: {} + task: 'resource_type:TASK name:"core.type_system.schema.get_df" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: df + kind: task + name: add_df + resources: {} + task: 'resource_type:TASK name:"core.type_system.schema.add_df" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.schema.add_df" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.schema + - task-name + - add_df + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.schema.add_df + resourceType: TASK + interface: + inputs: + variables: + df: + type: + structuredDatasetType: + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.schema.get_df" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.schema + - task-name + - get_df + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.schema.get_df + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + structuredDatasetType: + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf.yaml new file mode 100755 index 0000000000..1ace2fdd34 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/179_core.type_system.structured_dataset.pandas_compatibility_wf_2_wf.yaml @@ -0,0 +1,333 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + scalar: + primitive: + integer: "0" +inputs: + literals: + a: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-structured-dataset-pandas-compatibility-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - n2 + n2: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - n2 + n2: + - end-node + start-node: + - n0 + upstream: + end-node: + - n2 + n0: + - start-node + n1: + - n0 + n2: + - n1 + id: ::core.type_system.structured_dataset.pandas_compatibility_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + kind: task + name: get_df + resources: {} + task: 'resource_type:TASK name:"core.type_system.structured_dataset.get_df" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: df + kind: task + name: get_subset_df + resources: {} + task: 'resource_type:TASK name:"core.type_system.structured_dataset.get_subset_df" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: ds + kind: task + name: to_numpy + resources: {} + task: 'resource_type:TASK name:"core.type_system.structured_dataset.to_numpy" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.structured_dataset.get_df" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.structured_dataset + - task-name + - get_df + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.structured_dataset.get_df + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: STRING + name: Name + - literalType: + simple: INTEGER + name: Age + - literalType: + simple: INTEGER + name: Height + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.structured_dataset.get_subset_df" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.structured_dataset + - task-name + - get_subset_df + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.structured_dataset.get_subset_df + resourceType: TASK + interface: + inputs: + variables: + df: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.structured_dataset.to_numpy" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.structured_dataset + - task-name + - to_numpy + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.structured_dataset.to_numpy + resourceType: TASK + interface: + inputs: + variables: + ds: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf.yaml new file mode 100755 index 0000000000..42704f0d6d --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/181_core.type_system.structured_dataset.schema_compatibility_wf_2_wf.yaml @@ -0,0 +1,327 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: + literals: + a: + scalar: + primitive: + integer: "0" +inputs: + literals: + a: + scalar: + primitive: + integer: "0" +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-structured-dataset-schema-compatibility-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - n2 + n2: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - n2 + n2: + - end-node + start-node: + - n0 + upstream: + end-node: + - n2 + n0: + - start-node + n1: + - n0 + n2: + - n1 + id: ::core.type_system.structured_dataset.schema_compatibility_wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + inputBindings: + - binding: + promise: + nodeId: start-node + var: a + var: a + kind: task + name: get_schema_df + resources: {} + task: 'resource_type:TASK name:"core.type_system.structured_dataset.get_schema_df" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: df + kind: task + name: get_subset_df + resources: {} + task: 'resource_type:TASK name:"core.type_system.structured_dataset.get_subset_df" ' + n2: + id: n2 + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: ds + kind: task + name: to_numpy + resources: {} + task: 'resource_type:TASK name:"core.type_system.structured_dataset.to_numpy" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n2 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.structured_dataset.get_schema_df" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.structured_dataset + - task-name + - get_schema_df + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.structured_dataset.get_schema_df + resourceType: TASK + interface: + inputs: + variables: + a: + type: + simple: INTEGER + outputs: + variables: + o0: + type: + schema: + columns: + - name: Name + type: STRING + - name: Age + - name: Height + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.structured_dataset.get_subset_df" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.structured_dataset + - task-name + - get_subset_df + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.structured_dataset.get_subset_df + resourceType: TASK + interface: + inputs: + variables: + df: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.structured_dataset.to_numpy" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.structured_dataset + - task-name + - to_numpy + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.structured_dataset.to_numpy + resourceType: TASK + interface: + inputs: + variables: + ds: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + outputs: + variables: + o0: + type: + structuredDatasetType: + columns: + - literalType: + simple: INTEGER + name: Age + format: parquet + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf.yaml b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf.yaml new file mode 100755 index 0000000000..2737664fc6 --- /dev/null +++ b/flytepropeller/pkg/compiler/test/testdata/snacks-core/k8s/185_core.type_system.typed_schema.wf_2_wf.yaml @@ -0,0 +1,220 @@ +apiVersion: flyte.lyft.com/v1alpha1 +executionConfig: + EnvironmentVariables: null + Interruptible: null + MaxParallelism: 0 + OverwriteCache: false + RecoveryExecution: {} + TaskPluginImpls: null + TaskResources: + Limits: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" + Requests: + CPU: "0" + EphemeralStorage: "0" + GPU: "0" + Memory: "0" + Storage: "0" +executionId: {} +inputData: + inputs: {} +inputs: {} +kind: flyteworkflow +metadata: + creationTimestamp: null + labels: + domain: domain + execution-id: name + project: hello + shard-key: "6" + workflow-name: core-type-system-typed-schema-wf + name: name + namespace: namespace +node-defaults: {} +rawOutputDataConfig: {} +securityContext: {} +spec: + connections: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + edges: + downstream: + n0: + - n1 + n1: + - end-node + start-node: + - n0 + upstream: + end-node: + - n1 + n0: + - start-node + n1: + - n0 + id: ::core.type_system.typed_schema.wf + nodes: + end-node: + id: end-node + inputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + kind: end + resources: {} + n0: + id: n0 + kind: task + name: t1 + resources: {} + task: 'resource_type:TASK name:"core.type_system.typed_schema.t1" ' + n1: + id: n1 + inputBindings: + - binding: + promise: + nodeId: n0 + var: o0 + var: schema + kind: task + name: t2 + resources: {} + task: 'resource_type:TASK name:"core.type_system.typed_schema.t2" ' + start-node: + id: start-node + kind: start + resources: {} + outputBindings: + - binding: + promise: + nodeId: n1 + var: o0 + var: o0 + outputs: + variables: + o0: + type: + schema: + columns: + - name: x +status: + phase: 0 +tasks: + 'resource_type:TASK name:"core.type_system.typed_schema.t1" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.typed_schema + - task-name + - t1 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.typed_schema.t1 + resourceType: TASK + interface: + inputs: {} + outputs: + variables: + o0: + type: + schema: + columns: + - name: x + - name: "y" + type: STRING + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task + 'resource_type:TASK name:"core.type_system.typed_schema.t2" ': + container: + args: + - pyflyte-execute + - --inputs + - '{{.input}}' + - --output-prefix + - '{{.outputPrefix}}' + - --raw-output-data-prefix + - '{{.rawOutputDataPrefix}}' + - --checkpoint-path + - '{{.checkpointOutputPrefix}}' + - --prev-checkpoint + - '{{.prevCheckpointPrefix}}' + - --resolver + - flytekit.core.python_auto_container.default_task_resolver + - -- + - task-module + - core.type_system.typed_schema + - task-name + - t2 + config: + - key: testKey1 + value: testValue1 + - key: testKey2 + value: testValue2 + - key: testKey3 + value: testValue3 + image: ghcr.io/flyteorg/flytecookbook:core-8b8e1a849c9adfca88049a074b10dad278f70077 + resources: {} + id: + name: core.type_system.typed_schema.t2 + resourceType: TASK + interface: + inputs: + variables: + schema: + type: + schema: + columns: + - name: x + - name: "y" + type: STRING + outputs: + variables: + o0: + type: + schema: + columns: + - name: x + metadata: + retries: {} + runtime: + flavor: python + type: FLYTE_SDK + version: 0.32.6 + type: python-task diff --git a/flytepropeller/pkg/compiler/transformers/k8s/inputs.go b/flytepropeller/pkg/compiler/transformers/k8s/inputs.go index 2d967c560e..f8b040864e 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/inputs.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/inputs.go @@ -9,7 +9,7 @@ import ( "github.com/flyteorg/flyte/flytepropeller/pkg/compiler/validators" ) -func validateInputs(nodeID common.NodeID, iface *core.TypedInterface, inputs core.LiteralMap, errs errors.CompileErrors) (ok bool) { +func validateInputs(nodeID common.NodeID, iface *core.TypedInterface, inputs core.InputData, errs errors.CompileErrors) (ok bool) { if iface == nil { errs.Collect(errors.NewValueRequiredErr(nodeID, "interface")) return false @@ -28,7 +28,7 @@ func validateInputs(nodeID common.NodeID, iface *core.TypedInterface, inputs cor } boundInputsSet := sets.String{} - for inputVar, inputVal := range inputs.Literals { + for inputVar, inputVal := range inputs.GetInputs().GetLiterals() { v, exists := varMap[inputVar] if !exists { errs.Collect(errors.NewVariableNameNotFoundErr(nodeID, "", inputVar)) diff --git a/flytepropeller/pkg/compiler/transformers/k8s/workflow.go b/flytepropeller/pkg/compiler/transformers/k8s/workflow.go index 2421ddf9bb..0f935c08dd 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/workflow.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/workflow.go @@ -160,7 +160,7 @@ func generateName(wfID *core.Identifier, execID *core.WorkflowExecutionIdentifie } // BuildFlyteWorkflow builds v1alpha1.FlyteWorkflow resource. Returned error, if not nil, is of type errors.CompilerErrors. -func BuildFlyteWorkflow(wfClosure *core.CompiledWorkflowClosure, inputs *core.LiteralMap, +func BuildFlyteWorkflow(wfClosure *core.CompiledWorkflowClosure, inputs *core.InputData, executionID *core.WorkflowExecutionIdentifier, namespace string) (*v1alpha1.FlyteWorkflow, error) { errs := errors.NewCompileErrors() @@ -219,7 +219,8 @@ func BuildFlyteWorkflow(wfClosure *core.CompiledWorkflowClosure, inputs *core.Li Namespace: namespace, Labels: map[string]string{}, }, - Inputs: &v1alpha1.Inputs{LiteralMap: inputs}, + Inputs: &v1alpha1.Inputs{LiteralMap: inputs.GetInputs()}, + InputData: &v1alpha1.InputData{InputData: inputs}, WorkflowSpec: primarySpec, SubWorkflows: subwfs, Tasks: buildTasks(tasks, errs.NewScope()), diff --git a/flytepropeller/pkg/compiler/transformers/k8s/workflow_test.go b/flytepropeller/pkg/compiler/transformers/k8s/workflow_test.go index ae3b82b8b9..d22ef6e871 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/workflow_test.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/workflow_test.go @@ -158,10 +158,12 @@ func TestBuildFlyteWorkflow_withInputs(t *testing.T) { assert.NoError(t, err) stringLiteral, err := coreutils.MakePrimitiveLiteral("hello") assert.NoError(t, err) - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": intLiteral, - "y": stringLiteral, + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": intLiteral, + "y": stringLiteral, + }, }, } @@ -223,10 +225,12 @@ func TestBuildFlyteWorkflow_withUnionInputs(t *testing.T) { assert.NoError(t, err) floatLiteral, err := coreutils.MakePrimitiveLiteral(1.0) assert.NoError(t, err) - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": {Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Union{Union: &core.Union{Value: floatLiteral, Type: &floatType}}}}}, - "y": {Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Union{Union: &core.Union{Value: stringLiteral, Type: &strType}}}}}, + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": {Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Union{Union: &core.Union{Value: floatLiteral, Type: &floatType}}}}}, + "y": {Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Union{Union: &core.Union{Value: stringLiteral, Type: &strType}}}}}, + }, }, } @@ -341,9 +345,11 @@ func TestBuildFlyteWorkflow_withBranch(t *testing.T) { wf, err := BuildFlyteWorkflow( w, - &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "my_input": coreutils.MustMakePrimitiveLiteral(1.0), + &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "my_input": coreutils.MustMakePrimitiveLiteral(1.0), + }, }, }, &core.WorkflowExecutionIdentifier{ Project: "p", diff --git a/flytepropeller/pkg/controller/garbage_collector.go b/flytepropeller/pkg/controller/garbage_collector.go index e02e1beca2..48d5f5d0d8 100644 --- a/flytepropeller/pkg/controller/garbage_collector.go +++ b/flytepropeller/pkg/controller/garbage_collector.go @@ -128,7 +128,7 @@ func (g *GarbageCollector) deleteWorkflowsForNamespace(ctx context.Context, name } // runGC runs GC periodically -func (g *GarbageCollector) runGC(ctx context.Context, ticker clock.Ticker) { +func (g *GarbageCollector) runGC(ctx context.Context, ticker clock.Timer) { logger.Infof(ctx, "Background workflow garbage collection started, with duration [%s], TTL [%d] hours", g.interval.String(), g.ttlHours) ctx = contextutils.WithGoroutineLabel(ctx, "gc-worker") @@ -162,7 +162,7 @@ func (g *GarbageCollector) StartGC(ctx context.Context) error { logger.Warningf(ctx, "Garbage collector is disabled, as ttl [%d] is <=0", g.ttlHours) return nil } - ticker := g.clk.NewTicker(g.interval) + ticker := g.clk.NewTimer(g.interval) go g.runGC(ctx, ticker) return nil } diff --git a/flytepropeller/pkg/controller/nodes/array/event_recorder.go b/flytepropeller/pkg/controller/nodes/array/event_recorder.go index ac1ad3e39f..417b1dc490 100644 --- a/flytepropeller/pkg/controller/nodes/array/event_recorder.go +++ b/flytepropeller/pkg/controller/nodes/array/event_recorder.go @@ -164,7 +164,7 @@ func (e *externalResourcesEventRecorder) finalize(ctx context.Context, nCtx inte } else { // pass inputs by reference taskExecutionEvent.InputValue = &event.TaskExecutionEvent_InputUri{ - InputUri: nCtx.InputReader().GetInputPath().String(), + InputUri: nCtx.InputReader().GetInputDataPath().String(), } } } diff --git a/flytepropeller/pkg/controller/nodes/array/handler.go b/flytepropeller/pkg/controller/nodes/array/handler.go index 5e571a0c48..635fcf891c 100644 --- a/flytepropeller/pkg/controller/nodes/array/handler.go +++ b/flytepropeller/pkg/controller/nodes/array/handler.go @@ -184,7 +184,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu } size := -1 - for _, variable := range literalMap.Literals { + for _, variable := range literalMap.GetInputs().GetLiterals() { literalType := validators.LiteralTypeForLiteral(variable) switch literalType.Type.(type) { case *idlcore.LiteralType_CollectionType: @@ -436,7 +436,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu gatherOutputsRequest := &gatherOutputsRequest{ ctx: ctx, responseChannel: make(chan struct { - literalMap map[string]*idlcore.Literal + outputData *idlcore.OutputData error }, 1), } @@ -448,7 +448,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu if err != nil { // Should never happen gatherOutputsRequest.responseChannel <- struct { - literalMap map[string]*idlcore.Literal + outputData *idlcore.OutputData error }{nil, err} continue @@ -461,9 +461,9 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu } gatherOutputsRequest.responseChannel <- struct { - literalMap map[string]*idlcore.Literal + outputData *idlcore.OutputData error - }{outputLiterals, nil} + }{&idlcore.OutputData{Outputs: &idlcore.LiteralMap{Literals: outputLiterals}}, nil} } else { // initialize subNode reader currentAttempt := int(arrayNodeState.SubNodeRetryAttempts.GetItem(i)) @@ -471,7 +471,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu strconv.Itoa(i), strconv.Itoa(currentAttempt)) if err != nil { gatherOutputsRequest.responseChannel <- struct { - literalMap map[string]*idlcore.Literal + outputData *idlcore.OutputData error }{nil, err} continue @@ -531,7 +531,7 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu } // append literal for all output variables - for name, literal := range outputResponse.literalMap { + for name, literal := range outputResponse.outputData.GetOutputs().GetLiterals() { appendLiteral(name, literal, outputLiterals, len(arrayNodeState.SubNodePhases.GetItems())) } } @@ -541,12 +541,14 @@ func (a *arrayNodeHandler) Handle(ctx context.Context, nCtx interfaces.NodeExecu return handler.UnknownTransition, fmt.Errorf("worker error(s) encountered: %s", workerErrorCollector.Summary(events.MaxErrorMessageLength)) } - outputLiteralMap := &idlcore.LiteralMap{ - Literals: outputLiterals, + outputs := &idlcore.OutputData{ + Outputs: &idlcore.LiteralMap{ + Literals: outputLiterals, + }, } outputFile := v1alpha1.GetOutputsFile(nCtx.NodeStatus().GetOutputDir()) - if err := nCtx.DataStore().WriteProtobuf(ctx, outputFile, storage.Options{}, outputLiteralMap); err != nil { + if err := nCtx.DataStore().WriteProtobuf(ctx, outputFile, storage.Options{}, outputs); err != nil { return handler.UnknownTransition, err } @@ -659,12 +661,14 @@ func (a *arrayNodeHandler) buildArrayNodeContext(ctx context.Context, nCtx inter return nil, nil, nil, nil, nil, nil, err } - inputLiteralMap, err := constructLiteralMap(inputs, subNodeIndex) + inputLiteralMap, err := constructLiteralMap(inputs.GetInputs(), subNodeIndex) if err != nil { return nil, nil, nil, nil, nil, nil, err } - inputReader := newStaticInputReader(nCtx.InputReader(), inputLiteralMap) + inputReader := newStaticInputReader(nCtx.InputReader(), &idlcore.InputData{ + Inputs: inputLiteralMap, + }) // wrap node lookup subNodeSpec := *arrayNode.GetSubNodeSpec() diff --git a/flytepropeller/pkg/controller/nodes/array/handler_test.go b/flytepropeller/pkg/controller/nodes/array/handler_test.go index e906318975..73e353462d 100644 --- a/flytepropeller/pkg/controller/nodes/array/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/array/handler_test.go @@ -75,7 +75,7 @@ func createArrayNodeHandler(ctx context.Context, t *testing.T, nodeHandler inter } func createNodeExecutionContext(dataStore *storage.DataStore, eventRecorder interfaces.EventRecorder, outputVariables []string, - inputLiteralMap *idlcore.LiteralMap, arrayNodeSpec *v1alpha1.NodeSpec, arrayNodeState *handler.ArrayNodeState, + inputLiteralMap *idlcore.InputData, arrayNodeSpec *v1alpha1.NodeSpec, arrayNodeState *handler.ArrayNodeState, currentParallelism uint32, maxParallelism uint32) interfaces.NodeExecutionContext { nCtx := &mocks.NodeExecutionContext{} @@ -136,7 +136,7 @@ func createNodeExecutionContext(dataStore *storage.DataStore, eventRecorder inte // InputReader inputFilePaths := &pluginmocks.InputFilePaths{} - inputFilePaths.OnGetInputPath().Return(storage.DataReference("s3://bucket/input")) + inputFilePaths.OnGetInputDataPath().Return(storage.DataReference("s3://bucket/input")) nCtx.OnInputReader().Return( newStaticInputReader( inputFilePaths, @@ -263,7 +263,7 @@ func TestAbort(t *testing.T) { // create NodeExecutionContext eventRecorder := newBufferedEventRecorder() - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{Inputs: literalMap}, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) // evaluate node err := arrayNodeHandler.Abort(ctx, nCtx, "foo") @@ -359,7 +359,7 @@ func TestFinalize(t *testing.T) { // create NodeExecutionContext eventRecorder := newBufferedEventRecorder() - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{Inputs: literalMap}, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) // evaluate node err := arrayNodeHandler.Finalize(ctx, nCtx) @@ -430,7 +430,7 @@ func TestHandleArrayNodePhaseNone(t *testing.T) { arrayNodeState := &handler.ArrayNodeState{ Phase: v1alpha1.ArrayNodePhaseNone, } - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{Inputs: literalMap}, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) // evaluate node transition, err := arrayNodeHandler.Handle(ctx, nCtx) @@ -716,7 +716,7 @@ func TestHandleArrayNodePhaseExecuting(t *testing.T) { nodeSpec.ArrayNode.Parallelism = test.parallelism nodeSpec.ArrayNode.MinSuccessRatio = test.minSuccessRatio - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, test.currentWfParallelism, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{Inputs: literalMap}, &arrayNodeSpec, arrayNodeState, test.currentWfParallelism, workflowMaxParallelism) // initialize ArrayNodeHandler nodeHandler := &mocks.NodeHandler{} @@ -839,7 +839,9 @@ func TestHandleArrayNodePhaseExecutingSubNodeFailures(t *testing.T) { arrayNodeState := &handler.ArrayNodeState{ Phase: v1alpha1.ArrayNodePhaseNone, } - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{ + Inputs: literalMap, + }, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) // initialize ArrayNodeHandler nodeHandler := &mocks.NodeHandler{} @@ -867,7 +869,9 @@ func TestHandleArrayNodePhaseExecutingSubNodeFailures(t *testing.T) { // evaluate node until failure attempts := 1 for { - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{ + Inputs: literalMap, + }, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) _, err = arrayNodeHandler.Handle(ctx, nCtx) assert.NoError(t, err) @@ -952,7 +956,7 @@ func TestHandleArrayNodePhaseSucceeding(t *testing.T) { // create NodeExecutionContext eventRecorder := newBufferedEventRecorder() literalMap := &idlcore.LiteralMap{} - nCtx := createNodeExecutionContext(dataStore, eventRecorder, []string{test.outputVariable}, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, []string{test.outputVariable}, &idlcore.InputData{Inputs: literalMap}, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) // write mocked output files for i, outputValue := range test.outputValues { @@ -961,15 +965,17 @@ func TestHandleArrayNodePhaseSucceeding(t *testing.T) { } outputFile := storage.DataReference(fmt.Sprintf("s3://bucket/output/%d/0/outputs.pb", i)) - outputLiteralMap := &idlcore.LiteralMap{ - Literals: map[string]*idlcore.Literal{ - test.outputVariable: &idlcore.Literal{ - Value: &idlcore.Literal_Scalar{ - Scalar: &idlcore.Scalar{ - Value: &idlcore.Scalar_Primitive{ - Primitive: &idlcore.Primitive{ - Value: &idlcore.Primitive_Integer{ - Integer: int64(*outputValue), + outputLiteralMap := &idlcore.OutputData{ + Outputs: &idlcore.LiteralMap{ + Literals: map[string]*idlcore.Literal{ + test.outputVariable: &idlcore.Literal{ + Value: &idlcore.Literal_Scalar{ + Scalar: &idlcore.Scalar{ + Value: &idlcore.Scalar_Primitive{ + Primitive: &idlcore.Primitive{ + Value: &idlcore.Primitive_Integer{ + Integer: int64(*outputValue), + }, }, }, }, @@ -992,14 +998,14 @@ func TestHandleArrayNodePhaseSucceeding(t *testing.T) { assert.Equal(t, test.expectedTransitionPhase, transition.Info().GetPhase()) // validate output file - var outputs idlcore.LiteralMap + var outputs idlcore.OutputData outputFile := v1alpha1.GetOutputsFile(nCtx.NodeStatus().GetOutputDir()) err = nCtx.DataStore().ReadProtobuf(ctx, outputFile, &outputs) assert.NoError(t, err) - assert.Len(t, outputs.GetLiterals(), 1) + assert.Len(t, outputs.GetOutputs().GetLiterals(), 1) - collection := outputs.GetLiterals()[test.outputVariable].GetCollection() + collection := outputs.GetOutputs().GetLiterals()[test.outputVariable].GetCollection() assert.NotNil(t, collection) assert.Len(t, collection.GetLiterals(), len(test.outputValues)) @@ -1078,7 +1084,7 @@ func TestHandleArrayNodePhaseFailing(t *testing.T) { // create NodeExecutionContext eventRecorder := newBufferedEventRecorder() literalMap := &idlcore.LiteralMap{} - nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, literalMap, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) + nCtx := createNodeExecutionContext(dataStore, eventRecorder, nil, &idlcore.InputData{Inputs: literalMap}, &arrayNodeSpec, arrayNodeState, 0, workflowMaxParallelism) // evaluate node transition, err := arrayNodeHandler.Handle(ctx, nCtx) diff --git a/flytepropeller/pkg/controller/nodes/array/node_execution_context.go b/flytepropeller/pkg/controller/nodes/array/node_execution_context.go index b2c9619695..9c28bb72bc 100644 --- a/flytepropeller/pkg/controller/nodes/array/node_execution_context.go +++ b/flytepropeller/pkg/controller/nodes/array/node_execution_context.go @@ -13,14 +13,14 @@ import ( type staticInputReader struct { io.InputFilePaths - input *core.LiteralMap + input *core.InputData } -func (i staticInputReader) Get(_ context.Context) (*core.LiteralMap, error) { +func (i staticInputReader) Get(_ context.Context) (*core.InputData, error) { return i.input, nil } -func newStaticInputReader(inputPaths io.InputFilePaths, input *core.LiteralMap) staticInputReader { +func newStaticInputReader(inputPaths io.InputFilePaths, input *core.InputData) staticInputReader { return staticInputReader{ InputFilePaths: inputPaths, input: input, diff --git a/flytepropeller/pkg/controller/nodes/array/worker.go b/flytepropeller/pkg/controller/nodes/array/worker.go index b5b5db49da..4aac4bc244 100644 --- a/flytepropeller/pkg/controller/nodes/array/worker.go +++ b/flytepropeller/pkg/controller/nodes/array/worker.go @@ -37,7 +37,7 @@ type gatherOutputsRequest struct { ctx context.Context reader *ioutils.RemoteFileOutputReader responseChannel chan struct { - literalMap map[string]*idlcore.Literal + outputData *idlcore.OutputData error } } @@ -74,7 +74,7 @@ func (w *worker) run() { error }{nodeStatus, err} case gatherOutputsRequest := <-w.gatherOutputsRequestChannel: - var literalMap map[string]*idlcore.Literal + var outputData *idlcore.OutputData var err error func() { defer func() { @@ -92,14 +92,14 @@ func (w *worker) run() { } else if executionErr != nil { err = fmt.Errorf("%s", executionErr.String()) } else { - literalMap = outputs.GetLiterals() + outputData = outputs } }() gatherOutputsRequest.responseChannel <- struct { - literalMap map[string]*idlcore.Literal + outputData *idlcore.OutputData error - }{literalMap, nil} + }{outputData, nil} } } } diff --git a/flytepropeller/pkg/controller/nodes/branch/evaluator.go b/flytepropeller/pkg/controller/nodes/branch/evaluator.go index 4bc1676745..ae08eb7499 100644 --- a/flytepropeller/pkg/controller/nodes/branch/evaluator.go +++ b/flytepropeller/pkg/controller/nodes/branch/evaluator.go @@ -17,17 +17,20 @@ const ErrorCodeMalformedBranch = "MalformedBranchUserError" const ErrorCodeCompilerError = "CompilerError" const ErrorCodeFailedFetchOutputs = "FailedFetchOutputs" -func EvaluateComparison(expr *core.ComparisonExpression, nodeInputs *core.LiteralMap) (bool, error) { +func EvaluateComparison(expr *core.ComparisonExpression, nodeInputs *core.InputData) (bool, error) { var lValue *core.Literal var rValue *core.Literal var lPrim *core.Primitive var rPrim *core.Primitive + literals := nodeInputs.GetInputs().GetLiterals() + if expr.GetLeftValue().GetPrimitive() == nil { if nodeInputs == nil { return false, errors.Errorf(ErrorCodeMalformedBranch, "Failed to find Value for Variable [%v]", expr.GetLeftValue().GetVar()) } - lValue = nodeInputs.Literals[expr.GetLeftValue().GetVar()] + + lValue = literals[expr.GetLeftValue().GetVar()] if lValue == nil { return false, errors.Errorf(ErrorCodeMalformedBranch, "Failed to find Value for Variable [%v]", expr.GetLeftValue().GetVar()) } @@ -39,7 +42,8 @@ func EvaluateComparison(expr *core.ComparisonExpression, nodeInputs *core.Litera if nodeInputs == nil { return false, errors.Errorf(ErrorCodeMalformedBranch, "Failed to find Value for Variable [%v]", expr.GetLeftValue().GetVar()) } - rValue = nodeInputs.Literals[expr.GetRightValue().GetVar()] + + rValue = literals[expr.GetRightValue().GetVar()] if rValue == nil { return false, errors.Errorf(ErrorCodeMalformedBranch, "Failed to find Value for Variable [%v]", expr.GetRightValue().GetVar()) } @@ -59,7 +63,7 @@ func EvaluateComparison(expr *core.ComparisonExpression, nodeInputs *core.Litera return Evaluate(lPrim, rPrim, expr.GetOperator()) } -func EvaluateBooleanExpression(expr *core.BooleanExpression, nodeInputs *core.LiteralMap) (bool, error) { +func EvaluateBooleanExpression(expr *core.BooleanExpression, nodeInputs *core.InputData) (bool, error) { if expr.GetComparison() != nil { return EvaluateComparison(expr.GetComparison(), nodeInputs) } @@ -80,7 +84,7 @@ func EvaluateBooleanExpression(expr *core.BooleanExpression, nodeInputs *core.Li return lvalue && rvalue, nil } -func EvaluateIfBlock(block v1alpha1.ExecutableIfBlock, nodeInputs *core.LiteralMap, skippedNodeIds []*v1alpha1.NodeID) (*v1alpha1.NodeID, []*v1alpha1.NodeID, error) { +func EvaluateIfBlock(block v1alpha1.ExecutableIfBlock, nodeInputs *core.InputData, skippedNodeIds []*v1alpha1.NodeID) (*v1alpha1.NodeID, []*v1alpha1.NodeID, error) { if ok, err := EvaluateBooleanExpression(block.GetCondition(), nodeInputs); err != nil { return nil, skippedNodeIds, err } else if ok { @@ -91,10 +95,10 @@ func EvaluateIfBlock(block v1alpha1.ExecutableIfBlock, nodeInputs *core.LiteralM return nil, append(skippedNodeIds, block.GetThenNode()), nil } -// Decides the branch to be taken, returns the nodeId of the selected node or an error +// DecideBranch decides the branch to be taken, returns the nodeId of the selected node or an error // The branchNode is marked as success. This is used by downstream node to determine if it can be executed // All downstream nodes are marked as skipped -func DecideBranch(ctx context.Context, nl executors.NodeLookup, nodeID v1alpha1.NodeID, node v1alpha1.ExecutableBranchNode, nodeInputs *core.LiteralMap) (*v1alpha1.NodeID, error) { +func DecideBranch(ctx context.Context, nl executors.NodeLookup, nodeID v1alpha1.NodeID, node v1alpha1.ExecutableBranchNode, nodeInputs *core.InputData) (*v1alpha1.NodeID, error) { var selectedNodeID *v1alpha1.NodeID var skippedNodeIds []*v1alpha1.NodeID var err error diff --git a/flytepropeller/pkg/controller/nodes/branch/evaluator_test.go b/flytepropeller/pkg/controller/nodes/branch/evaluator_test.go index dae8a1337b..48bbbfdf5c 100644 --- a/flytepropeller/pkg/controller/nodes/branch/evaluator_test.go +++ b/flytepropeller/pkg/controller/nodes/branch/evaluator_test.go @@ -16,7 +16,7 @@ import ( ) // Creates a ComparisonExpression, comparing 2 literals -func getComparisonExpression(lV interface{}, op core.ComparisonExpression_Operator, rV interface{}) (*core.ComparisonExpression, *core.LiteralMap) { +func getComparisonExpression(lV interface{}, op core.ComparisonExpression_Operator, rV interface{}) (*core.ComparisonExpression, *core.InputData) { exp := &core.ComparisonExpression{ LeftValue: &core.Operand{ Val: &core.Operand_Var{ @@ -30,12 +30,15 @@ func getComparisonExpression(lV interface{}, op core.ComparisonExpression_Operat }, }, } - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": coreutils.MustMakePrimitiveLiteral(lV), - "y": coreutils.MustMakePrimitiveLiteral(rV), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": coreutils.MustMakePrimitiveLiteral(lV), + "y": coreutils.MustMakePrimitiveLiteral(rV), + }, }, } + return exp, inputs } @@ -90,9 +93,11 @@ func TestEvaluateComparison(t *testing.T) { }, }, } - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "y": coreutils.MustMakePrimitiveLiteral(2), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "y": coreutils.MustMakePrimitiveLiteral(2), + }, }, } v, err := EvaluateComparison(exp, inputs) @@ -115,10 +120,12 @@ func TestEvaluateComparison(t *testing.T) { }, }, } - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": coreutils.MustMakePrimitiveLiteral(1), - "y": coreutils.MustMakePrimitiveLiteral(3), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": coreutils.MustMakePrimitiveLiteral(1), + "y": coreutils.MustMakePrimitiveLiteral(3), + }, }, } v, err := EvaluateComparison(exp, inputs) @@ -156,8 +163,10 @@ func TestEvaluateComparison(t *testing.T) { }, }, } - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{}, + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{}, + }, } _, err := EvaluateComparison(exp, inputs) assert.Error(t, err) @@ -181,8 +190,10 @@ func TestEvaluateComparison(t *testing.T) { }, }, } - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{}, + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{}, + }, } _, err := EvaluateComparison(exp, inputs) assert.Error(t, err) @@ -279,11 +290,11 @@ func TestEvaluateBooleanExpression(t *testing.T) { }, } - for k, v := range inputs.Literals { + for k, v := range inputs.GetInputs().GetLiterals() { outerInputs.Literals[k] = v } - v, err := EvaluateBooleanExpression(outerExp, outerInputs) + v, err := EvaluateBooleanExpression(outerExp, &core.InputData{Inputs: outerInputs}) assert.NoError(t, err) assert.True(t, v) } diff --git a/flytepropeller/pkg/controller/nodes/branch/handler_test.go b/flytepropeller/pkg/controller/nodes/branch/handler_test.go index f7f2836018..63d1ed12aa 100644 --- a/flytepropeller/pkg/controller/nodes/branch/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/branch/handler_test.go @@ -80,7 +80,7 @@ func (parentInfo) IsInDynamicChain() bool { } func createNodeContext(phase v1alpha1.BranchNodePhase, childNodeID *v1alpha1.NodeID, n v1alpha1.ExecutableNode, - inputs *core.LiteralMap, nl *execMocks.NodeLookup, eCtx executors.ExecutionContext) (*mocks.NodeExecutionContext, *branchNodeStateHolder) { + inputs *core.InputData, nl *execMocks.NodeLookup, eCtx executors.ExecutionContext) (*mocks.NodeExecutionContext, *branchNodeStateHolder) { branchNodeState := handler.BranchNodeState{ FinalizedNodeID: childNodeID, Phase: phase, diff --git a/flytepropeller/pkg/controller/nodes/cache_test.go b/flytepropeller/pkg/controller/nodes/cache_test.go index 05d6ecfeaa..0da31ec31d 100644 --- a/flytepropeller/pkg/controller/nodes/cache_test.go +++ b/flytepropeller/pkg/controller/nodes/cache_test.go @@ -160,7 +160,7 @@ func TestCheckCatalogCache(t *testing.T) { { "CacheHitWithOutputs", catalog.NewCatalogEntry( - ioutils.NewInMemoryOutputReader(&core.LiteralMap{}, nil, nil), + ioutils.NewInMemoryOutputReader(&core.OutputData{Outputs: &core.LiteralMap{}}, nil, nil), catalog.NewStatus(core.CatalogCacheStatus_CACHE_HIT, nil), ), nil, diff --git a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go index a04623f88a..afed909b16 100644 --- a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go +++ b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog.go @@ -102,7 +102,7 @@ func (m *CatalogClient) Get(ctx context.Context, key catalog.Key) (catalog.Entry return catalog.Entry{}, errors.Wrapf(err, "DataCatalog failed to get dataset for ID %s", key.Identifier.String()) } - inputs := &core.LiteralMap{} + inputs := &core.InputData{} if key.TypedInterface.Inputs != nil { retInputs, err := key.InputReader.Get(ctx) if err != nil { @@ -143,7 +143,7 @@ func (m *CatalogClient) Get(ctx context.Context, key catalog.Key) (catalog.Entry return catalog.NewCatalogEntry(ioutils.NewInMemoryOutputReader(outputs, nil, nil), catalog.NewStatus(core.CatalogCacheStatus_CACHE_MISS, md)), err } - logger.Infof(ctx, "Retrieved %v outputs from artifact %v, tag: %v", len(outputs.Literals), artifact.Id, tag) + logger.Infof(ctx, "Retrieved %v outputs from artifact %v, tag: %v", len(outputs.GetOutputs().GetLiterals()), artifact.Id, tag) return catalog.NewCatalogEntry(ioutils.NewInMemoryOutputReader(outputs, nil, nil), catalog.NewStatus(core.CatalogCacheStatus_CACHE_HIT, md)), nil } @@ -175,9 +175,9 @@ func (m *CatalogClient) createDataset(ctx context.Context, key catalog.Key, meta } // prepareInputsAndOutputs reads the inputs and outputs of a task and returns them as core.LiteralMaps to be consumed by datacatalog. -func (m *CatalogClient) prepareInputsAndOutputs(ctx context.Context, key catalog.Key, reader io.OutputReader) (inputs *core.LiteralMap, outputs *core.LiteralMap, err error) { - inputs = &core.LiteralMap{} - outputs = &core.LiteralMap{} +func (m *CatalogClient) prepareInputsAndOutputs(ctx context.Context, key catalog.Key, reader io.OutputReader) (inputs *core.InputData, outputs *core.OutputData, err error) { + inputs = &core.InputData{} + outputs = &core.OutputData{} if key.TypedInterface.Inputs != nil && len(key.TypedInterface.Inputs.Variables) != 0 { retInputs, err := key.InputReader.Get(ctx) if err != nil { @@ -207,12 +207,13 @@ func (m *CatalogClient) prepareInputsAndOutputs(ctx context.Context, key catalog // createArtifact creates an Artifact in datacatalog including its associated ArtifactData and tags it with a hash of // the provided input values for retrieval. -func (m *CatalogClient) createArtifact(ctx context.Context, key catalog.Key, datasetID *datacatalog.DatasetID, inputs *core.LiteralMap, outputs *core.LiteralMap, metadata catalog.Metadata) (catalog.Status, error) { +func (m *CatalogClient) createArtifact(ctx context.Context, key catalog.Key, datasetID *datacatalog.DatasetID, + inputs *core.InputData, outputs *core.OutputData, metadata catalog.Metadata) (catalog.Status, error) { logger.Debugf(ctx, "Creating artifact for key %+v, dataset %+v and execution %+v", key, datasetID, metadata) // Create the artifact for the execution that belongs in the task - artifactDataList := make([]*datacatalog.ArtifactData, 0, len(outputs.Literals)) - for name, value := range outputs.Literals { + artifactDataList := make([]*datacatalog.ArtifactData, 0, len(outputs.GetOutputs().GetLiterals())) + for name, value := range outputs.GetOutputs().GetLiterals() { artifactData := &datacatalog.ArtifactData{ Name: name, Value: value, @@ -264,11 +265,12 @@ func (m *CatalogClient) createArtifact(ctx context.Context, key catalog.Key, dat } // updateArtifact overwrites the ArtifactData of an existing artifact with the provided data in datacatalog. -func (m *CatalogClient) updateArtifact(ctx context.Context, key catalog.Key, datasetID *datacatalog.DatasetID, inputs *core.LiteralMap, outputs *core.LiteralMap, metadata catalog.Metadata) (catalog.Status, error) { +func (m *CatalogClient) updateArtifact(ctx context.Context, key catalog.Key, datasetID *datacatalog.DatasetID, + inputs *core.InputData, outputs *core.OutputData, metadata catalog.Metadata) (catalog.Status, error) { logger.Debugf(ctx, "Updating artifact for key %+v, dataset %+v and execution %+v", key, datasetID, metadata) - artifactDataList := make([]*datacatalog.ArtifactData, 0, len(outputs.Literals)) - for name, value := range outputs.Literals { + artifactDataList := make([]*datacatalog.ArtifactData, 0, len(outputs.GetOutputs().GetLiterals())) + for name, value := range outputs.GetOutputs().GetLiterals() { artifactData := &datacatalog.ArtifactData{ Name: name, Value: value, @@ -381,7 +383,7 @@ func (m *CatalogClient) GetOrExtendReservation(ctx context.Context, key catalog. return nil, err } - inputs := &core.LiteralMap{} + inputs := &core.InputData{} if key.TypedInterface.Inputs != nil { retInputs, err := key.InputReader.Get(ctx) if err != nil { @@ -421,7 +423,7 @@ func (m *CatalogClient) ReleaseReservation(ctx context.Context, key catalog.Key, return err } - inputs := &core.LiteralMap{} + inputs := &core.InputData{} if key.TypedInterface.Inputs != nil { retInputs, err := key.InputReader.Get(ctx) if err != nil { diff --git a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go index ce8f6f4069..2d5f53140e 100644 --- a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go +++ b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/datacatalog_test.go @@ -45,9 +45,17 @@ func newStringLiteral(value string) *core.Literal { } } -var sampleParameters = &core.LiteralMap{Literals: map[string]*core.Literal{ - "out1": newStringLiteral("output1-stringval"), -}} +var sampleOutputParameters = &core.OutputData{ + Outputs: &core.LiteralMap{Literals: map[string]*core.Literal{ + "out1": newStringLiteral("output1-stringval"), + }}, +} + +var sampleInputParameters = &core.InputData{ + Inputs: &core.LiteralMap{Literals: map[string]*core.Literal{ + "out1": newStringLiteral("output1-stringval"), + }}, +} var variableMap = &core.VariableMap{ Variables: map[string]*core.Variable{ @@ -123,7 +131,7 @@ func TestCatalog_Get(t *testing.T) { t.Run("No results, no Artifact", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.On("Get", mock.Anything).Return(sampleInputParameters, nil, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -157,7 +165,7 @@ func TestCatalog_Get(t *testing.T) { t.Run("Found w/ tag", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.On("Get", mock.Anything).Return(sampleInputParameters, nil, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -244,7 +252,7 @@ func TestCatalog_Get(t *testing.T) { t.Run("Found expired artifact", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.On("Get", mock.Anything).Return(sampleInputParameters, nil, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -294,7 +302,7 @@ func TestCatalog_Get(t *testing.T) { t.Run("Found non-expired artifact", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.On("Get", mock.Anything).Return(sampleInputParameters, nil, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -385,7 +393,7 @@ func TestCatalog_Get(t *testing.T) { v, e, err := resp.GetOutputs().Read(ctx) assert.NoError(t, err) assert.Nil(t, e) - assert.Len(t, v.Literals, 0) + assert.Len(t, v.GetOutputs().GetLiterals(), 0) }) } @@ -394,7 +402,7 @@ func TestCatalog_Put(t *testing.T) { t.Run("Create new cached execution", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} discovery := &CatalogClient{ @@ -430,7 +438,7 @@ func TestCatalog_Put(t *testing.T) { ).Return(&datacatalog.AddTagResponse{}, nil) newKey := sampleKey newKey.InputReader = ir - or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + or := ioutils.NewInMemoryOutputReader(sampleOutputParameters, nil, nil) s, err := discovery.Put(ctx, newKey, or, catalog.Metadata{ WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ Name: "test", @@ -547,7 +555,7 @@ func TestCatalog_Put(t *testing.T) { t.Run("Create new cached execution with existing dataset", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} discovery := &CatalogClient{ @@ -588,7 +596,7 @@ func TestCatalog_Put(t *testing.T) { ).Return(&datacatalog.AddTagResponse{}, nil) newKey := sampleKey newKey.InputReader = ir - or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + or := ioutils.NewInMemoryOutputReader(sampleOutputParameters, nil, nil) s, err := discovery.Put(ctx, newKey, or, catalog.Metadata{ WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ Name: "test", @@ -609,7 +617,7 @@ func TestCatalog_Update(t *testing.T) { t.Run("Overwrite existing cached execution", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} discovery := &CatalogClient{ @@ -655,7 +663,7 @@ func TestCatalog_Update(t *testing.T) { newKey := sampleKey newKey.InputReader = ir - or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + or := ioutils.NewInMemoryOutputReader(sampleOutputParameters, nil, nil) s, err := discovery.Update(ctx, newKey, or, catalog.Metadata{ WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ Name: taskID.NodeExecutionId.ExecutionId.Name, @@ -680,7 +688,7 @@ func TestCatalog_Update(t *testing.T) { t.Run("Overwrite non-existing execution", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} discovery := &CatalogClient{ @@ -809,7 +817,7 @@ func TestCatalog_Update(t *testing.T) { newKey := sampleKey newKey.InputReader = ir - or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + or := ioutils.NewInMemoryOutputReader(sampleOutputParameters, nil, nil) s, err := discovery.Update(ctx, newKey, or, catalog.Metadata{ WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ Name: taskID.NodeExecutionId.ExecutionId.Name, @@ -865,7 +873,7 @@ func TestCatalog_Update(t *testing.T) { t.Run("Error while overwriting execution", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} discovery := &CatalogClient{ @@ -884,7 +892,7 @@ func TestCatalog_Update(t *testing.T) { newKey := sampleKey newKey.InputReader = ir - or := ioutils.NewInMemoryOutputReader(sampleParameters, nil, nil) + or := ioutils.NewInMemoryOutputReader(sampleOutputParameters, nil, nil) s, err := discovery.Update(ctx, newKey, or, catalog.Metadata{ WorkflowExecutionIdentifier: &core.WorkflowExecutionIdentifier{ Name: "test", @@ -922,7 +930,7 @@ func TestCatalog_GetOrExtendReservation(t *testing.T) { t.Run("CreateOrUpdateReservation", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -948,7 +956,7 @@ func TestCatalog_GetOrExtendReservation(t *testing.T) { t.Run("ExistingReservation", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -978,7 +986,7 @@ func TestCatalog_ReleaseReservation(t *testing.T) { t.Run("ReleaseReservation", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ @@ -1003,7 +1011,7 @@ func TestCatalog_ReleaseReservation(t *testing.T) { t.Run("ReleaseReservationFailure", func(t *testing.T) { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(sampleParameters, nil, nil) + ir.OnGetMatch(mock.Anything).Return(sampleInputParameters, nil) mockClient := &mocks.DataCatalogClient{} catalogClient := &CatalogClient{ diff --git a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer.go b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer.go index 5c0ac0c30b..ab9304ad2a 100644 --- a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer.go +++ b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer.go @@ -23,18 +23,19 @@ const maxParamHashLength = 8 // the literal and variable maps. So Nil and empty literals and variable maps should translate to these definitions // in order to have a consistent hash. var emptyLiteralMap = core.LiteralMap{Literals: map[string]*core.Literal{}} +var emptyOutputData = core.OutputData{Outputs: &emptyLiteralMap} var emptyVariableMap = core.VariableMap{Variables: map[string]*core.Variable{}} func getDatasetNameFromTask(taskID core.Identifier) string { return fmt.Sprintf("%s-%s", taskNamespace, taskID.Name) } -// Transform the artifact Data into task execution outputs as a literal map -func GenerateTaskOutputsFromArtifact(id core.Identifier, taskInterface core.TypedInterface, artifact *datacatalog.Artifact) (*core.LiteralMap, error) { +// GenerateTaskOutputsFromArtifact transforms the artifact Data into task execution outputs as a literal map +func GenerateTaskOutputsFromArtifact(id core.Identifier, taskInterface core.TypedInterface, artifact *datacatalog.Artifact) (*core.OutputData, error) { // if there are no outputs in the task, return empty map if taskInterface.Outputs == nil || len(taskInterface.Outputs.Variables) == 0 { - return &emptyLiteralMap, nil + return &emptyOutputData, nil } outputVariables := taskInterface.Outputs.Variables @@ -61,7 +62,7 @@ func GenerateTaskOutputsFromArtifact(id core.Identifier, taskInterface core.Type outputs[artifactData.Name] = artifactData.Value } - return &core.LiteralMap{Literals: outputs}, nil + return &core.OutputData{Outputs: &core.LiteralMap{Literals: outputs}}, nil } func generateDataSetVersionFromTask(ctx context.Context, taskInterface core.TypedInterface, cacheVersion string) (string, error) { @@ -115,8 +116,8 @@ func generateTaskSignatureHash(ctx context.Context, taskInterface core.TypedInte } // Generate a tag by hashing the input values which are not in cacheIgnoreInputVars -func GenerateArtifactTagName(ctx context.Context, inputs *core.LiteralMap, cacheIgnoreInputVars []string) (string, error) { - hashString, err := catalog.HashLiteralMap(ctx, inputs, cacheIgnoreInputVars) +func GenerateArtifactTagName(ctx context.Context, inputs *core.InputData, cacheIgnoreInputVars []string) (string, error) { + hashString, err := catalog.HashInputData(ctx, inputs, cacheIgnoreInputVars) if err != nil { return "", err } diff --git a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer_test.go b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer_test.go index 1c6b9e2e1b..a1cf09a331 100644 --- a/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer_test.go +++ b/flytepropeller/pkg/controller/nodes/catalog/datacatalog/transformer_test.go @@ -102,19 +102,17 @@ func TestVariableMapOrder(t *testing.T) { // Ensure correct format of ArtifactTagName func TestGenerateArtifactTagName(t *testing.T) { - literalMap, err := coreutils.MakeLiteralMap(map[string]interface{}{"1": 1, "2": 2}) - assert.NoError(t, err) + literalMap := coreutils.MustMakeLiteral(map[string]interface{}{"1": 1, "2": 2}) - tag, err := GenerateArtifactTagName(context.TODO(), literalMap, nil) + tag, err := GenerateArtifactTagName(context.TODO(), &core.InputData{Inputs: literalMap.GetMap()}, nil) assert.NoError(t, err) assert.Equal(t, "flyte_cached-GQid5LjHbakcW68DS3P2jp80QLbiF0olFHF2hTh5bg8", tag) } func TestGenerateArtifactTagNameWithIgnore(t *testing.T) { - literalMap, err := coreutils.MakeLiteralMap(map[string]interface{}{"1": 1, "2": 2, "3": 3}) - assert.NoError(t, err) + inputData := &core.InputData{Inputs: coreutils.MustMakeLiteral(map[string]interface{}{"1": 1, "2": 2, "3": 3}).GetMap()} cacheIgnoreInputVars := []string{"3"} - tag, err := GenerateArtifactTagName(context.TODO(), literalMap, cacheIgnoreInputVars) + tag, err := GenerateArtifactTagName(context.TODO(), inputData, cacheIgnoreInputVars) assert.NoError(t, err) assert.Equal(t, "flyte_cached-GQid5LjHbakcW68DS3P2jp80QLbiF0olFHF2hTh5bg8", tag) } diff --git a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go index c53827328e..0db593ede3 100644 --- a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go +++ b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow.go @@ -113,6 +113,7 @@ func (d dynamicNodeTaskNodeHandler) buildDynamicWorkflowTemplate(ctx context.Con } } } + return &core.WorkflowTemplate{ Id: &core.Identifier{ Project: nCtx.NodeExecutionMetadata().GetNodeExecutionID().GetExecutionId().Project, @@ -256,7 +257,7 @@ func (d dynamicNodeTaskNodeHandler) buildDynamicWorkflow(ctx context.Context, nC return nil, nil, errors.Wrapf(utils.ErrorCodeUser, err, "malformed dynamic workflow") } - dynamicWf, err := k8s.BuildFlyteWorkflow(closure, &core.LiteralMap{}, nil, "") + dynamicWf, err := k8s.BuildFlyteWorkflow(closure, &core.InputData{Inputs: &core.LiteralMap{}}, nil, "") if err != nil { return nil, nil, errors.Wrapf(utils.ErrorCodeSystem, err, "failed to build workflow") } diff --git a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go index 526f41977a..d20638303d 100644 --- a/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go +++ b/flytepropeller/pkg/controller/nodes/dynamic/dynamic_workflow_test.go @@ -496,7 +496,7 @@ func Test_dynamicNodeHandler_buildContextualDynamicWorkflow_withLaunchPlans(t *t composedPBStore.OnWriteRawMatch( mock.MatchedBy(func(ctx context.Context) bool { return true }), storage.DataReference("s3://my-s3-bucket/foo/bar/futures_compiled.pb"), - int64(1501), + int64(1527), storage.Options{}, mock.MatchedBy(func(rdr *bytes.Reader) bool { return true })).Return(errors.New("foo")) diff --git a/flytepropeller/pkg/controller/nodes/end/handler_test.go b/flytepropeller/pkg/controller/nodes/end/handler_test.go index 4e7fcdaf01..198b783250 100644 --- a/flytepropeller/pkg/controller/nodes/end/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/end/handler_test.go @@ -50,6 +50,10 @@ func (t TestProtoDataStore) ReadProtobuf(ctx context.Context, reference storage. return t.ReadProtobufCb(ctx, reference, msg) } +func (t TestProtoDataStore) ReadProtobufAny(ctx context.Context, reference storage.DataReference, msg ...proto.Message) (int, error) { + return 0, t.ReadProtobufCb(ctx, reference, msg[0]) +} + func (t TestProtoDataStore) WriteProtobuf(ctx context.Context, reference storage.DataReference, opts storage.Options, msg proto.Message) error { return t.WriteProtobufCb(ctx, reference, opts, msg) } @@ -64,26 +68,30 @@ func TestEndHandler_Handle(t *testing.T) { e := New() ctx := context.Background() - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": coreutils.MustMakePrimitiveLiteral("hello"), - "y": coreutils.MustMakePrimitiveLiteral("blah"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": coreutils.MustMakePrimitiveLiteral("hello"), + "y": coreutils.MustMakePrimitiveLiteral("blah"), + }, }, } outputRef := v1alpha1.DataReference("testRef") - createNodeCtx := func(inputs *core.LiteralMap, store *storage.DataStore) *mocks.NodeExecutionContext { + createNodeCtx := func(inputs *core.InputData, store *storage.DataStore) *mocks.NodeExecutionContext { ir := &mocks2.InputReader{} - ir.On("Get", mock.Anything).Return(inputs, nil) + ir.OnGetMatch(mock.Anything).Return(inputs, nil) + nCtx := &mocks.NodeExecutionContext{} - nCtx.On("InputReader").Return(ir) - nCtx.On("DataStore").Return(store) + nCtx.OnInputReader().Return(ir) + nCtx.OnDataStore().Return(store) + ns := &mocks3.ExecutableNodeStatus{} - ns.On("GetDataDir").Return(outputRef) - ns.On("GetOutputDir").Return(outputRef) - nCtx.On("NodeStatus").Return(ns) - nCtx.On("NodeID").Return("end-node") + ns.OnGetDataDir().Return(outputRef) + ns.OnGetOutputDir().Return(outputRef) + nCtx.OnNodeStatus().Return(ns) + nCtx.OnNodeID().Return("end-node") return nCtx } @@ -110,9 +118,9 @@ func TestEndHandler_Handle(t *testing.T) { s, err := e.Handle(ctx, nCtx) assert.NoError(t, err) assert.Equal(t, handler.EPhaseSuccess, s.Info().GetPhase()) - actual := &core.LiteralMap{} + actual := &core.OutputData{} if assert.NoError(t, inMem.ReadProtobuf(ctx, outputLoc, actual)) { - flyteassert.EqualLiteralMap(t, inputs, actual) + flyteassert.EqualLiteralMap(t, inputs.GetInputs(), actual.GetOutputs()) } }) diff --git a/flytepropeller/pkg/controller/nodes/executor.go b/flytepropeller/pkg/controller/nodes/executor.go index 47c91edc51..972f39f5be 100644 --- a/flytepropeller/pkg/controller/nodes/executor.go +++ b/flytepropeller/pkg/controller/nodes/executor.go @@ -105,7 +105,7 @@ type recursiveNodeExecutor struct { metrics *nodeMetrics } -func (c *recursiveNodeExecutor) SetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, nl executors.NodeLookup, inputs *core.LiteralMap) (interfaces.NodeStatus, error) { +func (c *recursiveNodeExecutor) SetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, nl executors.NodeLookup, inputs *core.InputData) (interfaces.NodeStatus, error) { startNode := dag.StartNode() ctx = contextutils.WithNodeID(ctx, startNode.GetID()) if inputs == nil { @@ -119,10 +119,13 @@ func (c *recursiveNodeExecutor) SetInputsForStartNode(ctx context.Context, execC if len(nodeStatus.GetDataDir()) == 0 { return interfaces.NodeStatusUndefined, errors.Errorf(errors.IllegalStateError, startNode.GetID(), "no data-dir set, cannot store inputs") } + outputFile := v1alpha1.GetOutputsFile(nodeStatus.GetOutputDir()) so := storage.Options{} - if err := c.store.WriteProtobuf(ctx, outputFile, so, inputs); err != nil { + if err := c.store.WriteProtobuf(ctx, outputFile, so, &core.OutputData{ + Outputs: inputs.GetInputs(), + }); err != nil { logger.Errorf(ctx, "Failed to write protobuf (metadata). Error [%v]", err) return interfaces.NodeStatusUndefined, errors.Wrapf(errors.CausedByError, startNode.GetID(), err, "Failed to store workflow inputs (as start node)") } @@ -519,29 +522,32 @@ func (c *nodeExecutor) RecordTransitionLatency(ctx context.Context, dag executor } func (c *nodeExecutor) recoverInputs(ctx context.Context, nCtx interfaces.NodeExecutionContext, - recovered *admin.NodeExecution, recoveredData *admin.NodeExecutionGetDataResponse) (*core.LiteralMap, error) { + recovered *admin.NodeExecution, recoveredData *admin.NodeExecutionGetDataResponse) (*core.InputData, error) { - nodeInputs := recoveredData.FullInputs + nodeInputs := recoveredData.InputData if nodeInputs != nil { - if err := c.store.WriteProtobuf(ctx, nCtx.InputReader().GetInputPath(), storage.Options{}, nodeInputs); err != nil { - c.metrics.InputsWriteFailure.Inc(ctx) - logger.Errorf(ctx, "Failed to move recovered inputs for Node. Error [%v]. InputsFile [%s]", err, nCtx.InputReader().GetInputPath()) - return nil, errors.Wrapf(errors.StorageError, nCtx.NodeID(), err, "Failed to store inputs for Node. InputsFile [%s]", nCtx.InputReader().GetInputPath()) + } else if recoveredData.FullInputs != nil { + nodeInputs = &core.InputData{ + Inputs: recoveredData.FullInputs, } } else if len(recovered.InputUri) > 0 { // If the inputs are too large they won't be returned inline in the RecoverData call. We must fetch them before copying them. - nodeInputs = &core.LiteralMap{} - if recoveredData.FullInputs == nil { - if err := c.store.ReadProtobuf(ctx, storage.DataReference(recovered.InputUri), nodeInputs); err != nil { - return nil, errors.Wrapf(errors.InputsNotFoundError, nCtx.NodeID(), err, "failed to read data from dataDir [%v].", recovered.InputUri) + nodeInputs = &core.InputData{} + oldNodeInputs := &core.LiteralMap{} + if msgIndex, err := c.store.ReadProtobufAny(ctx, storage.DataReference(recovered.InputUri), nodeInputs, oldNodeInputs); err != nil { + return nil, errors.Wrapf(errors.InputsNotFoundError, nCtx.NodeID(), err, "failed to read data from dataDir [%v].", recovered.InputUri) + } else if msgIndex == 1 { // LiteralMap + nodeInputs = &core.InputData{ + Inputs: oldNodeInputs, } } + } - if err := c.store.WriteProtobuf(ctx, nCtx.InputReader().GetInputPath(), storage.Options{}, nodeInputs); err != nil { - c.metrics.InputsWriteFailure.Inc(ctx) - logger.Errorf(ctx, "Failed to move recovered inputs for Node. Error [%v]. InputsFile [%s]", err, nCtx.InputReader().GetInputPath()) - return nil, errors.Wrapf(errors.StorageError, nCtx.NodeID(), err, "Failed to store inputs for Node. InputsFile [%s]", nCtx.InputReader().GetInputPath()) - } + // Write new inputs format + if err := c.store.WriteProtobuf(ctx, nCtx.InputReader().GetInputDataPath(), storage.Options{}, nodeInputs); err != nil { + c.metrics.InputsWriteFailure.Inc(ctx) + logger.Errorf(ctx, "Failed to move recovered inputs for Node. Error [%v]. InputsFile [%s]", err, nCtx.InputReader().GetInputDataPath()) + return nil, errors.Wrapf(errors.StorageError, nCtx.NodeID(), err, "Failed to store inputs for Node. InputsFile [%s]", nCtx.InputReader().GetInputDataPath()) } return nodeInputs, nil @@ -741,7 +747,7 @@ func (c *nodeExecutor) preExecute(ctx context.Context, dag executors.DAGStructur // TODO: Performance problem, we maybe in a retry loop and do not need to resolve the inputs again. // For now we will do this node := nCtx.Node() - var nodeInputs *core.LiteralMap + var nodeInputs *core.InputData if !node.IsStartNode() { if nCtx.ExecutionContext().GetExecutionConfig().RecoveryExecution.WorkflowExecutionIdentifier != nil { phaseInfo, err := c.attemptRecovery(ctx, nCtx) @@ -749,13 +755,13 @@ func (c *nodeExecutor) preExecute(ctx context.Context, dag executors.DAGStructur return phaseInfo, err } } + nodeStatus := nCtx.NodeStatus() dataDir := nodeStatus.GetDataDir() t := c.metrics.NodeInputGatherLatency.Start(ctx) defer t.Stop() // Can execute - var err error - nodeInputs, err = Resolve(ctx, c.outputResolver, nCtx.ContextualNodeLookup(), node.GetID(), node.GetInputBindings()) + nodeInputLiterals, err := Resolve(ctx, c.outputResolver, nCtx.ContextualNodeLookup(), node.GetID(), node.GetInputBindings()) // TODO we need to handle retryable, network errors here!! if err != nil { c.metrics.ResolutionFailure.Inc(ctx) @@ -763,13 +769,17 @@ func (c *nodeExecutor) preExecute(ctx context.Context, dag executors.DAGStructur return handler.PhaseInfoFailure(core.ExecutionError_SYSTEM, "BindingResolutionFailure", err.Error(), nil), nil } - if nodeInputs != nil { - inputsFile := v1alpha1.GetInputsFile(dataDir) - if err := c.store.WriteProtobuf(ctx, inputsFile, storage.Options{}, nodeInputs); err != nil { + if nodeInputLiterals != nil { + nodeInputs = &core.InputData{ + Inputs: nodeInputLiterals, + } + + inputDataFile := v1alpha1.GetInputDataFile(dataDir) + if err := c.store.WriteProtobuf(ctx, inputDataFile, storage.Options{}, nodeInputs); err != nil { c.metrics.InputsWriteFailure.Inc(ctx) - logger.Errorf(ctx, "Failed to store inputs for Node. Error [%v]. InputsFile [%s]", err, inputsFile) + logger.Errorf(ctx, "Failed to store inputs for Node. Error [%v]. InputsFile [%s]", err, inputDataFile) return handler.PhaseInfoUndefined, errors.Wrapf( - errors.StorageError, node.GetID(), err, "Failed to store inputs for Node. InputsFile [%s]", inputsFile) + errors.StorageError, node.GetID(), err, "Failed to store inputs for Node. InputsFile [%s]", inputDataFile) } } @@ -1014,7 +1024,7 @@ func (c *nodeExecutor) handleNotYetStartedNode(ctx context.Context, dag executor targetEntity := common.GetTargetEntity(ctx, nCtx) nev, err := ToNodeExecutionEvent(nCtx.NodeExecutionMetadata().GetNodeExecutionID(), - p, nCtx.InputReader().GetInputPath().String(), nodeStatus, nCtx.ExecutionContext().GetEventVersion(), + p, nCtx.InputReader().GetInputDataPath().String(), nodeStatus, nCtx.ExecutionContext().GetEventVersion(), nCtx.ExecutionContext().GetParentInfo(), nCtx.Node(), c.clusterID, nCtx.NodeStateReader().GetDynamicNodeState().Phase, c.eventConfig, targetEntity) if err != nil { @@ -1244,7 +1254,7 @@ func (c *nodeExecutor) handleQueuedOrRunningNode(ctx context.Context, nCtx inter targetEntity := common.GetTargetEntity(ctx, nCtx) nev, err := ToNodeExecutionEvent(nCtx.NodeExecutionMetadata().GetNodeExecutionID(), - p, nCtx.InputReader().GetInputPath().String(), nCtx.NodeStatus(), nCtx.ExecutionContext().GetEventVersion(), + p, nCtx.InputReader().GetInputDataPath().String(), nCtx.NodeStatus(), nCtx.ExecutionContext().GetEventVersion(), nCtx.ExecutionContext().GetParentInfo(), nCtx.Node(), c.clusterID, nCtx.NodeStateReader().GetDynamicNodeState().Phase, c.eventConfig, targetEntity) if err != nil { diff --git a/flytepropeller/pkg/controller/nodes/executor_test.go b/flytepropeller/pkg/controller/nodes/executor_test.go index 783821c9ab..339f9675e2 100644 --- a/flytepropeller/pkg/controller/nodes/executor_test.go +++ b/flytepropeller/pkg/controller/nodes/executor_test.go @@ -71,10 +71,12 @@ func TestSetInputsForStartNode(t *testing.T) { exec, err := NewExecutor(ctx, config.GetConfig().NodeConfig, mockStorage, enQWf, eventMocks.NewMockEventSink(), adminClient, adminClient, "s3://bucket/", fakeKubeClient, catalogClient, recoveryClient, eventConfig, testClusterID, signalClient, hf, promutils.NewTestScope()) assert.NoError(t, err) - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": coreutils.MustMakePrimitiveLiteral("hello"), - "y": coreutils.MustMakePrimitiveLiteral("blah"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": coreutils.MustMakePrimitiveLiteral("hello"), + "y": coreutils.MustMakePrimitiveLiteral("blah"), + }, }, } @@ -98,9 +100,9 @@ func TestSetInputsForStartNode(t *testing.T) { s, err := exec.SetInputsForStartNode(ctx, w, w, w, inputs) assert.NoError(t, err) assert.Equal(t, interfaces.NodeStatusComplete, s) - actual := &core.LiteralMap{} + actual := &core.OutputData{} if assert.NoError(t, mockStorage.ReadProtobuf(ctx, "s3://test-bucket/exec/start-node/data/0/outputs.pb", actual)) { - flyteassert.EqualLiteralMap(t, inputs, actual) + flyteassert.EqualLiteralMap(t, inputs.GetInputs(), actual.GetOutputs()) } }) @@ -731,7 +733,7 @@ func TestNodeExecutor_RecursiveNodeHandler_Recurse(t *testing.T) { }, true, false, true, core.NodeExecution_RUNNING}, {"queued->queued", v1alpha1.NodePhaseQueued, v1alpha1.NodePhaseQueued, interfaces.NodePhasePending, func() (handler.Transition, error) { - return handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoQueued("reason", &core.LiteralMap{})), nil + return handler.DoTransition(handler.TransitionTypeEphemeral, handler.PhaseInfoQueued("reason", &core.InputData{})), nil }, true, false, false, core.NodeExecution_QUEUED}, {"queued->failing", v1alpha1.NodePhaseQueued, v1alpha1.NodePhaseFailing, interfaces.NodePhasePending, func() (handler.Transition, error) { @@ -1736,6 +1738,8 @@ func TestNodeExecutionEventStartNode(t *testing.T) { tID := &core.TaskExecutionIdentifier{ NodeExecutionId: nID, } + + p := handler.PhaseInfoQueued("r", &core.InputData{Inputs: &core.LiteralMap{}}) subWfID := &core.Identifier{ ResourceType: core.ResourceType_WORKFLOW, Project: "p", @@ -1743,9 +1747,8 @@ func TestNodeExecutionEventStartNode(t *testing.T) { Name: "name", Version: "123", } - p := handler.PhaseInfoQueued("r", &core.LiteralMap{}) inputReader := &mocks3.InputReader{} - inputReader.OnGetInputPath().Return("reference") + inputReader.OnGetInputDataPath().Return("reference") parentInfo := &mocks4.ImmutableParentInfo{} parentInfo.OnGetUniqueID().Return("np1") parentInfo.OnCurrentAttempt().Return(uint32(2)) @@ -1793,7 +1796,7 @@ func TestNodeExecutionEventV0(t *testing.T) { tID := &core.TaskExecutionIdentifier{ NodeExecutionId: nID, } - p := handler.PhaseInfoQueued("r", &core.LiteralMap{}) + p := handler.PhaseInfoQueued("r", &core.InputData{}) parentInfo := &mocks4.ImmutableParentInfo{} parentInfo.OnGetUniqueID().Return("np1") parentInfo.OnCurrentAttempt().Return(uint32(2)) @@ -1836,9 +1839,11 @@ func TestNodeExecutionEventV1(t *testing.T) { tID := &core.TaskExecutionIdentifier{ NodeExecutionId: nID, } - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("bar"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("bar"), + }, }, } p := handler.PhaseInfoQueued("r", inputs) @@ -2090,7 +2095,7 @@ func TestRecover(t *testing.T) { }) ir := &mocks3.InputReader{} - ir.OnGetInputPath().Return(inputsPath) + ir.OnGetInputDataPath().Return(inputsPath) ns := &mocks.ExecutableNodeStatus{} ns.OnGetOutputDir().Return(storage.DataReference("out")) @@ -2416,7 +2421,7 @@ func TestRecover(t *testing.T) { t.Run("Fetch inputs", func(t *testing.T) { recoveryClient := &recoveryMocks.Client{} - recoveryClient.On("RecoverNodeExecution", mock.Anything, recoveryID, nodeID).Return( + recoveryClient.OnRecoverNodeExecutionMatch(mock.Anything, recoveryID, nodeID).Return( &admin.NodeExecution{ InputUri: "inputuri", Closure: &admin.NodeExecutionClosure{ @@ -2428,7 +2433,7 @@ func TestRecover(t *testing.T) { }, }, nil) - recoveryClient.On("RecoverNodeExecutionData", mock.Anything, recoveryID, nodeID).Return( + recoveryClient.OnRecoverNodeExecutionDataMatch(mock.Anything, recoveryID, nodeID).Return( &admin.NodeExecutionGetDataResponse{ FullOutputs: fullOutputs, }, nil) @@ -2438,11 +2443,12 @@ func TestRecover(t *testing.T) { mockPBStore.OnHeadMatch(mock.MatchedBy(func(ctx context.Context) bool { return true }), storage.DataReference(deckPath)). Return(&metadata, nil) - mockPBStore.On("WriteProtobuf", mock.Anything, mock.MatchedBy(func(reference storage.DataReference) bool { + mockPBStore.OnWriteProtobufMatch(mock.Anything, mock.MatchedBy(func(reference storage.DataReference) bool { return reference.String() == inputsPath || reference.String() == outputsPath }), mock.Anything, mock.Anything).Return(nil) - mockPBStore.On("ReadProtobuf", mock.Anything, storage.DataReference("inputuri"), &core.LiteralMap{}).Return(nil) + mockPBStore.OnReadProtobufAnyMatch(mock.Anything, storage.DataReference("inputuri"), &core.InputData{}, + mock.Anything).Return(0, nil) storageClient := &storage.DataStore{ ComposedProtobufStore: mockPBStore, @@ -2459,7 +2465,7 @@ func TestRecover(t *testing.T) { phaseInfo, err := executor.attemptRecovery(context.TODO(), nCtx) assert.NoError(t, err) assert.Equal(t, phaseInfo.GetPhase(), handler.EPhaseRecovered) - mockPBStore.AssertNumberOfCalls(t, "ReadProtobuf", 1) + mockPBStore.AssertNumberOfCalls(t, "ReadProtobufAny", 1) }) t.Run("Fetch outputs", func(t *testing.T) { recoveryClient := &recoveryMocks.Client{} diff --git a/flytepropeller/pkg/controller/nodes/gate/handler_test.go b/flytepropeller/pkg/controller/nodes/gate/handler_test.go index d988e8cb74..7dcbc88ceb 100644 --- a/flytepropeller/pkg/controller/nodes/gate/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/gate/handler_test.go @@ -102,7 +102,7 @@ func createNodeExecutionContext(gateNode *v1alpha1.GateNodeSpec) *nodeMocks.Node ns.OnGetLastAttemptStartedAt().Return(&t) inputReader := &ioMocks.InputReader{} - inputReader.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + inputReader.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) dataStore, _ := storage.NewDataStore(&storage.Config{Type: storage.TypeMemory}, promutils.NewTestScope()) eCtx := &executormocks.ExecutionContext{} diff --git a/flytepropeller/pkg/controller/nodes/handler/transition_info.go b/flytepropeller/pkg/controller/nodes/handler/transition_info.go index c9af525cca..bd47be4f7b 100644 --- a/flytepropeller/pkg/controller/nodes/handler/transition_info.go +++ b/flytepropeller/pkg/controller/nodes/handler/transition_info.go @@ -64,7 +64,7 @@ type ExecutionInfo struct { DynamicNodeInfo *DynamicNodeInfo WorkflowNodeInfo *WorkflowNodeInfo BranchNodeInfo *BranchNodeInfo - Inputs *core.LiteralMap + Inputs *core.InputData OutputInfo *OutputInfo TaskNodeInfo *TaskNodeInfo GateNodeInfo *GateNodeInfo @@ -135,7 +135,7 @@ func PhaseInfoNotReady(reason string) PhaseInfo { return phaseInfo(EPhaseNotReady, nil, nil, reason) } -func PhaseInfoQueued(reason string, inputs *core.LiteralMap) PhaseInfo { +func PhaseInfoQueued(reason string, inputs *core.InputData) PhaseInfo { return phaseInfo(EPhaseQueued, nil, &ExecutionInfo{ Inputs: inputs, }, reason) diff --git a/flytepropeller/pkg/controller/nodes/handler/transition_info_test.go b/flytepropeller/pkg/controller/nodes/handler/transition_info_test.go index 883dbd5f45..04d30dadc7 100644 --- a/flytepropeller/pkg/controller/nodes/handler/transition_info_test.go +++ b/flytepropeller/pkg/controller/nodes/handler/transition_info_test.go @@ -11,7 +11,7 @@ import ( ) func TestPhaseInfoQueued(t *testing.T) { - p := PhaseInfoQueued("Queued", &core.LiteralMap{}) + p := PhaseInfoQueued("Queued", &core.InputData{}) assert.Equal(t, EPhaseQueued, p.p) } @@ -62,9 +62,11 @@ func TestPhaseInfo(t *testing.T) { }) t.Run("queued", func(t *testing.T) { - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("bar"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("bar"), + }, }, } p := PhaseInfoQueued("reason", inputs) diff --git a/flytepropeller/pkg/controller/nodes/handler/transition_test.go b/flytepropeller/pkg/controller/nodes/handler/transition_test.go index b2d62c793a..a7a6facf36 100644 --- a/flytepropeller/pkg/controller/nodes/handler/transition_test.go +++ b/flytepropeller/pkg/controller/nodes/handler/transition_test.go @@ -15,7 +15,7 @@ func AsPointer[T any](val T) *T { func TestDoTransition(t *testing.T) { t.Run("ephemeral", func(t *testing.T) { - tr := DoTransition(TransitionTypeEphemeral, PhaseInfoQueued("queued", &core.LiteralMap{})) + tr := DoTransition(TransitionTypeEphemeral, PhaseInfoQueued("queued", &core.InputData{})) assert.Equal(t, TransitionTypeEphemeral, tr.Type()) assert.Equal(t, EPhaseQueued, tr.Info().p) }) @@ -32,7 +32,7 @@ func TestDoTransition(t *testing.T) { } func TestTransition_WithInfo(t *testing.T) { - tr := DoTransition(TransitionTypeEphemeral, PhaseInfoQueued("queued", &core.LiteralMap{})) + tr := DoTransition(TransitionTypeEphemeral, PhaseInfoQueued("queued", &core.InputData{})) assert.Equal(t, EPhaseQueued, tr.info.p) tr = tr.WithInfo(PhaseInfoSuccess(&ExecutionInfo{})) assert.Equal(t, EPhaseSuccess, tr.info.p) diff --git a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go index 789427f8b0..81e243613f 100644 --- a/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go +++ b/flytepropeller/pkg/controller/nodes/interfaces/mocks/node.go @@ -197,7 +197,7 @@ func (_m Node_SetInputsForStartNode) Return(_a0 interfaces.NodeStatus, _a1 error return &Node_SetInputsForStartNode{Call: _m.Call.Return(_a0, _a1)} } -func (_m *Node) OnSetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, nl executors.NodeLookup, inputs *core.LiteralMap) *Node_SetInputsForStartNode { +func (_m *Node) OnSetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, nl executors.NodeLookup, inputs *core.InputData) *Node_SetInputsForStartNode { c_call := _m.On("SetInputsForStartNode", ctx, execContext, dag, nl, inputs) return &Node_SetInputsForStartNode{Call: c_call} } @@ -208,18 +208,18 @@ func (_m *Node) OnSetInputsForStartNodeMatch(matchers ...interface{}) *Node_SetI } // SetInputsForStartNode provides a mock function with given fields: ctx, execContext, dag, nl, inputs -func (_m *Node) SetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, nl executors.NodeLookup, inputs *core.LiteralMap) (interfaces.NodeStatus, error) { +func (_m *Node) SetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, nl executors.NodeLookup, inputs *core.InputData) (interfaces.NodeStatus, error) { ret := _m.Called(ctx, execContext, dag, nl, inputs) var r0 interfaces.NodeStatus - if rf, ok := ret.Get(0).(func(context.Context, executors.ExecutionContext, executors.DAGStructureWithStartNode, executors.NodeLookup, *core.LiteralMap) interfaces.NodeStatus); ok { + if rf, ok := ret.Get(0).(func(context.Context, executors.ExecutionContext, executors.DAGStructureWithStartNode, executors.NodeLookup, *core.InputData) interfaces.NodeStatus); ok { r0 = rf(ctx, execContext, dag, nl, inputs) } else { r0 = ret.Get(0).(interfaces.NodeStatus) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, executors.ExecutionContext, executors.DAGStructureWithStartNode, executors.NodeLookup, *core.LiteralMap) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, executors.ExecutionContext, executors.DAGStructureWithStartNode, executors.NodeLookup, *core.InputData) error); ok { r1 = rf(ctx, execContext, dag, nl, inputs) } else { r1 = ret.Error(1) diff --git a/flytepropeller/pkg/controller/nodes/interfaces/node.go b/flytepropeller/pkg/controller/nodes/interfaces/node.go index fd9c12ebb7..9b1453ef10 100644 --- a/flytepropeller/pkg/controller/nodes/interfaces/node.go +++ b/flytepropeller/pkg/controller/nodes/interfaces/node.go @@ -68,7 +68,7 @@ type Node interface { // This method is used specifically to set inputs for start node. This is because start node does not retrieve inputs // from predecessors, but the inputs are inputs to the workflow or inputs to the parent container (workflow) node. SetInputsForStartNode(ctx context.Context, execContext executors.ExecutionContext, dag executors.DAGStructureWithStartNode, - nl executors.NodeLookup, inputs *core.LiteralMap) (NodeStatus, error) + nl executors.NodeLookup, inputs *core.InputData) (NodeStatus, error) // This is the main entrypoint to execute a node. It recursively depth-first goes through all ready nodes and starts their execution // This returns either diff --git a/flytepropeller/pkg/controller/nodes/output_resolver.go b/flytepropeller/pkg/controller/nodes/output_resolver.go index 85eebd4de5..595263f4d7 100644 --- a/flytepropeller/pkg/controller/nodes/output_resolver.go +++ b/flytepropeller/pkg/controller/nodes/output_resolver.go @@ -74,19 +74,23 @@ func (r remoteFileOutputResolver) ExtractOutput(ctx context.Context, nl executor func resolveSubtaskOutput(ctx context.Context, store storage.ProtobufStore, nodeID string, outputsFileRef storage.DataReference, idx int, varName string) (*core.Literal, error) { - d := &core.LiteralMap{} + + oldOutputs := &core.LiteralMap{} + outputs := &core.OutputData{} // TODO we should do a head before read and if head results in not found then fail - if err := store.ReadProtobuf(ctx, outputsFileRef, d); err != nil { + if msgIndex, err := store.ReadProtobufAny(ctx, outputsFileRef, outputs, oldOutputs); err != nil { return nil, errors.Wrapf(errors.CausedByError, nodeID, err, "Failed to GetPrevious data from outputDir [%v]", outputsFileRef) + } else if msgIndex == 0 { + oldOutputs = outputs.GetOutputs() } - if d.Literals == nil { + if oldOutputs.Literals == nil { return nil, errors.Errorf(errors.OutputsNotFoundError, nodeID, "Outputs not found at [%v]", outputsFileRef) } - l, ok := d.Literals[varName] + l, ok := oldOutputs.Literals[varName] if !ok { return nil, errors.Errorf(errors.BadSpecificationError, nodeID, "Output of array tasks is expected to be "+ "a single literal map entry named 'array' of type LiteralCollection.") @@ -109,18 +113,21 @@ func resolveSubtaskOutput(ctx context.Context, store storage.ProtobufStore, node func resolveSingleOutput(ctx context.Context, store storage.ProtobufStore, nodeID string, outputsFileRef storage.DataReference, varName string) (*core.Literal, error) { - d := &core.LiteralMap{} - if err := store.ReadProtobuf(ctx, outputsFileRef, d); err != nil { + outputs := &core.OutputData{} + oldOutputs := &core.LiteralMap{} + if msgIndex, err := store.ReadProtobufAny(ctx, outputsFileRef, outputs, oldOutputs); err != nil { return nil, errors.Wrapf(errors.CausedByError, nodeID, err, "Failed to GetPrevious data from outputDir [%v]", outputsFileRef) + } else if msgIndex == 0 { + oldOutputs = outputs.GetOutputs() } - if d.Literals == nil { + if oldOutputs.Literals == nil { return nil, errors.Errorf(errors.OutputsNotFoundError, nodeID, "Outputs not found at [%v]", outputsFileRef) } - l, ok := d.Literals[varName] + l, ok := oldOutputs.Literals[varName] if !ok { return nil, errors.Errorf(errors.OutputsNotFoundError, nodeID, "Failed to find [%v].[%v]", nodeID, varName) diff --git a/flytepropeller/pkg/controller/nodes/resolve.go b/flytepropeller/pkg/controller/nodes/resolve.go index 2dd322c601..b1ddd133f9 100644 --- a/flytepropeller/pkg/controller/nodes/resolve.go +++ b/flytepropeller/pkg/controller/nodes/resolve.go @@ -101,6 +101,7 @@ func Resolve(ctx context.Context, outputResolver OutputResolver, nl executors.No literalMap[varName] = l } + return &core.LiteralMap{ Literals: literalMap, }, nil diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/handler_test.go b/flytepropeller/pkg/controller/nodes/subworkflow/handler_test.go index cd67b96466..e1b556edc2 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/handler_test.go @@ -92,7 +92,7 @@ func createNodeContextWithVersion(phase v1alpha1.WorkflowNodePhase, n v1alpha1.E }) ir := &mocks4.InputReader{} - inputs := &core.LiteralMap{} + inputs := &core.InputData{} ir.OnGetMatch(mock.Anything).Return(inputs, nil) nCtx := &mocks3.NodeExecutionContext{} @@ -177,7 +177,7 @@ func TestWorkflowNodeHandler_StartNode_Launchplan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseUndefined, mockNode, mockNodeStatus) @@ -202,7 +202,7 @@ func TestWorkflowNodeHandler_StartNode_Launchplan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(nil) nCtx := createNodeContextV1(v1alpha1.WorkflowNodePhaseUndefined, mockNode, mockNodeStatus) @@ -254,7 +254,7 @@ func TestWorkflowNodeHandler_CheckNodeStatus(t *testing.T) { }), ).Return(&admin.ExecutionClosure{ Phase: core.WorkflowExecution_RUNNING, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.Handle(ctx, nCtx) @@ -275,7 +275,7 @@ func TestWorkflowNodeHandler_CheckNodeStatus(t *testing.T) { }), ).Return(&admin.ExecutionClosure{ Phase: core.WorkflowExecution_RUNNING, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContextV1(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.Handle(ctx, nCtx) diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin.go index fbe0a8c1a6..3f2496e1a1 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin.go @@ -42,7 +42,7 @@ type executionCacheItem struct { core.WorkflowExecutionIdentifier ExecutionClosure *admin.ExecutionClosure SyncError error - ExecutionOutputs *core.LiteralMap + ExecutionOutputs *core.OutputData } func (e executionCacheItem) IsTerminal() bool { @@ -80,7 +80,7 @@ func (a *adminLaunchPlanExecutor) handleLaunchError(ctx context.Context, isRecov } func (a *adminLaunchPlanExecutor) Launch(ctx context.Context, launchCtx LaunchContext, - executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) error { + executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) error { var err error if launchCtx.RecoveryExecution != nil { _, err = a.adminClient.RecoverExecution(ctx, &admin.ExecutionRecoverRequest{ @@ -125,10 +125,11 @@ func (a *adminLaunchPlanExecutor) Launch(ctx context.Context, launchCtx LaunchCo } req := &admin.ExecutionCreateRequest{ - Project: executionID.Project, - Domain: executionID.Domain, - Name: executionID.Name, - Inputs: inputs, + Project: executionID.Project, + Domain: executionID.Domain, + Name: executionID.Name, + Inputs: inputs.GetInputs(), + InputData: inputs, Spec: &admin.ExecutionSpec{ LaunchPlan: launchPlanRef, Metadata: &admin.ExecutionMetadata{ @@ -164,7 +165,7 @@ func (a *adminLaunchPlanExecutor) Launch(ctx context.Context, launchCtx LaunchCo return nil } -func (a *adminLaunchPlanExecutor) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.LiteralMap, error) { +func (a *adminLaunchPlanExecutor) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.OutputData, error) { if executionID == nil { return nil, nil, fmt.Errorf("nil executionID") } @@ -270,7 +271,7 @@ func (a *adminLaunchPlanExecutor) syncItem(ctx context.Context, batch cache.Batc continue } - var outputs = &core.LiteralMap{} + var outputs *core.OutputData // Retrieve potential outputs only when the workflow succeeded. // TODO: We can optimize further by only retrieving the outputs when the workflow has output variables in the // interface. @@ -301,7 +302,12 @@ func (a *adminLaunchPlanExecutor) syncItem(ctx context.Context, batch cache.Batc } } else { - outputs = execData.GetFullOutputs() + outputs = execData.GetOutputData() + if outputs == nil && execData.GetFullOutputs() != nil { + outputs = &core.OutputData{ + Outputs: execData.GetFullOutputs(), + } + } } } diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin_test.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin_test.go index 2a442e3262..faaf25a6aa 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin_test.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/admin_test.go @@ -436,7 +436,7 @@ type test struct { storageReadError error expectSuccess bool expectError bool - expectedOutputs *core.LiteralMap + expectedOutputs *core.OutputData expectedErrorContains string } @@ -460,9 +460,11 @@ func TestAdminLaunchPlanExecutorScenarios(t *testing.T) { Phase: core.WorkflowExecution_SUCCEEDED, }, } - outputLiteral := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo-1": coreutils.MustMakeLiteral("foo-value-1"), + outputLiteral := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo-1": coreutils.MustMakeLiteral("foo-value-1"), + }, }, } @@ -498,7 +500,7 @@ func TestAdminLaunchPlanExecutorScenarios(t *testing.T) { cacheItem: executionCacheItem{}, expectedOutputs: outputLiteral, getExecutionDataResp: &admin.WorkflowExecutionGetDataResponse{ - FullOutputs: outputLiteral, + FullOutputs: outputLiteral.GetOutputs(), }, getExecutionDataError: nil, getExecutionResp: mockExecutionRespWithOutputs, @@ -540,7 +542,7 @@ func TestAdminLaunchPlanExecutorScenarios(t *testing.T) { FullOutputs: &core.LiteralMap{}, }, getExecutionDataError: nil, - expectedOutputs: &core.LiteralMap{}, + expectedOutputs: nil, getExecutionResp: mockExecutionRespWithOutputs, }, } diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/launchplan.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/launchplan.go index f2262ce7b2..949b0d2fc0 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/launchplan.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/launchplan.go @@ -36,10 +36,10 @@ type LaunchContext struct { // Executor interface to be implemented by the remote system that can allow workflow launching capabilities type Executor interface { // Launch start an execution of a launchplan - Launch(ctx context.Context, launchCtx LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) error + Launch(ctx context.Context, launchCtx LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) error // GetStatus retrieves status of a LaunchPlan execution - GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.LiteralMap, error) + GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.OutputData, error) // Kill a remote execution Kill(ctx context.Context, executionID *core.WorkflowExecutionIdentifier, reason string) error diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go index aa3a1bdb25..e391432220 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/executor.go @@ -23,7 +23,7 @@ type Executor_GetStatus struct { *mock.Call } -func (_m Executor_GetStatus) Return(_a0 *admin.ExecutionClosure, _a1 *core.LiteralMap, _a2 error) *Executor_GetStatus { +func (_m Executor_GetStatus) Return(_a0 *admin.ExecutionClosure, _a1 *core.OutputData, _a2 error) *Executor_GetStatus { return &Executor_GetStatus{Call: _m.Call.Return(_a0, _a1, _a2)} } @@ -38,7 +38,7 @@ func (_m *Executor) OnGetStatusMatch(matchers ...interface{}) *Executor_GetStatu } // GetStatus provides a mock function with given fields: ctx, executionID -func (_m *Executor) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.LiteralMap, error) { +func (_m *Executor) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.OutputData, error) { ret := _m.Called(ctx, executionID) var r0 *admin.ExecutionClosure @@ -50,12 +50,12 @@ func (_m *Executor) GetStatus(ctx context.Context, executionID *core.WorkflowExe } } - var r1 *core.LiteralMap - if rf, ok := ret.Get(1).(func(context.Context, *core.WorkflowExecutionIdentifier) *core.LiteralMap); ok { + var r1 *core.OutputData + if rf, ok := ret.Get(1).(func(context.Context, *core.WorkflowExecutionIdentifier) *core.OutputData); ok { r1 = rf(ctx, executionID) } else { if ret.Get(1) != nil { - r1 = ret.Get(1).(*core.LiteralMap) + r1 = ret.Get(1).(*core.OutputData) } } @@ -141,7 +141,7 @@ func (_m Executor_Launch) Return(_a0 error) *Executor_Launch { return &Executor_Launch{Call: _m.Call.Return(_a0)} } -func (_m *Executor) OnLaunch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) *Executor_Launch { +func (_m *Executor) OnLaunch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) *Executor_Launch { c_call := _m.On("Launch", ctx, launchCtx, executionID, launchPlanRef, inputs) return &Executor_Launch{Call: c_call} } @@ -152,11 +152,11 @@ func (_m *Executor) OnLaunchMatch(matchers ...interface{}) *Executor_Launch { } // Launch provides a mock function with given fields: ctx, launchCtx, executionID, launchPlanRef, inputs -func (_m *Executor) Launch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) error { +func (_m *Executor) Launch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) error { ret := _m.Called(ctx, launchCtx, executionID, launchPlanRef, inputs) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, launchplan.LaunchContext, *core.WorkflowExecutionIdentifier, *core.Identifier, *core.LiteralMap) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, launchplan.LaunchContext, *core.WorkflowExecutionIdentifier, *core.Identifier, *core.InputData) error); ok { r0 = rf(ctx, launchCtx, executionID, launchPlanRef, inputs) } else { r0 = ret.Error(0) diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go index 3fa881ecfe..e6520334bf 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/mocks/flyte_admin.go @@ -64,7 +64,7 @@ type FlyteAdmin_GetStatus struct { *mock.Call } -func (_m FlyteAdmin_GetStatus) Return(_a0 *admin.ExecutionClosure, _a1 *core.LiteralMap, _a2 error) *FlyteAdmin_GetStatus { +func (_m FlyteAdmin_GetStatus) Return(_a0 *admin.ExecutionClosure, _a1 *core.OutputData, _a2 error) *FlyteAdmin_GetStatus { return &FlyteAdmin_GetStatus{Call: _m.Call.Return(_a0, _a1, _a2)} } @@ -79,7 +79,7 @@ func (_m *FlyteAdmin) OnGetStatusMatch(matchers ...interface{}) *FlyteAdmin_GetS } // GetStatus provides a mock function with given fields: ctx, executionID -func (_m *FlyteAdmin) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.LiteralMap, error) { +func (_m *FlyteAdmin) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.OutputData, error) { ret := _m.Called(ctx, executionID) var r0 *admin.ExecutionClosure @@ -91,12 +91,12 @@ func (_m *FlyteAdmin) GetStatus(ctx context.Context, executionID *core.WorkflowE } } - var r1 *core.LiteralMap - if rf, ok := ret.Get(1).(func(context.Context, *core.WorkflowExecutionIdentifier) *core.LiteralMap); ok { + var r1 *core.OutputData + if rf, ok := ret.Get(1).(func(context.Context, *core.WorkflowExecutionIdentifier) *core.OutputData); ok { r1 = rf(ctx, executionID) } else { if ret.Get(1) != nil { - r1 = ret.Get(1).(*core.LiteralMap) + r1 = ret.Get(1).(*core.OutputData) } } @@ -182,7 +182,7 @@ func (_m FlyteAdmin_Launch) Return(_a0 error) *FlyteAdmin_Launch { return &FlyteAdmin_Launch{Call: _m.Call.Return(_a0)} } -func (_m *FlyteAdmin) OnLaunch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) *FlyteAdmin_Launch { +func (_m *FlyteAdmin) OnLaunch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) *FlyteAdmin_Launch { c_call := _m.On("Launch", ctx, launchCtx, executionID, launchPlanRef, inputs) return &FlyteAdmin_Launch{Call: c_call} } @@ -193,11 +193,11 @@ func (_m *FlyteAdmin) OnLaunchMatch(matchers ...interface{}) *FlyteAdmin_Launch } // Launch provides a mock function with given fields: ctx, launchCtx, executionID, launchPlanRef, inputs -func (_m *FlyteAdmin) Launch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) error { +func (_m *FlyteAdmin) Launch(ctx context.Context, launchCtx launchplan.LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) error { ret := _m.Called(ctx, launchCtx, executionID, launchPlanRef, inputs) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, launchplan.LaunchContext, *core.WorkflowExecutionIdentifier, *core.Identifier, *core.LiteralMap) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, launchplan.LaunchContext, *core.WorkflowExecutionIdentifier, *core.Identifier, *core.InputData) error); ok { r0 = rf(ctx, launchCtx, executionID, launchPlanRef, inputs) } else { r0 = ret.Error(0) diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/noop.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/noop.go index 666d3b1797..c4c3818b74 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/noop.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan/noop.go @@ -15,12 +15,12 @@ type failFastWorkflowLauncher struct { Reader } -func (failFastWorkflowLauncher) Launch(ctx context.Context, launchCtx LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.LiteralMap) error { +func (failFastWorkflowLauncher) Launch(ctx context.Context, launchCtx LaunchContext, executionID *core.WorkflowExecutionIdentifier, launchPlanRef *core.Identifier, inputs *core.InputData) error { logger.Infof(ctx, "Fail: Launch Workflow requested with ExecID [%s], LaunchPlan [%s]", executionID.Name, fmt.Sprintf("%s:%s:%s", launchPlanRef.Project, launchPlanRef.Domain, launchPlanRef.Name)) return errors.Wrapf(RemoteErrorUser, fmt.Errorf("badly configured system"), "please enable admin workflow launch to use launchplans") } -func (failFastWorkflowLauncher) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.LiteralMap, error) { +func (failFastWorkflowLauncher) GetStatus(ctx context.Context, executionID *core.WorkflowExecutionIdentifier) (*admin.ExecutionClosure, *core.OutputData, error) { logger.Infof(ctx, "NOOP: Workflow Status ExecID [%s]", executionID.Name) return nil, nil, errors.Wrapf(RemoteErrorUser, fmt.Errorf("badly configured system"), "please enable admin workflow launch to use launchplans") } diff --git a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan_test.go b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan_test.go index 96acf46d78..d764052fc6 100644 --- a/flytepropeller/pkg/controller/nodes/subworkflow/launchplan_test.go +++ b/flytepropeller/pkg/controller/nodes/subworkflow/launchplan_test.go @@ -80,11 +80,11 @@ func TestSubWorkflowHandler_StartLaunchPlan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(nil) wfStatus := &mocks2.MutableWorkflowNodeStatus{} - mockNodeStatus.On("GetOrCreateWorkflowStatus").Return(wfStatus) + mockNodeStatus.OnGetOrCreateWorkflowStatus().Return(wfStatus) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseUndefined, mockNode, mockNodeStatus) s, err := h.StartLaunchPlan(ctx, nCtx) @@ -109,7 +109,7 @@ func TestSubWorkflowHandler_StartLaunchPlan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(errors.Wrapf(launchplan.RemoteErrorAlreadyExists, fmt.Errorf("blah"), "failed")) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseUndefined, mockNode, mockNodeStatus) @@ -135,7 +135,7 @@ func TestSubWorkflowHandler_StartLaunchPlan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(errors.Wrapf(launchplan.RemoteErrorSystem, fmt.Errorf("blah"), "failed")) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) @@ -161,7 +161,7 @@ func TestSubWorkflowHandler_StartLaunchPlan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(errors.Wrapf(launchplan.RemoteErrorUser, fmt.Errorf("blah"), "failed")) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) @@ -215,7 +215,7 @@ func TestSubWorkflowHandler_StartLaunchPlan(t *testing.T) { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), mock.MatchedBy(func(o *core.Identifier) bool { return lpID == o }), - mock.MatchedBy(func(o *core.LiteralMap) bool { return o.Literals == nil }), + mock.MatchedBy(func(o *core.InputData) bool { return o.GetInputs().GetLiterals() == nil }), ).Return(nil) wfStatus := &mocks2.MutableWorkflowNodeStatus{} @@ -224,7 +224,7 @@ func TestSubWorkflowHandler_StartLaunchPlan(t *testing.T) { nCtx := &mocks3.NodeExecutionContext{} ir := &mocks4.InputReader{} - inputs := &core.LiteralMap{} + inputs := &core.InputData{} ir.OnGetMatch(mock.Anything).Return(inputs, nil) nCtx.OnInputReader().Return(ir) @@ -305,14 +305,14 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { h := launchPlanHandler{ launchPlan: mockLPExec, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), ).Return(&admin.ExecutionClosure{ Phase: core.WorkflowExecution_RUNNING, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.CheckLaunchPlanStatus(ctx, nCtx) @@ -328,7 +328,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { h := launchPlanHandler{ launchPlan: mockLPExec, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) @@ -355,15 +355,17 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - op := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": coreutils.MustMakePrimitiveLiteral(1), + op := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": coreutils.MustMakePrimitiveLiteral(1), + }, }, } err := mockStore.WriteProtobuf(ctx, uri, storage.Options{}, op) assert.NoError(t, err) - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) @@ -384,9 +386,10 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { s, err := h.CheckLaunchPlanStatus(ctx, nCtx) assert.NoError(t, err) assert.Equal(t, handler.EPhaseSuccess, s.Info().GetPhase()) - final := &core.LiteralMap{} - assert.NoError(t, mockStore.ReadProtobuf(ctx, v1alpha1.GetOutputsFile(dataDir), final), mockStore) - v, ok := final.GetLiterals()["x"] + final := &core.OutputData{} + _, err = mockStore.ReadProtobufAny(ctx, v1alpha1.GetOutputsFile(dataDir), final) + assert.NoError(t, err, mockStore) + v, ok := final.GetOutputs().GetLiterals()["x"] assert.True(t, ok) assert.Equal(t, int64(1), v.GetScalar().GetPrimitive().GetInteger()) }) @@ -400,12 +403,14 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - op := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "x": coreutils.MustMakePrimitiveLiteral(1), + op := &core.OutputData{ + Outputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "x": coreutils.MustMakePrimitiveLiteral(1), + }, }, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) @@ -415,7 +420,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { OutputResult: &admin.ExecutionClosure_Outputs{ Outputs: &admin.LiteralMapBlob{ Data: &admin.LiteralMapBlob_Values{ - Values: op, + Values: op.GetOutputs(), }, }, }, @@ -426,9 +431,10 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { s, err := h.CheckLaunchPlanStatus(ctx, nCtx) assert.NoError(t, err) assert.Equal(t, s.Info().GetPhase(), handler.EPhaseSuccess) - final := &core.LiteralMap{} - assert.NoError(t, mockStore.ReadProtobuf(ctx, v1alpha1.GetOutputsFile(dataDir), final)) - v, ok := final.GetLiterals()["x"] + final := &core.OutputData{} + _, err = mockStore.ReadProtobufAny(ctx, v1alpha1.GetOutputsFile(dataDir), final) + assert.NoError(t, err, mockStore) + v, ok := final.GetOutputs().GetLiterals()["x"] assert.True(t, ok) assert.Equal(t, int64(1), v.GetScalar().GetPrimitive().GetInteger()) }) @@ -442,7 +448,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) @@ -455,7 +461,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { Code: "code", }, }, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.CheckLaunchPlanStatus(ctx, nCtx) @@ -472,14 +478,14 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), ).Return(&admin.ExecutionClosure{ Phase: core.WorkflowExecution_FAILED, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.CheckLaunchPlanStatus(ctx, nCtx) @@ -496,14 +502,14 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), ).Return(&admin.ExecutionClosure{ Phase: core.WorkflowExecution_ABORTED, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.CheckLaunchPlanStatus(ctx, nCtx) @@ -520,12 +526,12 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), - ).Return(nil, &core.LiteralMap{}, errors.Wrapf(launchplan.RemoteErrorNotFound, fmt.Errorf("some error"), "not found")) + ).Return(nil, &core.OutputData{}, errors.Wrapf(launchplan.RemoteErrorNotFound, fmt.Errorf("some error"), "not found")) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.CheckLaunchPlanStatus(ctx, nCtx) @@ -542,12 +548,12 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) }), - ).Return(nil, &core.LiteralMap{}, errors.Wrapf(launchplan.RemoteErrorSystem, fmt.Errorf("some error"), "not found")) + ).Return(nil, &core.OutputData{}, errors.Wrapf(launchplan.RemoteErrorSystem, fmt.Errorf("some error"), "not found")) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) s, err := h.CheckLaunchPlanStatus(ctx, nCtx) @@ -570,7 +576,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { "x": coreutils.MustMakePrimitiveLiteral(1), }, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) @@ -584,7 +590,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { }, }, }, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) nCtx.OnDataStore().Return(mockStore) @@ -604,7 +610,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { eventConfig: eventConfig, } - mockLPExec.On("GetStatus", + mockLPExec.OnGetStatusMatch( ctx, mock.MatchedBy(func(o *core.WorkflowExecutionIdentifier) bool { return assert.Equal(t, wfExecID.Project, o.Project) && assert.Equal(t, wfExecID.Domain, o.Domain) @@ -618,7 +624,7 @@ func TestSubWorkflowHandler_CheckLaunchPlanStatus(t *testing.T) { }, }, }, - }, &core.LiteralMap{}, nil) + }, &core.OutputData{}, nil) nCtx := createNodeContext(v1alpha1.WorkflowNodePhaseExecuting, mockNode, mockNodeStatus) nCtx.OnDataStore().Return(mockStore) @@ -649,12 +655,12 @@ func TestLaunchPlanHandler_HandleAbort(t *testing.T) { }) mockNode := &mocks2.ExecutableNode{} - mockNode.On("GetID").Return(nodeID) - mockNode.On("GetWorkflowNode").Return(mockWfNode) + mockNode.OnGetID().Return(nodeID) + mockNode.OnGetWorkflowNode().Return(mockWfNode) mockNodeStatus := &mocks2.ExecutableNodeStatus{} - mockNodeStatus.On("GetAttempts").Return(attempts) - mockNodeStatus.On("GetDataDir").Return(dataDir) + mockNodeStatus.OnGetAttempts().Return(attempts) + mockNodeStatus.OnGetDataDir().Return(dataDir) t.Run("abort-success", func(t *testing.T) { mockLPExec := &mocks.Executor{} diff --git a/flytepropeller/pkg/controller/nodes/task/handler.go b/flytepropeller/pkg/controller/nodes/task/handler.go index 214540ac07..69235fbb10 100644 --- a/flytepropeller/pkg/controller/nodes/task/handler.go +++ b/flytepropeller/pkg/controller/nodes/task/handler.go @@ -555,7 +555,7 @@ func (t Handler) Handle(ctx context.Context, nCtx interfaces.NodeExecutionContex // So now we will derive this from the plugin phase // TODO @kumare re-evaluate this decision - var inputs *core.LiteralMap + var inputs *core.InputData if ts.PluginPhase == pluginCore.PhaseUndefined && t.eventConfig.RawOutputPolicy == controllerConfig.RawOutputPolicyInline { // The task should only reach undefined exactly once. Since we want to send the inputs inline at some point in the task execution flow (but not necessarily every event), we send them for this event transition only. // The calls to read from the catalog below may call InputReader.Get subsequent times, but the underlying implementation uses a CachedInputReader that will diff --git a/flytepropeller/pkg/controller/nodes/task/handler_test.go b/flytepropeller/pkg/controller/nodes/task/handler_test.go index 22e1d7451f..dd4094821d 100644 --- a/flytepropeller/pkg/controller/nodes/task/handler_test.go +++ b/flytepropeller/pkg/controller/nodes/task/handler_test.go @@ -398,11 +398,14 @@ func CreateNoopResourceManager(ctx context.Context, scope promutils.Scope) resou func Test_task_Handle_NoCatalog(t *testing.T) { - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("bar"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("bar"), + }, }, } + createNodeContext := func(pluginPhase pluginCore.Phase, pluginVer uint32, pluginResp fakeplugins.NextPhaseState, recorder interfaces.EventRecorder, ttype string, s *taskNodeStateHolder, allowIncrementParallelism bool) *nodeMocks.NodeExecutionContext { wfExecID := &core.WorkflowExecutionIdentifier{ Project: "project", @@ -476,7 +479,7 @@ func Test_task_Handle_NoCatalog(t *testing.T) { n.OnGetResources().Return(res) ir := &ioMocks.InputReader{} - ir.OnGetInputPath().Return("input") + ir.OnGetInputDataPath().Return("input") ir.OnGetMatch(mock.Anything).Return(inputs, nil) nCtx := &nodeMocks.NodeExecutionContext{} nCtx.OnNodeExecutionMetadata().Return(nm) @@ -1137,7 +1140,7 @@ func Test_task_Finalize(t *testing.T) { n.OnGetResources().Return(res) ir := &ioMocks.InputReader{} - ir.OnGetMatch(mock.Anything).Return(&core.LiteralMap{}, nil) + ir.OnGetMatch(mock.Anything).Return(&core.InputData{}, nil) nCtx := &nodeMocks.NodeExecutionContext{} nCtx.OnNodeExecutionMetadata().Return(nm) nCtx.OnNode().Return(n) diff --git a/flytepropeller/pkg/controller/nodes/task/transformer.go b/flytepropeller/pkg/controller/nodes/task/transformer.go index 242c1334ce..700cba92b4 100644 --- a/flytepropeller/pkg/controller/nodes/task/transformer.go +++ b/flytepropeller/pkg/controller/nodes/task/transformer.go @@ -74,7 +74,7 @@ func getParentNodeExecIDForTask(taskExecID *core.TaskExecutionIdentifier, execCo type ToTaskExecutionEventInputs struct { TaskExecContext pluginCore.TaskExecutionContext InputReader io.InputFilePaths - Inputs *core.LiteralMap + Inputs *core.InputData EventConfig *config.EventConfig OutputWriter io.OutputFilePaths Info pluginCore.PhaseInfo @@ -192,7 +192,7 @@ func ToTaskExecutionEvent(input ToTaskExecutionEventInputs) (*event.TaskExecutio } } else { tev.InputValue = &event.TaskExecutionEvent_InputUri{ - InputUri: input.InputReader.GetInputPath().String(), + InputUri: input.InputReader.GetInputDataPath().String(), } } diff --git a/flytepropeller/pkg/controller/nodes/task/transformer_test.go b/flytepropeller/pkg/controller/nodes/task/transformer_test.go index 0fdab91907..96af89d66f 100644 --- a/flytepropeller/pkg/controller/nodes/task/transformer_test.go +++ b/flytepropeller/pkg/controller/nodes/task/transformer_test.go @@ -8,6 +8,7 @@ import ( "github.com/golang/protobuf/ptypes" structpb "github.com/golang/protobuf/ptypes/struct" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/flyteorg/flyte/flyteidl/clients/go/coreutils" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" @@ -50,7 +51,8 @@ func TestToTaskExecutionEvent(t *testing.T) { in := &mocks.InputFilePaths{} const inputPath = "in" - in.On("GetInputPath").Return(storage.DataReference(inputPath)) + in.OnGetInputPathMatch(mock.Anything).Return(inputPath, nil) + in.OnGetInputDataPath().Return(inputPath) out := &mocks.OutputFilePaths{} const outputPath = "out" @@ -196,11 +198,14 @@ func TestToTaskExecutionEvent(t *testing.T) { assert.Equal(t, testClusterID, tev.ProducerId) t.Run("inline event policy", func(t *testing.T) { - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("bar"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("bar"), + }, }, } + tev, err := ToTaskExecutionEvent(ToTaskExecutionEventInputs{ TaskExecContext: tCtx, InputReader: in, @@ -242,11 +247,11 @@ func TestToTaskExecutionEventWithParent(t *testing.T) { in := &mocks.InputFilePaths{} const inputPath = "in" - in.On("GetInputPath").Return(storage.DataReference(inputPath)) + in.OnGetInputDataPath().Return(storage.DataReference(inputPath)) out := &mocks.OutputFilePaths{} const outputPath = "out" - out.On("GetOutputPath").Return(storage.DataReference(outputPath)) + out.OnGetOutputPath().Return(storage.DataReference(outputPath)) nodeExecutionMetadata := nodemocks.NodeExecutionMetadata{} nodeExecutionMetadata.OnIsInterruptible().Return(true) diff --git a/flytepropeller/pkg/controller/nodes/transformers_test.go b/flytepropeller/pkg/controller/nodes/transformers_test.go index 93a532a8d6..09ee8f75c4 100644 --- a/flytepropeller/pkg/controller/nodes/transformers_test.go +++ b/flytepropeller/pkg/controller/nodes/transformers_test.go @@ -97,9 +97,11 @@ func TestToNodeExecutionEvent(t *testing.T) { assert.Equal(t, nodeExecutionEventVersion, nev.EventVersion) }) t.Run("inline events", func(t *testing.T) { - inputs := &core.LiteralMap{ - Literals: map[string]*core.Literal{ - "foo": coreutils.MustMakeLiteral("bar"), + inputs := &core.InputData{ + Inputs: &core.LiteralMap{ + Literals: map[string]*core.Literal{ + "foo": coreutils.MustMakeLiteral("bar"), + }, }, } info := handler.PhaseInfoQueued("z", inputs) diff --git a/flytepropeller/pkg/controller/workflow/executor.go b/flytepropeller/pkg/controller/workflow/executor.go index c2f7a35ebe..23e33db7b8 100644 --- a/flytepropeller/pkg/controller/workflow/executor.go +++ b/flytepropeller/pkg/controller/workflow/executor.go @@ -100,9 +100,21 @@ func (c *workflowExecutor) handleReadyWorkflow(ctx context.Context, w *v1alpha1. Message: err.Error()}), nil } w.GetExecutionStatus().SetDataDir(ref) - var inputs *core.LiteralMap - if w.Inputs != nil { - inputs = w.Inputs.LiteralMap + var inputs *core.InputData + if w.InputData != nil { + inputs = w.InputData.InputData + if inputs == nil && w.Inputs.LiteralMap != nil { + inputs = &core.InputData{ + Inputs: w.Inputs.LiteralMap, + } + } + } else if w.Inputs != nil { + inputs = &core.InputData{Inputs: w.Inputs.LiteralMap} + if inputs == nil && w.Inputs.LiteralMap != nil { + inputs = &core.InputData{ + Inputs: w.Inputs.LiteralMap, + } + } } // Before starting the subworkflow, lets set the inputs for the Workflow. The inputs for a SubWorkflow are essentially // Copy of the inputs to the Node diff --git a/flytestdlib/Makefile b/flytestdlib/Makefile index 2e862291c7..eeba9f0a32 100644 --- a/flytestdlib/Makefile +++ b/flytestdlib/Makefile @@ -1,5 +1,5 @@ export REPOSITORY=flytestdlib -export REPO_ROOT=.. +export REPO_ROOT ?= $(shell pwd)/../ include ../boilerplate/flyte/golang_test_targets/Makefile .PHONY: update_boilerplate diff --git a/flytestdlib/storage/mocks/composed_protobuf_store.go b/flytestdlib/storage/mocks/composed_protobuf_store.go index c9064c2ac5..80f3840e51 100644 --- a/flytestdlib/storage/mocks/composed_protobuf_store.go +++ b/flytestdlib/storage/mocks/composed_protobuf_store.go @@ -226,6 +226,52 @@ func (_m *ComposedProtobufStore) ReadProtobuf(ctx context.Context, reference sto return r0 } +type ComposedProtobufStore_ReadProtobufAny struct { + *mock.Call +} + +func (_m ComposedProtobufStore_ReadProtobufAny) Return(_a0 int, _a1 error) *ComposedProtobufStore_ReadProtobufAny { + return &ComposedProtobufStore_ReadProtobufAny{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ComposedProtobufStore) OnReadProtobufAny(ctx context.Context, reference storage.DataReference, msg ...protoiface.MessageV1) *ComposedProtobufStore_ReadProtobufAny { + c_call := _m.On("ReadProtobufAny", ctx, reference, msg) + return &ComposedProtobufStore_ReadProtobufAny{Call: c_call} +} + +func (_m *ComposedProtobufStore) OnReadProtobufAnyMatch(matchers ...interface{}) *ComposedProtobufStore_ReadProtobufAny { + c_call := _m.On("ReadProtobufAny", matchers...) + return &ComposedProtobufStore_ReadProtobufAny{Call: c_call} +} + +// ReadProtobufAny provides a mock function with given fields: ctx, reference, msg +func (_m *ComposedProtobufStore) ReadProtobufAny(ctx context.Context, reference storage.DataReference, msg ...protoiface.MessageV1) (int, error) { + _va := make([]interface{}, len(msg)) + for _i := range msg { + _va[_i] = msg[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, reference) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 int + if rf, ok := ret.Get(0).(func(context.Context, storage.DataReference, ...protoiface.MessageV1) int); ok { + r0 = rf(ctx, reference, msg...) + } else { + r0 = ret.Get(0).(int) + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, storage.DataReference, ...protoiface.MessageV1) error); ok { + r1 = rf(ctx, reference, msg...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type ComposedProtobufStore_ReadRaw struct { *mock.Call } diff --git a/flytestdlib/storage/protobuf_store.go b/flytestdlib/storage/protobuf_store.go index cf5a0c790c..d32c172845 100644 --- a/flytestdlib/storage/protobuf_store.go +++ b/flytestdlib/storage/protobuf_store.go @@ -4,11 +4,13 @@ import ( "bytes" "context" "fmt" + "google.golang.org/protobuf/reflect/protoreflect" "time" - "github.com/golang/protobuf/proto" + protoV1 "github.com/golang/protobuf/proto" errs "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" + "google.golang.org/protobuf/proto" "github.com/flyteorg/flyte/flytestdlib/ioutils" "github.com/flyteorg/flyte/flytestdlib/logger" @@ -26,13 +28,63 @@ type protoMetrics struct { ReadFailureUnrelatedToCache prometheus.Counter } -// Implements ProtobufStore to marshal and unmarshal protobufs to/from a RawStore +// DefaultProtobufStore implements ProtobufStore to marshal and unmarshal protobufs to/from a RawStore type DefaultProtobufStore struct { RawStore metrics *protoMetrics } -func (s DefaultProtobufStore) ReadProtobuf(ctx context.Context, reference DataReference, msg proto.Message) error { +// hasUnrecognizedFields recursively checks a protobuf message for unrecognized fields. When the unmarshaller unmarshalls +// a byte array into a message, it will not error if the byte array contains unrecognized fields. This function checks +// for unrecognized fields by checking if the message has any unknown fields or if any of its nested messages have +// unknown fields. +func hasUnrecognizedFields(msg protoreflect.Message) bool { + if msg == nil { + return false + } + + // If the top level message has unknown fields, then the message has unrecognized fields + if len(msg.GetUnknown()) > 0 { + return true + } + + unrecognized := false + + // Iterate over all sub-fields + msg.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + // TODO: This is a hack because the protoreflect.Value.Message() panics if the value is not a message + defer func() { + if err := recover(); err != nil { + return + } + }() + + if !v.IsValid() { + return true + } + + if fd.Kind() != protoreflect.MessageKind { + return true + } + + iface := v.Interface() + if iface == nil { + return true + } + + if vMessage := v.Message(); vMessage != nil && len(v.Message().GetUnknown()) > 0 { + unrecognized = true + return false + } + + unrecognized = hasUnrecognizedFields(v.Message()) + return !unrecognized + }) + + return unrecognized +} + +func (s DefaultProtobufStore) ReadProtobufAny(ctx context.Context, reference DataReference, msg ...protoV1.Message) (msgIndex int, err error) { ctx, span := otelutils.NewSpan(ctx, otelutils.BlobstoreClientTracer, "flytestdlib.storage.DefaultProtobufStore/ReadProtobuf") defer span.End() @@ -40,7 +92,7 @@ func (s DefaultProtobufStore) ReadProtobuf(ctx context.Context, reference DataRe if err != nil && !IsFailedWriteToCache(err) { logger.Errorf(ctx, "Failed to read from the raw store [%s] Error: %v", reference, err) s.metrics.ReadFailureUnrelatedToCache.Inc() - return errs.Wrap(err, fmt.Sprintf("path:%v", reference)) + return -1, errs.Wrap(err, fmt.Sprintf("path:%v", reference)) } defer func() { @@ -52,26 +104,45 @@ func (s DefaultProtobufStore) ReadProtobuf(ctx context.Context, reference DataRe docContents, err := ioutils.ReadAll(rc, s.metrics.FetchLatency.Start()) if err != nil { - return errs.Wrap(err, fmt.Sprintf("readAll: %v", reference)) + return -1, errs.Wrap(err, fmt.Sprintf("readAll: %v", reference)) } - t := s.metrics.UnmarshalTime.Start() - err = proto.Unmarshal(docContents, msg) - t.Stop() - if err != nil { - s.metrics.UnmarshalFailure.Inc() - return errs.Wrap(err, fmt.Sprintf("unmarshall: %v", reference)) + var lastErr error + for i, m := range msg { + t := s.metrics.UnmarshalTime.Start() + var mCopy proto.Message + v2Message := protoV1.MessageV2(m) + if len(msg) > 1 { + mCopy = proto.Clone(v2Message) + } + + err = proto.UnmarshalOptions{DiscardUnknown: false, AllowPartial: false}.Unmarshal(docContents, v2Message) + t.Stop() + if err != nil { + s.metrics.UnmarshalFailure.Inc() + lastErr = errs.Wrap(err, fmt.Sprintf("unmarshall: %v", reference)) + continue + } + + if len(msg) == 1 || (!hasUnrecognizedFields(protoV1.MessageV2(m).ProtoReflect()) && !proto.Equal(mCopy, v2Message)) { + return i, nil + } } - return nil + return -1, lastErr +} + +func (s DefaultProtobufStore) ReadProtobuf(ctx context.Context, reference DataReference, msg protoV1.Message) error { + _, err := s.ReadProtobufAny(ctx, reference, msg) + return err } -func (s DefaultProtobufStore) WriteProtobuf(ctx context.Context, reference DataReference, opts Options, msg proto.Message) error { +func (s DefaultProtobufStore) WriteProtobuf(ctx context.Context, reference DataReference, opts Options, msg protoV1.Message) error { ctx, span := otelutils.NewSpan(ctx, otelutils.BlobstoreClientTracer, "flytestdlib.storage.DefaultProtobufStore/WriteProtobuf") defer span.End() t := s.metrics.MarshalTime.Start() - raw, err := proto.Marshal(msg) + raw, err := protoV1.Marshal(msg) t.Stop() if err != nil { s.metrics.MarshalFailure.Inc() diff --git a/flytestdlib/storage/protobuf_store_test.go b/flytestdlib/storage/protobuf_store_test.go index fe23dc89f2..655a603be1 100644 --- a/flytestdlib/storage/protobuf_store_test.go +++ b/flytestdlib/storage/protobuf_store_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes/timestamp" errs "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -46,6 +47,21 @@ func (m mockBigDataProtoMessage) String() string { func (mockBigDataProtoMessage) ProtoMessage() { } +type mockProtoMessageWrapper struct { + Invalid *timestamp.Timestamp `protobuf:"bytes,1,opt,name=invalid,proto3" json:"invalid,omitempty"` + Inputs *mockProtoMessage `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` +} + +func (mockProtoMessageWrapper) Reset() { +} + +func (m mockProtoMessageWrapper) String() string { + return proto.CompactTextString(m) +} + +func (mockProtoMessageWrapper) ProtoMessage() { +} + func TestDefaultProtobufStore(t *testing.T) { t.Run("Read after Write", func(t *testing.T) { testScope := promutils.NewTestScope() @@ -136,7 +152,6 @@ func TestDefaultProtobufStore_BigDataReadAfterWrite(t *testing.T) { err = s.ReadProtobuf(context.TODO(), DataReference("bigK"), m) assert.NoError(t, err) assert.Equal(t, bigD, m.X) - }) } @@ -171,3 +186,25 @@ func TestDefaultProtobufStore_HardErrors(t *testing.T) { assert.Equal(t, dummyReadErrorMsg, errs.Cause(err).Error()) }) } + +func TestReadProtobufAny(t *testing.T) { + t.Run("Read new type after writing old type", func(t *testing.T) { + testScope := promutils.NewTestScope() + s, err := NewDataStore(&Config{Type: TypeMemory}, testScope) + assert.NoError(t, err) + + oldMsg := &mockProtoMessage{X: 5} + err = s.WriteProtobuf(context.TODO(), "hello", Options{}, oldMsg) + assert.NoError(t, err) + + oldType := &mockProtoMessage{} + newType := &mockProtoMessageWrapper{} + msgIndex, err := s.ReadProtobufAny(context.TODO(), "hello", newType, oldType) + assert.NoError(t, err) + if !assert.Equal(t, 1, msgIndex) { + t.FailNow() + } + + assert.Equal(t, int64(5), oldType.X) + }) +} diff --git a/flytestdlib/storage/storage.go b/flytestdlib/storage/storage.go index 3e84cb7acb..8506f2dc72 100644 --- a/flytestdlib/storage/storage.go +++ b/flytestdlib/storage/storage.go @@ -107,6 +107,9 @@ type ProtobufStore interface { // ReadProtobuf retrieves the entire blob from blobstore and unmarshals it to the passed protobuf ReadProtobuf(ctx context.Context, reference DataReference, msg proto.Message) error + // ReadProtobufAny retrieves the entire blob from blobstore and unmarshals it to the passed protobuf + ReadProtobufAny(ctx context.Context, reference DataReference, msg ...proto.Message) (int, error) + // WriteProtobuf serializes and stores the protobuf. WriteProtobuf(ctx context.Context, reference DataReference, opts Options, msg proto.Message) error } diff --git a/go.mod b/go.mod index 2748b1f293..115da6cc56 100644 --- a/go.mod +++ b/go.mod @@ -8,9 +8,11 @@ require ( github.com/flyteorg/flyte/flytepropeller v0.0.0-00010101000000-000000000000 github.com/flyteorg/flyte/flytestdlib v0.0.0-00010101000000-000000000000 github.com/golang/glog v1.2.0 + github.com/mitchellh/mapstructure v1.5.0 github.com/prometheus/client_golang v1.16.0 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 + github.com/stretchr/testify v1.9.0 golang.org/x/sync v0.6.0 gorm.io/driver/postgres v1.5.3 sigs.k8s.io/controller-runtime v0.16.3 @@ -138,7 +140,6 @@ require ( github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/mattn/goveralls v0.0.6 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect @@ -171,7 +172,6 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.11.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect github.com/tidwall/gjson v1.17.0 // indirect github.com/tidwall/match v1.1.1 // indirect